直男唔懂女人心?10953 條數據告訴你女王節送什麼口紅色號!

原標題:直男唔懂女人心?10953 條數據告訴你女王節送乜嘢口紅色號!

“你係個好人,但我絕唔會接受一個連熱門口紅品牌色號都分唔清嘅好直男。”

作者 | 周誌鵬

責編| 郭 芮

這係一個為熱點蟄伏laN天嘅故事——朋友們問小Z為乜嘢都三八節la才發這篇文章,快遞都來唔及la。小Z微微一笑:本文隻係提供一種分析思路(線上分析爆款嘅套路萬變唔離其宗),好好捫包(錢包)自問,2019才剛剛開始,節日還多著呐(微笑中仿佛透露著貧窮)……

情人節告白被拒嘅經曆還曆曆喺目,小Z覺得,作為一個做數據分析嘅直男,有必要讓數據來解決自己嘅困惑——乜嘢係熱門嘅口紅色號?

小Z攥緊la拳頭暗暗發誓:“哥要用數據來找到熱門嘅口紅品牌同HOT色號”!一來為自己正名,二來係把數據分析思路同結果公之於眾,為直男圈做一點點微小嘅貢獻。

小Z原本天真嘅以為口紅色號就像鞋碼一樣,每個品牌都係通用嘅,43碼就係43碼,阿迪並冇比阿迪王高貴,隻需要一視同仁地爬取同統計數據就OKla——但係口紅用殘酷嘅現實啪啪啪打醒la他:唔同嘅品牌,甚至同一個品牌嘅唔同係列,就算顏色看起來一毛一樣,色號也係唔同嘅。

“沒關係,嗰我就先找出熱門品牌,再分析唔同品牌嘅熱門色號。”小Z早已百折唔撓,“淘寶(包括天貓)係走量最大嘅平台,嗰這次分析就從淘寶入手吧。”

熱門口紅品牌初體驗

說幹就幹,小Z先喺淘寶搜索“口紅”,按銷量排序,明確第一步目標:先爬下TOP200產品嘅標題、收貨人數(收貨人數係指近30天確認收貨嘅人數,該指標同銷量相比略有浮動,結合後麵評價數據來看更具指向性)、價格、店鋪名稱同地址。

仔細觀察發現,第一步我們需要嘅所有數據都喺靜態網頁中,直接requests網址即可。之所以隻拿下TOP200,係因為憑借小Z喺電商淺耕多年嘅直覺:一個銷量可觀嘅行業,TOP200產品嘅特征已經可以代表行業嘅趨勢la。

一頓操作猛如虎,一看結果有眉目:

基本字段齊活la,還缺乜嘢呢?第一步唔係要分析品牌嗎?品牌喺哪裏?要通過產品標題或者店鋪名稱來清洗出品牌未免也太太太麻煩la,唔慌,小Z發現每款產品詳情頁記錄著關於品牌嘅信息:

恰好我們第一步記錄la每個產品嘅URL,這一步嘅數據也藏喺靜態網址中,隻需要依次訪問爬取就好la。

數據源已備好,喺分析前小Z好明確分析嘅最終目嘅:送給妹子!!!

如果按照銷量排名來看品牌熱度,難免有些單純走量嘅品牌躋身前10,所以,後麵嘅分析主要基於金額排序:

近30天TOP10品牌出爐,MAC(這可唔係電腦嘅嗰個MAC)以14.96%嘅市場占有率獨占鼇頭,YSL、紀梵希緊隨其後。唔難看出,前10個品牌(TOP200產品中共計85個品牌)累計占據la66.35%嘅市場份額。更進一步,20%嘅品牌占據la78.89%嘅收貨額,二八法則可謂誠唔欺我小Z。

從平均價格來看,熱門品牌可以分為三個梯隊,第一梯隊係高端線:紀梵希、YSL、阿瑪尼、DIOR同雅詩蘭黛,平均價格都喺270以上;MAC以136元嘅平均價格獨占第二梯隊;第三梯隊則係親民品牌,ZEESEA、完美日記、稚優泉同美康粉黛,平均價格唔超過50元。

至此,熱門品牌同價格梯隊劃分完成,下麵就係死磕唔同品牌嘅色號la。

唔同品牌嘅熱門色號

這一步嘅操作小Z決定分細一點,圍繞數據爬取——清洗——分析嘅流程來進行。

一、數據爬取

所有關於商品色號嘅信息,都藏喺商品評論裏:

從消費心理學角度來看,購買之後且願意評論嘅人雖係少數,但這些評論者本身受到產品觸動,具有強烈嘅表達意願,佢哋所購買嘅產品色號就更具備參考價值。小Z決定從高、中梯隊抽取每一個品牌嘅爆款(TOP1)產品,進行評價抓取(同誌,畢竟係送給妹子嘅,先放過親民線品牌)。

敲黑板,頁麵前端展示評價數都係成千上萬,但實際爬取過程中,最多隻有99頁(20*99條)嘅權限。另外,評論內容係以動態形式存放喺詳情嘅JS網頁中,以list_detail_rate開頭,訪問後係JSON格式,十分簡單:

小Z先網羅la紀梵希、YSL、阿瑪尼、DIOR、雅詩蘭黛同MAC官方旗艦店爆款(總銷量TOP1)產品:

再分別爬取之,最終拿到合計10953條評價,還有買家昵稱、評論時間以及我們最鐘意嘅色號信息:

二、數據清洗

數據還挺全,嗰豈唔係直接做一個分類統計就明白乜嘢色號火la!小Z諗諗都覺得激動。BUT!TOO YOUNG TOO SIMPLE!

小Z突然諗到曾經嘅自己,隻有兩種情況才會主動評價,一種係吹到爆嘅好物(或者覺得東西唔錯商家還好評送紅包);一種係爛到唔行,感覺智商受到侮辱必須奮起反擊,揭唔義於公眾。

“如果無差別地統計色號,萬一,有一款誰買誰罵嘅色號喺統計中排名靠前,而我又向朋友們推薦la這款色號!!!這可係犯罪啊!”所以,小Z作為一個嚴謹嘅數據分析師,做色號之前先對評價進行清洗:

  • 簡單去噪,發現評價中有部分“此用戶冇填寫評論”,這一類無意義嘅評價必須剔除(其實還有一些係評價模板,朋友們自己嚐試嘅時候可以細化,這裏隻係思路,暫唔展開);
  • 對每條評價情感打分,隻留下偏正向(積極)嘅評價,再統計色號。

由於評價都係中文,小Z這次用laPYTHON中嘅SnowNLP庫,用法好簡單,舉個例子:

sentiments方法返回嘅係一個0-1之間嘅情感分值,越接近1表明情感越積極,越靠近0則越消極。小Z批量對評價進行情感判定,剔除掉冇評論嘅評價,並且隻留下分值大於等於0.6(偏積極)嘅結果:

經過清洗之後,10953條評價還剩9116條,看來口紅絕大部分評價都係偏正向(炫耀)嘅。

三、數據分析

1、唔同品牌色號數量分布:

從爆款產品色號數量來看,MAC可謂全麵,評論中竟然涉及到50個色號。隨後係DIOR嘅35個色號,YSL、紀梵希、雅詩蘭黛色號數量比較接近,都喺21左右。阿瑪尼則比較高冷,隻有15個色號供選擇。但色號數量隻能看一個總覽,各品牌色號集中度係一個乜嘢樣嘅情況呢?

2、各品牌色號集中度:

通過各品牌TOP3色號占比同累計占比來分析色號集中度。

YSL、阿瑪尼、雅詩蘭黛TOP3色號累計占比十分之高,達到la90%左右,其中阿瑪尼同雅詩蘭黛以一個爆款色號俾睨天下,他倆TOP1色號占比高達73%+,YSL算係兩駕馬車並駕齊驅。MAC同紀梵希集中度喺72%+,仍係依靠TOP1色號這個ADC嘅強大輸出控場;DIOR呈現出百花齊放嘅態勢,TOP3色號累計占比僅57.05%,TOP1、TOP2色號分布均勻,消費者喺色號選擇方麵較為自主同獨立。

3、最熱門色號推薦:

啊!DIOR嘅999 MATTE,MAC嘅CHILI,YSL嘅N°1正宮色,阿瑪尼嘅405番茄紅,紀梵希嘅306還有雅詩蘭黛嘅420#13玫瑰豆沙色。

寫喺最後

“結論如此一目la然,以至於唔用再多分析la”。小Z流下la兩行激動嘅淚水,唔係因為他有親人行車唔規範,而係因為這一次針對口紅品牌同色號嘅分析終於有la結論,這個過程積累嘅思路同技巧,還有結論帶來嘅成就感,甚至比同女神相處還美妙。

小Z隱隱覺得這種美妙感有些唔正常。這時,PYTHON編輯器突然響起la嬌嗔嘅女聲“討厭!你每天同朋友說諗找對象,為乜嘢冇諗起我這個對象呢!”……未完待續:)

本文主要針對特定品牌特定產品做la評價爬取同分析,感興趣嘅朋友們可以結合自己興趣去做分析,最後附上評論爬取同清洗代碼拋磚引玉:

importrequests

importpandas aspd

importos

importtime

importjson

fromsnownlp importSnowNLP

#定義一個解析單頁評論內容嘅函數

defparse_page(url,headers,cookies):

result = pd.DataFrame()

html = requests.get(url,headers = headers,cookies = cookies)

bs = json.loads(html.text[ 25: -2])

#循環解析,結果放喺result中

fori inbs[ 『rateList』]:

content = i[ 『rateContent』]

time = i[ 『rateDate』]

sku = i[ 『auctionSku』]

name = i[ 『displayUserNick』]

df = pd.DataFrame({ 『買家昵稱』:[name], 『評論時間』:[time], 『內容』:[content], 『SKU』:[sku]})

result = pd.concat([result,df])

returnresult

#構造網頁,需要輸入基準嘅網址同商品總評價數量

defformat_url(base_url,num):

urls = []

#如果小於99頁,則按照實際頁數來循環構造

if(num / 20) < 99:

fori inrange( 1,int(num / 20) + 1):

url = base_url[: -1] + str(i)

urls.append(url)

#如果評論數量大於99頁能容納嘅,則按照99頁來爬取

else:

fori inrange( 1, 100):

url = base_url[: -1] + str(i)

urls.append(url)

#最終返回urls

returnurls

#輸入基準網頁,以及有多少條評論

defmain(url,num):

#定義一個存所有內容嘅變量

final_result = pd.DataFrame()

count = 1

#構造網頁,循環爬取並存儲結果

foru informat_url(url,num):

result = parse_page(u,headers = headers,cookies = cookies)

final_result = pd.concat([final_result,result])

print( 『正喺瘋狂爬取,已經爬取第 %d 頁』% count)

#設置一個愛心嘅等待時間,文明爬取

count += 1

time.sleep( 5.2)

print( 『為完成幹杯!』)

returnfinal_result

#情感篩選,隻留下大於等於0.6分值嘅結果

deffilter_emotion(df,min_ = 0.6):

scores = []

#判斷情感分值

fortext indf[ 『內容』]:

ob = SnowNLP(text)

score = ob.sentiments

scores.append(score)

df_scores = pd.DataFrame({ 『情感分值』:scores})

df.index = df_scores.index

result = pd.concat([df,df_scores],axis = 1)

#剔除掉冇評論嘅用戶

result = result.loc[result[ 『內容』].str.find( 『此用戶冇填寫評論』) == -1,:]

#留下大於0.6嘅分值

result = result.loc[result[ 『情感分值』] >= min_,:]

returnresult

if__name__ == 「__main__」:

#找到基準網址,喺網頁JS文件中找到填寫就OK

url = 『https://rate.tmall.com/list_detail_rate.htm?itemId=585140124323&spuId=1136244482&sellerId=3102239719&order=3&currentPage=1』

#偽裝headers按照實際情況填寫

headers = { 『User-Agnet』: 『Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36』,

『Accept』: 『text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8』,

『Accept-Language』: 『zh-CN,zh;q=0.8,en;q=0.6』}

#偽裝cookies,最近反爬比較嚴,最好填入登錄嘅值,並且文明爬取,設置合理嘅間隔時間

cookies = { 『cookie』: 『這個地方輸入自己嘅cookies』}

#最終執行,這個產品目前隻有265條評價,大家根據實際情況酌情填寫

df = main(url,num = 265)

#用情感分值來進行清洗

df = filter_emotion(df,min_ = 0.6)

#最後可以把結果存為excel文件嘅形式

#df.to_excel(『XXXX.xlsx』)

作者:周誌鵬,2年數據分析,深切感受到數據分析嘅有趣同學習過程中缺少案例嘅無奈,遂新開公眾號「數據唔吹牛」,定期更新數據分析相關技巧同有趣案例(含實戰數據集),歡迎大家關注交流。

聲明:本文為作者投稿,版權歸其個人所有。

更多:交友技巧

發表於 分類 潮流