gpt4 book ai didi

python - 最Pythonic的计算平均值的方法

转载 作者:行者123 更新时间:2023-11-30 23:39:25 24 4
gpt4 key购买 nike

我在 3d 字典中的数据如下:

 movieid, date,customer_id,views
0, (2011,12,22), 0, 22
0, (2011,12,22), 1, 2
0, (2011,12,22), 2, 12
.....
0, (2011,12,22), 7, 2
0, (2011,12,23), 0, 123

..所以基本上数据代表每个客户每天观看一部电影的次数(只有 8 个客户)..

现在,我想计算..平均每个客户观看一部电影的次数。

所以基本上

    movie_id,customer_id, avg_views
0, 0, 33.2
0, 1 , 22.3

and so on

解决这个问题的Pythonic方法是什么。

塔克恩斯

编辑:

 data = defaultdict(lambda : defaultdict(dict))
date = datetime.datetime(2011,1,22)
data[0][date][0] = 22
print data
defaultdict(<function <lambda> at 0x00000000022F7CF8>,
{0: defaultdict(<type 'dict'>,
{datetime.datetime(2011, 1, 22, 0, 0): {0: 22}}))

假设只有 2 位客户、1 部电影和 2 天的数据

 movie_id, date, customer_id,views
0 , 2011,1,22,0,22
0 , 2011,1,22,1,23
0 , 2011,1,23,0,44

注意:客户 1 1 月 23 日没有观看 id 0 的电影现在答案是

 movie_id,customer_id,avg_views
0 , 0 , (22+44)/2
0, 1, (23)/1

最佳答案

sum 让这变得简单。在我的原始版本中,我经常使用 dict.keys(),但迭代字典会默认为您提供键。

该函数计算单行结果:

def average_daily_views(movie_id, customer_id, data):
daily_values = [data[movie_id][date][customer_id] for date in data[movie_id]]
return sum(daily_values)/len(daily_values)

然后你可以循环它以获得你想要的任何形式。也许:

def get_averages(data):
result = [average_daily_views(movie, customer, data) for customer in
data[movie] for movie in data]

关于python - 最Pythonic的计算平均值的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13568509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com