1. 히스토그램  Histogram

✏️  히스토그램 histogram은 데이터를 정해진 간격으로 나눈 후 그 간격 안에 들어간 데이터 갯수를 막대로 표시한 그래프

✏️  변수가 하나인 데이터의 빈도수를 막대 모양으로 나타낼 때 사용
✏️  통계분석에서 도수분포표와 히스토그램은 가장 많이 사용되는 도구이고, 데이터의 분석 및 분포를 파악하는 역할

💡 도수 분포표 이해를 위한 용어 
  · 변량 variate : 자료를 측정해 숫자로 표시한 것 (예: 점수, 키, 몸무게, 판매량, 시간 등)

  · 계급 class : 변량을 정해진 간격으로 나눈 구간 (예: 시험 점수를 60 ~ 70, 70 ~ 80, 80 ~ 90, 90 ~ 100 점 구간으로 나눔)
  · 계급의 간격 class width : 계급을 나눈 크기 (예: 위의 시험 점수를 나눈 간격은 10)
  · 도수 frequency : 나눠진 계급에 속하는 변량의 수 (예: 각 계급에서 발생한 수로 3, 5, 7, 4)
  · 도수 분포표 frequency distribution table : 계급에 도수를 표시한 표


📍  어떤 학급에서 수학 시험 결과를 이용해 도수 분포표 만드는 과정


      1. 변량 생성 : 학생 25명의 수학 시험 결과는 다음과 같음.
           ex.  76, 82, 84, 83, 90, 86, 85, 92, 72, 71, 100, 87, 81, 76, 94, 78, 81, 60, 79, 69, 74, 87, 82, 68, 79

      2. 계급 간격 설정 및 계급 생성 : 변량 중 가장 작은 숫자가 60이고 가장 큰 숫자가 100이므로 60에서 일정한 간격

                                                            (여기서는 5로 설정)으로 나누어서 다음과 같은 8개의 계급을 설정
           ex. 60 ~ 65, 65 ~ 70, 70 ~ 75, 75 ~ 80, 80 ~ 85, 85 ~ 90, 90 ~ 95, 95 ~ 100

      3. 계급별 도수 확인 및 분포표 만들기
           각 계급에 몇 개의 변량이 들어있는지 확인해 계급별로 도수를 구함. 이를 이용해 계급별로 도수를 표시한 도구 분포표 생성

           

           계급 (수학점수)                 도수        마크로 도수 표시
           60(이상) ~ 65(미만)        1                      *
           65 ~ 70                              2                     **
           70 ~ 75                              3                     ***
           75 ~ 80                              5                     *****
           80 ~ 85                              6                    ******
           85 ~ 90                              4                    ****
           90 ~ 95                              3                    ***
           95 ~ 100                            1                     *



plt.hist(x, [, bins=bins_s 혹은 'auto'])

 

   📌  x는 변량 데이터
   📌  옵션 bins는 계급의 갯수로 이 개수 만큼 자동으로 계급이 생성
         입력하지 않으면 'auto'가 되고 기본적으로 bins=10 이 됨

 

math = [76, 82, 84, 83, 90, 86, 85, 92, 72, 71, 100, 
        87, 81, 76, 94, 78, 81, 60, 79, 69, 74, 87, 82, 68, 79]
plt.hist(math)
plt.show()


# bins 를 8로 설정
plt.hist(math, bins=8)
plt.show()


 

2. 히스토그램 생성 

# 1) 데이터 읽기
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_excel('../input/health_screenings_2020.xlsx')
data.head()

 

1)  히스토그램 그리기

# data에서 남성(data.gender==1.0)의 성별, 키 데이터만 가져옴.
man_data = data.loc[data.gender == 1.0, ['gender', 'height']]
man_data.head()

출력 결과

plt.figure(figsize=(10, 6))
# hist() 메서드로 man_data 데이터의 키를 지정하고 계급 개수 20개 등의 속성을 지정.
plt.hist(man_data['height'], bins=20, label='Man')
plt.title('2020 Health Screenings Man Height Histogram')
plt.xlabel('height')
plt.ylabel('frequency')
plt.legend()
plt.grid()
plt.show()

출력 결과

 

📌  hist() 함수의 bins 파라미터는 히스토그램의 가로축 구간의 개수를 지정

 


 

2) 그룹 히스토그램 그리기

 

✏️   그룹 히스토그램을 그리는 것은 기존 히스토그램 위에 히스토그램을 하나 더 그리는 형식

# 남성 및 여성 키 그룹 히스토그램

# data에서 남성(data.gender==1.0)의 성별, 키 데이터만 가져옴.
man_data = data.loc[data.gender == 1.0, ['gender', 'height']]
# data에서 여성(data.gender==2.0)의 성별, 키 데이터만 가져옴
woman_data = data.loc[data.gender == 2.0, ['gender', 'height']]
#%%
plt.figure(figsize=(10, 6))  # 그래프 크기 지정
# hist() 메서드로 데이터의 키를 지정하고 계급 개수 20개 등의 속성을 지정.
plt.hist(man_data['height'], bins=20, alpha=0.5, label='Man')
plt.hist(woman_data['height'], bins=20, alpha=0.5, label='Woman')

plt.title('2020 Health Screenings Man & Woman Height Group Histogram')
plt.xlabel('height')
plt.ylabel('frequency')
plt.xlim(120, 200)
plt.legend()
plt.grid()
plt.show()

출력 결과

 

 

 

 

[ 내용 참고 : IT 학원 강의 ]

+ Recent posts