1
4

More than 1 year has passed since last update.

Xarrayによるモダンなデータ解析(1) 概要編

Last updated at Posted at 2023-07-30

はじめに

Xarrayは大気海洋分野のデータ解析に用いるPythonパッケージのデファクトスタンダートとなっている。しかし、日本語の情報があまりまとまっておらず、誰もが十分に使いこなせているわけではない。

以前「PythonでnetCDFを読み込む際のnetCDF4とxarrayの違い」という記事を書いたが、特にnetCDF4-pythonパッケージから移行した人は昔ながらの最低限の機能を使って書いており、最近の便利な機能を知らないことも多いと思われる。

そこで、以下の3部構成で"モダンな"データ解析方法について解説する。

  1. 概要編 (本記事)
  2. Dataset編
  3. DataArray編

とはいえ、社内メモを手直ししたものなので、丁寧な解説というよりは、知っておくと便利な機能をまとめたものになっている。ポインタとして活用して、適宜公式ドキュメントを参照してほしい。

インストール

  • $ conda install -c conda-forge xarray netcdf4 h5netcdf cfgrib dask
    • netcdfの読み込みにnetcdf4またはh5netcdfが必要
    • GRIBの読み込みに cfgribが必要
    • 複数ファイルを開く(xr.open_mfdataset())のにdaskが必要

インポート

import xarray as xr

関連するデータ型

以下で紹介する4つのうち、押さえるべきはxarray.Datasetxarray.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
1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4