Python Pandas データフレームのピボットを解除する
Luqman Khan
2023年6月21日
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:
まず、列 A
、Bsc
、Cse
、および 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()
関数を使用しました。 一方の列は変数識別子として指定され、もう一方の列は識別子の値です。