我如何使用pandas在数据集上找到中位数?[英] How I do find median using pandas on a dataset?

本文是小编为大家收集整理的关于我如何使用pandas在数据集上找到中位数?的处理方法,想解了我如何使用pandas在数据集上找到中位数?的问题怎么解决?我如何使用pandas在数据集上找到中位数?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有包含 3 列的数据框数据 - 日期、段和指标.我正在执行以下操作:

data = pandas.read_csv("Filename.csv")
ave = data.groupby('Segment').mean() #works
ave = data.groupby('Segment').median() #gives error
ave['median'] = data.groupby('Segment').median()

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/pymodules/python2.7/pandas/core/frame.py", line 1453, in __setitem__
    self._set_item(key, value)
  File "/usr/lib/pymodules/python2.7/pandas/core/frame.py", line 1488, in _set_item
    NDFrame._set_item(self, key, value)
  File "/usr/lib/pymodules/python2.7/pandas/core/generic.py", line 301, in _set_item
    self._data.set(key, value)
  File "/usr/lib/pymodules/python2.7/pandas/core/internals.py", line 616, in set
    assert(value.shape[1:] == self.shape[1:])
AssertionError

推荐答案

你遇到了什么错误?

ave = data.groupby('Segment').median()

我认为这应该可行,也许您的数据中有些东西导致了错误,比如 nan,我只是在猜测.您可以尝试应用自己的中值函数来查看是否可以解决错误原因,例如:

def mymed(group):
    return np.median(group.dropna())

ave = data.groupby('segment')['Metric'].apply(mymed)

如果你能提供一些复制错误的样本数据会更容易.

这是一种不同的方法,您可以将中值添加回原始数据框,度量列的中值变为:

data['metric_median'] = data.groupby('Segment')['Metric'].transform('median')

将组的中位数附加到每个数据点是否有用取决于您之后想要做什么.

本文地址:https://www.itbaoku.cn/post/1727739.html