字典列表中的Python均值和标准差

时间:2017-05-23 09:48:28

标签: python python-2.7 numpy dictionary

我想计算词典列表中条目的平均值和标准差。我有以下表格的数据:

data = [{'x': [1,2,3,6],'y': [2.5,2,3,7],'list': "list1"},
        {'x': [2,4,5,6],'y': [3,4,5,6],'list': "list2"},
        {'x': [1,2,3,4,5,6],'y': [1.5,1,4,4,NaN,5],'list': "list3"}]

现在我想要' y'的平均值和标准差。对于每个' x'在不同的词典上。我已经发现我可以使用numpy.mean和numpy.std来完成任务。我的问题是如何访问' x'我只能为每个相应的' y'所有字典的输入,因为我遗漏了一些条目并在我的数据中处理NaN。因为我想在之后绘制它,我需要确保我有一个完整的列表' x'最后的条目。

我想要一个答案:

x = [1,2,3,4,5,6]
mean_y = [2,2,3.5,4,5,6]

2 个答案:

答案 0 :(得分:1)

让我们首先重新格式化您的数据,好吗?因为你的格式很怪异。

import pandas
import numpy as np

data = [{'x': [1,2,3,6],'y': [2.5,2,3,7],'list': "list1"},
        {'x': [2,4,5,6],'y': [3,4,5,6],'list': "list2"},
        {'x': [1,2,3,4,5,6],'y': [1.5,1,4,4,np.NaN,5],'list': "list3"}]

b=pandas.DataFrame()    
for elem in data:
    d=dict()
    for i in range(0, len(elem['x'])):
        d[elem['x'][i]]=elem['y'][i]
    a = pandas.Series(d)
    b=b.append(a, ignore_index=True)

现在很简单

b.mean(0)
b.std(0)

答案 1 :(得分:0)

您有一个词典列表。要访问单独的字典,您需要访问列表中的元素。

例如

for j in dict_list:
    avg(j['x'])

应为字典中的每个列表提供单独的值