こんにちは,shun(@datasciencemore)です!!
今回はmeltとpivotについて学習していきます.
meltとpivotは,縦横変換をするメソッドです.
縦横変換というのは,データフレームの内容を変えないで,形を変えることです.
縦型(long型)にする場合を縦変換,横型(wide型)にする場合を横変換と呼びます.
ちなみに縦変換,横変換はこのサイトだけの造語ですが,意外と一般的に通じると思います.
イメージは下図のようになります.
この例では,お店(A,B,C)のみかんとりんごの1つ当たりの値段を表に示しています.
左の表と右の表で,内容に違いはありませんが,形が違います.
私たち人間にとってわかりやすいのは,左の表ではないでしょうか?
このような表をExcelなどでよく目にする機会があると思います.
しかし,実はコンピュータは右の表が理解しやすいのです.
なぜかというと右の表は,変数が一列にまとめられているからです.
この右の表のような状態のことをtidyというのです.
図を見比べると一目瞭然ですね.
ですから,コンピュータに処理を頼むときは,左から右に変換することがよくあります.
これを縦変換と呼び,meltを使用することで実現できます.
また,逆に人間にとってわかりやすい表を得るために右から左へ変換することもよくあります.
これを横変換と呼び,pivotrを使用することで実現できるのです.
それでは,これから具体例を挙げて説明しますね.
データはさっきのデータを英語にしたものを使用します.
さっきはわかりやすさのため,日本語の表を使用しましたが,コーディングするときは日本語はなるべく避けましょう
予期しないことが多々起きるので...
日本人は人生ハードモードですね...
0.準備
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# パッケージ読み込み import pandas as pd import numpy as np # データフレームの表示行数を指定 pd.set_option('display.max_rows', 6) # wide型のデータフレームを定義 df_wide = pd.DataFrame( { "store":["A", "B", "C"], "orange":[100, 70, 120], "apple":[150, 90, 80] } ) |
1.melt
まずは,wide型のデータフレームを縦変換してlong型に変換してみましょう.
1 2 3 4 5 6 7 8 9 10 |
# wide型をlong型に変換 df_long = df_wide.melt( id_vars="store", value_vars=["orange", "apple"], var_name="fruit", value_name="price" ) # データフレーム確認 df_long |
ちゃんと縦変換できていますね!
2.pivot
今度は,先ほどのlong型のデータフレームを横変換してwide型にしてみましょう.
1 2 3 4 5 6 |
# long型をwide型に変換 df_long.pivot( index="store", columns="fruit", values="price" ).reset_index() |
はい,ちゃんとwide型に戻りました!
まとめ
今回は,縦横変換として,meltとpivotを勉強しました.
これらを使用してデータフレームを縦変換したり,横変換したりできます.
これらを屈指して自由自在にデータフレームを変形できるようになってくださいね!
これにてpandasのデータフレーム処理については終了です!
次回からpandasの文字列処理について学習していく予定です.
それじゃ,お疲れ様でした!!
次回
-
【pandas】概要【文字列処理】
こんにちは,shun(@datasciencemore)です!! これからしばらくpandasの文字列処理について,学習していきます. 今回はこれから学習していくpandasの文字列処理の概要について ...
続きを見る