月餅之王花落誰手?全網都在銷售它!
本文經授權轉載自戀習Python(ID:sldata2017)
作者|丁彥軍
中秋佳節,除了假日團圓,月餅也是頭巷尾的話題焦點今年中秋,誰的月餅呼聲最高?什麼口味的月餅雖受歡迎?
筆者將與你一起爬取淘寶網全網月餅銷售數據,再經過數據分析,告訴你今年誰是「月餅之王」。不過在爬取數據與分析數據之前,插播一段月餅歷史之情。
月餅的歷史
據說早在殷周時期,江浙一帶就有一種紀念太師聞仲的邊薄心厚的「太師餅」,可以說是月餅的祖宗了。
後來到了北宋,被皇家看上了,在中秋節那天吃,不得不說皇室貴族的宣傳力度,果然是一般人的十倍以上,為月餅的傳播起了跨世紀的作用。
貴族們一看這玩意火了,得蹭個熱點,那給它們取個名字吧,於是想了個大名叫「月團」,小名叫「小餅」,我說你們為啥就不能把這兩個名字合併一下?
至於月餅這個名字,是直到南宋時期才第一次出現在書里的。後面大概就是月餅一步一步憑藉自己的努力,漸漸站在中秋節身邊的勵志故事了。
眾所周知:傳統的中國四大月餅包括,廣式月餅,京式月餅,蘇式月餅和潮式月餅。現在隨著時代的發展,也出現了好多新種類,比如冰皮月餅、海味月餅、冰淇淋月餅等等。
數據獲取
筆者就以淘寶網上的月餅為目標,來獲取最近全國各地近段時間月餅銷售情況。(目標鏈接:https://s.taobao.com/search?q=月餅)
工具&模塊:
工具:Python3.7+Sublime Text
模塊:Requests、jieba、matplotlib、wordcloud、imread、pandas、numpy 等。
目的主要是通過對數據的分析,來看看不同關鍵詞word對應的sales的統計、月餅價格以及銷量的分布情況、以及不同省份的月餅銷量情況。
詳情代碼如下:
import requests
import re
#下載網頁
def get_html_text(url):
try:
res = requests.get(url,timeout=30)
res.raise_for_status()
res.encoding = res.apparent_encoding
returnres.text
except:
return""
#解析網頁並保存數據
def parse_page(html):
try:
plt = re.findall(r""view_price":"[d.]*"", html)
tlt = re.findall(r""raw_title":".*?"", html)
loc = re.findall(r""item_loc":".*?"", html)
sale = re.findall(r""view_sales":".*?"", html)
#print(plt)
fori in range(len(plt)):
price =eval(plt[i].split(":")[1])
title =eval(tlt[i].split(":")[1])
location =eval(loc[i].split(":")[1])
location = location.split(" ")[]
sales =eval(sale[i].split(":")[1])
sales = re.match(r"d+",sales).group()
print(price)
withopen("月餅數據.txt","a",encoding="utf-8") as f:
print(f)
f.write(title+","+price+","+sales+","+location+"
")
except:
print("")
def main():
goods="月餅"
depth=100
start_url ="https://s.taobao.com/search?q="+ goods
fori in range(depth):
try:
url = start_url +"&s="+ str(44* i)
print("url=",url)
html = get_html_text(url)
parse_page(html)
except:
continue
main()
知識點:Response對象的屬性
r.status_code HTTP請求的返回狀態,200表示連接成功,404表示失敗 ;
r.text HTTP響應內容的字元串形式,即url對應的頁面內容;
r.encoding 從HTTP header中猜測的響應內容編碼方式;
r.apparent_encoding 從內容中分析出的響應內容編碼方式(備選編碼方式)。
數據清洗預覽
由上圖可以看出,全網月餅的均價在90元左右,最貴月餅價高達9999元,最高銷量為355444(數據為當前爬取數據為準)。
數據分析可視化
廣式月餅風采依舊,蛋黃、蓮蓉口味深受最愛。
結論:
廣式月餅、禮盒裝佔比很高;從口味上來看,蛋黃口味佔比很高,比蓮蓉,五仁都高,其他口味豆沙、水果、火腿等次之;從品牌商家來看,北京稻香村、廣東華美排名靠前;從禮盒裝、企業、員工、團購、批發來看,淘寶網也是企業採購月餅送員工的渠道之一。
詳情代碼如下:
importpandasaspd
importnumpyasnp
importmatplotlib.pyplotasplt
importmatplotlib
frompyechartsimportGeo,Style,Line,Bar,Overlap
fromwordcloudimportWordCloud, ImageColorGenerator
fromosimportpath
frompylabimportmpl
importjieba
f = open(r"C:UsersAdministratorDesktop月餅數據.txt",encoding="utf-8")
df = pd.read_csv(f,sep=",",names=["title","price","sales","location"])
title = df.title.values.tolist()
#對每個標題進行分詞
title_s = []
forlineintitle:
title_cut = jieba.lcut(line)
title_s.append(title_cut)
title_clean = []
#停用詞表
stopwords = ["月餅","禮品","口味","禮盒","包郵","【","】","送禮","大",
"中秋節","中秋月餅","2","餅","蓉","多","個","味","斤","送"," ","老",
"北京","雲南","網紅老"]
#剔除停用詞表
forlineintitle_s:
line_clean = []
forwordinline:
ifwordnotinstopwords:
line_clean.append(word)
title_clean.append(line_clean)
title_clean_dist = []
#進行去重
forlineintitle_clean:
line_dist = []
forwordinline:
ifwordnotinline_dist:
line_dist.append(word)
title_clean_dist.append(line_dist)
allwords_clean_dist = []
forlineintitle_clean_dist:
forwordinline:
allwords_clean_dist.append(word)
df_allwords_clean_dist = pd.DataFrame({"allwords":allwords_clean_dist})
#對過濾_去重詞語進行匯總統計
word_count = df_allwords_clean_dist.allwords.value_counts().reset_index()
word_count.columns = ["word","count"]
backgroud_Image = plt.imread("1.jpg")
wc = WordCloud(width=1024,height=768,background_color="white",
mask=backgroud_Image,font_path="C:simhei.ttf",max_font_size=400,
random_state=50)
wc = wc.fit_words()
plt.imshow(wc,interpolation="bilinear")
plt.axis("off")
plt.show()
d = path.dirname(__file__)
wc.to_file(path.join(d,"yuebing.png"))
知識點:
font_path : string //字體路徑,需要展現什麼字體就把該字體路徑+後綴名寫上,如:font_path = "黑體.ttf";
mask : nd-array or None (default=None) //如果參數為空,則使用二維遮罩繪製詞雲。如果 mask 非空,設置的寬高值將被忽略,遮罩形狀被 mask 取代。除全白(#FFFFFF)的部分將不會繪製,其餘部分會用於繪製詞雲。如:bg_pic = imread("讀取一張圖片.png"),背景圖片的畫布一定要設置為白色(#FFFFFF),然後顯示的形狀為不是白色的其他顏色。可以用ps工具將自己要顯示的形狀複製到一個純白色的畫布上再保存,就ok了;
stopwords : set of strings or None //設置需要屏蔽的詞,如果為空,則使用內置的STOPWORDS ;
background_color : color value (default=」black」) //背景顏色,如background_color="white",背景顏色為白色;
max_font_size : int or None (default=None) //顯示的最大的字體大小 ;
fit_words(frequencies) //根據詞頻生成詞雲(frequencies,為字典類型)。
不同關鍵詞word對應的sales之和的統計分析
(說明:例如 詞語 『廣式』,則統計商品標題中含有『廣式』一詞的商品的銷量之和,即求出具有『廣式』風格的商品銷量之和)
由上圖可以看出:禮盒裝、廣式、蛋黃、蓮蓉、五仁、稻香村、華美等關鍵詞靠前,也再次驗證了廣式月餅堪稱月餅之王,實際付款人高達近700萬,廣式月餅可謂是風采依舊。
雖然廣式月餅起源於廣州,但憑藉其鬆軟的餅皮和多元豐富的餡料,實際已經在全國各地流行開來,成為名副其實的「月餅之王」。
詳情代碼如下:
w_s_sum = []
for w in word_count.word:
i = 0
s_list = []
for t in title_clean_dist:
if w in t:
s_list.append(df.sales[i])
i+= 1
w_s_sum.append(sum(s_list))
df_w_s_sum = pd.DataFrame({"w_s_sum":w_s_sum})
df_word_sum = pd.concat([word_count,df_w_s_sum],axis=1,ignore_index=True)
df_word_sum.columns = ["word","count","w_s_sum"]
df_word_sum.sort_values("w_s_sum",inplace=True,ascending=True)
df_w_s = df_word_sum.tail(30)
attr = df_w_s["word"]
v1 = df_w_s["w_s_sum"]
bar = Bar("月餅關鍵詞銷量分布圖")
bar.add("關鍵詞",attr,v1,is_stack=True,xaxis_rotate=30,yaxix_min=4.2,
xaxis_interval=0,is_splitline_show=False)
overlap = Overlap()
overlap.add(bar)
overlap.render("月餅關鍵詞_銷量分布圖.html")
多數商品銷量為3000以下,佔比高達90%
由上圖看出,銷售量在10萬以上的寥寥無幾,共8種,其中銷售量30萬以上就有6款。當今網紅經濟下,爆品為王,一款獨大;正所謂網紅就是營銷,爆品就是產品,有了好的產品再經過營銷的運作就能產生十倍的放大效益, 如果沒有好的產品,光有營銷企業也難以長久。要利用網紅經濟來打造爆款,選擇爆款一定要有自己的特色,在銷售的過程中,客戶的評價對產品的搜索排序和客戶下單轉化起著至關重要的作用;
消費降級?均價在10-100元佔比50%
商品數量隨著價格總體呈現下降階梯形勢,價格越高,在售的商品越少;低價位商品居多,價格在10-100之間的商品最多,100-200之間的次之,價格8000以上的商品較少。
詳情代碼如下:
後記
由上圖可看出,全網Top15中,廣式口味佔80%,全國各地都在賣廣式月餅。月餅種類那麼多,為何偏偏是廣式月餅橫行中國?廣式月餅外層是糖漿皮,以小麥粉、糖漿、植物油、鹼水等原料製作烘烤而成,這並非中國傳統的糕餅技藝,這與廣式月餅的起源有關。
廣東流行中秋月餅比中國其他地區的時間更晚,要遲到晚清時期。在此之前,廣州沙面地區已因鴉片戰爭變為英、法租界,各類西餅店紛紛踏上廣州地界。以糖漿皮包裹烘烤而成的廣式月餅,其實是學習西式糕點作法的產物。
廣式月餅能一統天下,最重要的一條是廣式月餅的原料,這個原料就是蓮蓉。早在1889年,當時廣州城西的一家叫「蓮香樓」的糕酥店,將蓮子熬成蓮蓉作餡料,做成的酥餅清香可口,大受歡迎。後來,蓮香樓的生產者將這種蓮蓉餡料的餅點定型為月餅,逐漸形成後來的廣式月餅。
今年你吃到哪些好吃的月餅了嗎?在評論區留言吧!
本文為作者投稿,版權歸作者所有。內容觀點不代表CSDN立場。
※用機器學習預測誰將奪得世界盃冠軍?附完整代碼!
※被罰 50 億美元,Android 究竟招誰惹誰了?
TAG:CSDN |