观察,检验基本的数据。并将USDA的数据整合到一张大表中,方便后面的切块,聚合,图形化等工作
1. 观察并检验数据, 数据集一般都很多大,我们要先观察和检验一小部分数据,总结规律
db[0].keys() // 查看输入的json的所有keys
db[0]['nutrients'][0] // 查看第一条数据的nutrients字段的第一个值
pd.DataFrame(db[0]['nutrients'])[:7] //查看第一条数据的nutrients字段的前7个值
2. 将数据读入
- 入读食品数据 nutrients 是一个list类型,需要单独处理,这里要形成一个food的DataFrame,所有挑选有效的数据读入进来
info_keys = ["description", "group", "id", "manufacturer"]
info = pd.DataFrame(db, columns=info_keys) - 读入nutrients数据,由于每个food的nutrients都是一个列表,所以我们需要一个大表来存放所有的nutrients数据,而id则是food的id(用来后面作merge用)
nutrients = []
for rec in db:
fnuts = pd.DataFrame(rec['nutrients'])
fnuts['id'] = rec['id']
nutrients.append(fnuts)
nutrients = pd.concat(nutrients, ignore_index=True) // 将所有创建的DataFrame concat到一起生成一个大的DataFrame
这里要注意去重
nutrients = nutrients.drop_duplicates()
3 将数据合并
合并之前要重命名每个DataFrame的列名,因为之前有重复列名
col_mapping = {
'description': 'food',
'group': 'fgroup'
}
info = info.rename(columns=col_mapping, copy=False)
合并
ndata = pd.merge(nutrients, info, on='id', how='outer')
最终ndata就是一张我们可以后面作操作的大表了
网友评论