为什么DataFrames的统计方法会在pandas中返回Series?

时间:2014-07-17 21:36:34

标签: python numpy pandas

我使用pandas 0.13.1。这个数据框:

a = pandas.DataFrame({"a": ["foo", "bar", "qux"], "v": [1, 5.6, 50.5]})
a = a.set_index("a")

包含浮点数,其平均值可以使用.mean()计算:

>>> a.mean()
v    19.033333
dtype: float64
>>> type(a.mean())
pandas.core.series.Series

但是在pandas 0.13.1中,这个结果是Series而不是float - 为什么会这样?这是熊猫新的吗? IIRC在老熊猫中不是这样的。

这是获得浮动的正确方法吗?

>>> a.mean()[0]

1 个答案:

答案 0 :(得分:1)

如果您有多列,则df.mean()中的系列包含每列的值。所以a.mean()['v'](得到平均系列的'v'值)或a['v'].mean()(取系列'v'的平均值)将是表达你正在做的事情的最清晰方式。

如果您希望将数据视为单个矢量/数组(即任何会强制您的数据只有一列的构造),则表示该数据的首选方式是系列。

或者,如果您想要所有列的平均值,您可以这样做:

  • df.mean().mean()(取每列的平均值,然后给出其平均值)
  • df.mean(axis=0).mean()(取每行的平均值,然后给出其平均值)
  • df.as_matrix().mean()(取整个矩阵的平均值[由熊猫作为numpy矩阵/ 2D数组返回])
  • df.values.mean()(与上面相同,可能会更快但有点不太清楚[pandas作为numpy数组的内部表示])