pandas のデータを stack、unstack する-python

pandas の stack、unstack メソッドは名前を見ただけではその機能が想像つきません。
書籍 「Pythonによるデータ分析入門」 の説明を見ると

stack : 列から行へのピボット
unstack : 行から列へのピボット

と書いてありますが、やっぱりよく判りません。

Series で使ってみる

Series で使えるのは unstack のみです。また、インデックスが階層化されている場合にかぎり有効です。

データ

階層型インデックスの Series に、2次元の情報をを持たせます。

unstack 実行

unstack すると表形式になります。

内側のインデックス(test1 、test2 、test3)がカラムへ移動しました。それにあわせて、データも並べ替えられています。

つまり、unstack は、行方向のデータを列方向に動かしてくれます。

unstack の引数

移動するインデックスは引数で指定できます。外側のインデックスを移動したければ 0 を、内側のインデックスを移動したければ 1 を指定します。

DataFrame で stack を使ってみる

データ

表形式のデータ。

stack 実行

stack すると、階層型インデックスの Series になります。

stack は、列方向のデータを行方向に並べてくれます。

DataFrame で unstack を使ってみる

データ

インデックスが階層型のデータを準備します。

unstack 実行

unstack すると内側のインデックスが列へ移動します。

unstack の引数

移動するインデックスは引数で指定できます。外側のインデックスを移動したければ 0 を、内側のインデックスを移動したければ 1 を指定します。

stack、unstack を組み合わせ

stack、unstack を組み合わせれば、好きなように形を変形できます。

ちなみに、上の結果は転置行列 df.T と同じです。

スポンサーリンク

コメントはお気軽に