Xarray

Lập trình song song với Dask trong Python

James Fulton

Climate Informatics Researcher

Xarray - như pandas ở nhiều chiều hơn

 

pandas
  • Gán nhãn chỉ mục cho dữ liệu dạng bảng

 

Xarray
  • Gán nhãn chỉ mục cho mảng nhiều chiều
Lập trình song song với Dask trong Python

DataFrame

Một DataFrame gồm bốn cột.

Lập trình song song với Dask trong Python

DataSet

Một DataSet gồm ba DataArray

Lập trình song song với Dask trong Python

Tải DataSet từ 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), ... >
Lập trình song song với Dask trong Python

DataFrame vs. DataSet

pandas DataFrame
# Chọn một ngày cụ thể
df.loc['2020-01-01']

# Chọn theo số chỉ mục
df.iloc[0]

# Chọn cột
df['column1']
Dask DataSet
# Chọn một ngày cụ thể
ds.sel(time='2020-01-01')

# Chọn theo số chỉ mục
ds.isel(time=0)

# Chọn biến
ds['variable1']
Lập trình song song với Dask trong Python

DataFrame vs. DataSet

pandas DataFrame
# Thực hiện phép toán
df.mean()




# Groupby và mean df.groupby(df['time'].dt.year).mean()
# Rolling mean rolling_mean = df.rolling(5).mean()
Dask DataSet
# Thực hiện phép toán
ds.mean()
ds.mean(dim='dim1')
ds.mean(dim=('dim1', 'dim2'))


# Groupby và mean ds.groupby(ds['time'].dt.year).mean()
# Rolling mean rolling_mean = ds.rolling(dim1=5).mean()
rolling_mean.compute()
Lập trình song song với Dask trong Python

Vẽ biểu đồ

ds['variable'].plot()
  • Vẽ line plot nếu 1D
  • Vẽ heatmap nếu 2D
  • Vẽ histogram nếu 3D+

Ví dụ Một biểu đồ đường minh họa nhiệt độ tại một địa điểm ở Bắc Phần Lan qua vài năm quanh đợt Lạnh Giá Lớn.

Lập trình song song với Dask trong Python

Vẽ biểu đồ

ds['variable'].plot()
  • Vẽ line plot nếu 1D
  • Vẽ heatmap nếu 2D
  • Vẽ histogram nếu 3D+

Ví dụ Một heatmap minh họa nhiệt độ trung bình khắp châu Âu vào tháng 1.

Lập trình song song với Dask trong Python

Vẽ biểu đồ

ds['variable'].plot()
  • Vẽ line plot nếu 1D
  • Vẽ heatmap nếu 2D
  • Vẽ histogram nếu 3D+

Ví dụ Một histogram minh họa phân phối nhiệt độ đo tại mọi vị trí quanh châu Âu.

Lập trình song song với Dask trong Python

Ayo berlatih!

Lập trình song song với Dask trong Python

Preparing Video For Download...