簡體   English   中英

如何計算pandas multiindex DataFrame中的分位數?

[英]How to calculate quantiles in a pandas multiindex DataFrame?

我有一個pandas multiindex 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不起作用 - 奇怪的是,分位數沒有'level'參數。

如何以與中位數等相同的方式計算給定的分位數?

通過首先按多指數級別分組來應用quantile功能:

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'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM