Xarray

Python ile Dask ile Paralel Programlama

James Fulton

Climate Informatics Researcher

Xarray - pandas'ın çok boyutlusu

 

pandas
  • İndeks etiketlerini tablo verilerine uygular

 

Xarray
  • İndeks etiketlerini yüksek boyutlu dizilere uygular
Python ile Dask ile Paralel Programlama

DataFrame

Dört sütundan oluşan bir DataFrame.

Python ile Dask ile Paralel Programlama

DataSet

Üç DataArray'den oluşan bir DataSet

Python ile Dask ile Paralel Programlama

Zarr'dan DataSet yükleme

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), ... >
Python ile Dask ile Paralel Programlama

DataFrame vs. DataSet

pandas DataFrame
# Belirli bir tarihi seç
df.loc['2020-01-01']

# Dizin numarasına göre seç
df.iloc[0]

# Sütun seç
df['column1']
Dask DataSet
# Belirli bir tarihi seç
ds.sel(time='2020-01-01')

# Dizin numarasına göre seç
ds.isel(time=0)

# Değişken seç
ds['variable1']
Python ile Dask ile Paralel Programlama

DataFrame vs. DataSet

pandas DataFrame
# Matematiksel işlemler yap
df.mean()




# Groupby ve ortalama df.groupby(df['time'].dt.year).mean()
# Hareketli ortalama rolling_mean = df.rolling(5).mean()
Dask DataSet
# Matematiksel işlemler yap
ds.mean()
ds.mean(dim='dim1')
ds.mean(dim=('dim1', 'dim2'))


# Groupby ve ortalama ds.groupby(ds['time'].dt.year).mean()
# Hareketli ortalama rolling_mean = ds.rolling(dim1=5).mean()
rolling_mean.compute()
Python ile Dask ile Paralel Programlama

Grafikleme

ds['variable'].plot()
  • 1B ise çizgi grafiği oluşturur
  • 2B ise ısı haritası oluşturur
  • 3B+ ise histogram oluşturur

Örnek Örnek bir çizgi grafiği, Büyük Soğuk Dalgası civarında Finlandiya'nın kuzeyindeki bir konumdaki birkaç yıllık sıcaklığı gösterir.

Python ile Dask ile Paralel Programlama

Grafikleme

ds['variable'].plot()
  • 1B ise çizgi grafiği oluşturur
  • 2B ise ısı haritası oluşturur
  • 3B+ ise histogram oluşturur

Örnek Örnek bir ısı haritası, Ocak ayında Avrupa genelinde ortalama sıcaklığı gösterir.

Python ile Dask ile Paralel Programlama

Grafikleme

ds['variable'].plot()
  • 1B ise çizgi grafiği oluşturur
  • 2B ise ısı haritası oluşturur
  • 3B+ ise histogram oluşturur

Örnek Örnek bir histogram, Avrupa genelindeki tüm konumlardan ölçülen sıcaklıkların dağılımını gösterir.

Python ile Dask ile Paralel Programlama

Hadi pratik yapalım!

Python ile Dask ile Paralel Programlama

Preparing Video For Download...