我有一个通过json以
形式导入的列表 [{'beer/ABV': 5.0,
'beer/beerId': '47986',
'beer/brewerId': '10325',
'beer/name': 'Sausa Weizen',
...
包括哪些顾客喝了哪种啤酒及其评级。我想计算每种啤酒的平均评分。在python中执行此操作的最有效方法是什么?我可以使用numpy或scipy。
答案 0 :(得分:1)
调用您的列表beer_json
,并假设beer/ABV
为评分:
import numpy as np
beer_ratings = {}
for beer in {beer_info['beer/beerId'] for beer_info in beer_json}:
ratings = [beer_info['beer/ABV']
for beer_info in beerjson
if beer_info['beer/beerId'] == beer]
beer_ratings[beer] = np.mean(ratings)
这会迭代每个啤酒一次(使用它的beerId
),然后创建一个仅包含该特定啤酒评级的列表ratings
,并计算平均值。
我不能保证这是最有效的方法,但是因为你使用Python我猜测效率不是首要任务。
答案 1 :(得分:1)
我认为这应该做你想要的(你必须首先安装pandas):
import pandas
beers = [
{'beer/beerId': '789', 'beer/ABV': 5.0, 'beer/name': 'Sausa Weizen'},
{'beer/beerId': '789', 'beer/ABV': 4.0, 'beer/name': 'Sausa Weizen'},
{'beer/beerId': '789', 'beer/ABV': 3.0, 'beer/name': 'Sausa Weizen'},
{'beer/beerId': '123', 'beer/ABV': 1.0, 'beer/name': 'Bud Light'},
{'beer/beerId': '123', 'beer/ABV': 2.0, 'beer/name': 'Bud Light'}
]
df = pandas.DataFrame(beers)
df.groupby(['beer/beerId']).mean()