用Python爬取了某寶1166家月餅數(shù)據(jù)進(jìn)行可視化分析,終于找到最好吃的月餅~
大家好,我是志斌~
在有幾天就是中秋節(jié)了,不知道大家有沒有跟志斌一樣的選擇困難癥,面對(duì)琳瑯滿目的商品,不知道挑哪款月餅送長輩最好。
不過好在志斌會(huì)Python,將淘寶上的月餅商品都爬取了下來,并進(jìn)行可視化分析,從而你看看哪款月餅是最合適的。
1.數(shù)據(jù)采集
數(shù)據(jù)采集是數(shù)據(jù)可視化分析的第一步,也是最基礎(chǔ)的一步,數(shù)據(jù)采集的數(shù)量和質(zhì)量越高,后面分析的準(zhǔn)確的也就越高,我們來看一下淘寶網(wǎng)的數(shù)據(jù)該如何爬取。
淘寶網(wǎng)站是一個(gè)動(dòng)態(tài)加載的網(wǎng)站,我們之前可以采用解析接口或者用Selenium自動(dòng)化測(cè)試工具來爬取數(shù)據(jù),但是現(xiàn)在淘寶對(duì)接口進(jìn)行了加密,使我們很難分析出來其中的規(guī)律,同時(shí)淘寶也對(duì)Selenium進(jìn)行了反爬限制,所以我們要換種思路來進(jìn)行數(shù)據(jù)獲取。
志斌打開開發(fā)者模式,開始對(duì)網(wǎng)頁進(jìn)行觀察后發(fā)現(xiàn),淘寶商品的數(shù)據(jù)竟然在源網(wǎng)頁中以注釋的方式存儲(chǔ)著。
已經(jīng)發(fā)現(xiàn)了數(shù)據(jù)存儲(chǔ)的位置和方式,那我們可以直接構(gòu)建爬蟲了,部分代碼如下:
import requests
import re
import openpyxl
response = requests.get(url, headers=headers, params=params)for i in range(44):
try:
if (fukuanrenshu[i] == '1.5萬+'):
f = 15000
elif (fukuanrenshu[i] == '1.0萬+'):
f = 10000
elif ('+'in fukuanrenshu[i]):
f = re.findall('\d+', fukuanrenshu[i])
else:
f = fukuanrenshu[i]
if float(jiage[i]) > 10:
sheet.append([dianpumingcheng[i], shangpinming[i], float(jiage[i]), fahuodi[i], f])
2.數(shù)據(jù)清洗
數(shù)據(jù)采集后,要對(duì)其進(jìn)行清洗,剔除臟數(shù)據(jù),有助于提高分析的準(zhǔn)確性。
(1)導(dǎo)入商品數(shù)據(jù)
用pandas讀取爬取后的商品數(shù)據(jù)并預(yù)覽。
import pandas as pd
df = pd.read_excel('月餅.xlsx',names=['店鋪名稱','商品名','價(jià)格','產(chǎn)地','付款人數(shù)'])
print(df.head())
(2)刪除重復(fù)數(shù)據(jù)
df.drop_duplicates()
(3)查看數(shù)據(jù)類型
查看字段類型和缺失值情況,符合分析需要,無需另做處理。
df.info()
3.可視化分析
我們來對(duì)這1166家月餅商品數(shù)據(jù)進(jìn)行可視化分析??梢暬瘓D是由Python、Tableau和Excel共同繪制而來。
(1)在售月餅的特點(diǎn)
通過對(duì)月餅的商品名稱進(jìn)行詞云圖繪制,志斌發(fā)現(xiàn)蛋黃、廣式、五仁、蓮蓉、豆沙味的月餅售賣較多,同時(shí)淘寶上售賣的月餅大多是用來給人們送禮的。
制作代碼如下:
from imageio import imread
import jieba
from wordcloud import WordCloud, STOPWORDS
with open("1.txt",'r',encoding='utf-8') as f:
job_title_1 = f.read()
contents_cut_job_title = jieba.cut(job_title_1)
contents_list_job_title = " ".join(contents_cut_job_title)
wc = WordCloud(stopwords=STOPWORDS.add("一個(gè)"), collocations=False,
background_color="white",
font_path=r"K:\msyh.ttc",
width=400, height=300, random_state=42,
mask=imread('月餅.jpg', pilmode="RGB")
)
wc.generate(contents_list_job_title)
wc.to_file("推薦語.png")
(2)各省產(chǎn)量分布圖
通過對(duì)各商品的產(chǎn)地?cái)?shù)據(jù)進(jìn)行統(tǒng)計(jì)并繪制了全國地圖,我們發(fā)現(xiàn)廣東、浙江和北京這三個(gè)地方生產(chǎn)月餅最多,分別是312家、221家和131家。
制作代碼如下:
import openpyxl
from collections import Counter
from pyecharts import Map
wb = openpyxl.load_workbook('月餅.xlsx')
sheet = wb['Sheet']
a = []
for i in range(2,1960):
D = sheet[f'D{i}']
a.append(D.value)
province_distribution = dict(Counter(a))
provice = list(province_distribution.keys())
values = list(province_distribution.values())
map = Map("中國地圖",width=1200, height=600)
map.add("", provice, values, visual_range=[0, 50], maptype='china', is_visualmap=True,
visual_text_color='#000',is_label_show=True)
map.render(path="地圖.html")
我們進(jìn)一步對(duì)廣東省的產(chǎn)地?cái)?shù)據(jù)進(jìn)行分析發(fā)現(xiàn),廣州的月餅商家最多,占全省的40%。
(3)月餅價(jià)格區(qū)間分布
我們對(duì)月餅價(jià)格以100為分點(diǎn),進(jìn)行可視化后發(fā)現(xiàn),價(jià)格在100以內(nèi)的月餅商品最多,有478家,其次是價(jià)格在100-200之間的,有399家。看來月餅的價(jià)格還是相對(duì)便宜的~
(4)月餅月銷量top20商家
我們發(fā)現(xiàn)月餅銷量top20的商店都是旗艦店,看來大家在網(wǎng)上購買食品類商品時(shí)還是喜歡去官方的店鋪進(jìn)行購買。其中稻香村食品店的月餅銷量最高,志斌一會(huì)去這家看看。
看完月銷量,在來看看月銷額。我們發(fā)現(xiàn)美心官方旗艦店的月銷額很高,但是它的月銷量很低,看來它的月餅商品價(jià)格略高。
(5)志斌入手的月餅
經(jīng)過以上的分析和對(duì)寶貝的評(píng)價(jià)、好評(píng)率等數(shù)據(jù)進(jìn)行綜合考慮之后,志斌最終選擇購買這款月餅來送給長輩。