pandas 计算聚合方差

erk*_*ken 5 python variance pandas

我有一个包含以下列的数据框:DateIDValue。我需要执行均值、中位数和方差Value,我.agg这样使用:

df = dataset\
    .groupby(['ID', pd.Grouper(key='Date', freq='60T')])['Value']\
    .agg(['mean', 'median', 'var'])\
    .reset_index()
Run Code Online (Sandbox Code Playgroud)

它成功计算平均值,但当需要计算中位数时,它只是重复平均值,并且不存储或创建 var 列。结果如下:

      ID                 Date      mean    median  var
0  13834  2017-02-09 12:00:00  1.474920  1.474920  NaN
1  13834  2017-02-09 16:00:00  4.424796  4.424796  NaN
2  13834  2017-02-09 20:00:00  2.241871  2.241871  NaN
3  13834  2017-02-10 00:00:00  2.654867  2.654867  NaN
4  13834  2017-02-10 04:00:00  2.654867  2.654867  NaN
5  13834  2017-02-10 08:00:00  0.511062  0.511062  NaN
Run Code Online (Sandbox Code Playgroud)

在最后一个数字的末尾应该有方差列,但我什么也没得到(或NaNs,如果在数据框中显示)。我该如何解决?

erk*_*ken 5

Grzegorz Skibinski 的评论就是解决方案:

因为每组有 1 行 - 检查一个虚拟示例: df.groupby(df.index).agg(["mean", "median", "var"]).reset_index()- 它显然使用 1/(N-1) 的方差估计器,如果 N=1,则返回 NaN。http://en.wikipedia.org/wiki/Variance