iT邦幫忙

1

一次讓人臉紅心跳的python數據分析

  • 分享至 

  • xImage
  •  

此文是《10周入門資料分析》系列第12篇
想瞭解學習路線,可以先閱讀“ 學習計畫 | 10周入門資料分析 ”
前段時間,看到某企業對資料分析師的招聘要求有一條:
分析客戶人群的購買習慣,並透過客戶購買行為做出相關資料分析。

好專案,正好爬蟲比較熱門,讓大家練手Python(工作中或多或少能用到)。所以想把python專題提前來講,稍微
改變了一下學習路綫~決定後,恰巧碰上亞馬遜推出中國市場的話題,靈感一現:
哎要不研究亞馬遜上Top100的細分品類 — — 女式內衣!!!的銷售情況吧??
馬上action!雖然這個話題,有點尷尬~

分析分為三步:資料獲取、資料清理、視覺化分析

第一步,採集資料。沒有資料怎麼辦,用萬能的Python爬嘛。

爬取商品排名和詳情頁連結,需要的欄位為:排名、商品名、詳情頁連結。

爬取商品詳情,需要的資訊為:

店家:也就是競爭對手。分析其爆品情況,保留店家連結,後續可針對性挖掘分析;

價格:分析爆品價格區間,對商品定價有幫助;

上架時間:什麼時候上的?爆了多久;

星級、評論數、評論標籤、所有評論連結:爬取評論內容,來分析爆品的優劣勢;

尺寸、顏色:嗯哼?也是非常有價值的參考資料;

圖片連結:難道你不想看看商品長啥樣嗎?
第三步,資料轉化為視覺化圖表,並做分析。
是不是迫不及待想要看過程了,來吧~

如何爬取內衣資料

Python爬資料很簡單,我個人總結大致就 3點:

  • 請求數據
  • 進行資料處理
  • 寫數據

第一點 請求的資料

會有幾種可能:
1、很簡單的html頁面,就直接requests就可以請求成功;
2、js渲染的頁面 ,這種頁面超多,requests請求一堆js資料;
3、需要登錄才能獲取,至今登錄我都是用的cookie 請求登錄,但應該有更好的辦法;
4、json數據;

第二點 資料處理

會有幾種可能:
1、請求的資料是簡單的html結構頁面 — — 直接BS4解析就好了
2、請求的資料是json — — 導入json模組進行解析
3、請求的資料是簡單的js渲染的html頁面
遇到這種頁面通過抓包或者簡單的在網站上審查請求,然後找的你想要的那部分資料,如果是js渲染的html,其實就是js拼寫的html,只要把其他無用的資料匹配掉用正則找到剩下想要的html文本就好了 。然後BS4解析。

第三點 寫資料

open方法進行檔打開 裡面的參數進行檔案格式設置,讀寫檔、編碼格式操作
with open(“XXX.xxx”,”a”,encoding=”utf-8") as f :
f.write(‘’’寫入的資料’’’)
檔案格式我用過的就是txt、csv 、xml 大部分文本格式都支援的。
a — 是創建檔 每次寫都是重新創建
w — 是追加
a — 是讀數據
encoding=”utf-8"這句話 不加encoding= 在windows系統下會報編碼錯誤,linux不會。
然後就是資料量太大,寫入到資料庫資料庫就用sqlite,記得引入模組 import sqlite3,就是創建資料表。
好了,不囉嗦,開始爬資料。

1、爬取商品排名和詳情頁連結


需要爬取的具體欄位:排名(Rank),商品名(item_name),商品詳情頁連結(item_link)、商品圖片連結(img_src)。

2、在商品詳情頁爬取更多商品資訊


店家名、店家連結、商品名、價格

星級、評論標籤
核心:
構建函數來獲取單個商品的詳細資訊;
利用for迴圈,遍歷商品詳情頁連結清單,來獲取每個商品的詳細資訊

3、爬取評論


評論內容,星級
核心:
從上一步的csv文件中,讀取Rank , item_name , reviews , reviews_link欄位
構建函數讀取每個商品的所有評論
利用for迴圈,獲取所有商品的所有評論
存儲到資料庫和csv檔中

4、爬取size和color數據

和第三步基本一樣,代碼基本一樣,主要在於要確認每頁評論的size&color個數。

數據清洗和預處理

1、讀取、清洗數據

從csv檔讀取100個商品的資料,篩選出所需要的欄位,進行資料清洗。

這裡注意,部分讀取的資料,看似是數值,實際是字元,因此需要進行類型轉換(如price拆分後,還需要轉為float型)

需要參與數值計算的NaN,使用平均值進行替換。

2、以商家維度處理資料

獲取所需的資料:商家的星級、評論數總和、評論數均值、最低價均值、最高價均值、價格均值、商品數量、占比。針對星級、評論數均值、價格均值、商品數量做標準化處理,並計算加權分。

分析:歪果(外國)情趣內衣哪家強

1、不同商家的星級排名

  • 平均星級達4.15分,高於平均分的商家超過一半(17/32)
  • Top1的LALAVAVA高達4.9分,緊隨其後也有5家達到4.5分。
  • 倒數第一N-pearI只有3.2分
    讓我看看LALAVAVA長什麼樣。亞馬遜上的商品,看上去就是普通泳衣,米國人還是很保守的嘛~

    但評分高真的就說明產品好嗎?不如來看看評論數吧。
    ②不同商家的平均評論數排名
  • 首先平均評論數只有193條,而且高於平均線的只有不到三成(12/32),想想淘寶動輒上萬,我們的人口優勢讓米國人羡慕呀;
  • 再來看星級Top1的LALAVAVA,評論數少得可憐,那麼對其商品真實品質就要存疑了;
  • 而星級倒數的N-pear I,同樣評論數很少,那大概率其商品其實不咋地;
  • 反觀評論數Top1的Garmol,其星級評價4.4,口碑佳評論也多,看來是不錯的商品;
  • 緊隨其後的幾家,其星級分數就低於平均分了

那麼,亞馬遜的星級評價難道就只受評論數的幾顆星比例影響嗎?我查閱了網上的一些資料,發現亞馬遜評價星級評定的三個重要因素:評論距離現在的時間,評論被買家投票採納數,評論是否有verified purchase標誌(意指真實買家)。此外,評論的字元數,被點擊次數等因素也可能會對評論星級有影響。

看來,亞馬遜對評論的監控和管理是非常嚴格而複雜的!當然,最重要的還是看看評論第一名的Garmol長什麼樣:

比上邊的泳衣更點題了,大家說好才是真的好,very sexy!

2、不同商家的價格區間排名(按均價)

  • 從圖上來看,明顯ELOVER鎖定的是高端市場,定價區間在49刀左右;相反,Goddessvan定價僅0.39刀,還只有一款,猜測可能是虧本衝量,提高商家曝光,搶奪低端市場
  • 從均價來看,基本分佈在10–20刀間,說明這是情趣內衣市場的主要價格區間;但20–40刀區間居然沒有任何商家,可以在這一塊深入研究,看能不能找到證據說明該區間是藍海,有更大的市場潛力
  • 而從每個商家的價格區間來看,大多數都是採取多顏色或款式的策略,一方面為用戶提供更多選擇,另一方面也體現了商家的上新能力;而僅有少數幾家採取了單一爆款的策略

最奢華的ELOVER看上去果然比較女神,縮略圖都比別家更用心。

那麼,到底哪個商家的策略更靠譜,市場份額更大呢?

3、商家的商品數量圓形圖

  • 在Top100的商品占比中,Avidlove以28%的巨大優勢稱霸
  • 而其他商家基本都是個位數的占比,沒有很明顯的優劣勢

Avidlove的內衣是帥氣酷炫風,還不錯。

單一方面畢竟還是很難衡量哪家商家更優秀,不如綜合多個指標來分析吧~

4、不同商家的加權分排名


將星級、平均評論數、商品均價、商品數量進行標準化處理後,因為不好拍定加權的比例,便將4項的歸一化結果x10後直接累加得到總分,並製作成條形堆積圖。

而每個商家的4項指標的占比,則側面反映其自身的優劣勢。
Avidlove,剛剛的酷酷風內衣,在其他三項中規中矩的情況下,以商品數量優勢奪得綜合分第一,有種農村包圍城市的感覺
Garmol,主要依靠口碑(星級、平均評論數)的優勢,奪得了第二名
ELOVER,主要依靠精准切分高端市場,奪得了第三名
N-pearI,沒有任何優勢,不出意料的光榮墊底
口碑最差的N-pearI,能搜到的商品也最少,不過圖很勁爆,emm……然而不是我的菜…

粗略來看的話,想要排名靠前,口碑一定不能太差,至少要保持在平均水準及以上!

5、不同商家的星級/價格散點圖

用Python做了張散點圖,x軸為商家的商品均價,y軸為商家的星級,點大小為商品數量,商品數量越大,點越大,點顏色為評論均值,評論均值越大,顏色越深紅。

利用價格均值和星級均值,將圖切分為四個象限:
①左上象限:實惠好評的商家
②右上象限:有點貴,但一分錢一分貨的商家
③右下象限:貴,但品質不咋地的商家
④左下象限:便宜沒好貨的商家
所以借助這張散點圖,挑商家買東西就容易多啦:
追求性價比,可選擇Avidlove,而且商品多,任君挑選 ;
追求高端,可選擇ELOVER,它貴有它的道理 ;
追求大眾,可選擇Garmol,評論數最多,而且好評居多 。
顧客可以根據自己的喜好挑選合適的商家,那麼作為商家如何改進自己呢?

6、詞頻分析


前面在爬取的過程中,同樣爬取了評論標籤,通過對此進行詞頻分析,可以發現顧客最關心的依次是:
① 是否合身:size、fit等相關字眼多次出現且排位靠前
② 品質:good quality、well made;soft and comfortable、fabric是對材質的肯定
③ 款式:cute、sexy、like the picture你懂的
④ 價格:cheaply made勉強算價格吧,但更多是對商品品質的懷疑
⑤ 口碑:highly recommend,評論的還是非常有參考價值的
評論標籤的數量較少,進一步對2.4w條評論進行詞頻分析,並製作成詞雲:

快誇我底圖選得好!

最直觀的,仍然是跟“是否合身”以及品質或款式有關。那麼我們就從顧客購買商品的Size&Color繼續分析

這裡,Size&Color的詞頻資料存在幾點問題:

1、數據量較少,僅有約6000條
2、Size&Color無法較好的區分開,因此一起分析
3、商家的命名規則不同,比如同樣是黑色款,有個商家會命名black,而有的可能是style1(所以一些奇怪的數字編號其實是商家的款式編號)
4、有些奇怪的字眼如trim可能是爬蟲時爬錯了或者匯出csv時的格式錯亂


可以明顯看出:
Size方面:large、medium、small肯定均有涵蓋,但另外還有xlarge、xxlarge、xxxlarge,亞馬遜主要是歐美顧客,可能體型相對較大,所以商家應該多研發以及備貨針對體型較大的顧客的商品。

Color方面:非常直觀:Black > red > blue > green > white > purple….所以黑色、紅色永遠不會錯;綠色是出乎我意料的,商家也可以大膽嘗試。

Style方面:詞頻中出現trim、lace字眼,蕾絲最高!!!

最後

在分析了Top100的商品資訊和2.4w條評論後,作為一篇正經的python資料分析研究,我們來總結一下亞馬遜情趣內衣產品和銷售策略:

1、一定要注意的競品

Garmol、ELOVER、Avidlove分別在口碑、定價、產品數量三個方向有其核心優勢,是需要重點研究的競爭對手。

2、口碑很重要

  • Review和星級是影響口碑的重要因素,需要深入研究其演算法機制並制定針對性的行銷策略
  • Review和星級有基礎要求
  • 平均星級達4.15分,高於平均分的商家超過一半
  • 平均評論數只有193條,高於平均線的商家約三成
  • Review相對淘寶評論較少,亞馬遜的演算法複雜且懲罰力度大,因此Review重精勝於重多

3、定價策略

  • 主流市場競爭激烈,價格多集中在10–20刀間
  • 高端市場有切入機會,目前僅ELOVER一家,價格在40–55刀間
  • 低端市場價值不大,利潤空間小,為了提高曝光或鋪量可考慮,但不利於以後衝擊中高端市場
  • 中高端市場機會巨大,20–40刀區間暫無其他商家,有巨大的市場潛力

4、產品策略

  • 應結合目標市場和定價,提高研發和上新能力,先多產品試錯,再嘗試單一爆款鞏固市場
  • 內衣尺寸:合身最重要,需貼合國外顧客的體型,一般large及以上。顏色上:保守可多使用黑色、紅色,同時可大膽嘗試綠色。款式上:多採用蕾絲裝飾
  • 品質和品控是底線

5、拓展&思考:

亞馬遜Best Sellers是每小時更新一次,理論上可以每一小時爬一次,看商品的排名變化,是否有新品等 ,可以嘗試自動化爬蟲;

針對上一點,但商品的評論內容並不是經常更新的,如何去重避免重複爬取?(類似于中斷點續傳功能);

此次也有爬取商品圖片的連結,可全部下載;在積累一定的圖片素材以後,就可以一定程度上看出顏色、甚至是款式的趨勢。

一場臉紅又心跳的資料分析就到這裡,如果你覺得這篇文章就幫我分享出去吧,小編會非常有動力了。

接下來python專題將python入門分爲 — 環境&數據結構、函數基礎、NumPy、Pandas、Matplotlib這5個章節去講述,
有點期待嗎?歡迎在臉書評論給小編:“對哪個章節感興趣?”。

我是「數據分析那些事」。常年分享資料分析乾貨,不定期分享好用的職場技能工具。

別忘記追蹤我的臉書,要常和小編互動喲~


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言