Pandas는 pivot() 함수를 사용하여 용융() 및 녹지 않습니다.
Pandas의 melt() 함수는 DataFrame 형식을 와이드에서 롱으로 변경하는 데 사용됩니다. 하나 이상의 열이 식별자로 작동하는 DataFrame 개체의 특정 형식을 만드는 데 사용됩니다. 나머지 모든 열은 값으로 처리되고 행 축과 변수 및 값의 두 열만 피벗 해제됩니다.
1. 팬더 용융() 예제
melt() 함수의 사용은 예제를 통해 보면 더 명확합니다.
import pandas as pd
d1 = {"Name": ["Pankaj", "Lisa", "David"], "ID": [1, 2, 3], "Role": ["CEO", "Editor", "Author"]}
df = pd.DataFrame(d1)
print(df)
df_melted = pd.melt(df, id_vars=["ID"], value_vars=["Name", "Role"])
print(df_melted)
산출:
Name ID Role
0 Pankaj 1 CEO
1 Lisa 2 Editor
2 David 3 Author
ID variable value
0 1 Name Pankaj
1 2 Name Lisa
2 3 Name David
3 1 Role CEO
4 2 Role Editor
5 3 Role Author
'var_name' 및 'value_name' 매개 변수를 전달하여 'variable' 및 'value'의 열 이름을 변경할 수 있습니다.
df_melted = pd.melt(df, id_vars=["ID"], value_vars=["Name", "Role"], var_name="Attribute", value_name="Value")
권장 읽기: Python Pandas 자습서
2. id_vars로 여러 열
여러 열을 id_vars 매개변수로 전달할 때 어떤 일이 발생하는지 살펴보겠습니다.
df_melted = pd.melt(df, id_vars=["ID", "Name"], value_vars=["Role"])
print(df_melted)
산출:
ID Name variable value
0 1 Pankaj Role CEO
1 2 Lisa Role Editor
2 3 David Role Author
3. melt() 함수에서 열 건너뛰기
소스 DataFrame의 모든 행을 사용할 필요는 없습니다. 다음 예에서 \ID 열은 건너뛰겠습니다.
df_melted = pd.melt(df, id_vars=["Name"], value_vars=["Role"])
print(df_melted)
산출:
Name variable value
0 Pankaj Role CEO
1 Lisa Role Editor
2 David Role Author
4. pivot() 함수를 사용하여 DataFrame 녹이기
우리는 pivot() 함수를 사용하여 DataFrame 객체를 녹이지 않고 원본 데이터 프레임을 얻을 수 있습니다. pivot() 함수의 'index' 매개변수 값은 'id_vars' 값과 같아야 합니다. 'columns' 값은 '변수' 열의 이름으로 전달되어야 합니다.
import pandas as pd
d1 = {"Name": ["Pankaj", "Lisa", "David"], "ID": [1, 2, 3], "Role": ["CEO", "Editor", "Author"]}
df = pd.DataFrame(d1)
# print(df)
df_melted = pd.melt(df, id_vars=["ID"], value_vars=["Name", "Role"], var_name="Attribute", value_name="Value")
print(df_melted)
# unmelting using pivot()
df_unmelted = df_melted.pivot(index='ID', columns='Attribute')
print(df_unmelted)
산출:
ID Attribute Value
0 1 Name Pankaj
1 2 Name Lisa
2 3 Name David
3 1 Role CEO
4 2 Role Editor
5 3 Role Author
Value
Attribute Name Role
ID
1 Pankaj CEO
2 Lisa Editor
3 David Author
녹지 않은 DataFrame 값은 원본 DataFrame과 동일합니다. 그러나 열과 인덱스는 원본 데이터 프레임과 정확히 동일하게 만들기 위해 약간의 변경이 필요합니다.
df_unmelted = df_unmelted['Value'].reset_index()
df_unmelted.columns.name = None
print(df_unmelted)
산출:
ID Name Role
0 1 Pankaj CEO
1 2 Lisa Editor
2 3 David Author
참조: pandas melt() API 문서