판다스 (Pandas) (Pivot)

2024. 8. 3. 16:04프로그래밍 (확장)/Python-Pandas

pivot 함수는 데이터를 재구조화하고 요약할 수 있는 도구로 특정 열의 값들을 새로 만든 열과 행 인덱스에 배치해서 테이블을 재구조화 합니다.

 


기본 사용법

DataFrame.pivot(index=None, columns=None, values=None)

 

  • index: 새로 만들 행 인덱스로 사용할 열 이름 또는 이름의 리스트
  • columns: 새로 만들 열 이름으로 사용할 열 이름 또는 이름의 리스트
  • values: 새로운 프레임의 데이터 값으로 사용할 열 이름

 

 

ChatGPT 생성 예시 코드 1:

 

데이터 프레임 생성.

import pandas as pd

data = {
    'Date': ['2020-01-01', '2020-01-02', '2020-01-01', '2020-01-02'],
    'City': ['New York', 'New York', 'Los Angeles', 'Los Angeles'],
    'Temperature': [30, 35, 25, 28]
}

df = pd.DataFrame(data)
print(df)
         Date         City  Temperature
0  2020-01-01     New York           30
1  2020-01-02     New York           35
2  2020-01-01  Los Angeles           25
3  2020-01-02  Los Angeles           28

 

피벗 테이블 생성.

pivot_df = df.pivot(index='Date', columns='City', values='Temperature')
print(pivot_df)
City        Los Angeles  New York
Date                             
2020-01-01           25        30
2020-01-02           28        35

여기서 보면 인덱스로 'Date' 열 이름은 'City' 값은 'Temperature'를 선택해서 피벗 테이블을 생성 했다.

위쪽 각 인자의 설명을 참조해서 보면 쉽게 이해할 수 있다.

 

ChatGPT 생성 예시 코드 2:

 

데이터 프레임을 생성

data = {
    'Date': ['2020-01-01', '2020-01-01', '2020-01-02', '2020-01-02'],
    'City': ['New York', 'Los Angeles', 'New York', 'Los Angeles'],
    'Weather': ['Sunny', 'Sunny', 'Rainy', 'Cloudy'],
    'Temperature': [30, 25, 35, 28]
}

df = pd.DataFrame(data)
print(df)
         Date         City Weather  Temperature
0  2020-01-01     New York   Sunny           30
1  2020-01-01  Los Angeles   Sunny           25
2  2020-01-02     New York   Rainy           35
3  2020-01-02  Los Angeles  Cloudy           28

 

피벗 테이블 생성 (여러개의 '컬럼' - City, Weather 에 대한 피벗 테이블)

pivot_df = df.pivot(index='Date', columns=['City', 'Weather'], values='Temperature')
print(pivot_df)
City       New York Los Angeles New York Los Angeles
Weather       Sunny       Sunny    Rainy      Cloudy
Date                                                
2020-01-01     30.0        25.0      NaN         NaN
2020-01-02      NaN         NaN     35.0        28.0

간단하게 하나의 value를 살펴보면 Date를 인덱스로 2020-01-01 에 New York에 Sunny인 날은 1열 1행에서 보듯 30.0으로 확인할 수 있다.

 

ChatGPT 생성 예시 코드 3: 

 

데이터 프레임 생성

data = {
    'Date': ['2020-01-01', '2020-01-01', '2020-01-02', '2020-01-02'],
    'City': ['New York', 'Los Angeles', 'New York', 'Los Angeles'],
    'Temperature': [30, 25, 35, 28],
    'Humidity': [80, 70, 75, 65]
}

df = pd.DataFrame(data)
print(df)
         Date         City  Temperature  Humidity
0  2020-01-01     New York           30        80
1  2020-01-01  Los Angeles           25        70
2  2020-01-02     New York           35        75
3  2020-01-02  Los Angeles           28        65

 

피벗 테이블 생성 (여러 '값' - Temperature, Humidity 에 대한 피벗 테이블)

pivot_df = df.pivot(index='Date', columns='City')
print(pivot_df)
           Temperature             Humidity         
City       Los Angeles New York Los Angeles New York
Date                                                
2020-01-01          25       30          70       80
2020-01-02          28       35          65       75

 

 

참고: https://pandas.pydata.org/docs/

 

pandas documentation — pandas 2.2.2 documentation

API reference The reference guide contains a detailed description of the pandas API. The reference describes how the methods work and which parameters can be used. It assumes that you have an understanding of the key concepts.

pandas.pydata.org