今天看到一个好玩的数据分析小case,通过对KFC的早餐爬取部分数据,并做简单处理,查看肯定早餐搭配

原数据集及初始代码网址如下:https://www.kesci.com/home/project/5ecf10d0162df90036dd6bc9/code。

首先读取数据

#数据导入,探查数据缺失
data = pd.read_csv(r'D:\ML_data\kfca8585\kfc.csv')
data.head()

查看数据

0    1元安心大油条 产品实付满49元(不含外送费),可1元换购安心大油条1根,每单限1份  1.0 https://img.4008823823.com.cn/kfcios/Version/7...
1   1元芝士鸡肉帕尼尼   产品实付满69元(不含外送费),可1元换购芝士鸡肉帕尼尼1份,每单限1份    1.0 https://img.4008823823.com.cn/kfcios/Version/7...
2   有鸡腿全餐双人餐    套餐包含:有鸡腿中式/西式全餐(可选),共2份。<br>有鸡腿中式全餐:新奥尔良烤鸡腿1份+... 0.0 https://img.4008823823.com.cn/kfcios/Version/7...
3   有鸡腿西式全餐(香草流心可颂) 新奥尔良烤鸡腿1块+培根炒蛋1份+香脆薯饼1块+大溪地香草奶香流心可颂2只+咖啡饮品1杯(可...    29.0    https://img.4008823823.com.cn/kfcios/Version/7...
4   有鸡腿西式全餐(香草流心可颂) 新奥尔良烤鸡腿1块+太阳蛋+香脆薯饼1块+大溪地香草奶香流心可颂2只+咖啡饮品1杯(可加价换...    29.0    https://img.4008823823.com.cn/kfcios/Version/7...

查看一下数据情况。单价有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=14return pelse:return pdata['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 = {'热量' : 250,'脂肪' : 10,'碳水化合物' : 20,'蛋白质' : 10
}
rice_ball = {'热量' : 200,'脂肪' : 11,'碳水化合物' : 21,'蛋白质' : 6
}
porridge = {'热量' : 50,'脂肪' : 1.5,'碳水化合物' : 8,'蛋白质' : 2.5
}
chicken = {'热量' : 255,'脂肪' : 15,'碳水化合物' : 10,'蛋白质' : 21
}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 = {'热量' : 388,'脂肪' : 18,'碳水化合物' : 51,'蛋白质' : 7
}
chayedan = {'热量' : 151,'脂肪' : 6,'碳水化合物' : 12,'蛋白质' : 11
}
shubin = {'热量' : 327,'脂肪' : 22,'碳水化合物' : 32,'蛋白质' : 3
}
danta = {'热量' : 255,'脂肪' : 22,'碳水化合物' : 38,'蛋白质' : 7
}from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeTypelist2 = [{"value": 388, "percent": 388 / (388 + 18 + 51 + 7)},{"value": 151, "percent": 151 / (151 + 6 + 12 + 11)},{"value": 327, "percent": 327 / (327 + 22 + 32 + 3)},{"value": 255, "percent": 255 / (22 + 38 +  + 7 + 255)},
]list3 = [{"value": 18, "percent": 18 / (388 + 18 + 51 + 7)},{"value": 6, "percent": 6 / (151 + 6 + 12 + 11)},{"value": 22, "percent": 22 / (327 + 22 + 32 + 3)},{"value": 22, "percent": 22 / (22 + 38 + 7 + 255)},
]list4 = [{"value": 51, "percent": 51 / (388 + 18 + 51 + 7)},{"value": 12, "percent": 12 / (151 + 6 + 12 + 11)},{"value": 32, "percent": 32 / (327 + 22 + 32 + 3)},{"value": 38, "percent": 38 / (22 + 38 + 7 + 255)},
]list5 = [{"value": 7, "percent": 7 / (388 + 18 + 51 + 7)},{"value": 11, "percent": 11 / (151 + 6 + 12 + 11)},{"value": 3, "percent": 3 / (327 + 22 + 32 + 3)},{"value": 7, "percent": 7 / (22 + 38 + 7 + 255)},
]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){return Number(x.data.percent * 100).toFixed() + '%';}"),))
c.render_notebook()

饮料分析

doujiang = {'热量' : 31,'脂肪' : 2,'碳水化合物' : 1.5,'蛋白质' : 3
}
coffe = {'热量' : 100,'脂肪' : 4,'碳水化合物' : 12,'蛋白质' : 4
}from pyecharts import options as opts
from pyecharts.charts import Piec = 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()函数使用方法,有些方法废弃了,使用的时候要多加注意。

用数据分析搭配肯德基早餐相关推荐

  1. 为啥这么多人早餐都是直接选择肯德基?又贵又不咋好吃。用Python来爬一下看看!

    ​ 00 前言 肯德基发展了那么多年,他们的食物也随之发生了很多变化,记得以前刚出早餐的时候,也就几个品种,有点单一,然而现在的花样是越来越多,套餐五花八门,各种搭配. 木下爬取了肯德基早餐的菜单,来 ...

  2. 玩会员积分运营又搞小b分销 肯德基要认真做社交电商!

    此前,肯德基已借会员积分/拼团小程序正式入局社交电商,"肯德基口袋炸鸡店"小程序的全面上线使肯德基同时拥有了"拼团"+"分销"两把武器.类似 ...

  3. 建造者模式详解:建造随意搭配的肯德基套餐

    快捷导航 一.概要 二.实现案例 构建一份肯德基套餐 代码实现 产品类 建造者类 测试类 指挥者(可选) 三.总结 一.概要 建造者模式(Builder Pattern)是五种创建型设计模式之一,它将 ...

  4. 肯德基、必胜客中国部分餐厅限时推出植物肉汉堡;B站与《男人装》首次破圈合作 | 美通企业日报...

    今日看点 百胜中国在指定的肯德基,必胜客和塔可贝尔餐厅推出新品别样汉堡.百胜中国控股有限公司宣布与植物肉业界公司别样肉客合作,将于6月3日开始在中国肯德基,必胜客和塔可贝尔的指定餐厅限时推出别样汉堡( ...

  5. 曾比海底捞还牛,如今关店1200家!肯德基的猪队友,快被中国人抛弃了?

    来源| 金错刀 ID| ijincuodao 作者| 金错刀频道 云摇 必胜客又翻车了. 去年,必胜客中国30周年,推出了158元的自助餐,本来想再火一次,没想到却翻车了. 很多去尝鲜的人都表示:&q ...

  6. 史上最难吃系列,肯德基就不能好好做鸡吗?

    作者/橘总 来源/Vista氢商业 ID/qingshangye666 本周经历2020年最大遗憾.我刚想下单肯德基最新黑暗料理"气泡薯片炸鸡",就得知它前一天下架的噩耗. 按照肯 ...

  7. 中国鸡荣华鸡为什么干不过洋鸡肯德基

    单说快餐吧,我们的饺子.馅饼.面条. 包子等等,哪个没有几百年的历史?中餐那么多以鸡肉为主料的辣子鸡.文昌鸡. 白切鸡.手撕鸡.炖土鸡等等,哪一个口味不比肯德基的麻辣鸡块好吃?但为什 么时至今日,依然 ...

  8. 供货肯德基与必胜客,千味央厨上市全靠“抱大腿”?

    2021年9月6日,郑州千味央厨食品股份有限公司(后简称"千味央厨")登陆深交所完成主板上市,开盘后千味央厨股价持续走高,截至2021年9月9日收盘,其股价较IPO发行价的每股15 ...

  9. 西式快餐是否比起肯德基更多人喜欢麦当劳,如果是原因是什么

    汉堡王的京东套餐券买完不能使用,必须等待10分钟所谓的"系统激活"才可以使用,否则扫码会显示未激活. 并且店员似乎没有一个人知道等10分钟这件事. 更新吐槽金拱门麦麦脆汁鸡. 前段 ...

最新文章

  1. 2022年你应该知道的机器学习算法
  2. 【Alpha阶段】第六次Scrum Meeting
  3. 深度学习目标检测(YoloV5)项目——从0开始到项目落地部署
  4. 如何将10元店,做到月2000万流水?
  5. 圆你国产数据库DBA之梦,达梦DCA培训考试券免费拿
  6. ASP.NET Core2.2 和2.1 版本中对cookie的设置和存储
  7. 华为P40 Pro Plus:徕卡五摄加持 称霸DxOMark几无悬念
  8. 敏捷开发系列学习总结(9)——10大流行编程方法
  9. C++编程语言中const关键字介绍
  10. FFT海水模拟(又来了-_-b)
  11. ucore Lab2 物理内存管理
  12. B站晚会为什么被夸疯了?答案飘在84万条弹幕中……
  13. [日常] Go语言圣经前言
  14. SpringMVC视图视图控制器
  15. 单片机c语言篮球比分_单片机和C语言的篮球计时计分器设计
  16. 【计算机网络-带宽与吞吐量】
  17. eclipse (氧气版)oxygen下载
  18. 讼卦,帮助你处理好和上级的关系
  19. 记录slow log相关的参数
  20. Springboot快速实现邮件发送

热门文章

  1. YTU 2866: 结构体---点坐标结构体
  2. 超级详细学习了解进程和病毒知识
  3. 0基础该怎么学习软件测试?
  4. 如何用WebView打开pdf链接
  5. 机器学习里的 kernel 是指什么?
  6. DB2日期和时间函数汇总
  7. ldap服务器配置信息错误,OpenLDAP配置错误ldap_bind:无效的凭据(49)
  8. oracle 中的日期函数
  9. php怎么和数据库建立连接数据库服务器端,PHP和 mysql 数据库服务器连接上,才能进一步操作数据库。...
  10. C++数组中的元素删除、移动