python实现食品推荐_利用Python进行数据分析的笔记-实战USDA食品数据库

这边代码运行的环境是Jupyter Notebook with Python2.7

#coding:utf-8

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from pandas import Series,DataFrame

import re

import json

%matplotlib inline #在juypter notebook 内嵌图形

db = json.load(open('foods-2011-10-03.json'))

#db[:1]

#len(db)

#type(db)

#db[0].keys()

#db[0]['nutrients'][0]

#len(db[0]['nutrients'])

#nutrients

info_keys = ['description','group','id','manufacturer','tags'] #自定义列名

info = DataFrame(db, columns=info_keys)

info.drop('tags',axis=1,inplace=True) #删除tags一列

pd.value_counts(info.group) #根据group列做统计

pd.value_counts(nutrients.group) #根据group列做统计

Nutrients = [] #新建一个空列表

#取特定key为nutrients id 生成一个list

for rec in db:

fnuts = DataFrame(rec['nutrients'])

fnuts['id'] = rec['id']

Nutrients.append(fnuts)

#Nutrients[:10]

Nutrients = pd.concat(Nutrients,ignore_index=True) #将list中的成员整合到一个DataFrame

#Nutrients[:10]

len(Nutrients)

Nutrients.duplicated().sum() #统计重复项,默认是根据第一列nutrients 统计

Nutrients.duplicated('group').sum() #统计重复项,根据指定group列统计

Nutrients_with_no_duplicates = Nutrients.drop_duplicates() #丢弃重复项

len(Nutrients_with_no_duplicates)

#两个DataFrame 都有"group"、"description"列名重命名

col_mapping = {'description':'food','group':'fgroup'}

info = info.rename(columns=col_mapping,copy=False)

col_mapping = {'description':'nutrients','group':'nutgroup'}

Nutrients = Nutrients.rename(columns=col_mapping,copy=False)

#合并2个DataFrame 根据id关联 outer外连接

ndata = pd.merge(Nutrients,info,on='id',how='outer')

ndata.iloc[3000] #等同于ndata.ix[3000] 或者ndata.loc[3000]

#根据营养分类得到锌的中位值

result = ndata.groupby(['nutrients','fgroup'])['value'].quantile(0.5)

#result.head()

result['Zinc, Zn'].sort_values().plot(kind='barh')

#营养成分最为丰富的食物

by_nutrients = ndata.groupby(['nutgroup','nutrients'])

get_maximum = lambda x: x.xs(x.value.idxmax())

get_minimum = lambda x: x.xs(x.value.idxmin())

max_food = by_nutrients.apply(get_maximum)[['value','food']]

max_food.food = max_food.food.str[:10]

max_food.loc['Amino Acids']['food']

99d5c7ed2a44?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

99d5c7ed2a44?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值