gpt4 book ai didi

python - 子集 Pandas 中的多层次数据

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:20 24 4
gpt4 key购买 nike

我成功地使用 groupby() 函数来计算分组数据的统计信息,但是,我现在想对每个组的子集执行相同的操作。

我似乎无法理解如何为每个组生成子集(作为 groupby 对象),然后将其应用于 groupby 函数,例如 mean()。以下行按预期工作:

d.groupby(['X','Y'])['Value'].mean()

如何对各个组的值进行子集化,然后提供给均值函数?我怀疑 transform() 或 filter() 可能有用,但我不知道如何使用。

编辑以添加可重现的示例:

random.seed(881)
value = np.random.randn(15)
letter = np.random.choice(['a','b','c'],15)
date = np.repeat(pd.date_range(start = '1/1/2001', periods=3), 5)
data = {'date':date,'letter':letter,'value':value}
df = pd.DataFrame(data)
df.groupby(['date','letter'])['value'].mean()

date letter
2001-01-01 a -0.039407
b -0.350787
c 1.221200
2001-01-02 a -0.688744
b 0.346961
c -0.702222
2001-01-03 a 1.320947
b -0.915636
c -0.419655
Name: value, dtype: float64

下面是计算多级组均值的示例。现在我想求出每个组的子集的平均值。例如,每组数据的平均值 < 组的第 10 个百分位数。关键是子集必须在组上执行,而不是首先对整个 df 执行。

最佳答案

我认为您要查找的函数是 quantile() ,您可以将其添加到 groupby().apply() 语句中。对于第十个百分位数,使用 quantile(.1):

df.groupby(['date','letter'])['value'].apply(lambda g: g[g <= g.quantile(.1)].mean())

关于python - 子集 Pandas 中的多层次数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52998654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com