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
で、回避できたよ。