
【導(dǎo)語】:今天我們來聊聊粽子,Python分析部分請看第三部分。
又到一年端午節(jié),作為中華民族的傳統(tǒng)節(jié)日,傳說粽子是為祭奠投江的屈原而傳承下來的,如今吃粽子也成了端午的主要習(xí)俗之一。除了商場出售的琳瑯滿目的粽子,各家各戶的媽媽和奶奶們也紛紛浸糯米、洗粽葉、包粽子。
粽子的包法和形狀也很有講究,除了常見的三角粽、四角粽,還長粽、塔型粽和牛角粽等等。
說到粽子的口味就更多了。粽子幾乎每年都會引發(fā)咸甜之爭,有句話說的是——吃貨不分南北,口味必分甜咸。
北方人吃粽子偏愛甜口,多以紅棗、豆沙做餡,少數(shù)也采用果脯為餡,蘸白糖或紅糖食用;
而南方青睞咸口,口味有咸肉粽、咸蛋黃粽、板栗肉粽、臘肉香腸粽、火腿粽、蝦仁粽等等。
那么哪家的粽子買得最好?大家都普遍喜歡什么口味?今天我們就用數(shù)據(jù)來盤一盤端午的粽子。
本文要點:
粽子甜咸之爭,自己包粽子選什么料?
吃貨的力量,全網(wǎng)粽子誰家賣的最好?
01粽子“甜咸之爭”
自己包粽子選什么料?
自己家包的粽子,永遠是最好吃的,相比起來外面賣的粽子都不香了。對廚藝有自信的小伙伴們大可以自己試著包包看。
那么自己包粽子,選甜口還是咸口?餡料配紅豆還是五花肉?
首先我們獲取了,美食天下網(wǎng)站關(guān)于粽子的菜譜,共460條??纯茨男┎俗V最受歡迎吧。
1甜粽還是咸粽?
在甜咸之爭中,這次甜粽勝出了。
有33.04%的菜譜都是甜粽,其次22.17%才是咸粽。同時也有許多小伙伴選擇最簡單的純糯米粽,原味,這部分占比17.83%。
2食材選什么
食材方面我們看到:
無論如何糯米和粽葉都是必不可少的。
然后在咸粽方面,五花肉很多人的首選,其次咸蛋黃、香菇、排骨、臘腸等都是常見的選擇;在甜粽方面呢,紅豆蜜棗是很多人的首選。其次綠豆、豆沙、花生米、西米等也不錯。
3調(diào)料放什么
調(diào)料方面可以看到:
糖和醬油是少不了的。還花生油、蠔油等選擇。除了這些常規(guī)操作,也還有選擇抹茶粉這種創(chuàng)新的做法。
02吃貨的力量
全網(wǎng)粽子誰家賣的最好?
出于自己不會包粽子、圖方便、過節(jié)送人等考慮,直接在網(wǎng)上買粽子的人也不少。那么哪些店鋪的粽子最受大眾歡迎呢?我們分析獲取了淘寶售賣粽子商品數(shù)據(jù),共4403條。
粽子店鋪銷量TOP10
1首先在店鋪方面:
五芳齋是妥妥的霸主,粽子銷量位居第一。其次真真老老位居第二。
2粽子店鋪地區(qū)排行TOP10
這些店鋪都來自哪里?誰是真正的粽子大省呢?
經(jīng)過分析發(fā)現(xiàn),浙江一騎絕塵,粽子店鋪數(shù)量遠遠領(lǐng)先其他省份。浙江的粽子店鋪占到全網(wǎng)的67.71%。毫無爭議的大佬。
其次廣東、上海、北京分部位于第二、三、四名。
3 粽子都賣多少錢?
粽子都賣多少錢也是消費者們最關(guān)系的了,淘寶店鋪買的粽子一般一份有10個左右。分析發(fā)現(xiàn),價格在一份50元以內(nèi)的還是占到絕多數(shù),全網(wǎng)有55.22%的粽子都在50元內(nèi)。其次是50-100元的,占比24.81%。
4不同價格粽子銷量
那么銷售額方面又如何呢,什么價格的粽子賣的最好?
可以看到50-100元的粽子銷售額最高,占比53.61%。其次是50元以內(nèi)的,占比22.06%。畢竟從送禮品的角度,還是要一定價格考量的,太平價的不行,需要一定的檔次。
5粽子標題詞云
最后,我們再看到粽子的商品標題:
整理發(fā)現(xiàn),除了"粽子"、"端午"等關(guān)鍵詞,"嘉興"被提到的最多??磥砑闻d的粽子是真的很有名呀。
粽子餡料方面,"蛋黃"、"鮮肉"、"豆沙"都是非常熱門的。同時"禮盒包裝"、"送禮"、"五芳齋"等也被多次提到。
03用Python教你
爬取淘寶粽子數(shù)據(jù)
我們使用Python獲取了淘寶網(wǎng)粽子商品銷售數(shù)據(jù)和美食天下菜譜數(shù)據(jù),進行了一下數(shù)據(jù)分析。此處展示淘寶商品分析部分代碼。按照數(shù)據(jù)讀入-數(shù)據(jù)處理和數(shù)據(jù)可視化流程,首先導(dǎo)入我們使用的Python庫,其中pandas用于數(shù)據(jù)處理,jieba用于分詞,pyecharts用于可視化。
# 導(dǎo)入包 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數(shù)據(jù)導(dǎo)入
# 讀入數(shù)據(jù)
df_tb = pd.read_excel('../data/淘寶商城粽子數(shù)據(jù)6.23.xlsx')
df_tb.head()
查看一下數(shù)據(jù)集大小,可以看到一共有4403條數(shù)據(jù)。
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數(shù)據(jù)預(yù)處理
我們對數(shù)據(jù)集進行以下處理,以便我們后續(xù)的可視化分析工作,經(jīng)過處理之后的數(shù)據(jù)共4192條。
去除重復(fù)值
goods_name:暫不處理
shop_name:暫不處理
price:暫不處理
purchase_num:提取人數(shù),注意單位萬的處理
計算銷售額 = price * purchase_num
location:提取省份
# 去除重復(fù)值 df_tb.drop_duplicates(inplace=True) # 刪除購買人數(shù)為空的記錄 df_tb = df_tb[df_tb['purchase_num'].str.contains('人付款')] # 重置索引 df_tb = df_tb.reset_index(drop=True) # 提取數(shù)值 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()
數(shù)據(jù)可視化部分主要對以下的數(shù)據(jù)進行匯總分析,分析維度如下:
粽子店鋪商品銷量排行
各省份粽子店鋪數(shù)量排行
各省份粽子銷量分布
粽子都賣多少錢?
不同價格區(qū)間的銷售額分布?
粽子的食材
商品標題詞云圖
粽子店鋪商品銷量排行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()
各省份粽子店鋪數(shù)量排行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='各省份粽子店鋪數(shù)量排行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=":geybsqlxm7mc%")) 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() # 數(shù)據(jù)對 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=":geybsqlxm7mc%")) pie2.set_colors(['#EF9050', '#3B7BA9', '#6FB27C', '#FFAF34', '#D8BFD8', '#00BFFF']) pie2.render()
不同價格區(qū)間的銷售額
# 添加列 cut_purchase = round(df_tb.groupby('price_cut')['sales_volume'].sum()) # 數(shù)據(jù)對 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='不同價格區(qū)間的銷售額表現(xiàn)'), legend_opts=opts.LegendOpts(orient='vertical', pos_top='15%', pos_left='2%')) pie3.set_series_opts(label_opts=opts.LabelOpts(formatter=":geybsqlxm7mc%")) pie3.set_colors(['#EF9050', '#3B7BA9', '#6FB27C', '#FFAF34', '#D8BFD8', '#00BFFF', '#7FFFAA']) pie3.render()
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計學(xué)領(lǐng)域,假設(shè)檢驗是驗證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學(xué)計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學(xué)計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務(wù)價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導(dǎo)向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10