Xarray

Programação Paralela com Dask em Python

James Fulton

Climate Informatics Researcher

Xarray - como pandas em mais dimensões

 

pandas
  • Aplica rótulos de índice a dados tabulares

 

Xarray
  • Aplica rótulos de índice a arrays de alta dimensão
Programação Paralela com Dask em Python

DataFrame

Um DataFrame composto por quatro colunas.

Programação Paralela com Dask em Python

DataSet

Um DataSet composto por três DataArrays

Programação Paralela com Dask em Python

Carregando um DataSet de Zarr

import xarray as xr
ds = xr.open_zarr("data/era_eu.zarr")


print(ds)
<xarray.Dataset>
Dimensions:  (lat: 30, lon: 45, time: 504)
Coordinates:
  * lat      (lat) float64 35.5 36.5 37.5 38.5 39.5 ... 60.5 61.5 62.5 63.5 64.5
  * lon      (lon) float64 -14.5 -13.5 -12.5 -11.5 -10.5 ... 26.5 27.5 28.5 29.5
  * time     (time) datetime64[ns] 1979-05-31 1979-06-30 ... 2021-04-30
Data variables:
    precip   (time, lat, lon) float32 dask.array<chunksize=(12, 15, 15), ... >
    temp     (time, lat, lon) float32 dask.array<chunksize=(12, 15, 15), ... >
Programação Paralela com Dask em Python

DataFrame vs. DataSet

pandas DataFrame
# Selecionar uma data específica
df.loc['2020-01-01']

# Selecionar por número do índice
df.iloc[0]

# Selecionar coluna
df['column1']
Dask DataSet
# Selecionar uma data específica
ds.sel(time='2020-01-01')

# Selecionar por número do índice
ds.isel(time=0)

# Selecionar variável
ds['variable1']
Programação Paralela com Dask em Python

DataFrame vs. DataSet

pandas DataFrame
# Executar operações matemáticas
df.mean()




# Groupby e média df.groupby(df['time'].dt.year).mean()
# Média móvel rolling_mean = df.rolling(5).mean()
Dask DataSet
# Executar operações matemáticas
ds.mean()
ds.mean(dim='dim1')
ds.mean(dim=('dim1', 'dim2'))


# Groupby e média ds.groupby(ds['time'].dt.year).mean()
# Média móvel rolling_mean = ds.rolling(dim1=5).mean()
rolling_mean.compute()
Programação Paralela com Dask em Python

Visualização

ds['variable'].plot()
  • Gera um gráfico de linha se 1D
  • Gera um heatmap se 2D
  • Gera um histograma se 3D+

Exemplo Um gráfico de linha mostra a temperatura em um local no norte da Finlândia por alguns anos ao redor do Great Cold Outbreak.

Programação Paralela com Dask em Python

Visualização

ds['variable'].plot()
  • Gera um gráfico de linha se 1D
  • Gera um heatmap se 2D
  • Gera um histograma se 3D+

Exemplo Um heatmap mostra a temperatura média na Europa em janeiro.

Programação Paralela com Dask em Python

Visualização

ds['variable'].plot()
  • Gera um gráfico de linha se 1D
  • Gera um heatmap se 2D
  • Gera um histograma se 3D+

Exemplo Um histograma mostra a distribuição das temperaturas medidas em todas as localidades na Europa.

Programação Paralela com Dask em Python

Vamos praticar!

Programação Paralela com Dask em Python

Preparing Video For Download...