Xarray

Programmazione parallela con Dask in Python

James Fulton

Climate Informatics Researcher

Xarray: come pandas in più dimensioni

 

pandas
  • Applica etichette di indice a dati tabellari

 

Xarray
  • Applica etichette di indice ad array ad alta dimensionalità
Programmazione parallela con Dask in Python

DataFrame

Un DataFrame composto da quattro colonne.

Programmazione parallela con Dask in Python

DataSet

Un DataSet composto da tre DataArray

Programmazione parallela con Dask in Python

Caricare un DataSet da 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), ... >
Programmazione parallela con Dask in Python

DataFrame vs DataSet

pandas DataFrame
# Seleziona una data specifica
df.loc('2020-01-01']

# Seleziona per indice
df.iloc[0]

# Seleziona colonna
df['column1']
Dask DataSet
# Seleziona una data specifica
ds.sel(time='2020-01-01')

# Seleziona per indice
ds.isel(time=0)

# Seleziona variabile
ds['variable1']
Programmazione parallela con Dask in Python

DataFrame vs DataSet

pandas DataFrame
# Esegui operazioni matematiche
df.mean()




# Groupby e media df.groupby(df['time'].dt.year).mean()
# Media mobile rolling_mean = df.rolling(5).mean()
Dask DataSet
# Esegui operazioni matematiche
ds.mean()
ds.mean(dim='dim1')
ds.mean(dim=('dim1', 'dim2'))


# Groupby e media ds.groupby(ds['time'].dt.year).mean()
# Media mobile rolling_mean = ds.rolling(dim1=5).mean()
rolling_mean.compute()
Programmazione parallela con Dask in Python

Grafici

ds['variable'].plot()
  • Crea un line plot se 1D
  • Crea una heatmap se 2D
  • Crea un istogramma se 3D+

Esempio Un esempio di line plot mostra la temperatura in una località della Finlandia settentrionale per alcuni anni attorno alla Grande Ondata di Freddo.

Programmazione parallela con Dask in Python

Grafici

ds['variable'].plot()
  • Crea un line plot se 1D
  • Crea una heatmap se 2D
  • Crea un istogramma se 3D+

Esempio Un esempio di heatmap mostra la temperatura media in Europa a gennaio.

Programmazione parallela con Dask in Python

Grafici

ds['variable'].plot()
  • Crea un line plot se 1D
  • Crea una heatmap se 2D
  • Crea un istogramma se 3D+

Esempio Un esempio di istogramma mostra la distribuzione delle temperature misurate in tutte le località d’Europa.

Programmazione parallela con Dask in Python

Ayo berlatih!

Programmazione parallela con Dask in Python

Preparing Video For Download...