본문 바로가기
Python/Matplotlib

Matplotlib - hist 히스토그램 1 .hist( ) rwidth= bins=

by 하니__ 2024. 4. 9.

히스토그램은 구간을 설정하여 해당 구간에 데이터가 몇개인지 확인이 가능하다

그렇기에 데이터의 분포를 알 수 있다

 

히스토그램은 구간이 있는데 이 구간을 bin 이라고 하고
구간이 여러개라서 보통 복수형으로 bins 라고 한다

 

히스토그램은 똑같은 데이터를 가지고도
bin을 어떻게 설정하느냐에 따라 차트 모양이 달라져
해석을 달리 할 수 있다

 

 

가령

 

 

 

이런 숫자들의 데이터가 있다고 하면

 

 

 

이런식으로 구간을 6으로 묶은 그래프와

3으로 묶은 그래프에는

 

크게 보면 별 차이가 없지만

 

우측 그래프의 0~3구간과 15~18구간이 생각보다 비어있는것을

 

좌측 그래프에서는 알지 못 한다

 

 

 

이번엔 전의 포켓몬 데이터로 'speed' 콜럼을 통하여 데이터들이 어떻게 분포 되어있나 확인해보자

 

 

 

.hist(  )

 

 

import matplotlib.pyplot as plt
plt.hist( data=df, x='speed' )
plt.show()

 

 

일단 기본형의 히스토그램 생성은 hist( )를 통해 만들어진다

data= '가져올 데이터프레임', x= '데이터 분석할 콜럼' 을 넣어주자

 

 

역시나 손이 많이 간다 우선은 너무 뭉쳐 있으니 좀 띄어주자

 

 

.rwidth=
 
plt.hist( data=df, x='speed', rwidth=0.8 )
plt.show()

 

.rwidth= 를 통해 떼어놓을 수 있겠다, 수치는 보기 좋게 띄어주면 된다

 

 

 

아까보다는 나아졌다 이번엔 구간의 bins들을 세분화 시켜보자

bins의 기본값은 10이다 bins = 20 을 입력하여 구간을 20으로 만들어주자

plt.hist( data=df, x='speed', rwidth=0.8, bins = 20 )
plt.show()

 

구간이 합쳐져있어 숨어있던 데이터들이 보이기 시작했다

보다 정확히 하기위해

bin의 범위를 재정리 하자

구간의 범위를 직접 설정 하기 위해

 

데이터의 최소값, 최대값을 알아보자

 

df['speed'].describe()
count    807.000000
mean      65.830235
std       27.736838
min        5.000000
25%       45.000000
50%       65.000000
75%       85.000000
max      160.000000
Name: speed, dtype: float64

 

최소값은 5

최대값은 160

 

 

 
my_bins = np.arange(5, 160+5, 5)
my_bins
array([  5,  10,  15,  20,  25,  30,  35,  40,  45,  50,  55,  60,  65,
        70,  75,  80,  85,  90,  95, 100, 105, 110, 115, 120, 125, 130,
       135, 140, 145, 150, 155, 160])

 

5부터 시작하고 5씩 커지는 160까지의 배열을 만든뒤

그것을 저장하여

  

bins로 설정해주자

 

 

bins=

 

 

 
plt.hist( data=df, x='speed', rwidth=0.8, bins = my_bins )
plt.show()
 
 

보다 정확한 형태로 알 수 있게 되었다

 

 

 

기본형과 가공한 그래프를 비교해보자

데이터를 가공하여야 하는 이유가 보이게 된다