熱線電話:13121318867

登錄
首頁大數據時代Python告訴你:粽子甜咸之爭誰勝出?吃貨最愛買誰家的粽子?
Python告訴你:粽子甜咸之爭誰勝出?吃貨最愛買誰家的粽子?
2020-06-28
收藏

【導語】:今天我們來聊聊粽子,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()


3數據可視化

數據可視化部分主要對以下的數據進行匯總分析,分析維度如下:

粽子店鋪商品銷量排行

各省份粽子店鋪數量排行

各省份粽子銷量分布

粽子都賣多少錢?

不同價格區間的銷售額分布?

粽子的食材

商品標題詞云圖

粽子店鋪商品銷量排行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

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢