
CDA數(shù)據(jù)分析師 出品
【導(dǎo)語】:今天我們來聊聊粽子,Python分析部分請看第三部分。
又到一年端午節(jié),作為中華民族的傳統(tǒng)節(jié)日,傳說粽子是為祭奠投江的屈原而傳承下來的,如今吃粽子也成了端午的主要習(xí)俗之一。除了商場出售的琳瑯滿目的粽子,各家各戶的媽媽和奶奶們也紛紛浸糯米、洗粽葉、包粽子。
粽子的包法和形狀也很有講究,除了常見的三角粽、四角粽,還長粽、塔型粽和牛角粽等等。
說到粽子的口味就更多了。粽子幾乎每年都會引發(fā)咸甜之爭,有句話說的是——吃貨不分南北,口味必分甜咸。
北方人吃粽子偏愛甜口,多以紅棗、豆沙做餡,少數(shù)也采用果脯為餡,蘸白糖或紅糖食用;
而南方青睞咸口,口味有咸肉粽、咸蛋黃粽、板栗肉粽、臘肉香腸粽、火腿粽、蝦仁粽等等。
那么哪家的粽子買得最好?大家都普遍喜歡什么口味?今天我們就用數(shù)據(jù)來盤一盤端午的粽子。
本文要點(diǎn):
自己包粽子選什么料?
自己家包的粽子,永遠(yuǎn)是最好吃的,相比起來外面賣的粽子都不香了。對廚藝有自信的小伙伴們大可以自己試著包包看。
那么自己包粽子,選甜口還是咸口?餡料配紅豆還是五花肉?
首先我們獲取了,美食天下網(wǎng)站關(guān)于粽子的菜譜,共460條。看看哪些菜譜最受歡迎吧。
1、吃甜粽還是咸粽?
在甜咸之爭中,這次甜粽勝出了。
有33.04%的菜譜都是甜粽,其次22.17%才是咸粽。同時(shí)也有許多小伙伴選擇最簡單的純糯米粽,原味,這部分占比17.83%。
2、粽子里包了什么?
食材方面我們看到:
無論如何糯米和粽葉都是必不可少的。
然后在咸粽方面,五花肉很多人的首選,其次咸蛋黃、香菇、排骨、臘腸等都是常見的選擇;在甜粽方面呢,紅豆蜜棗是很多人的首選。其次綠豆、豆沙、花生米、西米等也不錯(cuò)。
3、調(diào)料放什么?
調(diào)料方面可以看到:
糖和醬油是少不了的。還花生油、蠔油等選擇。除了這些常規(guī)操作,也還有選擇抹茶粉這種創(chuàng)新的做法。
全網(wǎng)粽子誰家賣的最好?
出于自己不會包粽子、圖方便、過節(jié)送人等考慮,直接在網(wǎng)上買粽子的人也不少。那么哪些店鋪的粽子最受大眾歡迎呢?我們分析獲取了淘寶售賣粽子商品數(shù)據(jù),共4403條。
1、全網(wǎng)誰家的粽子賣得最好?
首先在店鋪方面:
五芳齋是妥妥的霸主,粽子銷量位居第一。其次真真老老位居第二。
2、哪個(gè)省份是粽子大省?
這些店鋪都來自哪里?誰是真正的粽子大省呢?
經(jīng)過分析發(fā)現(xiàn),浙江一騎絕塵,粽子店鋪數(shù)量遠(yuǎn)遠(yuǎn)領(lǐng)先其他省份。浙江的粽子店鋪占到全網(wǎng)的67.71%。毫無爭議的大佬。
其次廣東、上海、北京分部位于第二、三、四名。
3、粽子都賣多少錢
粽子都賣多少錢也是消費(fèi)者們最關(guān)系的了,淘寶店鋪買的粽子一般一份有10個(gè)左右。分析發(fā)現(xiàn),價(jià)格在一份50元以內(nèi)的還是占到絕多數(shù),全網(wǎng)有55.22%的粽子都在50元內(nèi)。其次是50-100元的,占比24.81%。
4、不同價(jià)格粽子的銷量
那么銷售額方面又如何呢,什么價(jià)格的粽子賣的最好?
可以看到50-100元的粽子銷售額最高,占比53.61%。其次是50元以內(nèi)的,占比22.06%。畢竟從送禮品的角度,還是要一定價(jià)格考量的,太平價(jià)的不行,需要一定的檔次。
5、粽子商品標(biāo)題里都在說些什么?
最后,我們再看到粽子的商品標(biāo)題:
整理發(fā)現(xiàn),除了"粽子"、"端午"等關(guān)鍵詞,"嘉興"被提到的最多??磥砑闻d的粽子是真的很有名呀。
粽子餡料方面,"蛋黃"、"鮮肉"、"豆沙"都是非常熱門的。同時(shí)"禮盒包裝"、"送禮"、"五芳齋"等也被多次提到。
爬取淘寶粽子數(shù)據(jù)
我們使用Python獲取了淘寶網(wǎng)粽子商品銷售數(shù)據(jù)和美食天下菜譜數(shù)據(jù),進(jìn)行了一下數(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()
<class 'pandas.core.frame.DataFrame'>
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
我們對數(shù)據(jù)集進(jìn)行以下處理,以便我們后續(xù)的可視化分析工作,經(jīng)過處理之后的數(shù)據(jù)共4192條。
# 去除重復(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)
# 重新計(jì)算銷量
df_tb['true_purchase'] = df_tb['num'] * df_tb['unit']
# 刪除列
df_tb = df_tb.drop(['purchase_num', 'num', 'unit'], axis=1)
# 計(jì)算銷售額
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ù)進(jìn)行匯總分析,分析維度如下:
粽子店鋪商品銷量排行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()
不同價(jià)格區(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='不同價(jià)格區(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
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03