Search

Pivot / Melt

보통, groupby 를 하고 난, 집계 결과에 대해서 pivot 을 수행한다.

Pivot

pivot()메서드는 피벗 형태로 변경할 때 사용한다.
index : 움직이지 않을 열(=기준 열)
columns : 새로운 열로 올라갈 현재 열
values : 새로운 열의 값이 될 현재 열
# 년월일별 수요량 집계 day_count = bike.groupby(by=['Year', 'Month', 'Day'], as_index=False)[['Count']].sum() # 피벗 형태로 변환 day_count_w = day_count.pivot(index=['Year', 'Month'], columns='Day', values='Count') # 열 대표이름 제거 day_count_w.columns.name = None # 인덱스 초기화 day_count_w.reset_index(drop=False, inplace=True) # 확인 day_count_w
Python
복사

Melt

언피벗 형태로 변경해준다.
pd.melt() 함수를 사용한다.
보통 시각화를 위해 이전의 형태(언피벗)로 돌려야 하는 경우가 많다.
id_vars : 움직이지 않을 열(=기준 열)
value_vars : 다시 값이 되어 아래로 내려올 현재 열(생략하면 id_vars에 지정한 열 이외의 모든 열)
var_name : value_var에 지정한 열이 값이 될 때 부여할 열 이름
value_name : 새로운 열이 되는 기존 값에 부여할 열 이름(생략하면 value)
# 언피벗 day_count_n = pd.melt(day_count_w, id_vars=['Year', 'Month'], value_vars=range(1, 32), var_name='Day', value_name='Count') # 정렬 day_count_n.sort_values(by=['Year', 'Month', 'Day'], ascending=True, inplace=True) # 결측치 제거(31일이 꽉 차지 않는 월에 결측치 존재) day_count_n.dropna(inplace=True) # 인덱스 초기화 day_count_n.reset_index(drop=True, inplace=True) # 데이터 형식 변경 day_count_n['Count'] = day_count_n['Count'].astype(int) # 확인 day_count_n
Python
복사