본문 바로가기

데이터 분석/파이썬

5-3) 수치형 데이터 변수의 요약과 기술통계

#0. 준비단계 : 데이터셋 로드 밑 라이브러리 import

 

- 라이브러리 불러오기

 

-seaborn에 내장된 데이터셋 'mpg' 로드


 

#1. 고유값 파악하기

고유값 : 데이터셋.unique()

고유값 개수 : 데이터셋.nunique()

 


#2. 히스토그램 그리기

- 데이터셋. hist(옵션들)

-옵션1 : figsize = 그래프의 크기

-옵션2 : bins = 막대의 개수

 

 

 

- 왜도 : 분포의 치우침을 나타냄

=> 양수 : 왼쪽에 몰린 형태

=> 음수 : 왼쪽에 몰린 형태

출처 : https://www.oppadu.com/%EC%97%91%EC%85%80-skew-%ED%95%A8%EC%88%98/

=> 구하는 식 : 데이터변수. skew()

전부 양수이므로 왼쪽에 몰린 형태

 

-첨도 : 분포의 몰린 정도(뾰족함)을 나타냄

: 3보다 클 경우 정규분포보다 납작

: 3보다 작을 경우 정규분포보다 뾰족

 

출처 : https://kjh8613.tistory.com/entry/SPSS-%EC%99%9C%EB%8F%84-%EC%B2%A8%EB%8F%84%EC%9D%98-%EA%B5%AC%EB%B6%84

사용방법 : 데이터셋.kurt()

 

ex) df.kurt()


#3. seaborn을 통한 그래프 그리기

 

#3-1) displot

= sns.displot(data= 데이터셋, x='변수')

옵션1. kde : 밀도함수 측정하여 부드러운 곡선

옵션2. rug : 데이터의 빈도수

 


일반적인 히스토그램
sns.displot(data=df, x='mpg')
kde 옵션 추가
sns.displot(data=df, x='mpg', kde=True
rug 옵션 추가
sns.displot(data=df, x='mpg', kde=True, rug=True)

 

#3-2) kdeplot / rugplot

= sns.kdeplot(data= 데이터셋, x='변수')   / 커널 밀도

= sns.kdeplot(data= 데이터셋, x='변수')   / 데이터 빈도수 or 분포

 

옵션1. shade : 색상채우기

옵션2. cut : x축의 단위

 

sns.kdeplot(data=df, x='mpg',shade=True, cut=10)
sns.rugplot(data=df, x='mpg')

 

 

#3-3) boxplot

= sns.boxplot(data= 데이터셋, x='변수')  /박스 플롯

-> 이상치 값을 확인 가능

-> 분포 파악이 힘듦

 

ex)

#3-4) violinplot

= sns.violinplot(data= 데이터셋, x='변수') 

-> 박스플롯을 같이 보여줌

-> 윗부분 = kdeplot (분포 파악 가능)

 


#3-4) 두 개 이상의 수치변수 시각화

산점도 : sns.scatterplot(data=데이터셋, x='변수' , y='변수' )   

회귀선 : sns.regplot(data=데이터셋, x='변수' , y='변수' )   

 

 

#옵션

#hue : 각 범주별 색상표시

 

산점도(x=weight, y=mpg, origin별 색상표시)
sns.scatterplot(data=df, x=
'weight', y='mpg', hue='origin')
회귀선 그리기(x=weight, y=mpg)
sns.regplot(data=df, x=
'weight', y='mpg')

 

서브플롯 그리기

서브플롯 : sns.lmplot(data=데이터셋, x='변수' , y='변수', col='범주별 기준' )   

sns.lmplot(data=df, x='weight', y='mpg', hue='origin', col='origin', truncate=False)

 

# 잔차시각화

 : sns.residplot(data=데이터셋, x='변수' , y='변수' )   

 

ex)

# jointplot : 2개의 수치변수 표현하기(scatter+plot)

 : sns.jointplot(data=데이터셋, x='변수' , y='변수' )   

 

 

ex)

sns.jointplot(data=df, x='weight', y='mpg' )


#3-5) pairplot : 모든 변수끼리 짝을 지어 그래프 그리기

# 시간이 오래 걸림 -> 샘플 추출 권장

 : sns.pairplot(data=데이터변수)   

 

=>샘플 추출

#100개의 샘플 추출하기
df_sample=df.sample(100)
 
=> pairplot 그리기


#3-6) lineplot : 선그래프

 : sns.lineplot(data=데이터변수, x='변수' , y='변수' )   

=> 그림자는 CI(신뢰구간)을 의미

 


 

 

#4. 관계형 함수

 

#4-1 relplot : 수치형 변수간의 관계 (relation)

 : sns.relplot(data=데이터변수, x='변수' , y='변수' )   

 

ex)

sns.relplot(data=df, x="model_year", y='mpg', col='origin', hue='origin')

 

 

#4-2 상관분석

 

# 상관계수 히트맵으로 보여주기

 

1단계. 상관계수 데이터셋 만들기

=> 데이터셋= 데이터셋.corr()

 

2단계. heatmap 데이터로 넣기 

=> sns.heatmap(데이터셋)

 

#옵션

# annot : 상관계수 표시

# vmax : 상관계수 최대 값

# vmin : 상관계수 최소 값

# cmap : 색상테마

 

ex)

sns.heatmap(corr,annot=True, cmap="coolwarm", vmax=1, vmin=-1, mask=mask)