如何使用Python/Numpy计算百分位数?

300
有没有一种方便的方法来计算序列或单维度的numpy数组的百分位数?
我正在寻找类似于Excel的百分位函数的方法。

一个关于从频率计算百分位数的相关问题:https://dev59.com/sILba4cB1Zd3GeqPZRLE - newtover
一个与pandas数据框相关的问题:python - 查找给定列的百分位统计信息 - undefined
12个回答

1

针对一系列函数:用于描述函数

假设您有一个包含以下列销售和ID的数据框。您想要为销售计算百分位数,那么它的运作方式如下:

df['sales'].describe(percentiles = [0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1])

0.0: .0: minimum
1: maximum 
0.1 : 10th percentile and so on

0

我引导数据,然后绘制了10个样本的置信区间。 置信区间显示概率将在5%和95%概率之间落在哪个范围内。

 import pandas as pd
 import matplotlib.pyplot as plt
 import seaborn as sns
 import numpy as np
 import json
 import dc_stat_think as dcst

 data = [154, 400, 1124, 82, 94, 108]
 #print (np.percentile(data,[0.5,95])) # gives the 95th percentile

 bs_data = dcst.draw_bs_reps(data, np.mean, size=6*10)

 #print(np.reshape(bs_data,(24,6)))

 x= np.linspace(1,6,6)
 print(x)
 for (item1,item2,item3,item4,item5,item6) in bs_data.reshape((10,6)):
     line_data=[item1,item2,item3,item4,item5,item6]
     ci=np.percentile(line_data,[.025,.975])
     mean_avg=np.mean(line_data)
     fig, ax = plt.subplots()
     ax.plot(x,line_data)
     ax.fill_between(x, (line_data-ci[0]), (line_data+ci[1]), color='b', alpha=.1)
     ax.axhline(mean_avg,color='red')
     plt.show()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接