Python

[파이썬] 데이터프레임 형태 변환 - pandas, melt

weweGH 2024. 10. 21. 09:37
반응형

melt
melt


데이터프레임 형태 변환 - pandas, melt


들어가며

  데이터프레임의 형태 변환이 필요할 때, pandas의 melt를 활용한다. melt는 단어 그대로 데이터프레임을 녹여 원하는 형태로 재생성하는 것이다. 특정 열을 기준으로 다른 하나의 열을 활용하여 새로운 데이터프레임을 생성한다.


melt


sample_melt.csv
0.00MB


먼저 필요한 패키지인 pandas를 import 하고, 데이터를 불러옵니다. sample_melt.csv는 난수를 활용하여 생성한 sample 데이터입니다. 위 파일을 다운로드하여 연습해 보세요.

import pandas as pd

df = pd.read_csv('sample_melt.csv')
df

df
df


df는 10x10 형태의 데이터프레임입니다. df를 melt를 활용하여 데이터 분석에 적합한 형태로 변환하면 다음과 같습니다.

df_melt = pd.melt(df, id_vars='V_ID', value_vars=df.columns, var_name='HH', value_name='VALUE')
df_melt.head()

df_melt
df_melt


melt에 옵션은 다음과 같습니다.

  • id_vars: 기준이 되는 열의 이름입니다. 이 열은 변환 후에도 동일하게 유지됩니다.
  • value_vars: 녹일 열의 이름입니다. 이 열은 새로운 변수와 값으로 변환됩니다. 지정하지 않으면, id_vars로 지정된 열 이외의 모든 열을 녹입니다.
  • var_name: 녹여서 생성된 새로운 변수의 이름입니다. 디폴트는 'variable'입니다.
  • value_name: 녹여서 생성된 새로운 값의 이름입니다. 디폴트는 'value'입니다.

sample 데이터인 df는 간단한 구조의 데이터프레임이므로 value_vars를 지정하지 않아도 결과는 동일합니다.

df_melt2 = pd.melt(df, id_vars='V_ID', var_name='HH', value_name='VALUE')
df_melt2.head()

HH의 일부에 대해서만 변환도 가능합니다. df의 일부 컬럼에 대해서만 melt로 변환하면 다음과 같습니다.

df_melt3 = pd.melt(df, id_vars='V_ID', value_vars=df.columns[0:3], var_name='HH', value_name='VALUE')
print('df_melt3의 HH: ', df_melt3.HH.unique())
df_melt3.head()

df_melt3
df_melt3


전체 코드

import pandas as pd

df = pd.read_csv('sample_melt.csv')
df

df_melt = pd.melt(df, id_vars='V_ID', value_vars=df.columns, var_name='HH', value_name='VALUE')
df_melt.head()

df_melt2 = pd.melt(df, id_vars='V_ID', var_name='HH', value_name='VALUE')
df_melt2.head()

df_melt3 = pd.melt(df, id_vars='V_ID', value_vars=df.columns[0:3], var_name='HH', value_name='VALUE')
print('df_melt3의 HH: ', df_melt3.HH.unique())
df_melt3.head()

 

반응형