本章节以及后续章节的源码,当然也可以从我的github下载,在源码中我自己加了一些中文注释。
美国农业部(USDA)制作了一份有关食物营养信息的数据库。JSON版如下:
![](https://img.haomeiwen.com/i10053166/00e86fd98d90bad1.png)
每种食物都带有若干标识性属性以及两个有关营养成分和分量的列表。这种形式的数据不是很适合分析工作,因此我们需要做一些规整化以使其具有更好用的形式:
![](https://img.haomeiwen.com/i10053166/71a9472b63f75492.png)
db中的每个条目都是一个含有某种食物全部数据的字典。nutrients字段是一个字典列表,其中的每个字典对应一种营养成分:
![](https://img.haomeiwen.com/i10053166/9d015791212e8be0.png)
在将字典列表转换为DataFrame时,可以只抽取其中的一部分字段。这里,我们将取出食物的名称、分类、编号以及制造商等信息:
![](https://img.haomeiwen.com/i10053166/f44673a76f8a5f31.png)
通过value_counts,可以查看食物类别的分布情况:
![](https://img.haomeiwen.com/i10053166/e51c8fffaab2c42a.png)
为了对全部营养数据做一些分析,最简单的办法是将所有食物的营养成分整合到一个大表中。我们分几个步骤来实现该目的。首先,将各食物的营养成分列表转换为一个DataFrame,并添加一个表示编号的列,然后将该DataFrame添加到一个列表中。最后通过concat将这些东西连接起来就可以了:
![](https://img.haomeiwen.com/i10053166/dfbb9721e86640d4.png)
![](https://img.haomeiwen.com/i10053166/62ab9362218aea0e.png)
这个DataFrame中无论如何都会有一些重复项,所以直接丢弃就可以了:
![](https://img.haomeiwen.com/i10053166/e0bb6ffb63fb8c0c.png)
由于两个DataFrame对象中(info 和 nutrients)都有"group"和"description",所以为了明确到底谁是谁,需要对它们进行重命名:
![](https://img.haomeiwen.com/i10053166/59e7d7b6ff991f55.png)
将info跟nutrients合并起来:
![](https://img.haomeiwen.com/i10053166/3b7b8b5acb650f36.png)
![](https://img.haomeiwen.com/i10053166/6614544cd32c0e1a.png)
根据食物分类和营养类型画出一张中位值图:
![](https://img.haomeiwen.com/i10053166/94b75abdfd2a03bb.png)
![](https://img.haomeiwen.com/i10053166/4ab1a5b53c17cbe9.png)
各营养成分最为丰富的食物是什么,这里只给出"Amino Acids"营养分组:
![](https://img.haomeiwen.com/i10053166/e17dc1b31c331c8b.png)
快速学习:
网友评论