피벗테이블 |
- 엑셀에서 처리하는 피벗테이블과 같은 의미
- index 축은 groupby와 동일하며 column에 labeling 값을 추가하여 value에 숫자를 aggregation 하는 형태임
- 피벗 테이블의 기본 구성요소는 행인덱스,열인덱스,데이터값,데이터집계함수로 구헝되어 있다.
pdf=pd.pivot_table(df, #피벗할 데이터 프레임
index = '행위치에 들어갈 열',
columns ='열 위치에 들어갈 열',
values = '데이터로 사용할 열',
aggfunc = '데이터 집계함수')
- Seaborn 의 내장 데이터 타이타닉을 기준으로 피벗 테이블을 만들어 보자.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
print(df.head().T)
여기서 class 별 여성과 남성의 평균 나이를 살펴 보자.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
#print(df.head().T)
pdf1 = pd.pivot_table(df, # 피벗할 데이터프레임
index = 'class', # 행 위치에 들어갈 열
columns = 'sex', # 열 위치에 들어갈 열
values = 'age', # 데이터로 사용할 열
aggfunc = 'mean') # 데이터 집계함수
print(pdf1)
다음으로 생존율의 평균과 합계를 내 보자.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
#print(df.head().T)
pdf1 = pd.pivot_table(df, # 피벗할 데이터프레임
index = 'class', # 행 위치에 들어갈 열
columns = 'sex', # 열 위치에 들어갈 열
values = 'survived', # 데이터로 사용할 열 생존 1, 사망 0
aggfunc = ['mean', 'sum']) # 데이터 집계함수
print(pdf1)
3등석의 여성은 생존율 50% 남성은 13% 정도 인 것을 확인 할 수 가 있습니다. 이와 같이 해당 열에 리스트 형태로 열 값을 넣어 보면 그 값을 알 수 있다.
Crosstab |
- 데이터 분석을 하다 보면 원본 데이터의 구조를 행과 열의 위치를 바꾼다거나 특정 요인에 따라 집계를 해서 구조를 바꾸주어야 하는 경우가 있다.
- crosstab 는 범주형 변수로 되어 있는 요인별로 교차분석해서 행,열의 기준별로 빈도를 세어서 도수분포표,교차표를 만들어 주는 함수이다.
pd.crosstab(index = "행의 값",
columns = "열의값",
rownames = "행의 이름",
colnames ="열의 이름",
margins ="True 인 경우 행,열의 합 추가 됨)
normalize ="True 인 경우 구성비율로 교차표 생성")
- 타이타닉호의 성별로 사망인원과 살아 남은 인원을 확인해 보자.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
print(pd.crosstab(index=df.sex,columns=df.survived))
- 타이나닉호의 성별과 클래스별로 살아 남은 인원을 확인해 보자.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
print(pd.crosstab(index=[df.sex,df["class"]],columns=df.survived))
- 행의 합과 열의 합을 추가해 보자.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
print(pd.crosstab(index=[df.sex,df["class"]],columns=df.survived,margins=True))
- 구성 비율로 표현해 보자.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
print(pd.crosstab(index=[df.sex,df["class"]],columns=df.survived,margins=True,normalize=True))
: 총합이 1이 되며 비율로 계산이 된다.
이 문서는 학생들과 함께 딥러닝 공부를 하기 위해 만든 문서이며~
딥러닝 공부 전에 Numpy와 Pandas 의 기본을 알고 머신러닝을 공부하면 대부분의 머신러닝 소스코드들을 바라보는데 이해의 폭이 넓어질 것 같아서 이론 후 실습 전에 Numpy와 Pandas 의 기본 문법들을 정리해 보았습니다.
더욱 자세한 내용은 데이터 사이언스 스쿨을 참고하시면 많은 정보를 얻으 실 수 있을것 같습니다.
[참고]
'강의자료 > 머신러닝' 카테고리의 다른 글
[딥러닝실습] pandas와 tensorflow를 이용한 아이리스 품종 분류 (5) | 2022.07.12 |
---|---|
[딥러닝실습] pandas와 tensorflow를 이용한 레모네이드 판매량 예측 (7) | 2022.06.23 |
[딥러닝파이썬] 02-4.파이썬의 Pandas를 다뤄 보자. (11) | 2022.05.24 |
[딥러닝파이썬] 02-3.파이썬의 Pandas를 다뤄 보자. (7) | 2022.05.19 |
[딥러닝파이썬] 02-2.파이썬의 Pandas를 다뤄 보자. (4) | 2022.05.09 |