gpt4 book ai didi

python - Dask DataFrame 聚合至中位数

转载 作者:行者123 更新时间:2023-12-01 17:30:50 27 4
gpt4 key购买 nike

我正在尝试将 dask 数据帧聚合为一组指标,包括中位数,但看起来不支持该中位数。有机会聚合并获得中位数吗?

st_agg = df.groupby(['start station id', 'end station id']).agg({'usertype':'count', 'tripduration':'median'})

>>> ValueError: unknown aggregate median

最佳答案

截至 2021 年 10 月 6 日,Dask 尚未实现此功能。有一个开放的功能请求 here .

特定情况的解决方法

针对同一个问题,下面的代码适用于特定用例,其中每个分组列的数据恰好适合 1 个分区:

ddf = dask.datasets.timeseries()
ddf = ddf.set_index('id')

median_fun = dd.Aggregation(
name="median",
# this computes the median on each partition
chunk=lambda s: s.median(),
# this combines results across partitions; the input should just be a list of length 1
agg=lambda s0: s0.sum(),
)

median_ddf = ddf.groupby("id")["x"].agg(median_fun)

通用解决方案

对于较大的数据集,您可以构建一个自定义聚合函数,使用“dd.groupby.Aggregation”计算中位数(或第 50 个百分位数)。如果您这样做,请考虑将其作为 PR 提交以解决上面列出的功能请求。

请参阅此处的文档:https://docs.dask.org/en/stable/generated/dask.dataframe.groupby.Aggregation.html#dask-dataframe-groupby-aggregation

中位数与第 50 个百分位

请注意,对于大多数实际用途,在处理大型数据集时,第 50 个百分位数和中位数是等效的: https://math.stackexchange.com/questions/2048470/is-50th-percentile-equal-to-median

关于python - Dask DataFrame 聚合至中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43812272/

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