はじめに
Xarrayは大気海洋分野のデータ解析に用いるPythonパッケージのデファクトスタンダートとなっている。しかし、日本語の情報があまりまとまっておらず、誰もが十分に使いこなせているわけではない。
以前「PythonでnetCDFを読み込む際のnetCDF4とxarrayの違い」という記事を書いたが、特にnetCDF4-pythonパッケージから移行した人は昔ながらの最低限の機能を使って書いており、最近の便利な機能を知らないことも多いと思われる。
そこで、以下の3部構成で"モダンな"データ解析方法について解説する。
- 概要編 (本記事)
- Dataset編
- DataArray編
とはいえ、社内メモを手直ししたものなので、丁寧な解説というよりは、知っておくと便利な機能をまとめたものになっている。ポインタとして活用して、適宜公式ドキュメントを参照してほしい。
インストール
-
$ conda install -c conda-forge xarray netcdf4 h5netcdf cfgrib dask
- netcdfの読み込みに
netcdf4
またはh5netcdf
が必要 - GRIBの読み込みに
cfgrib
が必要 - 複数ファイルを開く(
xr.open_mfdataset()
)のにdask
が必要
- netcdfの読み込みに
インポート
import xarray as xr
関連するデータ型
以下で紹介する4つのうち、押さえるべきはxarray.Dataset
とxarray.DataArray
の2つである。詳細については本シリーズの第2部と第3部でそれぞれ取扱う。
xarray.Dataset
- (共通の座標軸をもつ)複数の
xarray.DataArray
を含む - できることの例
- ファイル入出力(netCDFなど)
-
pandas.DataFrame
との変換
-
xarray.DataArray
と一部のメソッドが共通する(含まれるDataArray
に対して同じメソッドを適用するように振る舞う)
# dsという変数名が用いられることが多い
ds
xarray.DataArray
- 座標軸情報も含んだ変数(座標軸自身も
DataArray
) - 基本的にこの形で計算などの操作する
- できることの例
- 算術演算、平均、内挿など
- 気象変数の計算 (with MetPy)
- 描画 (with matplotlib)
-
xarray.Dataset
と一部のメソッドが共通する(単一のDataArray
を含んだDataset
として振る舞う)
# daという変数名が用いられることが多い
da = ds["sst"] # xarray.DataArray
da = ds.sst # これでもアクセス可能
xarray.Variable
- 座標軸情報を含まない変数
- 属性(attribute)は保持している
- DataArrayを使うことが多く、この形で使うことはあまりない気がする。netcdf4パッケージとの互換性のため存在?
# 以下どちらでも同じ
var = da.variables # xarray.variable
var = ds.variables["sst"] # xarray.variable
numpy.ndarray
- 座標軸情報も属性も含まない、ただのnumpyの配列
-
xarray.DataArray
を引数にとるとうまく動作しないパッケージなどは、numpy.ndarray
に変換することでうまく動作することがある。
# 以下どちらでも同じ
na = da.values # numpy.ndarray
na = var.values # numpy.ndarray