用資料分析搭配肯德基早餐

2021-10-07 13:51:26 字數 4124 閱讀 3944

今天看到乙個好玩的資料分析小case,通過對kfc的早餐爬取部分資料,並做簡單處理,檢視肯定早餐搭配

原資料集及初始****如下:

首先讀取資料

#資料匯入,探查資料缺失

data = pd.read_csv(r'd:\ml_data\kfca8585\kfc.csv')

data.head()

檢視資料 

0	1元安心大油條	產品實付滿49元(不含外送費),可1元換購安心大油條1根,每單限1份	1.0	

1 1元芝士雞肉帕尼尼 產品實付滿69元(不含外送費),可1元換購芝士雞肉帕尼尼1份,每單限1份 1.0

2 有雞腿全餐雙人餐 **包含:有雞腿中式/西式全餐(可選),共2份。

有雞腿中式全餐:紐奧良烤雞腿1份+... 0.0

3 有雞腿西式全餐(香草流心可頌) 紐奧良烤雞腿1塊+培根炒蛋1份+香脆薯餅1塊+大溪地香草奶香流心可頌2只+咖啡飲品1杯(可... 29.0

4 有雞腿西式全餐(香草流心可頌) 紐奧良烤雞腿1塊+太陽蛋+香脆薯餅1塊+大溪地香草奶香流心可頌2只+咖啡飲品1杯(可加價換... 29.0

檢視一下資料情況。單價有0元,有可能是**搭配,也有可能資料爬取出錯

data.describe()

price

count 90.000000

mean 13.872222

std 7.257914

min 0.000000

25% 9.000000

50% 13.500000

75% 17.000000

max 36.000000

對**進行處理,使用平均值進行填充

#**有0的資料,暫時用平均值進行填充

def f(p):

if p==0.0:

p=14

return p

else:

return p

data['price'] = data['price'].map(f)

利用結巴拼接食物和餐名,並把一些無關食物替換掉

#食物內容和餐名

names = list(data['name'])

foods = list(data['foods'])

names.extend(foods)

names = ' '.join(names)

#分詞ls = jieba.lcut(names)

txt = ' '.join(ls)

#空格替換與食物無關的詞語

txt = txt.replace('產品','').replace('包裝','').replace('包裝實物','')\

.replace('br','').replace('隨心換','').replace('實物','')\

.replace('主要','').replace('原料','').replace('指比菜','')\

.replace('單單','').replace('加價','').replace('換購','')\

.replace('總價','').replace('金額','').replace('為準','')\

.replace('早餐','').replace('飲品','')

檢視主食應用分布情況,並視覺化

hamburger = 

rice_ball =

porridge =

chicken =

x = ['漢堡','飯糰','粥','雞肉']

y1 = [250,200,50,255]

y2 = [10,11,1.5,15]

y3 = [20,21,8,10]

y4 = [10,6,2.5,21]

c = bar()

c.add_xaxis(x)

c.add_yaxis("熱量", y1, stack="stack1")

c.add_yaxis("脂肪", y2, stack="stack1")

c.add_yaxis("碳水化合物", y3, stack="stack1")

c.add_yaxis("蛋白質", y4, stack="stack1")

c.set_series_opts(label_opts=opts.labelopts(is_show=false))

c.set_global_opts(title_opts=opts.titleopts(title="主食營養分布"))

#c.render_notebook()

c.render_notebook()

小吃營養分布

youtiao = 

chayedan =

shubin =

danta =

from pyecharts import options as opts

from pyecharts.charts import bar

from pyecharts.commons.utils import jscode

from pyecharts.globals import themetype

list2 = [,,

,,

]list3 = [,,

,,

]list4 = [,,

,,

]list5 = [,,

,,

]c = bar(init_opts=opts.initopts(theme=themetype.light))

c.add_xaxis(['油條','茶葉蛋','薯餅','蛋撻'])

c.add_yaxis("熱量", list2, stack="stack1", category_gap="50%")

c.add_yaxis("脂肪", list3, stack="stack1", category_gap="50%")

c.add_yaxis("碳水化合物", list4, stack="stack1", category_gap="50%")

c.add_yaxis("蛋白質", list5, stack="stack1", category_gap="50%")

c.set_series_opts(

label_opts=opts.labelopts(

position="right",

formatter=jscode(

"function(x)"),)

)c.render_notebook()

飲料分析

doujiang = 

coffe =

from pyecharts import options as opts

from pyecharts.charts import pie

c = pie()

c.add(

"",[list(z) for z in zip(["熱量", "脂肪",'碳水化合物','蛋白質'],

[31,2,1.5, 3])],

center=["20%", "50%"],

radius=[60, 80],

)c.add(

"",[list(z) for z in zip(["熱量", "脂肪",'碳水化合物','蛋白質'],

[100,4,12, 4])],

center=["55%", "50%"],

radius=[60, 80],

)c.set_global_opts(

title_opts=opts.titleopts(title="豆漿(左)咖啡(右)"),

legend_opts=opts.legendopts(

type_="scroll", pos_top="200%", pos_left="80%", orient="vertical"),)

c.render_notebook()

從和鯨社群看到這個小case覺得很有意思,自己試了一下,遇到的主要問題是資料量小,不過肯德基早餐種類本身就不是很多。pyecharts畫圖很好看,但是有些包更新了,可能會有問題,需要找最新的包,比如bar()函式使用方法,有些方法廢棄了,使用的時候要多加注意。

資料分析 用RFM模型分析使用者

rfm模型 rfm模型根據客戶活躍程度和交易金額的貢獻,進行客戶價值細分的一種方法。r recency 最近一次交易時間間隔。基於最近一次交易日期計算的得分,距離當前日期越近,得分越高。如5分制。反映客戶交易活躍度。f frequency 客戶在最近一段時間內交易次數。基於交易頻率計算的得分,交易頻...

資料分析 資料分析概述

了解業務 了解資料 確認業務和資料 預期分析和管理 資料分析方式01.了解資料資料 1.測量標度型別 屬性本源並不是數字或者符號,通過測量標度將數值或者符號和物件的屬性建立關聯。屬性的型別 測量尺度 nominal 標稱 等於或者不等於 一對一的變換 ordinal 序數 大於或者小於 單調函式的變...

資料分析 資料分析的誤區

在資料分析的過程中,我們難免會走一些彎路,但有些彎路是可以避免的,下面我將介紹幾個資料分析過程中常見的誤區 我們一定都聽說過二戰中的乙個經典示例 軍方為了提高戰鬥機飛行員的生還率,打算在飛機上增加裝甲的厚度,但不能在所有部位加厚,這樣會喪失戰機的靈活性,於是軍方請了統計學家來研究,這些專家在一開始就...