gpt4 book ai didi

python - 如何计算 Pandas 多索引数据帧中的分位数?

转载 作者:太空狗 更新时间:2023-10-30 02:42:27 24 4
gpt4 key购买 nike

我有一个 pandas 多索引 DataFrame,我想计算其值在特定索引级别上的分位数。最好举例说明。

首先,让我们创建 DataFrame:

import itertools
import pandas as pd
import numpy as np

item = ('A', 'B')
item_type = (0, 1, 2)
location = range(5)
idx = pd.MultiIndex.from_tuples(list(itertools.product(item, item_type, location)),names=('Item', 'Type', 'Location'))
df = pd.DataFrame(np.random.randn(len(idx), 3), index=idx,columns=('C1', 'C2', 'C3'))
df

假设我们要计算所有位置的每个项目和类型的列值的中值表。使用内置的 .median 方法很容易做到这一点:

median_df = df.median(level=[0,1])
median_df

这将生成一个包含 multiindex=(Item, Type) 的三列 DataFrame。它适用于大多数常见函数,例如 .mean、.max、.min 等。

但它不适用于 .quantile——奇怪的是,quantile 没有 'level' 参数。

我怎样才能像计算中位数等一样计算给定的分位数?

最佳答案

通过首先按您的多索引级别分组来应用分位数函数:

df.groupby(level=[0,1]).quantile()

相同的结果将适用于 median 函数,因此以下行等同于您的代码 df.median(level=[0,1]):

df.groupby(level=[0,1]).median()

针对 groupby 函数返回的 GroupBy 对象,您还有 agg 函数,它允许您一次批量调用多个函数,并且生成的数据框将具有多个列级别:

df.groupby(level=[0,1]).agg(['median', 'quantile'])

关于python - 如何计算 Pandas 多索引数据帧中的分位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36460368/

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