甚至在x轴上分布百分位标签

时间:2016-12-28 17:48:37

标签: python pandas matplotlib plot quantile

原谅我的术语,我不是统计学或绘图方面的专家!

使用Pandas,我试图绘制被分配到“5 9s”的分位数据。也就是说,对于给定的DataFrame'df',它具有一系列不均匀分布的整数值的'foo':

q = df['foo'].quantile([.1, .2, .3, .4, .5, .6, .7, .8, .9, .99, .999, .9999, .99999, 1])
q.plot()

压缩0.9和1.0之间的x轴间隔的图表中的结果: enter image description here

有没有办法在x轴上均匀分隔分位数桶?

谢谢!

2 个答案:

答案 0 :(得分:0)

我会使用pd.qcut

示例

import pandas as pd
import numpy as np

a = np.sort(np.random.rand(1000))
b = a.repeat(np.arange(len(a)))
b += np.random.rand(len(b)) / 100
s = pd.Series(b)

s.hist()

enter image description here

你想要这个
使用你想要的许多垃圾箱。我用过20.我也传递了一个标签参数。没有它,大熊猫将标记切割所在的边缘。

q = pd.qcut(s, 20, labels=range(20))

答案 1 :(得分:0)

根据lmo的建议,这是适用于我的解决方案。

对于具有系列'A'的给定数据帧'df':

percentiles = [.1, .2, .3, .4, .5, .6, .7, .8, .9, .99, .999, .9999, .99999, 1.0]

pct = df['A'].quantile(percentiles)
xticks = range(0, len(percentiles), 1)
ax = pct.plot (xticks=xticks)
ax.set_xticklabels([str(p) for p in percentiles)
plt.show()

enter image description here