在python中聚合json结果

2024-09-23 06:32:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个通过json导入的列表

  [{'beer/ABV': 5.0,
  'beer/beerId': '47986',
  'beer/brewerId': '10325',
  'beer/name': 'Sausa Weizen',
   ...

这包括哪些顾客喝了哪些啤酒以及他们的评分。我想计算每种啤酒的平均评分。在python中最有效的方法是什么?我可以用numpy或scipy


Tags: 方法namenumpyjson列表scipy评分啤酒
2条回答

我认为这应该做你想要的(你必须首先安装熊猫):

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()

调用列表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,所以我猜效率并不是最重要的

相关问题 更多 >