我经常处理有很长尾巴的数据,我想用直方图来概括分布,但当我尝试使用Pandas时,我得到的是一个条形图,只有一个巨大的可见条形,其他的都是不可见的。
下面是我正在使用的序列的一个例子,因为它很长,所以我使用了value_counts(),这样它就可以适合这个页面。
In [10]: data.value_counts.sort_index()
Out[10]:
0 8012
25 3710
100 10794
200 11718
300 2489
500 7631
600 34
700 115
1000 3099
1200 1766
1600 63
2000 1538
2200 41
2500 208
2700 2138
5000 515
5500 201
8800 10
10000 10
10900 465
13000 9
16200 74
20000 518
21500 65
27000 64
53000 82
56000 1
106000 35
530000 3
我猜答案是把不太常见的结果分成更大的组(53000、56000、106000和53000分成一个〉50000的组,等等),并且改变y索引来表示出现的百分比而不是绝对数字,但是,我不知道我将如何自动地做到这一点。
2条答案
按热度按时间0s7z1bwu1#
绘制为条形图:
作为直方图(限于值5000 &以下是〉97%的数据):我喜欢用linspace来控制桶。
编辑:将
np.linspace(0,5000,100)
更改为np.linspace(0,5000,101)
并更新直方图。67up9zun2#
通常,heavy tail distributions以幂律尾结尾,例如Pareto distribution,在这种情况下,一个powerfull表示将是log-log plot,这在python中很容易实现,见例如。
请注意,提取一些值可能是查看幂律分布的低效方法。
还要考虑数据的Pareto analysis。
如果你对幂律分布感兴趣,你可以阅读更多关于分类数据在构造上本质上是幂律的事实,因为它们不能被排序,这是Vitold Belevitch在1959年的一个结果。