Python

[Python] Matplotlib.pyplot 상자수염 그래프 그리기

Any Developer 2023. 5. 8. 14:42

1. 목표

 - 데이터프레임의 지정 열 (Column) 의 사분위 수를 확인한다.

 - 중복열의 조건을 탐색하여 데이터를 분리한다.

 - 결과 데이터를 상자수염 그래프 (Box Plot) 그래프를 그려본다.

 

2. 도구

 - Google Colaboratory

 - Github 타이타닉 데이터

"https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv"

 

3. 사전 정보 확인

[Python] Matplotlib.pyplot 히스토그램 그래프 그리기 (tistory.com)

 

[Python] Matplotlib.pyplot 히스토그램 그래프 그리기

1. 목표 - 데이터프레임의 지정 열 (Column) 값을 히스트그램 그래프를 그려본다. 2. 도구 - Google Colaboratory 3. 사전 정보 확인 [파이썬] 외부 데이터 (Gibhub) 불러오기와 정보 확인하기 (tistory.com) [파이

iotcyuty.tistory.com

 

[통계] 상자 수염 그림 as 박스 플롯 (Box Plot) (tistory.com)

 

[통계] 상자 수염 그림 as 박스 플롯 (Box Plot)

Box Plot 을 통해 알 수 있는 것 a. 이상치 존재 여부 b. 데이터 분포의 최소값, 제1분위 (Q1), 중앙값, 제3분위 (Q3), 최대값 사분위범위는 제3분위에서 제1분위를 뺀값 (Q3-Q1) 이다.

iotcyuty.tistory.com

 

4. Code

  (1) 필요한 패키지 (판다스, 맷플롯립.파이플롯) 를 import 한다.

   -  타이타닉 데이터를 불러온다. ( type : pandas.dataframe)

import pandas as pd  # 판다스 패키지 임포트
import matplotlib.pyplot as plt  # 맷플롯립 패키지 임포트

df = pd.read_csv("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv")  # 타이타익 데이터 읽기 || 판다스 데이터프레임

 

  (2) 상자 수염을 그리고자 하는 목표를 정의한다.

   -  Pclass [1,2,3 등급] 별 요금에 대한 Box Plot

   - Survived [0,1] 별 요금에 대한 Box Plot

   - Survived [0,1] 별 요금에 대한 Age Plot

 

### 문제1) Pclass 등급별 요금에 대한 전처리 과정
pclass_fare_1 = df[df["Pclass"]==1]["Fare"]  # Pclass == 1 인 집합군에 대한 Fare 데이터
pclass_fare_2 = df[df["Pclass"]==2]["Fare"]
pclass_fare_3 = df[df["Pclass"]==3]["Fare"]

fig, ax = plt.subplots()
ax.boxplot([pclass_fare_1,pclass_fare_2,pclass_fare_3])
plt.show()


### 문제2) Survived 별 요금에 대한 Box Plot
alive_fare = df[df["Survived"]==1]["Fare"]  # alived (Survived=1) 인 집합군에 대한 Fare 데이터
dead_fare = df[df["Survived"]==0]["Fare"]  # dead (Survived=0) 인 집합군에 대한 Fare 데이터

fig, ax = plt.subplots()
ax.boxplot([alive_fare,dead_fare])
plt.show()

### 문제3) Survived 별 나이에 대한 Box Plot
alive_age = df[df["Survived"]==1]["Age"].dropna()  # alived (Survived=1) 인 집합군에 대한 Fare 데이터 (결측치는 완전 소거한다)
dead_age = df[df["Survived"]==0]["Age"].dropna()  # dead (Survived=0) 인 집합군에 대한 Fare 데이터 (결측치는 완전 소거한다)

fig, ax = plt.subplots()
ax.boxplot([alive_age,dead_age])
plt.show()

 

  

5. 해석

 - 데이터프레임에 데이터를 값 (범주) 별로 분류하고 이에 대한 특정 연속형데이터를 상자수염 (박스플롯) 형태로 나타내 보았다.

 - 상자수염데이터를 plot 하는데 결측치 정보가 있으면 플롯이 그려지지 않아서 dropna() 메소드를 코드에 추가하였다.