【发布时间】:2017-08-17 17:51:04
【问题描述】:
有没有办法将连续数据分箱成预定义的间隔来创建条形图?例如,
In[1]: df
Out[1]:
0 0.729630
1 0.699620
2 0.710526
3 0.000000
4 0.831325
5 0.945312
6 0.665428
7 0.871845
8 0.848148
9 0.262500
10 0.694030
11 0.503759
12 0.985437
13 0.576271
14 0.819742
15 0.957627
16 0.814394
17 0.944649
18 0.911111
19 0.113333
20 0.585821
21 0.930131
22 0.347222
23 0.000000
24 0.987805
25 0.950570
26 0.341317
27 0.192771
28 0.320988
29 0.513834
231 0.342541
232 0.866279
233 0.900000
234 0.615385
235 0.880597
236 0.620690
237 0.984375
238 0.171429
239 0.792683
240 0.344828
241 0.288889
242 0.961686
243 0.094402
244 0.960526
245 1.000000
246 0.166667
247 0.373494
248 0.000000
249 0.839416
250 0.862745
251 0.589873
252 0.983871
253 0.751938
254 0.000000
255 0.594937
256 0.259615
257 0.459916
258 0.935065
259 0.969231
260 0.755814
而不是简单的直方图:
df.hist()
我需要创建一个条形图,其中每个条形图将计算预定义范围内的实例数。 例如,下面的图应该有三个条形图,点数分别为:[0 0.35]、[0.35 0.7] [0.7 1.0]
编辑
非常感谢您的回答。另一个问题,如何订购垃圾箱? 例如,我得到以下结果:
In[349]: out.value_counts()
Out[349]:
[0, 0.001] 104
(0.001, 0.1] 61
(0.1, 0.2] 32
(0.2, 0.3] 20
(0.3, 0.4] 18
(0.7, 0.8] 6
(0.4, 0.5] 6
(0.5, 0.6] 5
(0.6, 0.7] 4
(0.9, 1] 3
(0.8, 0.9] 2
(1, 1.001] 0
如您所见,最后三个 bin 没有排序。如何根据“类别”或我的垃圾箱对数据框进行排序?
编辑 2
刚刚找到解决方法,只需使用'reindex()'即可:
In[355]: out.value_counts().reindex(out.cat.categories)
Out[355]:
[0, 0.001] 104
(0.001, 0.1] 61
(0.1, 0.2] 32
(0.2, 0.3] 20
(0.3, 0.4] 18
(0.4, 0.5] 6
(0.5, 0.6] 5
(0.6, 0.7] 4
(0.7, 0.8] 6
(0.8, 0.9] 2
(0.9, 1] 3
(1, 1.001] 0
【问题讨论】:
标签: python pandas histogram bar-chart