강의자료/머신러닝

[딥러닝파이썬] 02-5.파이썬의 Pandas를 다뤄 보자.

파아란 기쁨 2022. 6. 8. 14:18
피벗테이블

- 엑셀에서 처리하는 피벗테이블과 같은 의미

- 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 의 기본 문법들을 정리해 보았습니다.

 

더욱 자세한 내용은 데이터 사이언스 스쿨을 참고하시면 많은 정보를 얻으 실 수 있을것 같습니다.

 

[참고]

https://datascienceschool.net/intro.html

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기