0

直方图条形图和累积直方图曲线

我正在寻找一个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

4

1 回答 1

1

一个非常粗略的版本,你可以使用 pandas' 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')

输出:

在此处输入图像描述

于 2019-12-03T14:52:45.653 回答