17. Appendix. pandas_reshape 1

Ryan·2025년 1월 9일

SQL/Python 분석

목록 보기
19/94

Appendix. pandas_reshape 1

Pandas를 활용한 데이터 구조 변경: Pivot과 Pivot Table

Pandas에서 데이터를 변환할 때 가장 많이 사용하는 두 가지 함수는 pivotpivot_table입니다. 이 둘은 유사한 작업을 수행하지만, 특정 상황에서 사용하는 방식과 결과에 차이가 있습니다.


1. 데이터프레임 생성

아래는 예제로 사용할 데이터프레임입니다:

python
코드 복사
import pandas as pd

# 데이터프레임 생성
df = pd.DataFrame({
    'date': ['2025-01-01', '2025-01-01', '2025-01-01', '2025-01-01', '2025-01-01'],
    'category1': ['메인', '메인', '사이드', '음료', '사이드'],
    'category2': ['양념치킨', '간장치킨', '치즈볼', '콜라', '감자튀김'],
    'count': [1, 2, 1, 4, 1],
    'price': ['20000', '50000', '6000', '8000', '8000']
})

데이터프레임의 구조는 다음과 같습니다:

datecategory1category2countprice
2025-01-01메인양념치킨120000
2025-01-01메인간장치킨250000
2025-01-01사이드치즈볼16000
2025-01-01음료콜라48000
2025-01-01사이드감자튀김18000

2. pivot 함수 사용

  • pivot은 데이터를 특정 기준으로 재구조화합니다. 다음은 간단한 예제입니다:
  1. category2를 열로 설정하고 count를 값으로 설정

    python
    코드 복사
    df.pivot(index='date', columns='category2', values='count')
    

    결과:

    category2간장치킨감자튀김양념치킨치즈볼콜라
    2025-01-0121114
  2. category1을 열로 설정하고 price를 값으로 설정

    python
    코드 복사
    df.pivot(index='date', columns='category1', values='price')
    

    에러 발생: 동일한 (date, category1) 조합에 여러 값이 존재하기 때문입니다.


3. pivot_table 함수 사용

  • pivot_tableaggfunc(집계 함수)를 사용해 중복 데이터로 인한 에러를 방지합니다:
python
코드 복사
df.pivot_table(index='date', columns='category2', values='count')

결과:

category2간장치킨감자튀김양념치킨치즈볼콜라
2025-01-0121114
  • aggfunc='mean'(기본값): 중복되는 값이 있는 경우 평균을 계산합니다.
  • 이 방식으로 에러 없이 데이터를 집계할 수 있습니다.

4. pivotpivot_table의 차이점

구분pivotpivot_table
중복 데이터 처리에러 발생aggfunc를 사용해 집계 가능
기본 집계 함수지원하지 않음평균(mean) 기본 제공
사용 용도데이터가 중복되지 않는 경우데이터 중복 및 집계가 필요한 경우

요약

  • pivot: 중복되지 않는 데이터를 간단히 재구조화할 때 사용.
  • pivot_table: 중복 데이터 처리 및 집계가 필요한 경우 적합.

0개의 댓글