Pandas의 melt, pivot_table, 그리고 concat 메서드를 사용하면 데이터 재구조화와 결합 작업을 효율적으로 처리할 수 있습니다. 이를 통해 데이터를 분석에 적합한 형태로 변환할 수 있습니다.
아래는 예제로 사용할 데이터프레임입니다:
python
코드 복사
import pandas as pd
# 데이터프레임 생성
df2 = pd.DataFrame({
"category1": ["메인", "메인", "메인", "메인", "메인"],
"category2": ["양념치킨", "간장치킨", "반반", "마늘치킨", "후라이드"],
"2023-07-01": [10, 26, 11, 5, 10],
"2023-07-02": [20, 5, 20, 5, 30],
"2023-07-03": [10, 25, 12, 12, 30],
"2023-07-04": [5, 15, 5, 25, 5],
"2023-07-05": [30, 10, 21, 22, 10]
})
데이터프레임의 구조는 다음과 같습니다:
| category1 | category2 | 2023-07-01 | 2023-07-02 | 2023-07-03 | 2023-07-04 | 2023-07-05 |
|---|---|---|---|---|---|---|
| 메인 | 양념치킨 | 10 | 20 | 10 | 5 | 30 |
| 메인 | 간장치킨 | 26 | 5 | 25 | 15 | 10 |
| 메인 | 반반 | 11 | 20 | 12 | 5 | 21 |
| 메인 | 마늘치킨 | 5 | 5 | 12 | 25 | 22 |
| 메인 | 후라이드 | 10 | 30 | 30 | 5 | 10 |
melt 함수로 세로형 데이터 변환melt를 사용하여 가로로 펼쳐진 데이터를 세로로 변환합니다.단일 기준으로 변환
python
코드 복사
df2.melt(id_vars=['category1'])
category1 컬럼을 고정하고 나머지 데이터를 세로로 나열.다중 기준으로 변환
python
코드 복사
df2.melt(id_vars=['category1', 'category2'])
category1과 category2 컬럼을 고정하고 나머지 데이터를 변환.새로운 컬럼 이름 지정
python
코드 복사
tmp = df2.melt(id_vars=['category1', 'category2'], var_name='date', value_name='cnt')
var_name='date': 날짜 정보를 저장하는 새로운 컬럼 이름.value_name='cnt': 값 정보를 저장하는 새로운 컬럼 이름.pivot_table로 데이터 요약세로형으로 변환된 데이터를 기준으로 피벗 테이블을 생성합니다:
python
코드 복사
tmp.pivot_table(index=['category1', 'category2'])
index=['category1', 'category2']: category1과 category2를 기준으로 데이터를 그룹화.mean(평균값).concat으로 데이터 결합Pandas의 concat 함수로 데이터프레임을 결합합니다.
가로로 결합 (옆으로 붙임)
python
코드 복사
pd.concat([df1, df2], axis=1)
axis=1: 두 데이터프레임을 열 기준으로 병합.세로로 결합 (밑으로 붙임)
python
코드 복사
pd.concat([df1, df2], axis=0)
axis=0: 두 데이터프레임을 행 기준으로 병합.melt: 데이터를 세로형으로 변환하여 분석 및 시각화에 적합한 형태로 만듦.pivot_table: 데이터를 요약하여 그룹화 및 집계 가능.concat: 여러 데이터프레임을 효율적으로 결합.