Я хотел бы указать возвращаемые типы dtypes при выполнении pandas.read_sql. В частности, меня интересует сохранение памяти и наличие значений float, возвращаемых как np.float32, а не np.float64. Я знаю, что я могу конвертировать впоследствии с помощью astype (np.float32), но это не решает проблему больших требований к памяти в исходном запросе. В моем фактическом коде я буду тянуть 84 миллиона строк, а не 5, показанных здесь. pandas.read_csv позволяет указывать dtypes как dict, но я не вижу способа сделать это с помощью read_sql.Задание типов dtypes для read_sql в pandas
Я использую MySQLdb и Python 2.7.
Как видно, read_sql использует гораздо больше памяти во время работы (около 2x), чем требуется для последнего хранилища DataFrame.
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