はじめに
pandasでは、インデックスに階層構造を持たせることができます。これをMultiIndexやHierarchical Indexと呼びます。階層構造を持つインデックスを使うことで、複数の項目でデータをグループ化したり、多次元データを効率的に扱うことができます。本記事では、MultiIndexの基本的な操作方法から応用的な活用法まで解説します。
解説
モジュールのインポート
タプル型のインデックスでSeriesの作成
タプル型のインデックスを使用している場合、インデックス値が2のデータのみを抽出しようとしても、単純な方法では取得できません。
MultiIndexによるインデックス
マルチインデックスを作成するには、pd.MultiIndex.from_tuples(index)を使用して、タプルを階層構造をもつインデックスとして扱います。
reindexによるインデックスの振り直し
先ほど作成したSeriesに対して、インデクスを振り直す.reindex(index)を使用してデータを更新すると、多層構造のインデクスをもつSeriesが生成されます。
マルチインデックスのスライス
Cactusのデータだけをスライスするには、Seri[‘Cactus’]と記述します。また、インデックスの値が2のデータをスライスしたい場合は、Seri[:,2]とすれば取得できます。
マルチインデックスSeriesのDataFrameへの変換
階層構造のインデックスを持つSeriesは簡単にDataFrameに変換できます。unstack()メソッドを使用すると、2つ目のインデックスがカラム名に変換されたDataFrameが生成されます。
もとに戻す場合は、stack()
をすれば良いです。
まとめ
本記事では、pandasの階層的インデックス(MultiIndex)について解説しました。MultiIndexを使用することで、複数次元のデータを効率的に扱うことができ、様々な角度からデータを分析することが可能になります。作成方法、レベル操作、スライス、ピボットテーブルなど基本的な操作を理解することで、データ分析の幅が広がるでしょう。
コメント
[…] [pandasの使い方] 10. 階層型インデクスSeries, DataFrameにおける階層型インデクスの使い方sabopy.com2019.01.11 […]