
【導語】:今天我們來聊聊粽子,Python分析部分請看第三部分。
又到一年端午節,作為中華民族的傳統節日,傳說粽子是為祭奠投江的屈原而傳承下來的,如今吃粽子也成了端午的主要習俗之一。除了商場出售的琳瑯滿目的粽子,各家各戶的媽媽和奶奶們也紛紛浸糯米、洗粽葉、包粽子。
粽子的包法和形狀也很有講究,除了常見的三角粽、四角粽,還長粽、塔型粽和牛角粽等等。
說到粽子的口味就更多了。粽子幾乎每年都會引發咸甜之爭,有句話說的是——吃貨不分南北,口味必分甜咸。
北方人吃粽子偏愛甜口,多以紅棗、豆沙做餡,少數也采用果脯為餡,蘸白糖或紅糖食用;
而南方青睞咸口,口味有咸肉粽、咸蛋黃粽、板栗肉粽、臘肉香腸粽、火腿粽、蝦仁粽等等。
那么哪家的粽子買得最好?大家都普遍喜歡什么口味?今天我們就用數據來盤一盤端午的粽子。
本文要點:
粽子甜咸之爭,自己包粽子選什么料?
吃貨的力量,全網粽子誰家賣的最好?
01粽子“甜咸之爭”
自己包粽子選什么料?
自己家包的粽子,永遠是最好吃的,相比起來外面賣的粽子都不香了。對廚藝有自信的小伙伴們大可以自己試著包包看。
那么自己包粽子,選甜口還是咸口?餡料配紅豆還是五花肉?
首先我們獲取了,美食天下網站關于粽子的菜譜,共460條??纯茨男┎俗V最受歡迎吧。
1甜粽還是咸粽?
在甜咸之爭中,這次甜粽勝出了。
有33.04%的菜譜都是甜粽,其次22.17%才是咸粽。同時也有許多小伙伴選擇最簡單的純糯米粽,原味,這部分占比17.83%。
2食材選什么
食材方面我們看到:
無論如何糯米和粽葉都是必不可少的。
然后在咸粽方面,五花肉很多人的首選,其次咸蛋黃、香菇、排骨、臘腸等都是常見的選擇;在甜粽方面呢,紅豆蜜棗是很多人的首選。其次綠豆、豆沙、花生米、西米等也不錯。
3調料放什么
調料方面可以看到:
糖和醬油是少不了的。還花生油、蠔油等選擇。除了這些常規操作,也還有選擇抹茶粉這種創新的做法。
02吃貨的力量
全網粽子誰家賣的最好?
出于自己不會包粽子、圖方便、過節送人等考慮,直接在網上買粽子的人也不少。那么哪些店鋪的粽子最受大眾歡迎呢?我們分析獲取了淘寶售賣粽子商品數據,共4403條。
粽子店鋪銷量TOP10
1首先在店鋪方面:
五芳齋是妥妥的霸主,粽子銷量位居第一。其次真真老老位居第二。
2粽子店鋪地區排行TOP10
這些店鋪都來自哪里?誰是真正的粽子大省呢?
經過分析發現,浙江一騎絕塵,粽子店鋪數量遠遠領先其他省份。浙江的粽子店鋪占到全網的67.71%。毫無爭議的大佬。
其次廣東、上海、北京分部位于第二、三、四名。
3 粽子都賣多少錢?
粽子都賣多少錢也是消費者們最關系的了,淘寶店鋪買的粽子一般一份有10個左右。分析發現,價格在一份50元以內的還是占到絕多數,全網有55.22%的粽子都在50元內。其次是50-100元的,占比24.81%。
4不同價格粽子銷量
那么銷售額方面又如何呢,什么價格的粽子賣的最好?
可以看到50-100元的粽子銷售額最高,占比53.61%。其次是50元以內的,占比22.06%。畢竟從送禮品的角度,還是要一定價格考量的,太平價的不行,需要一定的檔次。
5粽子標題詞云
最后,我們再看到粽子的商品標題:
整理發現,除了"粽子"、"端午"等關鍵詞,"嘉興"被提到的最多??磥砑闻d的粽子是真的很有名呀。
粽子餡料方面,"蛋黃"、"鮮肉"、"豆沙"都是非常熱門的。同時"禮盒包裝"、"送禮"、"五芳齋"等也被多次提到。
03用Python教你
爬取淘寶粽子數據
我們使用Python獲取了淘寶網粽子商品銷售數據和美食天下菜譜數據,進行了一下數據分析。此處展示淘寶商品分析部分代碼。按照數據讀入-數據處理和數據可視化流程,首先導入我們使用的Python庫,其中pandas用于數據處理,jieba用于分詞,pyecharts用于可視化。
# 導入包 import pandas as pd import time import jieba from pyecharts.charts import Bar, Line, Pie, Map, Page from pyecharts import options as opts from pyecharts.globals import SymbolType, WarningType WarningType.ShowWarning = False
1數據導入
# 讀入數據
df_tb = pd.read_excel('../data/淘寶商城粽子數據6.23.xlsx')
df_tb.head()
查看一下數據集大小,可以看到一共有4403條數據。
df_tb.info()
RangeIndex: 4403 entries, 0 to 4402
Data columns (total 5 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 goods_name 4403 non-null object
1 shop_name 4403 non-null object
2 price 4403 non-null float64
3 purchase_num 4403 non-null object
4 location 4403 non-null object
dtypes: float64(1), object(4)
memory usage: 172.1+ KB
2數據預處理
我們對數據集進行以下處理,以便我們后續的可視化分析工作,經過處理之后的數據共4192條。
去除重復值
goods_name:暫不處理
shop_name:暫不處理
price:暫不處理
purchase_num:提取人數,注意單位萬的處理
計算銷售額 = price * purchase_num
location:提取省份
# 去除重復值 df_tb.drop_duplicates(inplace=True) # 刪除購買人數為空的記錄 df_tb = df_tb[df_tb['purchase_num'].str.contains('人付款')] # 重置索引 df_tb = df_tb.reset_index(drop=True) # 提取數值 df_tb['num'] = df_tb['purchase_num'].str.extract('(\d+)').astype('int') # 提取單位 df_tb['unit'] = df_tb.purchase_num.str.extract(r'(萬)') df_tb['unit'] = df_tb.unit.replace('萬', 10000).replace(np.nan, 1) # 重新計算銷量 df_tb['true_purchase'] = df_tb['num'] * df_tb['unit'] # 刪除列 df_tb = df_tb.drop(['purchase_num', 'num', 'unit'], axis=1) # 計算銷售額 df_tb['sales_volume'] = df_tb['price'] * df_tb['true_purchase'] # 提取省份 df_tb['province'] = df_tb['location'].str.split(' ').str[0] df_tb.head()
數據可視化部分主要對以下的數據進行匯總分析,分析維度如下:
粽子店鋪商品銷量排行
各省份粽子店鋪數量排行
各省份粽子銷量分布
粽子都賣多少錢?
不同價格區間的銷售額分布?
粽子的食材
商品標題詞云圖
粽子店鋪商品銷量排行Top10
shop_top10 = df_tb.groupby('shop_name')['true_purchase'].sum().sort_values(ascending=False).head(10) # 條形圖 bar1 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px')) bar1.add_xaxis(shop_top10.index.tolist()) bar1.add_yaxis('', shop_top10.values.tolist()) bar1.set_global_opts(title_opts=opts.TitleOpts(title='粽子店鋪商品銷量排行Top10'), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)), visualmap_opts=opts.VisualMapOpts(max_=1350657.0) ) bar1.render()
各省份粽子店鋪數量排行Top10
province_top10 = df_tb.province.value_counts()[:10] # 條形圖 bar2 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px')) bar2.add_xaxis(province_top10.index.tolist()) bar2.add_yaxis('', province_top10.values.tolist()) bar2.set_global_opts(title_opts=opts.TitleOpts(title='各省份粽子店鋪數量排行Top10'), visualmap_opts=opts.VisualMapOpts(max_=1000) ) bar2.render()
浙江vs其他省份店鋪粽子銷量對比
names = ['浙江', '其他省份'] numbers = [3378601.0. 1611409.0] data_pair = [list(z) for z in zip(names, numbers)] # 繪制餅圖 pie1 = Pie(init_opts=opts.InitOpts(width='1350px', height='750px')) pie1.add('', data_pair, radius=['35%', '60%']) pie1.set_global_opts(title_opts=opts.TitleOpts(title='浙江vs其他省份店鋪粽子銷量對比'), legend_opts=opts.LegendOpts(orient='vertical', pos_top='15%', pos_left='2%')) pie1.set_series_opts(label_opts=opts.LabelOpts(formatter=":{d}%")) pie1.set_colors(['#EF9050', '#3B7BA9']) pie1.render()
全國店鋪粽子銷量分布
province_num = df_tb.groupby('province')['true_purchase'].sum().sort_values(ascending=False) # 地圖 map1 = Map(init_opts=opts.InitOpts(width='1350px', height='750px')) map1.add("", [list(z) for z in zip(province_num.index.tolist(), province_num.values.tolist())], maptype='china' ) map1.set_global_opts(title_opts=opts.TitleOpts(title='全國店鋪粽子銷量分布'), visualmap_opts=opts.VisualMapOpts(max_=300000), ) map1.render()
粽子都賣多少錢?
# 分箱 bins = [0.50.100.150.200.500.1000.9999] labels = ['0-50元', '50-100元', '100-150元', '150-200元', '200-500元', '500-1000元', '1000-9999元'] df_tb['price_cut'] = pd.cut(df_tb.price, bins=bins, labels=labels, include_lowest=True) price_num = df_tb['price_cut'].value_counts() # 數據對 data_pair2 = [list(z) for z in zip(price_num.index.tolist(), price_num.values.tolist())] # 繪制餅圖 pie2 = Pie(init_opts=opts.InitOpts(width='1350px', height='750px')) pie2.add('', data_pair2. radius=['35%', '60%'], rosetype='radius') pie2.set_global_opts(title_opts=opts.TitleOpts(title='粽子都賣多少錢?'), legend_opts=opts.LegendOpts(orient='vertical', pos_top='15%', pos_left='2%')) pie2.set_series_opts(label_opts=opts.LabelOpts(formatter=":{d}%")) pie2.set_colors(['#EF9050', '#3B7BA9', '#6FB27C', '#FFAF34', '#D8BFD8', '#00BFFF']) pie2.render()
不同價格區間的銷售額
# 添加列 cut_purchase = round(df_tb.groupby('price_cut')['sales_volume'].sum()) # 數據對 data_pair = [list(z) for z in zip(cut_purchase.index.tolist(), cut_purchase.values.tolist())] # 繪制餅圖 pie3 = Pie(init_opts=opts.InitOpts(width='1350px', height='750px')) pie3.add('', data_pair, radius=['35%', '60%']) pie3.set_global_opts(title_opts=opts.TitleOpts(title='不同價格區間的銷售額表現'), legend_opts=opts.LegendOpts(orient='vertical', pos_top='15%', pos_left='2%')) pie3.set_series_opts(label_opts=opts.LabelOpts(formatter=":{d}%")) pie3.set_colors(['#EF9050', '#3B7BA9', '#6FB27C', '#FFAF34', '#D8BFD8', '#00BFFF', '#7FFFAA']) pie3.render()
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25