'다나와' 사이트의 데이터 사용
import pandas as pd
#엑셀 데이터 불러오기
data = pd.read_excel('danawa_data.xlsx')
#비어있는 값이 있나 확인
data.isnull().sum()
사용시간에 23개 흡입력에 112개 비어있는 값이 있음
top_list = data.sort_values(['사용시간','흡입력'], ascending = False)
top_list.head()
사용시간과 흡입력이 높은 순서대로 정렬?
#평균값 정리
price_mean = data['가격'].mean()
suction_mean = data['흡입력'].mean()
use_time_mean = data['사용시간'].mean()
print("가격 평균값", price_mean)
print("흡입력 평균값", suction_mean)
print("사용시간 평균값", use_time_mean)
가격 평균값 296844.79253112036
흡입력 평균값 151.8294573643411
사용시간 평균값 43.38990825688074
# 가성비 좋은 제품 탐색
condition_data = data [
(data['가격'] <= price_mean) &
(data['흡입력'] >= suction_mean) &
(data['사용시간'] >= use_time_mean)]
condition_data
#데이터 필터링
가격은 평균 이라 흡입력과 사용시간은 평균 이상인 제품 출력
condition_data.count()
위 조건에 해당하는 제품은 18개!
# 라이브러리 임포트 및 한글 글꼴 설정
from matplotlib import font_manager, rc
import platform
font_path = ''
if platform.system() == 'Windows':
font_path = 'c:/Windows/Fonts/malgun.ttf'
font_name = font_manager.FontProperties(fname = font_path).get_name()
rc('font', family = font_name)
elif platform.system() == 'Darwin':
font_path = '/Users/$USER/Library/Fonts/AppleGothic.ttf'
rc('font', family = 'AppleGothic')
else:
print('Check your OS system')
%matplotlib inline
chart_data = data.dropna(axis = 0) #결측값 없애기
chart_data
출력하면 123개의 데이터가 남음!
# 흡입력, 사용시간의 최댓값/최솟값 정리
suction_max = chart_data['흡입력'].max()
suction_mean = chart_data['흡입력'].mean()
use_time_max = chart_data['사용시간'].max()
use_time_mean = chart_data['사용시간'].mean()
import matplotlib.pyplot as plt
import seaborn as sns
# 청소기 성능 시각화
plt.figure(figsize=(20, 10))
plt.title("무선 핸디/스틱청소기 차트")
sns.scatterplot(x = '흡입력', y = '사용시간', size = '가격', hue = chart_data['회사명'],
data = chart_data, sizes = (10, 1000), legend = False)
plt.plot([0, suction_max], [use_time_mean, use_time_mean], 'r--', lw = 1 ) #가로점선
plt.plot([suction_mean, suction_mean], [0, use_time_max], 'r--', lw = 1 ) #세로점선
plt.show()
hue값은 범례나 종류를 나타냄
모든 데이터가 그래프에 그려짐 그래서 좋은 제품을 선정하기 위한 작업을 함
# 인기 제품 20개 선택
chart_data_selected = chart_data[:20]
# 흡입력, 사용시간의 최댓값, 최솟값 구하기
suction_max = chart_data_selected['흡입력'].max()
suction_mean = chart_data_selected['흡입력'].mean()
use_time_max = chart_data_selected['사용시간'].max()
use_time_mean = chart_data_selected['사용시간'].mean()
plt.figure(figsize=(20, 10))
plt.title("무선 핸디/스틱청소기 TOP 20")
sns.scatterplot(x = '흡입력', y = '사용시간', size = '가격',
hue = chart_data_selected['회사명'],
data = chart_data_selected, sizes = (100, 2000),
legend = False)
plt.plot([60, suction_max], [use_time_mean, use_time_mean], 'r--', lw = 1 )
plt.plot([suction_mean, suction_mean], [20, use_time_max], 'r--', lw = 1 )
for index, row in chart_data_selected.iterrows():
x = row['흡입력']
y = row['사용시간']
s = row['제품'].split(' ')[0]
plt.text(x, y, s, size=20)
plt.show()
상위 20개의 제품만 따로 그래프에 출력!
'데이터 청년 캠퍼스(경남대학교) > 수업' 카테고리의 다른 글
2021-07-09 (0) | 2021.07.09 |
---|---|
2021 - 07 - 02 (0) | 2021.07.02 |
2021-07-01 (2) (0) | 2021.07.01 |
2021-06-29 (0) | 2021.07.01 |
2021-06-28 (0) | 2021.07.01 |