觀察,檢驗基本的數據。并將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就是一張我們可以后面作操作的大表了