python中字典列表的加权平均值



给定如下字典列表:

[{'apple':2, 'banana':3, 'orange':4}, 
{'apple':3, 'banana':15, 'orange':3},
{'apple':4, 'banana':9, 'orange':1},
{'apple':5, 'banana':11, 'orange':10}, ...]

计算每个键的指数加权平均值的有效方法是什么?例如,期望的输出将是单个字典,如:

{'apple':x, 'banana':y, 'orange':z}

简单平均相对简单,但不确定如何修改它来做指数加权平均:

def dict_mean(dict_list):
mean_dict = {}
for key in dict_list[0].keys():
mean_dict[key] = sum(d[key] for d in dict_list) / len(dict_list)
return mean_dict

使用pandas既高效又容易:

import pandas as pd
dicti = [{'apple':2, 'banana':3, 'orange':4}, 
{'apple':3, 'banana':15, 'orange':3},
{'apple':4, 'banana':9, 'orange':1},
{'apple':5, 'banana':11, 'orange':10}]
# chose the dacay:
decay = 0.4
# notice that the ewm of an array returns another array not a number.
df1 = pd.DataFrame(dicti).ewm(alpha=decay).mean()
# but you can take the last term with iloc:
df2 = pd.DataFrame(dicti).ewm(alpha=decay).mean().iloc[-1]
# You can finally export it as a dictionary:
end_dict = df2.to_dict()
print(end_dict)

你可以在这里阅读更多关于熊猫指数移动平均线的信息。

最新更新