보통, 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
복사