频率python中带有垃圾箱的累积直方图

时间:2019-12-03 14:35:14

标签: python numpy scipy cumulative-frequency

histogram barplot and cumulative histogram curve

我正在寻找一个python函数来获取频率的累积曲线,该曲线具有规则间隔的频率(y轴)而不是值(x轴)。在此图像上,点的采样对于x轴是规则间隔的,我希望它对于y轴是规则的。

该函数的输出将是常规百分位数,从0到100乘以n,以及对应于这些百分位数的值。

它对应于scipy.stats.cumfreq,但具有对应于y轴(频率或百分比)而不是x轴(值)的数字键。

此功能是我正在寻找的内容的草稿

def cumfreq_even_freq(array, nbins):
    array = array.flatten()
    array.sort()
    step = len(array)/nbins
    percents = [(i*step * step)/len(array) for i in range(nbins)]
    values = [array[i*step +step] for i in range(nbins)]
    return percents, values

1 个答案:

答案 0 :(得分:1)

一个非常粗糙的版本,您可以使用熊猫的qcut

# toy data
np.random.seed(1)
a = np.random.rand(100)

# Quantile cut into 10 bins
cuts = (pd.qcut(a, np.arange(0,1,0.1))    # change arange to your liking
          .value_counts().cumsum()
       ) 

plt.plot([a.right for a in cuts.index], cuts, marker='s')

输出:

enter image description here