Plotly Box Plot만들기

Plotly Box Plot만들기

Data Visualization
Plotly Bar Plot의 사용방법을 정리합니다.
Author

gabriel yang

Published

September 18, 2023

Plotly Box Plot 만들기

Plotly Box Plot 만드는 방법을 정리합니다. 데이터는 레스토랑의 tip정보를 저장한 tips를 사용합니다.

import plotly.express as px
df = px.data.tips()
df.sample(3)
total_bill tip sex smoker day time size
41 17.46 2.54 Male No Sun Dinner 2
239 29.03 5.92 Male No Sat Dinner 3
106 20.49 4.06 Male Yes Sat Dinner 2

total_bill 컬럼은 지출한 금액이고 tip은 지출한 팁을 표시하는 것 같습니다. 다음으로 고객의 다양한 특징을 표현하는 컬럼정보와 함께 지출했던 시간 정보가 있습니다. 우선 total_bill의 데이터 분포를 확인하기 위해서 Boxplot을 그려봅니다. 혹시 데이터프레임에 정보가 없는 영역이 있는 지 확인합니다. NaN인 경우 true로 표시하는 isnull()함수의 합계가 모두 0이기 때문에 데이터에 문제가 없습니다.

df.isnull().sum()
total_bill    0
tip           0
sex           0
smoker        0
day           0
time          0
size          0
dtype: int64

Box plot으로 의미있는 데이터를 얻기위해서 위해서 숫자형 데이터가 필요합니다. total_bill, tip, size는 숫자형 데이터임을 알 수 있습니다.

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 244 entries, 0 to 243
Data columns (total 7 columns):
 #   Column      Non-Null Count  Dtype  
---  ------      --------------  -----  
 0   total_bill  244 non-null    float64
 1   tip         244 non-null    float64
 2   sex         244 non-null    object 
 3   smoker      244 non-null    object 
 4   day         244 non-null    object 
 5   time        244 non-null    object 
 6   size        244 non-null    int64  
dtypes: float64(2), int64(1), object(4)
memory usage: 13.5+ KB

total_bill에 대한 Box plot정보를 표시합니다.

fig = px.box(df, y="total_bill")
fig.show()

가로로 그래프 표시하기

가로로 그래프로 표시할 경우 데이터를 전달하는 축을 x로 변경하여 전달합니다.

fig = px.box(df, x="total_bill")
fig.show()

축 정보 추가하기

x축에 요일 정보를 추가해서 Box Plot 결과를 확인합니다. Q1, Q3, 중앙값이 표시됩니다. upper fancelower fance를 벗어나는 데이터는 이상치로 생각될 수 있습니다. 40달러 이상의 경우 이상치로 표시되고 있습니다. 저녁식사에 비용이 더 많이 발생했음을 쉽게 알 수 있습니다.

fig = px.box(df, x="time", y="total_bill")
fig.show()

Color를 이용해서 비교 정보 추가하기

smoker에 따른 tip차이를 확인하기 위해서 colorsmoker를 전달합니다. x축의 각 요일에 표시되는 tip정보에 smoker정보가 추가되었습니다.

fig = px.box(df, x="day", y="tip", color="smoker")
fig.show()

새로운 Plot으로 비교하기

이번엔 facet_col을 이용해서 sex정보에 따라서 서로다른 그래프 영역으로 표시합니다. x축을 day로 변경하고 y축을 tip으로 변경해서 요일별 tip비용을 time에 따라 그래프를 독립적으로 생성합니다.

fig = px.box(df, x="day", y="tip", color="smoker", facet_col='time')
fig.show()

주말에는 팁이 저녁 식사에 발생했고 토요일에는 이상치가 많이 발생했습니다. 점심식사는 목요일과 금요일에 주로 발생했고 금요일은 점심과 저녁 모두 팁이 발생하는 특징이 있습니다.