목차
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함수는 기준열에 따라 여러 열들을 길게 늘려서 행으로 붙입니다. 여기서 두 개의 열 이름을 정해야 하는데, 하나는 여러 열들의 개념을 포괄하는 이름이고, 다른 하나는 그 열들이 원래 가지고 있던 값들을 포괄하는 이름입니다.
'딥상어동의 딥한 데이터 처리 > 전처리' 카테고리의 다른 글
[Pandas] 이것만은 알고가자 - 0.파일 불러오기 (0) | 2021.06.05 |
---|---|
시계열 | 이동 평균(Moving Average) 기초 (0) | 2021.05.02 |
Pandas | Stack VS Unstack (2) | 2021.01.28 |
PYTHON | JSON 파일 DataFrame 변환(json_normalize) (5) | 2020.12.06 |
아카이브 페이지 (0) | 2020.12.06 |
제 블로그에 와주셔서 감사합니다! 다들 오늘 하루도 좋은 일 있으시길~~
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!