- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
正常的 groupby 均值很简单:
df.groupby(['col_a','col_b']).mean()[col_i_want]
但是,如果我想应用一个 winsorized 均值(默认限制为 0.05 和 0.95),这相当于裁剪数据集然后执行均值,突然间似乎没有简单的方法可以做到这一点?我必须:
winsorized_mean = []
col_i_want = 'col_c'
for entry in df['col_a'].unique():
for entry2 in df['col_b'].unique():
sub_df = df[(df['col_a'] == entry) & (df['col_b'] == entry2)]
m = sub_df[col_to_groupby].clip(lower=0.05,upper=0.95).mean()
winsorized_mean.append([entry,entry2,m])
是否有我不知道的自动执行此操作的功能?
最佳答案
您可以使用 scipy.stats.trim_mean :
import pandas as pd
from scipy.stats import trim_mean
# label 'a' will exhibit different means depending on trimming
label = ['a'] * 20 + ['b'] * 80 + ['c'] * 400 + ['a'] * 100
data = list(range(100)) + list(range(500, 1000))
df = pd.DataFrame({'label': label, 'data': data})
grouped = df.groupby('label')
# trim 5% off both ends
print(grouped.apply(stats.trim_mean, .05))
# trim 10% off both ends
print(grouped.apply(stats.trim_mean, .1))
关于python - Pandas groupby winsorized 均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59241970/
我试图弄清楚如何对纵向数据集中的个人分组观察进行 winsorize。 我从这个开始 excellent answer关于如何从变量的均值中删除 >2 个标准差的数据。作者还帮助展示了如何在类别内做到
我有一个时间序列 pandas 数据框,并且我计算了一个新列 df['std_series']= ( df['series1']-df['series1'].rolling(252).mean() )
正常的 groupby 均值很简单: df.groupby(['col_a','col_b']).mean()[col_i_want] 但是,如果我想应用一个 winsorized 均值(默认限制为
我想对 pandas 数据框中的几列数据进行winsorize。每列都有一些 NaN,这会影响 winsorization,因此需要将它们删除。我知道如何执行此操作的唯一方法是为所有 数据删除它们,而
我正在尝试在 pandas 中为 Python 运行 Winsorized 回归。 very helpful user manual提供此示例代码: winz = rets.copy() std_1y
我正在尝试实现一个 winsorization 函数,但对它的确切定义感到困惑。显然,R包中的winsorize函数,DescTool,以及Python库中的winsorize函数,scipy.sta
我正在尝试使用 Winsorize() 包中的 lapply 应用 library(DescTools) 函数。我目前拥有的是; data$col1 data$col1 [1] -0.0677
我正在尝试对包含 NaN 的 pandas 系列进行 winsorize。使用掩码可以转义 NaN,但它只会在找到百分位值时转义 NaN,然后用该值替换 NaN,这不是我想要的。 例如,df 由
我是一名优秀的程序员,十分优秀!