판다스 디테일

[Pandas] DataFrame.crosstab() 사용하기

dondon-a 2024. 6. 15. 17:35
반응형

pd.crosstab 함수는 Pandas에서 교차표(또는 분할표)를 생성하는 데 사용됩니다. 교차표는 두 개 이상의 범주형 변수 사이의 관계를 보여주는 표로, 각 변수의 고유한 값의 조합에 대한 빈도 수를 계산합니다. 이는 주로 데이터 분석과 통계적 분석에서 유용합니다.

기본 사용법

pd.crosstab 함수의 기본 사용법은 다음과 같습니다:

pd.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name='All', dropna=True, normalize=False)

주요 매개변수

  • index: 교차표의 행을 구성할 변수 또는 변수를 포함하는 배열/Series.
  • columns: 교차표의 열을 구성할 변수 또는 변수를 포함하는 배열/Series.
  • values: 선택사항. 교차표의 셀 값을 계산할 때 사용할 변수. aggfunc와 함께 사용.
  • rownames: 선택사항. 행 이름을 지정하는 문자열의 리스트.
  • colnames: 선택사항. 열 이름을 지정하는 문자열의 리스트.
  • aggfunc: 선택사항. values가 지정된 경우 데이터를 집계할 함수. 예: 'sum', 'mean' 등.
  • margins: 선택사항. 행과 열의 총합을 추가할지 여부를 지정하는 Boolean 값.
  • margins_name: 선택사항. 총합을 표시할 때 사용할 이름 (기본값: 'All').
  • dropna: 선택사항. NA 값을 포함하는 행/열을 드롭할지 여부를 지정하는 Boolean 값.
  • normalize: 선택사항. 교차표 값을 정규화할지 여부를 지정하는 Boolean 값.

예제

다음은 pd.crosstab을 사용하는 몇 가지 예제입니다.

기본 교차표

import pandas as pd

# 예시 데이터 생성
data = {
    'Gender': ['Male', 'Female', 'Female', 'Male', 'Male', 'Female', 'Female', 'Male'],
    'Survived': [1, 1, 0, 0, 1, 1, 0, 0]
}
df = pd.DataFrame(data)

# 교차표 생성
ct = pd.crosstab(df['Gender'], df['Survived'])
print(ct)

출력:

Survived  0  1
Gender        
Female    1  2
Male      2  1

valuesaggfunc를 사용한 교차표

# 예시 데이터 생성
data = {
    'Gender': ['Male', 'Female', 'Female', 'Male', 'Male', 'Female', 'Female', 'Male'],
    'Survived': [1, 1, 0, 0, 1, 1, 0, 0],
    'Age': [22, 38, 26, 35, 28, 27, 32, 24]
}
df = pd.DataFrame(data)

# values와 aggfunc를 사용하여 평균 연령 계산
ct = pd.crosstab(df['Gender'], df['Survived'], values=df['Age'], aggfunc='mean')
print(ct)

출력:

Survived     0     1
Gender              
Female    26.0  32.5
Male      29.5  28.0

margins 사용

# margins를 사용하여 총합 추가
ct = pd.crosstab(df['Gender'], df['Survived'], margins=True)
print(ct)

출력:

Survived  0  1  All
Gender             
Female    1  2    3
Male      2  1    3
All       3  3    6

normalize 사용

# 교차표 값을 정규화하여 비율 계산
ct = pd.crosstab(df['Gender'], df['Survived'], normalize=True)
print(ct)

출력:

Survived         0         1
Gender                      
Female    0.166667  0.333333
Male      0.333333  0.166667

요약

  • pd.crosstab 함수는 두 개 이상의 범주형 변수 사이의 관계를 나타내는 교차표를 생성하는 데 유용합니다.
  • 다양한 매개변수를 통해 교차표의 형식과 내용을 세밀하게 조정할 수 있습니다.
  • valuesaggfunc를 함께 사용하여 셀 값을 집계할 수 있으며, margins를 통해 총합을 추가할 수 있습니다.
  • normalize를 사용하여 비율 기반의 교차표를 생성할 수 있습니다.

이와 같은 기능을 통해 pd.crosstab은 데이터 분석과 통계적 분석에서 강력한 도구로 사용될 수 있습니다.

반응형