LiJell's 성장기

__16.data.analyzing_Danawa_Visualizing (다나와 3편) 본문

Bigdata/Web Crawling

__16.data.analyzing_Danawa_Visualizing (다나와 3편)

All_is_LiJell 2022. 1. 21. 18:40
반응형
 

__14.data.analyzing_Danawa_Crawling (다나와 1편)

다나와 2편 전처리: https://lime-jelly.tistory.com/55 다나와 3편 시각화: https://lime-jelly.tistory.com/56 14. Danawa crawling (다나와 크롤링) 우리는 무선 청소기가 목표다! __15.data.analyzing_Danawa_..

lime-jelly.tistory.com

 

__15.data.analyzing_Danawa_preprocessing(다나와 2편)

다나와 1편 크롤링: https://lime-jelly.tistory.com/54 다나와 3편 시각화: https://lime-jelly.tistory.com/56 __14.data.analyzing_Danawa_Crawling (다나와 1편) 다나와 2편 전처리: https://lime-jelly.tisto..

lime-jelly.tistory.com

 

__17.data.analyzing_Danawa_Find_Monitor (다나와 4편)

다나와 1편 크롤링: https://lime-jelly.tistory.com/54 다나와 2편 전처리: https://lime-jelly.tistory.com/55 다나와 3편 시각화: https://lime-jelly.tistory.com/56 __14.data.analyzing_Danawa_Crawling (다..

lime-jelly.tistory.com

 

16. 다나와 데이터 시각화


16.1. 데이터 불러오기

danawa_data = pd.read_excel('./files/2_danawa_data_final_class.xlsx')
danawa_data.head()
'''
    카테고리    회사명    제품    가격    사용시간    흡입력
0    핸디/스틱청소기    LG전자    오브제컬렉션 코드제로 ThinQ A9S AO9571    1055260    60    210
1    핸디/스틱청소기    삼성전자    비스포크 제트 VS20A956A3    564850    60    210
2    핸디/스틱청소기    LG전자    코드제로 ThinQ A9S AS9370IKT    784550    60    210
3    핸디/스틱청소기    삼성전자    비스포크 제트 VS20A957E3    804800    60    210
4    핸디/스틱청소기    샤오미    드리미 V10    49880    60    220
'''

16.2. 필요한 데로 정렬 후 살펴보기

top_list = danawa_data.sort_values(['흡입력'], ascending=False)
top_list.head()
'''
    카테고리    회사명    제품    가격    사용시간    흡입력
139    핸디/스틱청소기    리하스    LH20    118710    120    330
201    핸디/스틱청소기    비브르    스톰파워 VE35    128000    50    310
126    핸디/스틱청소기    아이닉    NEW i20    340000    50    300
220    핸디/스틱청소기    블랙앤데커    PV1020    58110    11    290
219    핸디/스틱청소기    캐치웰    NEW F8    455380    25    290
'''
top_list = danawa_data.sort_values(["사용시간"], ascending = False)
top_list.head()
'''
    카테고리    회사명    제품    가격    사용시간    흡입력
139    핸디/스틱청소기    리하스    LH20    118710    120    330
19    핸디/스틱청소기    샤오미    드리미 V11    50620    90    250
18    핸디/스틱청소기    샤오미    드리미 V12    67430    90    270
68    핸디/스틱청소기    샤오미    드리미 T30    27000    90    270
253    핸디/스틱청소기    샤오미    드리미 V12 프로    109000    85    270
'''
top_list = danawa_data.sort_values(["사용시간","흡입력"], ascending = False)
top_list.head()
'''
    카테고리    회사명    제품    가격    사용시간    흡입력
139    핸디/스틱청소기    리하스    LH20    118710    120    330
18    핸디/스틱청소기    샤오미    드리미 V12    67430    90    270
68    핸디/스틱청소기    샤오미    드리미 T30    27000    90    270
19    핸디/스틱청소기    샤오미    드리미 V11    50620    90    250
253    핸디/스틱청소기    샤오미    드리미 V12 프로    109000    85    270
'''

16.3. 평균값 구하기

price_mean_value = danawa_data['가격'].mean()
suction_mean_value = danawa_data['흡입력'].mean()
use_time_mean_value = danawa_data['사용시간'].mean()
print("가격 평균값", price_mean_value)
print("흡입력 평균값", suction_mean_value)
print("사용시간 평균값", use_time_mean_value)
'''
가격 평균값 301072.23846153845
흡입력 평균값 168.68846153846152
사용시간 평균값 43.31923076923077
'''

16.4. 평균값을 이용한 가성비 찾기

condition_data = danawa_data [
    (danawa_data['가격'] <= price_mean_value) & 
    (danawa_data['흡입력'] >= suction_mean_value) & 
    (danawa_data['사용시간'] >= use_time_mean_value)]
condition_data
'''
    카테고리    회사명    제품    가격    사용시간    흡입력
4    핸디/스틱청소기    샤오미    드리미 V10    49880    60    220
5    핸디/스틱청소기    삼성전자    비스포크 제트 VS20A957D2    155700    60    210
7    핸디/스틱청소기    LG전자    코드제로 ThinQ A9S A9370    125870    60    210
11    핸디/스틱청소기    삼성전자    제트 VS20T9210BF    40660    60    200
13    핸디/스틱청소기    다이슨    V15 디텍트 앱솔루트 엑스트라    38900    60    240
...    ...    ...    ...    ...    ...    ...
243    핸디/스틱청소기    원더스리빙    원더스 다이나킹 Z9    48420    65    220
246    핸디/스틱청소기    삼성전자    비스포크 제트 VS20A957G2P    129000    60    210
248    핸디/스틱청소기    DIBEA    X30    57950    50    250
253    핸디/스틱청소기    샤오미    드리미 V12 프로    109000    85    270
254    핸디/스틱청소기    삼성전자    제트 VS20T9278S7CC    160650    60    200
68 rows × 6 columns
'''

16.5. 시각화

from matplotlib import font_manager, rc
import matplotlib.pyplot as plt
import seaborn as sns
# import platform 

rc('font', family = 'Malgun Gothic')
plt.figure(figsize = (20, 10))
sns.scatterplot(x = '흡입력', y = '사용시간',
               size = '가격', hue = danawa_data['회사명'],
               data = danawa_data, legend = False,
               sizes = (10, 1000))
plt.hlines(use_time_mean_value, 0, 400, color='red', 
           linestyle='dashed', linewidth=1)
plt.vlines(suction_mean_value, 0, 120, color='red', 
           linestyle='dashed', linewidth=1)
plt.show()

condition_data.columns
'''
Index(['카테고리', '회사명', '제품', '가격', '사용시간', '흡입력'], dtype='object')
'''
chart_data_selected = top_list[:20]
chart_data_selected
# suction_max_value = chart_data_selected['흡입력'].max()
suction_mean_value = chart_data_selected['흡입력'].mean()
# use_time_max_value = chart_data_selected['사용시간'].max()
use_time_mean_value = chart_data_selected['사용시간'].mean()

plt.figure(figsize = (20, 10))
sns.scatterplot(x = '흡입력', y = '사용시간',
               size = '가격', hue = chart_data_selected['회사명'],
               data = chart_data_selected, legend = False,
               sizes = (100, 2000))
plt.hlines(use_time_mean_value, 150, 350, color='red', 
           linestyle='dashed', linewidth=1)
plt.vlines(suction_mean_value, 40, 120, color='red', 
           linestyle='dashed', linewidth=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()

반응형
Comments