본문 바로가기
데이터 분석/데이터 전처리

[Pandas] 34. 데이터 재구조화(Reshape)하기 (feat. crosstab)

by 부자 꽁냥이 2022. 11. 21.

안녕하세요~ 꽁냥이에요. 지난 포스팅에서는 Pandas의 wide_to_long 메서드를 이용한 데이터 재구조화 방법을 알아보았는데요. Pandas에서는 crosstab을 이용하여 교차표(Cross Table)을 만들 수 있는데요. 교차표 또한 데이터 재구조화의 한 방법이라 할 수 있습니다. 이번 포스팅에서는 Pandas crosstab을 이용한 데이터 재구조화 방법을 알아보겠습니다.

 

[Pandas] 30. 데이터 재구조화(Reshape) 하기 (feat. melt)

[Pandas] 31. 데이터 재구조화(Reshape)하기 (feat. pivot, pivot_table)

[Pandas] 32. 데이터 재구조화(Reshape)하기 (feat. stack, unstack)

[Pandas] 33. 데이터 재구조화(Reshape)하기 (feat. wide_to_long)


   데이터 재구조화(Reshape)하기 (feat. crosstab)

아래 그림은 crosstab을 이용한 데이터 재구조화 결과를 나타낸 것입니다. crosstab은 범주형 자료를 갖는 두 배열을 받아서 각 범주에 해당하는 빈도수를 계산하고 이를 교차표(Cross Table) 형태로 만들어줍니다.

 

crosstab은 index, columns 인자에 각각 Pandas Series와 같은 배열을 받게 됩니다. 이때 index에 들어가는 범주는 행으로(빨간색 박스) columns에 들어가는 범주 열로 표시됩니다(하늘색 박스).

Padnas crosstab을 통한 데이터프레임 재구조화

 

이제 코드를 통하여 crosstab 사용법을 알아봅시다.

 

먼저 예제용 데이터를 만들어줍니다.

 

import pandas as pd

data = {
    'gender' : ['M', 'M', 'M', 'M', 'W', 'W', 'W', 'W'],
    'score' : ['A', 'C', 'B', 'B', 'A', 'C', 'C', 'B']
}
df = pd.DataFrame(data)
df

 

 

이제 crosstab을 이용한 데이터 재구조화 결과를 아래 코드를 실행하여 살펴보세요.

 

pd.crosstab(index=df['gender'], columns=df['score'])

 

 

crosstab은 인덱스 이름과 칼럼 이름을 바꿀 수 있으며 margins=True를 통해 교차표에 집계 결과를 포함시킬 수 있습니다.

 

pd.crosstab(df['gender'], df['score'], rownames=['SEX'], colnames=['TEST_SCORE'], margins=True)

 

 

그리고 normalize=True를 통하여 빈도수를 비율로 표시할 수도 있습니다.

 

pd.crosstab(df['gender'], df['score'], normalize=True)

 


이번 포스팅에서는 Pandas crosstab을 이용하여 교차표(Cross Table)을 만드는 방법을 알아보았습니다. 교차표는 실제로 데이터 분석 시 많이 활용되는 테이블이므로 오늘 배운 내용을 알아두시면 반드시 필요할 때가 옵니다.

 

지금까지 꽁냥이의 글 읽어주셔서 감사합니다. 안녕히 계세요.

 


댓글


맨 위로