18. Appendix. pandas_reshape 2

Ryan·2025년 1월 9일

SQL/Python 분석

목록 보기
20/94

Appendix. pandas_reshape 2

Pandas를 활용한 데이터 재구조화 및 결합

Pandas의 melt, pivot_table, 그리고 concat 메서드를 사용하면 데이터 재구조화와 결합 작업을 효율적으로 처리할 수 있습니다. 이를 통해 데이터를 분석에 적합한 형태로 변환할 수 있습니다.


1. 데이터프레임 생성

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

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]
})

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

category1category22023-07-012023-07-022023-07-032023-07-042023-07-05
메인양념치킨102010530
메인간장치킨265251510
메인반반112012521
메인마늘치킨55122522
메인후라이드103030510

2. melt 함수로 세로형 데이터 변환

  • melt를 사용하여 가로로 펼쳐진 데이터를 세로로 변환합니다.
  1. 단일 기준으로 변환

    python
    코드 복사
    df2.melt(id_vars=['category1'])
    
    • 결과: category1 컬럼을 고정하고 나머지 데이터를 세로로 나열.
  2. 다중 기준으로 변환

    python
    코드 복사
    df2.melt(id_vars=['category1', 'category2'])
    
    • 결과: category1category2 컬럼을 고정하고 나머지 데이터를 변환.
  3. 새로운 컬럼 이름 지정

    python
    코드 복사
    tmp = df2.melt(id_vars=['category1', 'category2'], var_name='date', value_name='cnt')
    
    • var_name='date': 날짜 정보를 저장하는 새로운 컬럼 이름.
    • value_name='cnt': 값 정보를 저장하는 새로운 컬럼 이름.

3. pivot_table로 데이터 요약

세로형으로 변환된 데이터를 기준으로 피벗 테이블을 생성합니다:

python
코드 복사
tmp.pivot_table(index=['category1', 'category2'])
  • index=['category1', 'category2']: category1category2를 기준으로 데이터를 그룹화.
  • 기본 집계 함수: mean(평균값).

4. concat으로 데이터 결합

Pandas의 concat 함수로 데이터프레임을 결합합니다.

  1. 가로로 결합 (옆으로 붙임)

    python
    코드 복사
    pd.concat([df1, df2], axis=1)
    
    • axis=1: 두 데이터프레임을 열 기준으로 병합.
  2. 세로로 결합 (밑으로 붙임)

    python
    코드 복사
    pd.concat([df1, df2], axis=0)
    
    • axis=0: 두 데이터프레임을 행 기준으로 병합.

요약

  • melt: 데이터를 세로형으로 변환하여 분석 및 시각화에 적합한 형태로 만듦.
  • pivot_table: 데이터를 요약하여 그룹화 및 집계 가능.
  • concat: 여러 데이터프레임을 효율적으로 결합.

0개의 댓글