Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 Pandas로 두 데이터프레임의 교차표(Crosstab) 구하기

데이터 분석에서 교차표(cross-tabulation)는 두 개 이상의 변수 간 빈도 관계를 한눈에 파악할 수 있게 해주는 유용한 도구입니다. 판다스(pandas)의 pd.crosstab() 함수를 사용하면 서로 다른 데이터프레임에 있는 열들을 조합해 손쉽게 교차표를 만들 수 있습니다.


예를 들어, 두 개의 데이터프레임이 있다고 가정하고 교차표를 적용하면 다음과 같은 결과를 얻습니다.

Age   12  13  14
Mark  80  90  85
Id
1      1   0   0
2      0   1   0
3      1   0   0
4      0   1   0
5      0   0   1

해결 방법

이 문제를 해결하려면 아래 단계를 따르면 됩니다.

  • 두 개의 데이터프레임을 정의합니다.
  • pd.crosstab() 함수를 호출하되, index 매개변수에는 첫 번째 데이터프레임의 'Id' 열을, columns 매개변수에는 'Age''Mark' 열을 리스트 형태로 지정합니다.
pd.crosstab(index=df['Id'], columns=[df['Age'], df1['Mark']])

예제 코드

전체 실행 코드는 다음과 같습니다.

import pandas as pd

df = pd.DataFrame({'Id': [1, 2, 3, 4, 5], 'Age': [12, 13, 12, 13, 14]})
df1 = pd.DataFrame({'Mark': [80, 90, 80, 90, 85]})

print(pd.crosstab(index=df['Id'], columns=[df['Age'], df1['Mark']]))

실행 결과

Age   12  13  14
Mark  80  90  85
Id
1      1   0   0
2      0   1   0
3      1   0   0
4      0   1   0
5      0   0   1

결과 해석

위 출력에서 행(row)은 각 학생의 Id, 열(column)은 AgeMark의 조합을 나타냅니다. 예를 들어 Id가 1인 학생은 나이가 12세이고 점수가 80점이므로 해당 셀의 값이 1로 표시됩니다. 이처럼 pd.crosstab()은 여러 데이터프레임의 열을 결합하여 범주형 데이터의 빈도 분포를 직관적으로 확인할 때 매우 효과적입니다.