我用Python爬了4400條淘寶商品數(shù)據(jù),竟發(fā)現(xiàn)了這些“潛規(guī)則”
本文記錄了筆者用 Python 爬取淘寶某商品的全過程,并對(duì)商品數(shù)據(jù)進(jìn)行了挖掘與分析,最終得出結(jié)論。
項(xiàng)目內(nèi)容
- 本案例選擇商品類目:沙發(fā)。
- 數(shù)量:共 100 頁 4400 個(gè)商品。
- 篩選條件:天貓、銷量從高到低、價(jià)格 500 元以上。
項(xiàng)目目的
- 對(duì)商品標(biāo)題進(jìn)行文本分析,詞云可視化
- 不同關(guān)鍵詞 word 對(duì)應(yīng)的 sales 的統(tǒng)計(jì)分析
- 商品的價(jià)格分布情況分析
- 商品的銷量分布情況分析
- 不同價(jià)格區(qū)間的商品的平均銷量分布
- 商品價(jià)格對(duì)銷量的影響分析
- 商品價(jià)格對(duì)銷售額的影響分析
- 不同省份或城市的商品數(shù)量分布
- 不同省份的商品平均銷量分布
注:本項(xiàng)目僅以以上幾項(xiàng)分析為例。
項(xiàng)目步驟
- 數(shù)據(jù)采集:Python 爬取淘寶網(wǎng)商品數(shù)據(jù)
- 對(duì)數(shù)據(jù)進(jìn)行清洗和處理
- 文本分析:jieba 分詞、wordcloud 可視化
- 數(shù)據(jù)柱形圖可視化:barh
- 數(shù)據(jù)直方圖可視化:hist
- 數(shù)據(jù)散點(diǎn)圖可視化:scatter
- 數(shù)據(jù)回歸分析可視化:regplot
工具&模塊
- 工具:本案例代碼編輯工具 Anaconda 的 Spyder。
- 模塊:requests、retrying、missingno、jieba、matplotlib、wordcloud、imread、seaborn 等。
爬取數(shù)據(jù)
因淘寶網(wǎng)是反爬蟲的,雖然使用多線程、修改 headers 參數(shù),但仍然不能保證每次 100% 爬取,所以我增加了循環(huán)爬取,每次循環(huán)爬取未爬取成功的頁 ,直至所有頁爬取成功停止。
說明:淘寶商品頁為 JSON 格式,這里使用正則表達(dá)式進(jìn)行解析。
代碼如下:
數(shù)據(jù)清洗、處理
數(shù)據(jù)清洗、處理這個(gè)步驟也可以在 Excel 中完成,再讀入數(shù)據(jù)。
代碼如下:
說明:根據(jù)需求,本案例中只取了 item_loc,raw_title,view_price,view_sales 這 4 列數(shù)據(jù),主要對(duì)區(qū)域、標(biāo)題、價(jià)格、銷量進(jìn)行分析。
代碼如下:
數(shù)據(jù)挖掘與分析
對(duì) raw_title 列標(biāo)題進(jìn)行文本分析
使用結(jié)巴分詞器,安裝模塊 pip install jieba:
對(duì) title_s(list of list 格式)中的每個(gè) list 的元素(str)進(jìn)行過濾,剔除不需要的詞語,即把停用詞表 stopwords 中有的詞語都剔除掉:
因?yàn)橄旅嬉y(tǒng)計(jì)每個(gè)詞語的個(gè)數(shù),所以為了準(zhǔn)確性,這里對(duì)過濾后的數(shù)據(jù) title_clean 中的每個(gè) list 的元素進(jìn)行去重,即每個(gè)標(biāo)題被分割后的詞語唯一。
觀察 word_count 表中的詞語,發(fā)現(xiàn) jieba 默認(rèn)的詞典無法滿足需求。
有的詞語(如可拆洗、不可拆洗等)卻被 cut,這里根據(jù)需求對(duì)詞典加入新詞(也可以直接在詞典 dict.txt 里面增刪,然后載入修改過的 dict.txt)。
詞云可視化需要安裝 wordcloud 模塊。
安裝模塊有兩種方法:
- pip install wordcloud
- 下載 Packages 安裝:pip install 軟件包名稱
軟件包下載地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud
注意:要把下載的軟件包放在 Python 安裝路徑下。
代碼如下:
分析結(jié)論:
- 組合、整裝商品占比很高。
- 從沙發(fā)材質(zhì)看:布藝沙發(fā)占比很高,比皮藝沙發(fā)多。
- 從沙發(fā)風(fēng)格看:簡約風(fēng)格最多,北歐風(fēng)次之,其他風(fēng)格排名依次是美式、中式、日式、法式等。
- 從戶型看:小戶型占比***、大小戶型次之,大戶型最少。
不同關(guān)鍵詞 word 對(duì)應(yīng)的 sales 之和的統(tǒng)計(jì)分析
說明:例如詞語“簡約”,則統(tǒng)計(jì)商品標(biāo)題中含有“簡約”一詞的商品的銷量之和,即求出具有“簡約”風(fēng)格的商品銷量之和。
代碼如下:
對(duì)表 df_word_sum 中的 word 和 w_s_sum 兩列數(shù)據(jù)進(jìn)行可視化。(本例中取銷量排名前 30 的詞語進(jìn)行繪圖)
由圖表可知:
組合商品銷量***。
從品類看:布藝沙發(fā)銷量很高,遠(yuǎn)超過皮藝沙發(fā)。
從戶型看:小戶型沙發(fā)銷量***,大小戶型次之,大戶型銷量最少。
從風(fēng)格看:簡約風(fēng)銷量***,北歐風(fēng)次之,其他依次是中式、美式、日式等。
可拆洗、轉(zhuǎn)角類沙發(fā)銷量可觀,也是頗受消費(fèi)者青睞的。
商品的價(jià)格分布情況分析
分析發(fā)現(xiàn),有一些值太大,為了使可視化效果更加直觀,這里我們結(jié)合自身產(chǎn)品情況,選擇價(jià)格小于 20000 的商品。
代碼如下:
由圖表可知:
商品數(shù)量隨著價(jià)格總體呈現(xiàn)下降階梯形勢,價(jià)格越高,在售的商品越少。
低價(jià)位商品居多,價(jià)格在 500-1500 之間的商品最多,1500-3000 之間的次之,價(jià)格 1 萬以上的商品較少。
價(jià)格 1 萬元以上的商品,在售商品數(shù)量差異不大。
商品的銷量分布情況分析
同樣,為了使可視化效果更加直觀,這里我們選擇銷量大于 100 的商品。
代碼如下:
由圖表及數(shù)據(jù)可知:
- 銷量 100 以上的商品僅占 3.4% ,其中銷量 100-200 之間的商品最多,200-300 之間的次之。
- 銷量 100-500 之間,商品的數(shù)量隨著銷量呈現(xiàn)下降趨勢,且趨勢陡峭,低銷量商品居多。
- 銷量 500 以上的商品很少。
不同價(jià)格區(qū)間的商品的平均銷量分布
代碼如下:
由圖表可知:
- 價(jià)格在 1331-1680 之間的商品平均銷量***,951-1331 之間的次之,9684 元以上的***。
- 總體呈現(xiàn)先增后減的趨勢,但***峰處于相對(duì)低價(jià)位階段。
- 說明廣大消費(fèi)者對(duì)購買沙發(fā)的需求更多處于低價(jià)位階段,在 1680 元以上價(jià)位越高,平均銷量基本是越少。
商品價(jià)格對(duì)銷量的影響分析
同上,為了使可視化效果更加直觀,這里我們結(jié)合自身產(chǎn)品情況,選擇價(jià)格小于 20000 的商品。
代碼如下:
由圖表可知:
- 總體趨勢:隨著商品價(jià)格增多,其銷量減少,商品價(jià)格對(duì)其銷量影響很大。
- 價(jià)格 500-2500 之間的少數(shù)商品銷量沖的很高,價(jià)格 2500-5000 之間的商品多數(shù)銷量偏低,少數(shù)相對(duì)較高,但價(jià)格 5000 以上的商品銷量均很低,沒有銷量突出的商品。
商品價(jià)格對(duì)銷售額的影響分析
代碼如下:
由圖表可知:
- 總體趨勢:由線性回歸擬合線可以看出,商品銷售額隨著價(jià)格增長呈現(xiàn)上升趨勢。
- 多數(shù)商品的價(jià)格偏低,銷售額也偏低。
- 價(jià)格在 0-20000 的商品只有少數(shù)銷售額較高,價(jià)格 2-6 萬的商品只有 3 個(gè)銷售額較高,價(jià)格 6-10 萬的商品有 1 個(gè)銷售額很高,而且是***值。
不同省份的商品數(shù)量分布
代碼如下:
由圖表可知:
- 廣東的最多,上海次之,江蘇第三,尤其是廣東的數(shù)量遠(yuǎn)超過江蘇、浙江、上海等地,說明在沙發(fā)這個(gè)子類目,廣東的店鋪占主導(dǎo)地位。
- 江浙滬等地的數(shù)量差異不大,基本相當(dāng)。
不同省份的商品平均銷量分布
代碼如下:
熱力型地圖
掃描下方二維碼,關(guān)注51CTO技術(shù)棧微信公眾號(hào),回復(fù)“淘寶"即可下載“源碼"