pandas.read_sqlを実行するときに返されるdtypesを指定したいと思います。特に私はメモリを節約し、float値をnp.float32の代わりにnp.float32として返すことに興味があります。私は後でastype(np.float32)で変換できることを知っていますが、それは最初のクエリで大きなメモリ要件の問題を解決しません。私の実際のコードでは、ここに示した5行ではなく、8400万行を取得します。 pandas.read_csvではdtypesをdictとして指定できますが、read_sqlでdtypesを行う方法はありません。pandasでread_sqlのdtypesを指定する
私はMySQLdbとPython 2.7を使用しています。
read_sqlは、最終的なDataFrameストレージに必要なメモリよりもはるかに多くのメモリを使用しているようです(約2倍)。
In [70]: df=pd.read_sql('select ARP, ACP from train where seq < 5', connection)
In [71]: df
Out[71]:
ARP ACP
0 1.17915 1.42595
1 1.10578 1.21369
2 1.35629 1.12693
3 1.56740 1.61847
4 1.28060 1.05935
In [72]: df.dtypes
Out[72]:
ARP float64
ACP float64
dtype: object
。 – Konstantin