데이터집계 cross tab

2025. 1. 6. 13:56data 공부/데이터전처리

데이터 전처리

범주별 갯수 구하기

pd.crosstab(df('a'), df('b')

a 는 행 b는 열

a에 따른 b가 몇개인지 

 

범주별 비율 구하기

pd.crosstab(df['a],df[b],normalize ='all'] 

전체를 100이라고 봤을때 각 항목의 % 

pd.crosstab(df['a],df[b],normalize ='index']

행을 100으로 놓고 봤을 때 각 항목의 % 

pd.crosstab(df['a],df[b],normalize ='columns']

열을 100으로 놓고 봤을 때 각 항목의 % 

 

margins = True 추가 시, 행과 열의 합을 구할 수 있음

pd.crosstab(df['a],df[b],normalize ='all', margins=True]

 

다중 인덱스, 다중 컬럼

pd.crosstab(df[a],df[b], columns=df[c] normalize ='all', margins=True]

a,b는 행 c는 열

pd.crosstab(df[a],df[b],normalize ='comumns', margins=True]

전체를 행으로 놓고 비율 구하기

 

컬럼 여러개 넣고싶으면

pd.crosstab(df[a],df[b], columns=[df[c], df[c]]  normalize ='all', margins=True]

리스트로 넣어주면 됨 

 

이걸 피벗테이블 형태로 만들면 값의 연산을 할 수 있음

기본 형태

pd.pivot_table(df, index='index name a', columns = 'column name b', values = 'value name c', aggfunc='mean')

 

이것도 margins 를 통해 각 열,행의 합을 구할 수 있음

pd.pivot_table(df, index='index name a', columns = 'column name b', values = 'value name c', aggfunc='mean', margins='True')

 

여러개의 연산을 하고싶으면추가로 넣으면 됨 

pd.pivot_table(df, index='index name a', columns = 'column name b', values = 'value name c', aggfunc='max','min','mean', margins='True')

 

다중인덱스 넣고싶으면 보고싶은 순서대로 넣기

 

 

'data 공부 > 데이터전처리' 카테고리의 다른 글

시계열 데이터 분석  (1) 2024.12.27
Random Forest and Kmeans  (0) 2024.12.26
지수 평활법(Exponential smoothing)  (0) 2024.12.24
Decision tree Classifier  (0) 2024.12.24
엑셀 대시보드 만들기  (0) 2024.12.23