关于python:Pandas groupby分位数值

Pandas groupby quantile values

我试图从数据框中计算特定的分位数,如下代码所示。 分开计算时没有问题。

尝试运行最后两行时,出现错误" AttributeError:'SeriesGroupBy'对象没有属性'quantile(0.25)'"。 我怎样才能解决这个问题?

1
2
3
4
5
6
7
8
9
10
11
12
13
import pandas as pd
raw_data = {'x': [0, 1, 0, 1, 0, 1, 0, 1],
    'y': [7, 6, 5, 4, 3, 2, 1, 0],
    'number': [25000, 35000, 45000, 50000, 60000, 70000, 65000, 36000]}
df = pd.DataFrame(raw_data)
f = {'number': ['median', 'std', 'quantile']}
df1 = df.groupby('x').agg(f)
df.groupby('x').quantile(0.25)
df.groupby('x').quantile(0.75)

#code below with problem:
f = {'number': ['median', 'std', 'quantile(0.25)', 'quantile(0.75)']}
df1 = df.groupby('x').agg(f)


我更喜欢def函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def q1(x):
    return x.quantile(0.25)

def q2(x):
    return x.quantile(0.75)

f = {'number': ['median', 'std', q1,q2]}
df1 = df.groupby('x').agg(f)
df1
Out[1643]:
  number                            
  median           std     q1     q2
x                                  
0  52500  17969.882211  40000  61250
1  43000  16337.584481  35750  55000