데이터 분석과 시각화를 위해 가로로 넓게 펼쳐진 데이터를 세로형(long format)으로 변환해야 할 때가 있습니다. 이를 위해 Pandas의 melt() 함수를 활용합니다.
melt() 함수 사용다음은 기본적으로 melt()를 적용한 예제입니다:
python
코드 복사
# 기본 melt 함수 사용
df.melt('상품군별(1)')
# 결과 확인
df.head()
df.columns[:3]
melt('상품군별(1)'): 특정 컬럼(상품군별(1))을 기준으로 데이터를 세로형으로 변환합니다.id_vars를 활용한 데이터 변환id_vars를 사용하여 변환 대상에서 제외할 컬럼을 지정할 수 있습니다:
python
코드 복사
# id_vars를 지정하여 melt 함수 실행
df.melt(id_vars=df.columns[:3])
# 결과 확인
df.head(1)
id_vars=df.columns[:3]: 첫 세 개의 컬럼을 고정(유지)하고 나머지 컬럼을 변환 대상으로 지정합니다.melt() 결과를 변수에 저장melt() 함수의 결과를 새로운 변수에 저장하여 향후 분석에 활용할 수 있습니다:
python
코드 복사
# 최종적으로 필요한 형태로 데이터 변환
result = df.melt(
id_vars=df.columns[:3], # 유지할 컬럼
var_name='날짜', # 새로 생성될 날짜 컬럼 이름
value_name='거래액' # 새로 생성될 값 컬럼 이름
)
var_name: 가로형 데이터를 풀어낸 후 생성되는 컬럼의 이름을 지정합니다.value_name: 변환 후 값(value)이 들어갈 컬럼의 이름을 지정합니다.result 변수에는 세로형으로 변환된 데이터가 저장됩니다.변환 과정을 통해 데이터는 다음과 같은 형태로 변경됩니다:
| 상품군별(1) | 2023-01 | 2023-02 | 2023-03 | ... |
|---|---|---|---|---|
| 음식서비스 | 5000 | 5200 | 5400 | ... |
| 상품군별(1) | 날짜 | 거래액 |
|---|---|---|
| 음식서비스 | 2023-01 | 5000 |
| 음식서비스 | 2023-02 | 5200 |
| 음식서비스 | 2023-03 | 5400 |
변환된 데이터는 이후 추가 분석과 시각화에 적합한 구조를 가지게 됩니다. 이제 이 데이터를 활용하여 인사이트를 도출할 준비를 할 수 있습니다.