본문 바로가기

데이터 청년 캠퍼스(경남대학교)/수업

2021-07-01 (1)

 

'다나와' 사이트의  데이터 사용

 

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