import plotly.express as px
= px.data.tips()
df 3) df.sample(
total_bill | tip | sex | smoker | day | time | size | |
---|---|---|---|---|---|---|---|
58 | 11.24 | 1.76 | Male | Yes | Sat | Dinner | 2 |
109 | 14.31 | 4.00 | Female | Yes | Sat | Dinner | 2 |
196 | 10.34 | 2.00 | Male | Yes | Thur | Lunch | 2 |
Plotly Box Plot만들기
gabriel yang
September 18, 2023
Plotly Box Plot 만드는 방법을 정리합니다. 데이터는 레스토랑의 tip정보를 저장한 tips
를 사용합니다.
total_bill | tip | sex | smoker | day | time | size | |
---|---|---|---|---|---|---|---|
58 | 11.24 | 1.76 | Male | Yes | Sat | Dinner | 2 |
109 | 14.31 | 4.00 | Female | Yes | Sat | Dinner | 2 |
196 | 10.34 | 2.00 | Male | Yes | Thur | Lunch | 2 |
total_bill
컬럼은 지출한 금액이고 tip
은 지출한 팁을 표시하는 것 같습니다. 다음으로 고객의 다양한 특징을 표현하는 컬럼정보와 함께 지출했던 시간 정보가 있습니다. 우선 total_bill
의 데이터 분포를 확인하기 위해서 Boxplot을 그려봅니다. 혹시 데이터프레임에 정보가 없는 영역이 있는 지 확인합니다. NaN
인 경우 true
로 표시하는 isnull()
함수의 합계가 모두 0이기 때문에 데이터에 문제가 없습니다.
Box plot
으로 의미있는 데이터를 얻기위해서 위해서 숫자형 데이터가 필요합니다. total_bill
, tip
, size
는 숫자형 데이터임을 알 수 있습니다.
<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
정보를 표시합니다.
가로로 그래프로 표시할 경우 데이터를 전달하는 축을 x
로 변경하여 전달합니다.
x축에 요일 정보를 추가해서 Box Plot 결과를 확인합니다. Q1, Q3, 중앙값이 표시됩니다. upper fance
와 lower fance
를 벗어나는 데이터는 이상치로 생각될 수 있습니다. 40달러 이상의 경우 이상치로 표시되고 있습니다. 저녁식사에 비용이 더 많이 발생했음을 쉽게 알 수 있습니다.
smoker
에 따른 tip
차이를 확인하기 위해서 color
에 smoker
를 전달합니다. x축의 각 요일에 표시되는 tip
정보에 smoker
정보가 추가되었습니다.
이번엔 facet_col
을 이용해서 sex
정보에 따라서 서로다른 그래프 영역으로 표시합니다. x축을 day
로 변경하고 y축을 tip
으로 변경해서 요일별 tip
비용을 time
에 따라 그래프를 독립적으로 생성합니다.
주말에는 팁이 저녁 식사에 발생했고 토요일에는 이상치가 많이 발생했습니다. 점심식사는 목요일과 금요일에 주로 발생했고 금요일은 점심과 저녁 모두 팁이 발생하는 특징이 있습니다.