딥상어동의 딥한 생각

Pandas | Melt

by 딥상어동의 딥한생각

목차

1. melt의 의미(wide to long)
2. 실사용 예제
3. melt 함수 파라미터

 

1. Melt의 의미(wide to long)

 

 

아이스크림이 녹는 이미지를 생각해봅시다. 왼쪽에서 오른쪽으로 혹은 오른쪽에서 왼쪽으로 녹는 아이스크림을 본 적이 있으신가요? 혹은 아래에서 위로 녹는 아이스크림을 본 적 있으신가요?(이건 좀 무섭다...)

 

아이스크림은 위쪽에서 아래로 녹아내립니다. pandas melt 함수는 위와 같은 철학이 담겨있는 함수라고 할 수 있습니다. 즉, 아이스크림이 녹아내리는 것처럼 데이터 프레임을 위에서 아래로 길게 만드는 함수입니다. 

 

2. 실사용 예제

 

#패키지 설치
import pandas as pd
from gapminder import gapminder

#데이터 불러오기
data = gapminder
data.head()

 

 

예제 데이터는 위와 같습니다. 여기서, 위에서 아래로 흘러 내리는 모습을 연출하도록? 데이터를 wide하게 만들어줄 것입니다(pivot).

 

melt_table = data.pivot_table(index='continent', columns='year', values='lifeExp').reset_index()
melt_table

 

 

연도를 기준으로 데이터를 피벗하여 가로로 데이터 프레임을 길게 만들었습니다. 이제, 실제로 melt를 진행해봅시다.

 

#pivot테이블의 컬럼이 여러개이기 때문에
#melt시킬 컬럼만 선택합니다. (여기서는 연도)
col_name = ['year', 'continent']
col_list = [col for col in melt_table.columns if col not in col_name]

#실제, melt 실행 코드
pd.melt(melt_table, id_vars=['continent'], value_vars=col_list,
       var_name='year', value_name='lifeExp').head(20)

 

 

위와 같이 데이터 프레임이 위에서 아래로 길어진게 보이시나요?

 

3. melt 함수 파라미터

 

#실제, melt 실행 코드
pd.melt(melt_table, id_vars=['continent'], value_vars=col_list,
       var_name='year', value_name='lifeExp').head(20)

 

melt 함수의 파라미터는 크게 5가지로 나누어집니다.

 

1. melt, 위에서 아래로 길게 만들 데이터 프레임을 넣어줍니다. (여기서는 melt_table)

2. id_vars = 기준열을 설정합니다. 

3. value_vars = 녹일 열들을 선택합니다.

 

여기서, col_list를 출력해보면

 

 

위와 같이 연도와 관련된 열들이 출력됩니다. 즉, 해당 열의 값들 하나 하나를 id_vars를 기준으로 위에서 아래로 길게 늘여서 붙인다고 생각하시면 됩니다. 

 

4. var_name = value_vars의 열 이름을 입력합니다. 왜냐하면, 여러 열들을 아래에서 위로 길게 늘려 하나의 열로 만들었기 때문입니다.

5. value_name = 값에 해당하는 열 이름을 말 합니다. 

 

결론적으로 melt함수는 기준열에 따라 여러 열들을 길게 늘려서 행으로 붙입니다. 여기서 두 개의 열 이름을 정해야 하는데, 하나는 여러 열들의 개념을 포괄하는 이름이고, 다른 하나는 그 열들이 원래 가지고 있던 값들을 포괄하는 이름입니다.

블로그의 정보

딥상어동의 딥한생각

딥상어동의 딥한생각

활동하기