Pandas系列的均值和标准差

5

我有一个列表:

data = [
{'A': [2.0, 3.0, 4.0, 5.0, 6.0], 'B':[27.0, 28.0, 29.0, 30.0], 'C': ['lic1'],
 'D': ['soy1'], 'E': ['foo1']},
{'A': [7.0, 11.0, 90.0, 43.0, 87.0], 'B':[27.0, 28.0, 29.0, 30.0], 'C': ['lic1'],
 'D': ['soy1'], 'E': ['foo1']},
# ... etc

关于'A'的数据是一个Pandas Series。我想要计算'A'中数据的平均值和标准差(A中有多个记录)。例如:(mean=(2.0+3.0+4.0+5.0+6.0+7.0+11.0+90.0+43.0+87.0)/len(A)=25.8)


all_as = reduce((lambda x, y: x['A'] + y['A']), data) 将data中所有'A'的值相加并返回总和,其中reduce()函数可以对序列做累积操作。 - greedy52
1个回答

5
您可以使用 列表推导式concat,然后使用 meanstd 进行计算。
如果要转换为 float (int),请添加 astype,如果仍有问题,则需要使用带有参数 errors='coerce'to_numeric
s = pd.concat([pd.Series(x['A']) for x in data]).astype(float)
print (s)
0     2.0
1     3.0
2     4.0
3     5.0
4     6.0
0     7.0
1    11.0
2    90.0
3    43.0
4    87.0
dtype: float64

print (s.mean())
25.8

print (s.std())
35.15299892375234

另一种解决方案:
from  itertools import chain

s = pd.Series(list(chain.from_iterable([x['A'] for x in data]))).astype(float)
print (s)
0     2.0
1     3.0
2     4.0
3     5.0
4     6.0
5     7.0
6    11.0
7    90.0
8    43.0
9    87.0
dtype: float64

'A'上的数据是字符串。[2.0,3.0,4.0,5.0,6.0]。我该如何将它们转换为浮点数,以便我可以使用.mean()函数? - magicsword
我尝试了两种解决方案,但它们都给了我这个错误:ValueError: 用序列设置数组元素。 - magicsword
[x['A'] for x in data] 返回什么? - jezrael
如果 a = [x['A'] for x in data],那么 type(a[0]) 是什么? - jezrael
它输出 'list' - magicsword
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接