Pandas pandas.melt()関数
Minahil Noor
2023年1月30日
-
pandas.melt()
の構文 -
コード例:
pandas.melt()
-
コード例:単一列が
id_vars
であるpandas.melt()
-
コード例:列をスキップする
pandas.melt()
-
コード例:複数列の
pandas.melt()
pandas.melt()
関数は、既存の DataFrame
を再形成または変換します。DataFrame
の方向をワイドフォーマットからロングフォーマットに変更します。
pandas.melt()
の構文
pandas.melt(dataframe, id_vars, value_vars, var_name, value_name, col_level)
パラメーター
DataFrame |
必須 | ロングフォーマットに変更したいのは DataFrame です。 |
id_vars |
オプション | tuple 、list 、または N 次元の array を指定できます。識別子変数に使用される列です。複数の識別子列を選択できます。 |
value_vars |
オプション | tuple 、list 、または N 次元の array を指定できます。デフォルトでは、識別子変数として指定されていない列は値変数です。これらを選択することもできます。 |
var_name |
オプション | スカラー 型の変数です。識別子列の名前です。デフォルトでは、variable です。 |
value_name |
オプション | スカラー 型の変数です。非識別子列の名前です。デフォルトでは、value です。 |
col_level |
オプション | 整数 または文字列 です。マルチインデックス列の場合、このパラメーターを使用して DataFrame を変換できます。 |
戻り値
1つ以上の識別子列と、変数と値という名前の 2つの非識別子列のみを含む、変換された DataFrame
を返します。
コード例:pandas.melt()
最初に、必須パラメーター、つまり DataFrame
のみを渡すことにより、この関数をチェックします。
import pandas as pd
dataframe=pd.DataFrame({'Attendance': {0: 60, 1: 100, 2: 80,3: 78,4: 95},
'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
'Obtained Marks': {0: '90%', 1: '75%', 2: '82%',3: '64%',4: '45%'}})
dataframe1 = pd.melt(dataframe)
print(dataframe1)
DataFrame
は次のようになります
Attendance Name Obtained Marks
0 60 Olivia 90%
1 100 John 75%
2 80 Laura 82%
3 78 Ben 64%
4 95 Kevin 45%
出力:
variable value
0 Attendance 60
1 Attendance 100
2 Attendance 80
3 Attendance 78
4 Attendance 95
5 Name Olivia
6 Name John
7 Name Laura
8 Name Ben
9 Name Kevin
10 Obtained Marks 90%
11 Obtained Marks 75%
12 Obtained Marks 82%
13 Obtained Marks 64%
14 Obtained Marks 45%
ここでは、出力に識別子列がないことがわかります。2つの非 ID 列があります。元の DataFrame
の各列は、出力 DataFrame
の行になります。
次に、オプションのパラメーターを渡し、結果を確認します。
コード例:単一列が id_vars
である pandas.melt()
import pandas as pd
dataframe = pd.DataFrame(
{
"Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
"Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
"Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
}
)
dataframe1 = pd.melt(dataframe, id_vars=["Name"])
print(dataframe1)
出力:
Name variable value
0 Olivia Attendance 60
1 John Attendance 100
2 Laura Attendance 80
3 Ben Attendance 78
4 Kevin Attendance 95
5 Olivia Obtained Marks 90%
6 John Obtained Marks 75%
7 Laura Obtained Marks 82%
8 Ben Obtained Marks 64%
9 Kevin Obtained Marks 45%
識別子列は Name
として指定され、variable
列と values
列がその隣にあり、元の DataFrame
から抽出された値が含まれています。
var_name
と value_name
の名前を割り当てて、デフォルトの variable
と values
を置き換えることもできます。
import pandas as pd
dataframe = pd.DataFrame(
{
"Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
"Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
"Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
}
)
dataframe1 = pd.melt(
dataframe, id_vars=["Name"], var_name="Performance", value_name="Success"
)
print(dataframe1)
出力:
Name Performance Success
0 Olivia Attendance 60
1 John Attendance 100
2 Laura Attendance 80
3 Ben Attendance 78
4 Kevin Attendance 95
5 Olivia Obtained Marks 90%
6 John Obtained Marks 75%
7 Laura Obtained Marks 82%
8 Ben Obtained Marks 64%
9 Kevin Obtained Marks 45%
コード例:列をスキップする pandas.melt()
Attendance
のみを確認したい場合は、value_vars
を指定する必要があります。
import pandas as pd
dataframe = pd.DataFrame(
{
"Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
"Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
"Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
}
)
dataframe1 = pd.melt(
dataframe,
id_vars=["Name"],
value_vars="Attendance",
var_name="Performance",
value_name="Success",
)
print(dataframe1)
出力:
Name Performance Success
0 Olivia Attendance 60
1 John Attendance 100
2 Laura Attendance 80
3 Ben Attendance 78
4 Kevin Attendance 95
元の DataFrame
の Attendance
列の情報のみが表示されます。
コード例:複数列の pandas.melt()
デモ DataFrame
に追加の列 ID
を追加します。
import pandas as pd
dataframe = pd.DataFrame(
{
"Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
"ID": {0: 1, 1: 2, 2: 3, 3: 4, 4: 5},
"Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
"Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
}
)
dataframe1 = pd.melt(dataframe, id_vars=["ID", "Name"])
print(dataframe1)
出力:
ID Name variable value
0 1 Olivia Attendance 60
1 2 John Attendance 100
2 3 Laura Attendance 80
3 4 Ben Attendance 78
4 5 Kevin Attendance 95
5 1 Olivia Obtained Marks 90%
6 2 John Obtained Marks 75%
7 3 Laura Obtained Marks 82%
8 4 Ben Obtained Marks 64%
9 5 Kevin Obtained Marks 45%
ID
列と Name
列の両方が識別子列として割り当てられます。