일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 로지스틱회귀
- 코드잇 TIL
- Seaborn
- sql연습문제
- SQL
- 런던
- 머신러닝
- 윈도우함수
- 코드잇
- 코드잇TIL
- 판다스
- CSS
- for반복문
- 데이터분석
- 유학생
- matplotlib
- 다항회귀
- 코딩
- 행렬
- 오늘도코드잇
- 경사하강법
- 영국석사
- HTML
- 파이썬
- 코딩독학
- 코딩공부
- 나혼자코딩
- 결정트리
- 선형회귀
- numpy
- Today
- Total
영국 척척석사 유학생 일기장👩🏻🎓
(데이터분석) 불연속 데이터에서의 히스토그램, 막대그래프 나타내기 본문
지난 글에 이어 이번에는 불연속 데이터의
히스토그램, 막대그래프를 나타내는
방법에 대해 알아보겠습니다.
🔻막대그래프🔻
(데이터분석) seaborn과 matplotlib으로 막대그래프 작성하기
1. Seaborn으로 막대 그래프 작성하기도수를 나타내는 기본적인 막대 그래프는 seaborn의 countplot함수를 사용하여 작성할 수 있습니다.seaborn.countplot(*, x=None, y=None, data=None, order=None, orient=None, color=None)
life-of-nomad.tistory.com
🔻히스토그램🔻
(데이터분석) seaborn과 matplotlib으로 히스토그램 나타내기
히스토그램은 숫자 변수의 분포를 나타낼 때 사용합니다. 막대 그래프를 정량적 변수에 적용한 것과 같습니다.하지만 하나의 막대로 각 고유 범주에 속하는 값의 개수를 나타내는 대신, 값을
life-of-nomad.tistory.com
1. 불연속 데이터에 맞는 차트 선택하기
불연속적 정량적 변수를 차트로 나타낼 때는 히스토그램이나 막대그래프를 사용할 수 있습니다.
- 불연속적 : 연속적이지 않은 값, 주어진 집합이나 범위에 속하는 제한된(셀 수 있는) 값
- ex) 가족 구성원의 수, 스포츠 토너먼트 경기의 수, 대학에 존재하는 학수의 수
- 정량적 : 해당 데이터가 양을 측정한 결과
이 경우 데이터가 숫자이므로 당연히 히스토그램을 선택하게 됩니다.
하지만 계급의 경계와 관련하여 주의해야 할 사항이 있습니다. 계급의 경계를 데이터가 실제로 취할 수 있는 값들의 사이에 존재하는 값으로 지정해야 불필요한 혼란이 발생하지 않습니다.
2. 혼란을 일으킬 수 있는 사례
예를 들어, 어느 막대가 [10-20]의 범위에 걸쳐 존재하는데, 20인 관측값이 하나 존재한다고 가정합시다.
[10-20]의 범위는 20을 포함하지 않으므로 해당 관측값은 오른쪽 막대에 포함됩니다.
하지만 독자는 계갑의 경계에 존재하는 값들이 오른쪽 계급에 포함된다는 것을 모를 것이므로 혼란을 겪을 수 있습니다.
실제 예를 들어보겠습니다. 100개의 주사위를 던진 결과를 나타내는 자료입니다.
import numpy as np
import pandas as pd
import matlpotlib.pyplot as plt
import seaborn as sns
die_rolls = pd.read_csv('die-rolls.csv')
# 각 주사위는 정육면체이며 각 면에는 1-6의 숫자가 하나씩 표시되어 있습니다.
# 서로 다른 100개의 주사위가 존재하며 두 번의 시행이 있었습니다.
# 각 시행에서는 100개의 주사위를 모두 굴려서 그 결과[1-6]를 기록했습니다.
# `Sum` 열은 두 번의 시행을 통해 서로 다른 주사위별로 얻은 두 값의 합을 나타냅니다.
die_rolls.head(10)

해결책1) 막대의 경계를 조정하기
plt.figure(figsize = [20, 5])
#왼쪽 히스토그램, 게급의 경계가 정수
plt.subplot(1, 2, 1)
bin_edges = np.arange(2, 12+1.1, 1)
#1.1더한 이유:히스토그램의 오른쪽 끝에 주사위 합이 12인 경우만을 포함하는 하나의 계급 더 추가
#마지막 막대가 11과 12인 경우를 모두 포함하지 않게 하기 위함
plt.hist(data=die_rolls, x='Sum', bins=bin_edges);
plt.xticks(np.arange(2, 12+1, 1));
#오른쪽 히스토그램, 계급의 경계가 정수 사이에 있음
plt.subplot(1, 2, 2)
bin_edges = np.arange(1.5, 12.5+1, 1)
plt.hist(data=die_rolls, x='Sum', bins=bin_edges);
plt.xticks(np.arange(2, 12+1, 1));

- 두 subplot은 동일한 데이터를 나타내지만 계급 경계가 다르게 설정되어 있습니다.
해결책2) 막대 사이에 빈 공간 만들기
- 히스토그램과는 달리 각 계급의 막대가 서로 접하지 않는 것이 적합할 때도 있습니다.
- 이전 코드를 동일하게 사용하되, 'rwidth' 매개변수를 추가하여
- 원래의 히스토그램 막대에서 몇퍼센트의 면적에 색상을 입힐 것인지 설정하겠습니다.
bin_edges = np.arange(1.5, 12.5+1, 1)
#막대 면적의 70%에만 색상을 입혔으며 나머지 30%의 공간은 비워두었습니다.
plt.hist(data=die_rolls, x='Sum', bins = bin_edges, rwidth = 0.7)
plt.xticks(np.arange(2, 12+1, 1));

- 막대 사이에 빈 공간이 존재하며 데이터가 불연속적라는 사실이 분명하게 드러납니다.
'코딩공부 > Data analysis' 카테고리의 다른 글
(데이터 분석) seaborn, matplotlib에서 축의 scale(척도) 변환하기 (0) | 2024.05.25 |
---|---|
(데이터분석) seaborn, matplotlib으로 axis(축) 범위 변경 (0) | 2024.05.25 |
(데이터분석) matplotlib의 figure, axes, subplots의 개념 (0) | 2024.05.25 |
(데이터분석) seaborn과 matplotlib으로 히스토그램 나타내기 (0) | 2024.05.24 |
(데이터분석) matplotlib으로 원 그래프 작성하기 (0) | 2024.05.24 |