【问题标题】:Pandas series mean and standard deviation熊猫系列均值和标准差
【发布时间】:2017-08-13 11:43:25
【问题描述】:

我有一个清单:

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”上的数据是熊猫系列。我想计算“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)

标签: python pandas


【解决方案1】:

您可以使用list comprehensionconcat,然后使用meanstd

要转换为float (int) 添加astype,如果仍然有问题需要to_numeric 和参数errors='coerce'

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()?
  • 我已经尝试了这两种解决方案,但它们都给了我这个错误:ValueError: setting an array element with a sequence。
  • 返回什么[x['A'] for x in data]
  • [[3181 2.0 3193 3.0 3205 4.0 3217 5.0 3229 6.0 Name: A, dtype: float64], [8016 7.0 8028 11.0 8040 90.0 8052 43.0 8064 87.0 Name: A, dtype: float64]]
  • 如果a = [x['A'] for x in data] 那么type(a[0]) ?
猜你喜欢
  • 1970-01-01
  • 2020-03-19
  • 2021-06-03
  • 2018-06-04
  • 1970-01-01
  • 2017-04-06
  • 2014-01-14
  • 2020-03-06
  • 2015-03-03
相关资源
最近更新 更多