注目キーワード

【Python】pandas melt を利用して DataFrame を加工する

Python でデータ解析を行うための高性能なライブラリとして、これまでも pandas の使い方については説明してきました。例えば以前の記事では、基本的な型であるデータフレーム(DataFrame)を列方向や行方向に結合する処理をサンプルソースを使って説明しました

このように表データを扱う時、列と行という概念は常に考えておく必要があります。一方で行や列の変換することも必要になることがあります。melt() は別の関数である pivot() と合わせて、行と列の変形や変換に関わる関数です。こちらの記事では特に melt() について解説します。

インストール

pandas ライブラリを利用しますので、インストールされていない場合には、pip install pandas を実行しておく必要があります。

pandas melt 関数の基本的な使い方

データにはこちらの記事で利用した順位表のデータ(juni.tsv)を利用します。

サンプルソース

早速melt関数を使ってみます。順位表のメインの列名のうち、「勝利」だけのデータを抽出しています。

  • 先頭では juni.tsv を読み込み、いくつかの列だけ残しました。
  • 次にmeltを利用します。
    • id_vars は主なID部分として表に残すものを指定します。ここではチーム名を残しました。
    • value_vars はどの列を変形して残すのかを指定します。ここでは「勝利」だけ残すことにします。
    • var_name は変形して抽出してきた列の名前を設定します。ここでは「データ」という名前を残します。
    • value_name は変形して残してきた列の値の名前を設定します。ここでは「数値」という名前を残します。

実行結果

実行結果になります。横に広がっていた順位表のデータから、「勝利」の列部分だけに注目し、各「チーム」の「勝利」に記録されていたデータを数値として抽出してくることができました。

1つの値を抽出してきた実行例

values_vars に複数設定する場合のサンプルソース

複数の列を抽出して縦に長い表を作る時には、複数の列名をリストで指定することができます。ほとんど同じサンプルソースですが、こちらでは「勝利」と「敗戦」を両方指定してみました。

実行結果

実行結果です。縦に長い表へと加工し直すことができています。

スポンサーリンク

2つの値を抽出してきた実行例

pandas を使うといろいろな表データの加工が可能になります。使い方がすぐに分かるものと分かりづらいものがあるかと思いますが、手元の表のデータに適用してみることで、動作がイメージできるかと思います。是非いろんな処理を試してみてくださいね。