Python Pandas データフレームのピボットを解除する

Luqman Khan 2023年6月21日
  1. melt() 関数を使用して Python Pandas データフレームのピボットを解除する
  2. まとめ
Python Pandas データフレームのピボットを解除する

Python は、優れたデータ中心のパッケージ エコシステムにより、データ分析に好まれる言語です。 これらのパッケージの 1つに Pandas があり、データのインポートと分析が大幅に簡素化されます。

この記事では、Pandas の データフレーム melt() 関数 を使用して、オプションで識別子変数を設定したまま、データフレームをワイド フォーマットからロング フォーマットに変換します。

melt() 関数を使用して Python Pandas データフレームのピボットを解除する

この関数は、データフレームを、1つ以上の列が識別子変数 (id vars) である形式に変換できます。 測定された変数 (値の変数) と見なされる他のすべての列は、行軸に対して アンピボット され、2つの非識別子列 変数 のみが残ります。

構文:

DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)

パラメーター:

  • frame: これは私たちが使用する DataFrame です。
  • id_vars: これは、識別子変数として使用する列です。
  • value_vars: これはアンピボットに使用されます。
  • var_name: 変数列の名前を指定します。 何も指定されていない場合、フレーム、変数、または列名が使用されます。
  • value_name: 値列には一意の名前を付ける必要があります。
  • col_level: 列が MultiIndex の場合、このレベルを使用して列を融解します。
  • Returns: DataFrame を、各列に 1つ以上の識別子変数を含む形式に変換します。

例 1:

まず、列 ABscCse、および xyz を持つデータフレームを作成します。

import pandas as pd

df = pd.DataFrame(
    {
        "A": [12, 4, 5, 44, 1],
        "Bsc": [5, 2, 54, 3, 2],
        "Cse": [20, 16, 7, 3, 8],
        "xyz": [14, 3, 17, 2, 6],
    }
)
df

出力:

|      | A    | Bsc  | Cse  | xyz  |
| ---- | ---- | ---- | ---- | ---- |
| 0    | 12   | 5    | 20   | 14   |
| 1    | 4    | 2    | 16   | 3    |
| 2    | 5    | 54   | 7    | 17   |
| 3    | 44   | 3    | 3    | 2    |
| 4    | 1    | 2    | 8    |      |

以下の関数は、データフレームのピボットを解除します。 ここで、A は識別子で、Bsc 列は値変数です。

df.melt(id_vars=["A"], value_vars=["Bsc"])

出力:

|      | A    | variable | value |
| ---- | ---- | -------- | ----- |
| 0    | 12   | Bsc      | 5     |
| 1    | 4    | Bsc      | 2     |
| 2    | 5    | Bsc      | 54    |
| 3    | 44   | Bsc      | 3     |
| 4    | 1    | Bsc      | 2     |

例 2:

dataframe.melt() 関数を使用して、列 A を識別子変数として、列 Bsc および Csc を値変数として設定します。

df.melt(
    id_vars=["A"],
    value_vars=["Bsc", "Cse"],
    var_name="Variable_column",
    value_name="Value_column",
)

出力:

| index | A    | Variable_column | Value_column |
| ----- | ---- | --------------- | ------------ |
| 0     | 12   | Bsc             | 5            |
| 1     | 4    | Bsc             | 2            |
| 2     | 5    | Bsc             | 54           |
| 3     | 44   | Bsc             | 3            |
| 4     | 1    | Bsc             | 2            |
| 5     | 12   | Cse             | 20           |
| 6     | 4    | Cse             | 16           |
| 7     | 5    | Cse             | 7            |
| 8     | 44   | Cse             | 3            |
| 9     | 1    | Cse             |              |

まとめ

この記事では、データフレームのピボットを解除する方法、またはデータフレームを長い形式に変換して行数を増やす方法について説明しました。

この目的のために、melt() 関数を使用しました。 一方の列は変数識別子として指定され、もう一方の列は識別子の値です。

関連記事 - Pandas Dataframe