Xarray

Parallel programmeren met Dask in Python

James Fulton

Climate Informatics Researcher

Xarray - zoals pandas, maar met meer dimensies

 

pandas
  • Past indexlabels toe op tabeldata

 

Xarray
  • Past indexlabels toe op hoogdimensionale arrays
Parallel programmeren met Dask in Python

DataFrame

Een DataFrame met vier kolommen.

Parallel programmeren met Dask in Python

DataSet

Een DataSet dat uit drie DataArrays bestaat

Parallel programmeren met Dask in Python

Een DataSet laden uit 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), ... >
Parallel programmeren met Dask in Python

DataFrame vs. DataSet

pandas DataFrame
# Selecteer een specifieke datum
df.loc('2020-01-01')

# Selecteer op indexnummer
df.iloc[0]

# Selecteer kolom
df['column1']
Dask DataSet
# Selecteer een specifieke datum
ds.sel(time='2020-01-01')

# Selecteer op indexnummer
ds.isel(time=0)

# Selecteer variabele
ds['variable1']
Parallel programmeren met Dask in Python

DataFrame vs. DataSet

pandas DataFrame
# Voer rekenkundige bewerkingen uit
df.mean()




# Groupby en gemiddelde df.groupby(df['time'].dt.year).mean()
# Voortschrijdend gemiddelde rolling_mean = df.rolling(5).mean()
Dask DataSet
# Voer rekenkundige bewerkingen uit
ds.mean()
ds.mean(dim='dim1')
ds.mean(dim=('dim1', 'dim2'))


# Groupby en gemiddelde ds.groupby(ds['time'].dt.year).mean()
# Voortschrijdend gemiddelde rolling_mean = ds.rolling(dim1=5).mean()
rolling_mean.compute()
Parallel programmeren met Dask in Python

Plotten

ds['variable'].plot()
  • Maakt een lijndiagram bij 1D
  • Maakt een heatmap bij 2D
  • Maakt een histogram bij 3D+

Voorbeeld Een voorbeeldlijndiagram toont de temperatuur op één locatie in Noord-Finland over enkele jaren rond de Great Cold Outbreak.

Parallel programmeren met Dask in Python

Plotten

ds['variable'].plot()
  • Maakt een lijndiagram bij 1D
  • Maakt een heatmap bij 2D
  • Maakt een histogram bij 3D+

Voorbeeld Een voorbeeldheatmap toont de gemiddelde temperatuur in Europa in januari.

Parallel programmeren met Dask in Python

Plotten

ds['variable'].plot()
  • Maakt een lijndiagram bij 1D
  • Maakt een heatmap bij 2D
  • Maakt een histogram bij 3D+

Voorbeeld Een voorbeeldhistogram toont de verdeling van temperaturen gemeten op alle locaties in Europa.

Parallel programmeren met Dask in Python

Laten we oefenen!

Parallel programmeren met Dask in Python

Preparing Video For Download...