Python, matplotlib, numpy, ヒストグラム作成ではまったこと、と、データフレームで四捨五入する方法

最初に四捨五入方法。

In [18]: import pandas as pd

In [19]: import numpy as np

In [20]: df = pd.DataFrame(np.random.randn(5,5))

In [21]: df
Out[21]:
          0         1         2         3         4
0  0.526538  0.935121 -0.380063  1.887691 -1.099712
1 -0.694135 -0.701937 -0.185376 -0.882083 -0.362608
2 -0.251160 -1.481272 -0.531596 -0.592860  0.071228
3  0.799474 -0.863690 -0.655341  0.892312 -0.919916
4  0.569095 -1.000627 -1.341155 -0.787124  0.653107

In [22]: df * 10
Out[22]:
          0          1          2          3          4
0  5.265380   9.351208  -3.800635  18.876909 -10.997121
1 -6.941348  -7.019370  -1.853760  -8.820831  -3.626079
2 -2.511598 -14.812725  -5.315956  -5.928598   0.712280
3  7.994738  -8.636899  -6.553408   8.923119  -9.199162
4  5.690947 -10.006265 -13.411545  -7.871240   6.531069

In [23]: np.round(df * 10)
Out[23]:
   0   1   2   3   4
0  5   9  -4  19 -11
1 -7  -7  -2  -9  -4
2 -3 -15  -5  -6   1
3  8  -9  -7   9  -9
4  6 -10 -13  -8   7

で、ヒストグラム。 matplotlib + pandas でヒストグラムを作る場合、データフレームの最初は必ずx=0 でスタートしないとエラーになる。

In [30]: df
Out[30]:
   0   1   2   3   4
0  5   9  -4  19 -11
1 -7  -7  -2  -9  -4
2 -3 -15  -5  -6   1
3  8  -9  -7   9  -9
4  6 -10 -13  -8   7

In [31]: df[ df[0] < 0 ]
Out[31]:
   0   1  2  3  4
1 -7  -7 -2 -9 -4
2 -3 -15 -5 -6  1

上のように、index=0があればいいが、 df[0] < 0 で要素を絞ると、indexが0からでなくなる。

その場合、しょうがないので、 データフレーム作りなおした。

In [32]: df0 = df[ df[0] < 0 ]

In [33]: df0
Out[33]:
   0   1  2  3  4
1 -7  -7 -2 -9 -4
2 -3 -15 -5 -6  1

In [34]: pd.DataFrame(df0.values, columns=df0.columns)
Out[34]:
   0   1  2  3  4
0 -7  -7 -2 -9 -4
1 -3 -15 -5 -6  1

で、回避できたよ。

numpy.random