99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時(shí)代火遍全網(wǎng)的自熱火鍋哪款最好吃?我們用python告訴你!
火遍全網(wǎng)的自熱火鍋哪款最好吃?我們用python告訴你!
2020-07-29
收藏

 

 CDA數(shù)據(jù)分析師 出品  

作者:Mika

數(shù)據(jù):真達(dá)  

后期:澤龍

【導(dǎo)讀】

隨著自熱食品越來越備受消費(fèi)者的追捧,各種自熱小火鍋、自熱米飯也成了妥妥的網(wǎng)紅食品。我們今天就來聊一聊自熱食品。

python技術(shù)部分請(qǐng)直接看第三部分。

Show me data,用數(shù)據(jù)說話

今天我們聊一聊 自熱食品

疫情期間,在宅在家里的日子,主打一人食概念的自熱食品備受關(guān)注。自熱火鍋、自熱米飯、即食酸辣粉、即食螺螄粉等方便食品的銷量迎來大幅度增長(zhǎng)。光是今年春節(jié),自熱火鍋的銷售暴漲就驚起討論無數(shù)。

 

自熱火鍋,自熱米飯們就這么成為了新的網(wǎng)紅食品,持續(xù)霸占著電商銷售量榜首,你吃過自熱火鍋嗎?哪款自熱食品賣得最好?今天我們就帶你用數(shù)據(jù)來解讀這些自熱食品。

01“萬物皆可自熱”

自熱食品就這么火了

 

隨著自熱食品越來越備受消費(fèi)者的追捧,各種自熱小火鍋、自熱米飯也成了妥妥的網(wǎng)紅食品。一時(shí)間,各種自熱食品品牌如雨后春筍涌出。自熱食品的市場(chǎng)規(guī)模也逐年擴(kuò)大,預(yù)計(jì)今年將達(dá)到40億元。

來源:《自熱食品網(wǎng)絡(luò)關(guān)注度分析報(bào)告》—微熱點(diǎn)大數(shù)據(jù)研究院

 

超市里曾經(jīng)被泡面牢牢占據(jù)的方便食品貨架,迅速被自熱火鍋、自熱米飯、自熱面搶走半壁江山。

 

目前自熱食品的入局企業(yè)不僅有傳統(tǒng)的火鍋巨頭,如海底撈、小龍坎;還有像三只松鼠、良品鋪?zhàn)拥攘闶硰S商;同時(shí)還有像自嗨鍋莫小仙等主打速食品類的新興品牌。

 

根據(jù)莫小仙的數(shù)據(jù),在疫情期間的整體銷量同比增長(zhǎng)近400%。而自嗨鍋3月份公布的數(shù)據(jù)顯示,其線上訂單量在疫情期間增長(zhǎng)了200%-300%。

 

其實(shí)像外賣、速凍、泡面和眼下潮頭上的各種自熱鍋,本質(zhì)都是“懶人經(jīng)濟(jì)”。同樣是方便食品,泡個(gè)面還得燒水,速凍食品還得開火加熱,而自熱鍋多方便,比起方便面自熱鍋在選擇上好歹有肉有菜有飯有面,選擇上略勝一籌。

 

02全網(wǎng)哪款自熱火鍋賣得最好?

 

我們使用Python獲取了淘寶網(wǎng)自熱食品相關(guān)的商品銷售數(shù)據(jù),共有4403條數(shù)據(jù)。

 

自熱食品品類月銷量

首先我們看看自熱食品都有哪些類別。我們可以看到,賣得最好的是各種自熱火鍋,以超過190多萬的月銷量一騎絕塵。排在第二位的是自熱米飯,銷售量超過64萬。排在后面的還有自熱方便面、自熱粉絲、自熱燒烤等等。

 

哪款自熱食品賣的最好?

那么都是哪些自熱食品賣得最好呢?下面看到產(chǎn)品月銷量排名top10。排在前三位的月銷量都超過了12萬,分別是椒吱自熱小火鍋、阿寬自熱米飯和辣味客重慶自熱小火鍋。

 

自熱食品店鋪銷量排行

都是哪些店鋪占據(jù)著自熱食品銷量的前列呢?

通過分析我們發(fā)現(xiàn),賣的做多的是天貓超市。那么具體的店鋪方面,前三位分別是莫小仙、自嗨鍋以及川蜀老味道。辣味客、白家陳記等店緊隨其后。

 

自熱食品標(biāo)題詞云

整理自熱食物的標(biāo)題后我們發(fā)現(xiàn):“即時(shí)”、“速食”、“自熱”、“懶人”等詞都常常出現(xiàn),果然是懶人經(jīng)濟(jì),就是講究個(gè)方便和快速,讓你撕開包裝,不需過多的操作就能吃上。類別上主要集中在“火鍋”、“米飯”、“麻辣燙”、“面類”等。

 

自熱食品店鋪地區(qū)分布

這些自熱食品的店鋪都分布在哪些地區(qū)呢?從銷量靠前的商品我們也可以猜到,這方面四川絕對(duì)是霸主,全網(wǎng)的自熱食品店鋪數(shù)量排名中,四川以1140家店鋪稱霸。

其次廣東和上海分別以1007和1002家店位居二三。

 

自熱食品都賣多少錢?

再看到自熱食品的價(jià)格,可以看到30元以下的超過了半數(shù),占比62.78%。這也是大眾普遍能接受的價(jià)格,價(jià)格再高的話還不如點(diǎn)份外賣了。

 

03教你用Python分析

全網(wǎng)自熱食品數(shù)據(jù)

 

我們使用Python獲取了淘寶網(wǎng)自熱食品相關(guān)的商品銷售數(shù)據(jù),進(jìn)行了以下數(shù)據(jù)分析。

1數(shù)據(jù)讀入

首先導(dǎo)入所需包:

# 導(dǎo)入包
import numpy as np 
import pandas as pd 
import time  
import jieba 
import os  

from pyecharts.charts import Bar, Line, Pie, Map, Page
from pyecharts import options as opts 
import stylecloud
from IPython.display import Image

使用循環(huán)讀入數(shù)據(jù)集,查看一下數(shù)據(jù)集大小,可以看到一共有4403條數(shù)據(jù)。

file_list = os.listdir('../data/') 

df_all = pd.DataFrame() 
# 循環(huán)讀入
for file in file_list:
    df_one = pd.read_excel(f'../data/{file}') 
    df_all = df_all.append(df_one, ignore_index=True) 
print(df_all.shape) 
(13984, 6)

預(yù)覽一下數(shù)據(jù)。

df_all.head() 

2數(shù)據(jù)預(yù)處理

我們對(duì)數(shù)據(jù)集進(jìn)行以下處理,以便我們后續(xù)的可視化分析工作,經(jīng)過處理之后的數(shù)據(jù)共8418條。

  1. 去除重復(fù)值
  2. goods_name:暫不處理
  3. shop_name:暫不處理
  4. price:暫不處理
  5. purchase_num:提取人數(shù),注意單位萬的處理
  6. 計(jì)算銷售額 = price * purchase_num
  7. location:提取省份
# 去除重復(fù)值
df_all.drop_duplicates(inplace=True)

# 刪除購買人數(shù)為空的記錄
df_all = df_all[df_all['purchase_num'].str.contains('人付款')]

# 重置索引
df_all = df_all.reset_index(drop=True)
df_all.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8418 entries, 0 to 8417
Data columns (total 6 columns):
 #   Column        Non-Null Count  Dtype  
---  ------        --------------  -----  
 0   category      8418 non-null   object 
 1   goods_name    8418 non-null   object 
 2   shop_name     8418 non-null   object 
 3   price         8418 non-null   float64
 4   purchase_num  8418 non-null   object 
 5   location      8418 non-null   object 
dtypes: float64(1), object(5)
memory usage: 394.7+ KB
# 提取數(shù)值
df_all['num'] = df_all['purchase_num'].str.extract('(\d+)').astype('int')
# 提取單位
df_all['unit'] = df_all.purchase_num.str.extract(r'(萬)') 
df_all['unit'] = df_all.unit.replace('萬', 10000).replace(np.nan, 1)
# 重新計(jì)算銷量
df_all['true_purchase'] = df_all['num'] * df_all['unit'] 
# 刪除列
df_all = df_all.drop(['purchase_num', 'num', 'unit'], axis=1)

# 計(jì)算銷售額
df_all['sales_volume'] = df_all['price'] * df_all['true_purchase']

# location
df_all['province'] = df_all['location'].str.split(' ').str[0]
df_all.head() 

3數(shù)據(jù)可視化

此部分部分主要對(duì)以下的維度數(shù)據(jù)進(jìn)行匯總和可視化分析,以下展示關(guān)鍵部分:

  1. 自熱食品細(xì)分品類月銷量表現(xiàn)
  2. 自熱食品各店鋪月銷量排行Top10
  3. 各省份自熱食品店鋪數(shù)量排行Top10
  4. 全國(guó)自熱食品店鋪月銷量分布
  5. 自熱食品都賣多少錢?
  6. 商品標(biāo)題詞云圖

 

3.1 自熱食品細(xì)分品類月銷量表現(xiàn)

cat_num = df_all.groupby('category')['true_purchase'].sum() 
cat_num = cat_num.sort_values(ascending=False) 

# 條形圖
bar1 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px')) 
bar1.add_xaxis(cat_num.index.tolist())
bar1.add_yaxis('', cat_num.values.tolist()) 
bar1.set_global_opts(title_opts=opts.TitleOpts(title='自熱食品細(xì)分品類月銷量表現(xiàn)'),
                     xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=0)),
                     visualmap_opts=opts.VisualMapOpts(max_=1960179.0) 
                    ) 
bar1.render() 

3.2 自熱食品各店鋪月銷量排行Top10

shop_top10 = df_all.groupby('shop_name')['true_purchase'].sum().sort_values(ascending=False).head(10)
shop_top10.sort_values(inplace=True)

# 條形圖
bar2 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px')) 
bar2.add_xaxis(shop_top10.index.tolist())
bar2.add_yaxis('', shop_top10.values.tolist()) 
bar2.set_global_opts(title_opts=opts.TitleOpts(title='自熱食品各店鋪月銷量排行Top10'),
                    ) 
bar2.set_series_opts(label_opts=opts.LabelOpts(position='right'))
bar2.set_colors(['#50A3BA'])
bar2.reversal_axis() 
bar2.render() 

3.3 各省份自熱食品店鋪數(shù)量排行Top10

province_top10 = df_all.province.value_counts()[:10]

# 條形圖
bar3 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px')) 
bar3.add_xaxis(province_top10.index.tolist())
bar3.add_yaxis('', province_top10.values.tolist()) 
bar3.set_global_opts(title_opts=opts.TitleOpts(title='各省份自熱食品店鋪數(shù)量排行Top10'),
                     visualmap_opts=opts.VisualMapOpts(max_=1140)
                    ) 
bar3.render() 

3.4 全國(guó)自熱食品店鋪月銷量分布

province_num = df_all.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='全國(guó)自熱食品店鋪月銷量分布'),
                     visualmap_opts=opts.VisualMapOpts(max_=500000),
                    )
map1.render() 

3.5 自熱食品都賣多少錢

# 分箱
bins = [0,30,50,100,150,200,500,1000,9999]  
labels = ['0-30元', '30~50元', '50-100元', '100-150元', '150-200元', '200-500元', '500-1000元', '1000-8800']

df_all['price_cut'] = pd.cut(df_all.price, bins=bins, labels=labels, include_lowest=True)  
price_num = df_all['price_cut'].value_counts() 

# 數(shù)據(jù)對(duì)
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%'])
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=":\ngeybsqlxm7mc%"))
pie2.set_colors(['#EF9050', '#3B7BA9', '#6FB27C', '#FFAF34', '#D8BFD8', '#00BFFF'])
pie2.render() 

結(jié)語:

最后在說道自熱食品,雖然說宅家時(shí),打開包裝稍等一會(huì)兒就能吃上熱騰騰的小火鍋或米飯,真的是太方便了。但是同時(shí),關(guān)于自熱食品安全隱患的消息也頻出,在食物的種類和口感上更是比不上自己做的或外面吃的新鮮食材了。對(duì)自熱食品你是怎么看的呢?歡迎留言告訴我們哦。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }