Python 熊猫群比不';应用分位数后是否仍保持不变?

Python 熊猫群比不';应用分位数后是否仍保持不变?,python,pandas,Python,Pandas,我试图得到一个函数中两个不同组的分位数。我能够应用分位数函数并获得一个带有分组结果的表,但是,在这样做之后,我似乎无法调用dataframe上的groupby属性。例如: rand = np.random.RandomState(1) df = pd.DataFrame({'A': ['foo', 'bar'] * 3, 'B': rand.randn(6), 'C': rand.randint(0, 20, 6)})

我试图得到一个函数中两个不同组的分位数。我能够应用分位数函数并获得一个带有分组结果的表,但是,在这样做之后,我似乎无法调用dataframe上的groupby属性。例如:

rand = np.random.RandomState(1)
df = pd.DataFrame({'A': ['foo', 'bar'] * 3,
                   'B': rand.randn(6),
                   'C': rand.randint(0, 20, 6)})
gb = df.groupby(['A'])
gb.groups
这将返回类似于:

{'bar': [1, 3, 5], 'foo': [0, 2, 4]}
然后我应用分位数函数:

q=gb.quantile(np.arange(0,1.1,.1))
当我打印此df时,它会显示两个组,但当我尝试调用它们时,它会抛出一个错误:

q.group
AttributeError: 'DataFrame' object has no attribute 'group'
如何调用分位数数据帧中的组?

(首先,请注意您的代码缺失

import numpy as np
import numpy.random as rand
或者诸如此类。第二个有点让人讨厌。)

你的两行

gb = df.groupby(['A'])
q=gb.quantile(np.arange(0,1.1,.1))
相当于

q=df.groupby(['A']).quantile(np.arange(0,1.1,.1))
换句话说,
q
已经是对每组应用分位数的结果。您要查找的结果是
q
本身:

>>> q
                B     C
A                      
bar 0.0 -1.311556  13.0
    0.1 -1.188745  13.2
    0.2 -1.065935  13.4
    0.3 -0.943124  13.6
    0.4 -0.820313  13.8
    0.5 -0.697503  14.0
    0.6 -0.662497  14.4
    0.7 -0.627492  14.8
    0.8 -0.592486  15.2
    0.9 -0.557481  15.6
    1.0 -0.522475  16.0
foo 0.0  0.032946   1.0
    0.1  0.051352   4.0
    0.2  0.069759   7.0
    0.3  0.088166  10.0
    0.4  0.106572  13.0
    0.5  0.124979  16.0
    0.6  0.388895  16.2
    0.7  0.652811  16.4
    0.8  0.916728  16.6
    0.9  1.180644  16.8
    1.0  1.444560  17.0

您可以使用以下索引调用特定组:

q.loc['foo']

这并没有回答问题,因为我正试图找出如何呼叫特定的组。但是我想我已经弄明白了。@Ami,分位数是怎么计算的,
B
C
的值比原始数据中的要多,这些是插值吗?@alancalvitti-Hmm,不确定我是否会称之为“插值”。如果您要求的分位数值比原始值多,那么您肯定会得到一些重复的元素。这就是你的意思吗?@AmiTavory,对,但这些值不是重复的,它们似乎是线性插值的。