BSA06_Pandas-EDA.ipynb
패키지 불러오기
import pandas as pd
import seaborn as sns
데이터 불러오기
팁 = sns.load_dataset('tips')
팁.head()
기본적 통계
# 수치자료
팁.describe()
# 범주형 데이터에 대해서도 요약을 보고 싶으면 include = 'all' 추가
팁.describe(include="all")
팁['sex'].value_counts()
팁[['sex','smoker','day','time']].value_counts()
팁[['sex','smoker']].value_counts()
# 상관계수
팁.corr()
그룹별 분석
# 그룹별 평균
팁.groupby('sex').mean()
팁.groupby('sex').head()
# df를 groupby()를 통해 부분df로 나눈 후 함수 적용
for 성별, 그룹 in 팁.groupby('sex'):
print(성별)
display(그룹.head())
적용가능한 통계함수
- count : 표본크기
- sum : 합
- mean : 평균
- median : 중앙값
- var, std : 분산, 표준편차
- min, max : 최솟값, 최댓값
- unique, nunique : 고유값, 고유값개수
- prod : 곱
- first, last : 첫번째 값, 마지막 값
팁.groupby('sex').agg(['mean', 'std'])
# agg (aggregate) : 다중 통계 표시
# 특별히 변수를 지정하지 않으면 모든 수치변수에 대해 함수를 적용함
팁.groupby(['sex','time']).agg(['mean', 'std'])
# 컬럼별로 다른 통계 계산
팁.groupby('sex').agg({'total_bill': ['mean','std'], 'tip': 'median', 'size': 'sum' })
# 소수점 자리 수 지정
# 소수점 둘째자리까지 표시 (셋째자리에서 반올림)
팁.groupby('sex').agg({'total_bill': ['mean','std'], 'tip': 'median', 'size': 'sum' }).round(2)
# 사용자 정의 함수는 .agg()에 적용
# CV(변동계수) = 표준편차/평균
# x에 데이터프레임이 들어감
팁.groupby('sex')[['total_bill', 'tip']].agg(lambda x: x.std()/x.mean())
타이타닉 데이터 분석
# 데이터 불러오기
타이타닉 = sns.load_dataset('titanic')
타이타닉.head()
# 결측값 확인하기
타이타닉.isna().sum()
# 그룹별 평균으로 결측값 대체
# 성별, 객실등급에 따른 그룹의 평균으로 결측값 대체
# x.fillna(x.mean()) 한 것을 apply하라
# 전체 평균으로 결측값 대체하는 것은 데이터의 특성을 반영하지 못하는 방법임
타이타닉.groupby(['sex','class'],group_keys=False)['age'].apply(lambda x: x.fillna(x.mean()))
## 그룹별로 표준화
# 성별, 시간대에 따라 그룹
팁.groupby(['sex','time'],group_keys=False)['tip'].apply(lambda x: (x-x.mean())/x.std())
# 특정 컬럼을 기준으로 데이터 정렬
# 성별에 따라 오름차순 정렬한 후, 팁에 따라 내림차순 정렬
팁.sort_values(by=["sex","tip"],ascending=[True, False]).head()
'Statistics > BSA' 카테고리의 다른 글
230503 / BSA10. 형태소 분석, 워드 클라우드 (0) | 2023.05.09 |
---|---|
230501 / BSA09. pyspark에서 탐색적 데이터 분석 (EDA) (0) | 2023.05.03 |
230426 / BSA08. CO2 배출량 대시보드 시각화 (0) | 2023.05.03 |
230426 / BSA08. 데이터 시각화 라이브러리 (0) | 2023.05.03 |
230424 / BSA08. matplotlib 한글 처리 (0) | 2023.05.03 |