【问题标题】:Is there any way to groupby and calculate statistical measures all in one step?有什么方法可以一步完成分组和计算统计度量吗?
【发布时间】:2021-11-10 19:14:54
【问题描述】:

我知道我可以单独计算唯一计数、均值、中值、峰度偏度并合并到一个数据帧中,但与 R 数据相比,这是很多步骤.table,您可以在其中一步计算所有这些。有什么方法可以让我在 Python 中执行 groupby 并一步计算所有这些?

df <- data[,.(ItemCount= uniqueN(Item),
             Median_val = median(Value),
             Avg_val = mean(Value),
             Skew_val = skewness(Value),
             Kurt_val = kurtosis(Value)),.(Year, Category)][order(Year,Category)]

【问题讨论】:

标签: python pandas dataframe group-by


【解决方案1】:

通过评论部分提供的 RootTwo 的参考链接,我能够解决我自己的问题。请注意,对于峰态,我们不能使用aggfunc="kurt"。它会返回一个错误”'SeriesGroupBy' object has no attribute 'kurt'

以下是我的解决方案:

df = (data.groupby(['Year', 'Category'], as_index=False)
      .agg(ItemCount = pd.NamedAgg(column="Item", aggfunc="nunique"), 
           mean = pd.NamedAgg(column="Value", aggfunc="mean"),
           median = pd.NamedAgg(column="Value", aggfunc="median"), 
           skew = pd.NamedAgg(column="Value", aggfunc="skew"),  
           kurt =  pd.NamedAgg(column="Value", aggfunc=pd.DataFrame.kurt))
      )

【讨论】:

    猜你喜欢
    • 2015-12-18
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    相关资源
    最近更新 更多