melt()를 통해 데이터를 세로형(long format)으로 변환한 이후, 데이터를 다시 분석 목적에 맞게 피벗 테이블 형식으로 재구조화합니다. 이를 위해 Pandas의 pivot_table() 함수를 활용합니다.
먼저, 변환된 데이터를 복사하여 작업합니다:
python
코드 복사
pivot = result.copy()
# 기본 pivot_table 실행
# pivot.pivot_table(index=['상품군별(1)', '상품군별(2)', '운영형태별(1)']) # 숫자형 데이터가 없을 경우 에러 발생
pivot.info()
pivot.info(): 데이터를 확인하여 숫자형 데이터가 없는 경우 pivot_table에서 오류가 발생할 수 있음을 점검합니다.거래액 컬럼에 숫자형과 문자형이 섞여 있는 경우가 있을 수 있습니다. 이를 확인하기 위해 데이터 타입을 점검합니다:
python
코드 복사
# 거래액 컬럼의 데이터 타입 확인
[type(i) for i in pivot['거래액']] # 각 값의 데이터 타입 리스트 생성
# 중복 제거로 데이터 타입 확인
set([type(i) for i in pivot['거래액']])
거래액 컬럼에 숫자형(int/float)과 문자형(str)이 혼합되어 있음을 알 수 있습니다.숫자형이 아닌 데이터 값을 필터링하여 문제의 원인을 찾아냅니다:
python
코드 복사
# 숫자형이 아닌 값 추출
[i for i in pivot['거래액'] if type(i) != int]
거래액 컬럼에서 숫자형이 아닌 값들을 리스트로 반환합니다.데이터 이상치를 확인하여 문제를 해결합니다. 예를 들어, 특정 값이 문자열로 잘못 포함된 경우:
python
코드 복사
# 특정 이상치 확인
df[df["2017.01"] == '-']
이후 단계에서는:
pivot_table을 재실행하여 분석 목적에 적합한 데이터 생성.정리된 데이터로 피벗 테이블을 생성하면 다음과 같은 결과를 얻을 수 있습니다:
python
코드 복사
pivot.pivot_table(
index=['상품군별(1)', '운영형태별(1)'], # 행 기준
columns='날짜', # 열 기준
values='거래액', # 값
aggfunc='sum' # 집계 함수
)
이 과정은 데이터를 효율적으로 요약 및 정리하여, 이후 시각화와 분석에 적합한 구조를 제공합니다.