一顿麦当劳吃了0卡路里?Plotly告诉你点这几样不会胖

我不允许有人还没看过麦麦的新品!

小科看到的第一眼就抄起手机立马去买了!然而,跑到一半,哦我正在减肥。

正好手边有麦当劳餐品营养成分数据集,包括了美国麦当劳餐厅内早餐、牛肉汉堡、鸡肉三明治、薯条、苏打饮料和甜品等食品的营养成分说明。

数据集地址

https://www.kesci.com/home/dataset/5b57ef33a711e6001092271d/comment

于是顺手在K-Lab加载了,准备做个营养分析。

接下来,开始计算卡路里!

先了解一下我们即将用到的数据集:

也就是说一共有260个产品,小科也是第一次知道麦麦有这么多产品...

▲每一列包括了产品的类别,名称,大小,以及营养成分(如卡路里,脂肪,胆固醇,钠,碳水化合物,膳食纤维,糖,蛋白质,维他命A,维他命C,钙,铁)等内容。

看到Calories的一瞬间,我觉得我的减肥大业有希望了。

稳住。

先用两行代码检查一下数据质量,看看这些特征中是否存在空值或缺失值、数据大小是否合理等等……

完美!数据中不存在空值。

开始下一步的分析工作。

260种食物,先给它分个类好了:

▲数量最多的品类是咖啡和茶,高达37%;之后是早餐(16%),冰沙奶昔(11%),饮品(10%),鸡肉鱼肉(10%)和牛肉猪肉(6%)。小吃,甜点和沙拉占比最少,其中沙拉类食品仅占所有食品的2%。

先看看每个类别卡路里含量如何:

从图中,我们发现冰沙奶昔系列卡路里含量最高,早餐系列、猪肉牛肉系列、鸡肉鱼肉系列紧随其后。沙拉、小食、甜品、咖啡、茶的卡路里偏低的,饮品荣摘卡路里含量最低宝冠。

天大地大奶昔最大的小科委屈了,同是一大杯,饮品和冰沙奶昔怎么就差距这么大呢!

等等,我发现了盲点。

早餐系列、鸡肉鱼肉系列和咖啡茶系列有一些异常值(outlier)...这些异常值很可能是超大份食物,分量都没有统一,我也太不严谨了叭!

翻回数据集中“Serving Size”一栏,我们发现麦当劳对份量的标注并不完全统一,共六种形式:

  • 4.8 oz (136 g)
  • 1 cookie (33 g)
  • 21 fl oz cup
  • 1 carton (236 ml)
  • 6 fl oz (177 ml)
  • 16.9 fl oz

这里面,包括固体食品和液体食品。

为了分析方便,小科决定统一单位:固体食品全部转换为g,液体食品先转换为ml,再假设1ml的液体等于1g,将它们从体积转为重量。

*注:1盎司(oz)=28.35克(g);1美制液体盎司(fl oz)=29.57毫升(ml)

代码如下:

最终,我们得出了另一张差别很大的盒形图:

甜品的热量瞬间高了几倍诶!

主食(早餐、肉类)依旧是卡路里含量最高的食品。

之前我们以为卡路里含量较低的小食、甜点等,原来只是因为份量小,如果换算成同样的份量,卡路里和主食一毛一样

只有沙拉依然是一股清流,卡路里含量远低于其他类食品,平均值是主食的一半左右。

液体及半液体的饮品表现也很好,卡路里含量总体低于固体食品,但冰沙奶昔的卡路里明显高于其他饮品,甚至高于沙拉...

因此,如果你在减肥期间走进了麦当劳,请记住:一份沙拉就够了!!!最多再加一份饮品,但冰沙奶昔依然是雷区。

我们再来看看一个特征如何影响其他特征。

轮廓图可以提供一个特征相对于另一个特征的分布,简单来讲,这能让我们对定量数据有一个快速的感知。

我们选取了几个主要特征,生成了9张轮廓图:

再来检查不同营养指标之间的相关程度。

这次,我们调用了Plotly的交互式绘图功能,绘制特征之间相关性的热图(Heatmap):

▲颜色越趋近于黄色,说明两者正相关性越强,例如份量和卡路里的相关性高达0.9;颜色越趋近于紫色,说明两者负相关性越强。

有一些出乎了我意料。例如,总脂肪和饱和脂肪/反式脂肪之间存在相当弱的相关性,但我一直认为这两者是锁了的。

而在负相关图(深蓝/黑)的斑点中,也有一些有意思的发现:碳水化合物通常与反式脂肪,胆固醇,钠,膳食纤维和维生素A呈负相关。

现在我们对单个产品进行分析。

%Daily Value(DV)也称每日推荐摄入量是以一个健康成年人每日摄入2000卡路里为标准,得到的该营养占每日需求的百分比

例如,DV标明15%的钙,那说明吃完它,今日钙摄入指标完成15%。

总体来看,应该选择富含维生素、矿物质和膳食纤维的食品,避免过多含有饱和脂肪酸、糖和纳的食品。

因此接下来,我们就采用该食物占其每日推荐摄入量的百分比进行分析。

全程采用Plotly交互式可视化工具,分析每一个产品的营养成分,并绘制交互式散点图。

图中,点的大小和颜色与营养成分的含量有关,十分直观。

既然被称作“垃圾食品”,那就先计算一些普遍被认为是“不健康”的营养成分:

< 胆固醇 >

▲ 胆固醇(占每日推荐摄入量的百分比)

第一眼就是属于悠享早餐全餐(含热松饼)的大红点,胆固醇含量远超每日推荐摄入量,甚至达到了185%

红点下面是更加密集的黄点(如Egg/Sausage麦满分系列),这些食品吃一次也基本上到了每日胆固醇摄入量。

< 纳 >

▲ 纳(占每日推荐摄入量的百分比)

最大的红点来自于麦乐鸡(40块),其含钠量是每日推荐摄入量的150%,其次仍然是悠享早餐全餐(含热松饼),在90%左右。

< 饱和脂肪酸 >

▲ 饱和脂肪酸(占每日推荐摄入量的百分比)

饱和脂肪酸散点图中红点明显增多!更多食物含有过量的饱和脂肪酸,只食用一份便可以达到每日推荐摄入量,一不小心就会吃多……

含有饱和脂肪酸最多的食物: 麦旋风(含MM豆), 麦乐鸡(含40块), 巧克力碎片咖啡冰沙, 悠享早餐全餐(含热松饼)等

我们已经画了一些2D散点图,现在来探索一下Plotly的3D散点图功能。3D相对于2D加入了食品类别(Category)这个维度。

以下两幅3D散点图绘制了麦当劳不同产品的碳水化合物和总脂肪含量的分布情况:x轴是产品类别,y轴是具体产品,z轴是营养成分含量。

▲ 总脂肪(占每日推荐摄入量的百分比)

▲ 碳水化合物(占每日推荐摄入量的百分比)

令我震惊的是,主食,尤其是早餐系列的食品,总脂肪占比非常高,一些食品接近100%。饮料,尤其是冰沙奶昔碳水化合物占比非常高

想象一下,吃一份含松饼的早餐套餐,已经满足了一天脂肪摄入的需求,吃两杯份含MM豆的麦旋风,就满足了一天碳水摄入的需求。

这时,才刚刚8:30am!

下面我们来研究更多“正面”营养成分,如钙,铁,膳食纤维等。

相比于不健康营养元素的“频频超标”,健康营养元素的含量不尽如人意。

没有任何食物的膳食纤维(占每日推荐摄入量的百分比)超过30%,铁超过40%。

最后,我们绘制条形图,从高到低展示每种食品的卡路里含量。

emmmm...悠享早餐全餐以一己之力拉宽了整个表格...

虽然早就知道快餐营养价值不足,但只有当数据一溜排开后,我才开始正视啊QAQ,在这里小科给大家几个建议:

  • 有瘦身需求的建议以沙拉当主食
  • 纯茶、纯咖啡也是0卡路里哟
  • 主食、早餐系列的脂肪、胆固醇严重超标
  • 冰沙奶昔、主食系列卡路里容易超标
  • 甜品和主食的热量其实是一样的,只敢偶尔吃一口这样了
  • 大部分产品的营养价值都堪忧
  • 我再也不吃悠享早餐全餐了...

扫描二维码直达Notebook

↓ ↓ ↓ ↓ ↓

如果想自己动手操作或者查看源码

可以Fork该项目哦

↓ ↓ ↓ ↓ ↓

Fork后就能在线编辑啦

大家食用愉快鸭!而我,写饿了该去吃麦当劳了!