【问题标题】:Use stats.trim_mean ass aggfunc in Python Pandas Pivot在 Python Pandas Pivot 中使用 stats.trim_mean ass aggfunc
【发布时间】:2017-08-09 09:54:02
【问题描述】:

我正在尝试使用 pandas 创建一个数据透视表,其中聚合函数被截断意味着需要每端数据的 10%。

    pivot = pd.pivot_table(data[(data['New_category_ID'] > 0)&(data['YYYY'] == 2016)], index = 'New_category',  values=['GrossRevenue_GBP','MOVC_GBP','PM_GBP'],aggfunc=stats.trim_mean(0.1))

我收到以下错误:

TypeError: trim_mean() 缺少 1 个必需的位置参数:'proportiontocut'

stats.trim_mean() 接受两个参数,一个是数据,另一个是要从数据的每一端删除的数据百分比。在这种情况下,我指定 10%。

如果我正在尝试创建数据透视表,我该如何解决指定列/数据框的需求?

非常感谢一些帮助

【问题讨论】:

  • aggfunc=lambda x: stats.trim_mean(x, 0.1)
  • @ayhan - 非常感谢。它运行完美,但是当我使用 Excel 进行验证时,似乎 Excel 的修剪平均值与 Python 给出的修剪平均值不同。现在需要决定哪个是正确的......如果你把它作为一个答案,我会批准它
  • 这可能是他们计算百分位数的方式造成的差异(有几种方法)。
  • 最有可能......在进一步验证中,当我说在 Python 中截断平均值为 0.5(即中位数)并将其与 Excel 中计算的中位数进行比较时,它们是相同的。但是,当我在 Excel 中截断平均值 0.5 时,它给出的结果与在 Excel 中计算的中位数不同。我将使用 Python 截断的平均结果。再次感谢

标签: python pandas pivot mean truncated


【解决方案1】:

您可以使用 lambda 函数:

pivot = pd.pivot_table(data[(data['New_category_ID'] > 0) & (data['YYYY']==2016)], 
                       index='New_category',
                       values=['GrossRevenue_GBP', 'MOVC_GBP', 'PM_GBP'],
                       aggfunc=lambda x: stats.trim_mean(x, 0.1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 2020-12-18
    • 2021-10-18
    • 2019-04-05
    • 2019-10-12
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    相关资源
    最近更新 更多