본문 바로가기
Big Data/DataAnalysis & Manipulate

pd.pivot_table()

by Wikinist 2023. 8. 16.

pd.pivot_table() 함수는 Pandas 라이브러리에서 제공하는 데이터 조작 도구 중 하나로, 데이터프레임의 값을 재구성하고 집계하는 데 사용됩니다. 이 함수를 사용하여 엑셀의 피벗 테이블과 비슷한 작업을 수행할 수 있습니다. 아래는 pd.pivot_table() 함수의 시그니처와 각 매개변수의 역할에 대한 설명입니다:

시그니처

pd.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, margins_name='All', dropna=True, observed=False)

data: 필수 매개변수로, 피벗 테이블을 생성할 데이터프레임입니다.

values: 집계할 열의 이름 또는 열의 이름 리스트입니다. 집계하려는 값을 지정합니다.

index: 행 인덱스로 사용할 열의 이름 또는 열의 이름 리스트입니다. 행별로 그룹화할 기준을 지정합니다.

columns: 열 인덱스로 사용할 열의 이름 또는 열의 이름 리스트입니다. 열별로 그룹화할 기준을 지정합니다.

aggfunc: 집계 함수를 지정합니다. 기본값은 'mean'으로 평균을 의미합니다. 다른 예시로 'sum', 'count', 'min', 'max' 등을 사용할 수 있습니다.

fill_value: 결측값을 대체할 값입니다.

margins: 불리언 값으로, 행/열 합계를 추가할지 여부를 지정합니다.

margins_name: 합계 행/열의 이름을 지정합니다.

dropna: 불리언 값으로, 결과에서 결측값을 제거할지 여부를 지정합니다.

observed: 불리언 값으로, 범주형 데이터의 모든 가능한 값이 있는 것처럼 처리할지 여부를 지정합니다. 기본적으로 False로 설정되어 있습니다.

이 함수를 사용하면 데이터프레임을 원하는 형태로 재구성하고, 그룹화된 데이터의 집계 값을 계산할 수 있습니다. 각 매개변수는 원하는 분석 결과를 얻기 위해 조절할 수 있습니다.

예제

먼저 예제로 사용할 데이터프레임을 생성하겠습니다. 이 데이터프레임은 학생들의 성적에 관한 정보를 담고 있습니다.

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Alice', 'Bob', 'Alice', 'Bob'],
    'Subject': ['Math', 'Math', 'Science', 'Science', 'History', 'History'],
    'Score': [85, 90, 78, 89, 92, 88]
}

df = pd.DataFrame(data)
print(df)

출력된 데이터프레임은 다음과 같습니다

   Name  Subject  Score
0  Alice     Math     85
1    Bob     Math     90
2  Alice  Science     78
3    Bob  Science     89
4  Alice  History     92
5    Bob  History     88

이제 pd.pivot_table() 함수를 사용하여 평균 성적을 과목별로 나타내는 피벗 테이블을 생성해보겠습니다.

pivot_table = pd.pivot_table(df, values='Score', index='Name', columns='Subject', aggfunc='mean')
print(pivot_table)

출력된 피벗 테이블은 다음과 같습니다

Subject  History  Math  Science
Name                           
Alice         92    85       78
Bob           88    90       89

이제 각 학생별로 과목별 평균 성적이 표시되는 피벗 테이블을 얻었습니다. 'Subject' 열의 과목들이 열 인덱스로, 'Name' 열이 행 인덱스로 사용되었으며, 'Score' 열의 값을 평균하여 집계했습니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

'Big Data > DataAnalysis & Manipulate' 카테고리의 다른 글

Apriori 알고리즘  (0) 2023.08.16
연관 규칙 분석  (0) 2023.08.16
pandas 결측값 처리  (0) 2023.08.15
Pandas에서 결측값을 다루기 위한 여러 함수  (0) 2023.08.11
DataFrame 열 위치 변경  (0) 2023.08.11