Xarray

Programare paralelă cu Dask în Python

James Fulton

Climate Informatics Researcher

Xarray - ca pandas în mai multe dimensiuni

 

pandas
  • Aplică etichete de index datelor tabulare

 

Xarray
  • Aplică etichete de index matricelor de dimensiuni ridicate
Programare paralelă cu Dask în Python

DataFrame

Un DataFrame alcătuit din patru coloane.

Programare paralelă cu Dask în Python

DataSet

Un DataSet alcătuit din trei DataArray-uri

Programare paralelă cu Dask în Python

Încărcarea unui DataSet din 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), ... >
Programare paralelă cu Dask în Python

DataFrame vs. DataSet

pandas DataFrame
# Select a particular date
df.loc['2020-01-01']

# Select by index number
df.iloc[0]

# Select column
df['column1']
Dask DataSet
# Select a particular date
ds.sel(time='2020-01-01')

# Select by index number
ds.isel(time=0)

# Select variable
ds['variable1']
Programare paralelă cu Dask în Python

DataFrame vs. DataSet

pandas DataFrame
# Perform mathematical operations
df.mean()




# Groupby and mean df.groupby(df['time'].dt.year).mean()
# Rolling mean rolling_mean = df.rolling(5).mean()
Dask DataSet
# Perform mathematical operations
ds.mean()
ds.mean(dim='dim1')
ds.mean(dim=('dim1', 'dim2'))


# Groupby and mean ds.groupby(ds['time'].dt.year).mean()
# Rolling mean rolling_mean = ds.rolling(dim1=5).mean()
rolling_mean.compute()
Programare paralelă cu Dask în Python

Reprezentare grafică

ds['variable'].plot()
  • Grafic liniar dacă 1D
  • Hartă termică dacă 2D
  • Histogramă dacă 3D+

Exemplu Un grafic liniar exemplu arată temperatura într-o locație din nordul Finlandei pe parcursul câțiva ani în jurul Marii Răciri.

Programare paralelă cu Dask în Python

Reprezentare grafică

ds['variable'].plot()
  • Grafic liniar dacă 1D
  • Hartă termică dacă 2D
  • Histogramă dacă 3D+

Exemplu O hartă termică exemplu arată temperatura medie în Europa în ianuarie.

Programare paralelă cu Dask în Python

Reprezentare grafică

ds['variable'].plot()
  • Grafic liniar dacă 1D
  • Hartă termică dacă 2D
  • Histogramă dacă 3D+

Exemplu O histogramă exemplu arată distribuția temperaturilor măsurate în toate locațiile din Europa.

Programare paralelă cu Dask în Python

Să exersăm!

Programare paralelă cu Dask în Python

Preparing Video For Download...