- pandas 分位数
df.quantile(q=0.75)
计算分位数: p o s = 1 + ( n − 1 ) ∗ q pos = 1+(n-1)*q pos=1+(n−1)∗q
p o s = i n t e g e r + f l o a t ( 整 数 部 分 + 小 数 部 分 ) pos = integer + float(整数部分 + 小数部分) pos=integer+float(整数部分+小数部分)
ans = df[integer-1] + float * (df[integer] - df[integer - 1])
举个例子:
定义一个DataFrame
df = pd.DataFrame({'key1':np.arange(0,6),
'key2':np.arange(6,12)})
print(df)
key1 key2
0 0 6
1 1 7
2 2 8
3 3 9
4 4 10
5 5 11
- 通过函数直接求出结果
df.quantile(q=0.75)
key1 3.75
key2 9.75
Name: 0.75, dtype: float64
- 通过给出的公式求:
import math
q = 0.75
pos = 1 + (len(df) - 1) * q
ret,integer = math.modf(pos)#求出分位的小数部分和整数部分
print('整数部分是%f,小数部分是%f'%(integer,ret))
ans = df['key1'][int(integer)-1] + ret * (df['key1'][int(integer)] - df['key1'][int(integer)-1])
print('key1 ',ans)
ans2 = df['key2'][int(integer)-1] + ret * (df['key2'][int(integer)] - df['key2'][int(integer)-1])
print('key2 ',ans2)
整数部分是4.000000,小数部分是0.750000
key1 3.75
key2 9.75