企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 1.1 食物营养数据分析 ```python import pandas as pd import json db = json.load(open("food.json")) len(db) #db中的每个条目都是一个字典,含有某种食物的全部数据。字段"nutrients"是一个字典列表,其中每个字典对应一种营养成分 db[0].keys() db[0]["nutrients"][0] nutrients = pd.DataFrame(db[0]["nutrients"]) nutrients.head(7) #在将字典列表转换为DataFrame时,我们可以指定一个需要提取的字段列表。 #这里,我们将提取食物的名称、分类、ID以及制造商等信息: info_keys = ["description", "group", "id", "manufacturer"] info = pd.DataFrame(db, columns=info_keys) info.head(5) #通过value_counts,可以查看食物分类的分布情况: pd.value_counts(info["group"])[:10] # 将所有食物的营养成分整合到一张大表中。我们分成几个步骤来实现。 # 首先,将各食物的营养成分列表转换为DataFrame,并添加食物id的列; # 然后,将该DataFrame追加到一个列表中; # 最后,通过concat将这些数据拼接。 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中存在一些重复项,直接丢弃就可以了 nutrients.duplicated().sum() nutrients = nutrients.drop_duplicates() #两个DataFrame对象中都有"group"和"description",为了更加清晰,我们需要对其进行重命名: col_mapping = {"description" : "food", "group" : "fgroup"} info = info.rename(columns=col_mapping, copy=False) info.info() col_mapping = {"description" : "nutrient", "group" : "nutgroup"} nutrients = nutrients.rename(columns=col_mapping, copy=False) nutrients #将info和nutrients合并起来了 ndata = pd.merge(nutrients, info, on="id") ndata.info() ndata.iloc[30001] ```