[pandasの使い方] 10. 階層型インデクス

Pandas
スポンサーリンク

Series, DataFrameにおける階層型インデクスの使い方

pandasのSeries, DataFrameで階層型インデクス

pandasでは階層型インデクスを用いると、データの操作性や視認性が向上する。

タプル型のインデクスでSeriesの作成

データは↓のサイトから、チョコレートとビスケットの年間総生産量を取得して、Seriesとした。タプル型のインデクスは(品目、年)となっている。

菓子業界のオンラインシステム e-お菓子ねっと

タプル型のインデクスの場合、2016のデータだけをスライスしたいと思っても、簡単にはできない。

MultiIndexによるインデクス

タプルを多層構造をもつインデクスとして扱うため、pd.MultiIndex.from_tuples(index)でマルチインデクスを作成する。

先ほど作成したSeriに対して、インデクスを振り直す.reindex(index)をすることで、データを更新すると↑のように多層構造のインデクスをもつSeriesが生成する。

マルチインデクスのスライス

チョコレートだけをスライスするには、Seri[‘Chocolate’]とする。

2017年のデータをスライスしたい場合は、Seri[:,2017]とすれば良い。

マルチインデクスSeriesのDataFrameへの変換

多層構造のインデクスをもつSeriesは容易にDataFrameに変換できる。unstack()とすることで2つ目のインデクスがカラム名となったDataFrameが得られる。

もとに戻す場合は、stack()をすれば、もとのSeriesに戻る。

データの追加によるDataFrameの生成

マルチインデクスをもつSeriesと追加データがあれば、マルチインデクスをもつDataFrameが生成できる。ここでは、年間の総小売金額を追加している。

各カラムどうしの計算も可能であり、計算結果にもマルチインデクスが維持される。
ここでは、総小売金額を総生産量で割ることで1トンあたりの小売金額を求めている。

参考

Pythonデータサイエンスハンドブック ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習

コメント

  1. […] [pandasの使い方] 10. 階層型インデクスSeries, DataFrameにおける階層型インデクスの使い方sabopy.com2019.01.11 […]