cs

plz...


데이터가 전반적으로 어떻게 분포하는지 쉽게 알수있는 지표들?을 알아보자.

(이전 포스트까지는 용어 정리를 먼저 하고 했는데, 하나씩 잡고 가는 방식이 좋을 듯 하다. 예제와 함께) 

 

 

Percentile and Boxplot (백분위수와 상자그림)

(영문책을 번역한거여서 그런가 약간 한국어가 익숙하지 않음)

 

분포를 알아보는 데에도 백분위수가 유용하다, 특히 사분위수(quartile)십분위수(decile)를 사용

 

특히 백분위수는 분포의 꼬리(tail) 부분을 묘사하는데 좋다. 

 

 

예제는 계속 state 

#quantile를 통해 쉽게 부분별 백분위수를 가지고 올 수 있음 
state['Murder.Rate'].quantile([0.05, 0.25, 0.5, 0.75, 0.95])

이 역시 pandas에서 quantile로 쉽게 가지고 올 수 있고, 시각화도 쉽게 가능하다.

bp = (state['Population']/1_000_000).plot.box()
bp.set_ylabel('Population (millions)')

시각화 자료를 보면, 인구수가 높은 이상치가 있음을 볼  수 있고, 중간의 선을 통해 중간값을 알려준다. 

 

 

 

Frequency Table and Histogram (도수분포표와 히스토그램)

도수분포표는 변수의 범위를 동일한 크기로 나누고, 각 구간에서의 몇 개의 변수가 존재하는지 확인하기 위해 사용함.

 

binnedPopulation = pd.cut(state['Population'], 10)
binnedPopulation.value_counts()

 

pandas.cut 함수에서 각 구간에 매핑하는 시리즈를 만든 후에 빈도 테이블을 구할 수 있다. 

hg = (state['Population'] / 1_000_000).plot.hist(figsize=(4, 4))
hg.set_xlabel('Population (millions)')

뭐 사실 꼭 pandas 아니여도 요즘 좋은 패키지가 많아서, 다양하게 보고 시각화가 깔끔한 것을 선택하면 될 듯 하다. 

 

 

 

Density Plot and Estimation (밀도 그림과 추정)

밀도 그림은 데이터의분포를 연속된 선으로 같이 보여주고, 약간 부드러운 느낌이라고 생각 할 수있다. 

 

ax = state['Murder.Rate'].plot.hist(density = True, xlim=[0, 12], bins=range(1,12))

#많은 플롯 함수들은 플롯이 동일한 그래프에 추가될 수 있도록 선택적으로 축 인수(ax)를 제공
state['Murder.Rate'].plot.density(ax=ax) 
ax.set_xlabel('Murder Rage (per 100,000)')

히스토그램과 큰 차이가 하나 있다면, y축이다. 

 

밀도그림에서는 y축은 비율이다. 그래서 밀도 곡선 아래의 총 면적이 1이고, 구간의 개수 대신 x축의 두점 사이의 곡선 아래 면적을 계산하며, 이는 두 점 사이에 있는 분포의 비율에 해당함

 

 

 

+ Recent posts