用Python爬取了某寶1166家月餅數據進行可視化分析,終于找到最好吃的月餅~
大家好,我是志斌~
在有幾天就是中秋節了,不知道大家有沒有跟志斌一樣的選擇困難癥,面對琳瑯滿目的商品,不知道挑哪款月餅送長輩最好。
不過好在志斌會Python,將淘寶上的月餅商品都爬取了下來,并進行可視化分析,從而你看看哪款月餅是最合適的。
1.數據采集
數據采集是數據可視化分析的第一步,也是最基礎的一步,數據采集的數量和質量越高,后面分析的準確的也就越高,我們來看一下淘寶網的數據該如何爬取。
淘寶網站是一個動態加載的網站,我們之前可以采用解析接口或者用Selenium自動化測試工具來爬取數據,但是現在淘寶對接口進行了加密,使我們很難分析出來其中的規律,同時淘寶也對Selenium進行了反爬限制,所以我們要換種思路來進行數據獲取。
志斌打開開發者模式,開始對網頁進行觀察后發現,淘寶商品的數據竟然在源網頁中以注釋的方式存儲著。
已經發現了數據存儲的位置和方式,那我們可以直接構建爬蟲了,部分代碼如下:
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.數據清洗
數據采集后,要對其進行清洗,剔除臟數據,有助于提高分析的準確性。
(1)導入商品數據
用pandas讀取爬取后的商品數據并預覽。
import pandas as pd
df = pd.read_excel('月餅.xlsx',names=['店鋪名稱','商品名','價格','產地','付款人數'])
print(df.head())
(2)刪除重復數據
df.drop_duplicates()
(3)查看數據類型
查看字段類型和缺失值情況,符合分析需要,無需另做處理。
df.info()
3.可視化分析
我們來對這1166家月餅商品數據進行可視化分析。可視化圖是由Python、Tableau和Excel共同繪制而來。
(1)在售月餅的特點
通過對月餅的商品名稱進行詞云圖繪制,志斌發現蛋黃、廣式、五仁、蓮蓉、豆沙味的月餅售賣較多,同時淘寶上售賣的月餅大多是用來給人們送禮的。
制作代碼如下:
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("一個"), 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)各省產量分布圖
通過對各商品的產地數據進行統計并繪制了全國地圖,我們發現廣東、浙江和北京這三個地方生產月餅最多,分別是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")
我們進一步對廣東省的產地數據進行分析發現,廣州的月餅商家最多,占全省的40%。
(3)月餅價格區間分布
我們對月餅價格以100為分點,進行可視化后發現,價格在100以內的月餅商品最多,有478家,其次是價格在100-200之間的,有399家。看來月餅的價格還是相對便宜的~
(4)月餅月銷量top20商家
我們發現月餅銷量top20的商店都是旗艦店,看來大家在網上購買食品類商品時還是喜歡去官方的店鋪進行購買。其中稻香村食品店的月餅銷量最高,志斌一會去這家看看。
看完月銷量,在來看看月銷額。我們發現美心官方旗艦店的月銷額很高,但是它的月銷量很低,看來它的月餅商品價格略高。
(5)志斌入手的月餅
經過以上的分析和對寶貝的評價、好評率等數據進行綜合考慮之后,志斌最終選擇購買這款月餅來送給長輩。