第十四章 数据分析示例
注:本章示例数据集可在附带的GitHub仓库(http://github.com/wesm/pydata-book)中找到
14.4 美国农业部食品数据库
美国农业部(US Department of Agriculture , USDA)提供了食物营养信息数据库。程序员Ashley Williams以JSON格式提供了这个数据库的一个版本。记录如下所示:
{
"id": 21441,
"description": "KENTUCKY FRIED CHICKEN, Fried Chicken, EXTRA CRISPY,
Wing, meat and skin with breading",
"tags": ["KFC"],
"manufacturer": "Kentucky Fried Chicken",
"group": "Fast Foods",
"portions": [
{
"amount": 1,
"unit": "wing, with skin",
"grams": 68.0
}, .
],
"nutrients": [
{
"value": 20.8,
"units": "g",
"description": "Protein",
"group": "Composition"
},
...
]
}
每种食物都有一些识别属性以及两份营养元素和营养比例的列表。这种形式的数据不适合分析,所以我们需要做一些工作来将数据转换成更好的形式。
从链接下载并提取数据后,你可以使用你选择的任何JSON库将其加载到Python中。或使用内置的Python json模块
1.载入,查看数据
db中的每个条目都是一个包含单个食物所有数据的词典。'nutrients’字段是一个字典的列表,每个营养元素对应一个字典(见图14-1)
![](https://img.haomeiwen.com/i15259227/c719959785bb0ca4.png)
2.将字典的列表转换为DataFrame时,我们可以指定一个需要提取的字段列表。这里将提取食物名称、分类、ID和制造商(见图14-2)
![](https://img.haomeiwen.com/i15259227/b0de0ab83dc0a5bb.png)
3.通过value_counts查看食物组的分布情况(见图14-3)
![](https://img.haomeiwen.com/i15259227/d2494bbb1689b79e.png)
4.对所有营养元素数据进行一些分析,将每种食物的营养元素组装成一张大表。
4.1 将食物营养元素的每个列表转换为DataFrame,为食物添加一列id,然后将DataFrame附加到列表中。然后,这些DataFrame可以通过concat连接在一起(见图14-4)
![](https://img.haomeiwen.com/i15259227/26977b455f9f9323.png)
4.2 DataFrame中有重复的东西,所以删除重复值更好(见图14-5)
![](https://img.haomeiwen.com/i15259227/51c85143b16c9adf.png)
4.3’group’和’description’都是在DataFrame对象中的,我们可以明确地重命名(见图14-6)
![](https://img.haomeiwen.com/i15259227/00b8889d3c31e906.png)
4.4将info与nutrients合并(见图14-7)
![](https://img.haomeiwen.com/i15259227/77d2c886a8235d5c.png)
4.5 根据食物组和营养类型制作一个中位数图(见图14-8)
![](https://img.haomeiwen.com/i15259227/f9d53a885e45431e.png)
5.查看食物在每个营养元素下有最密集的营养(见图14-9、14-10)
![](https://img.haomeiwen.com/i15259227/22241a25de68e95c.png)
![](https://img.haomeiwen.com/i15259227/73dae06cd9dee4c0.png)
网友评论