Я пытаюсь загрузить относительно большой объем данных из базы данных, и я хотел оптимизировать мой фрейм данных, назначая соответствующие типы данных перед началом загрузки. Но пока что я смог найти, что я могу оптимизировать типы данных только после того, как я загрузил фрейм данных, и я вижу, что это происходит из приведенного ниже кода. Поэтому, если есть какой-либо другой способ раннего назначения типов данных, который действительно помог бы мне управлять требованиями к памяти моего кода.
dbdf = pd.DataFrame(columns=['ID', 'Incr', 'Found'])
dbdf = dbdf.astype({'ID': str, 'Incr': np.int16, 'Found': str})
dbdf = pd.read_sql(
'SELECT substring_index(ID, \'.\', 2) as ID, Incr, \'Y\' as Found FROM database.',
conn, coerce_float=True) # database dataframe
print('$$$$$BEFORE$$$$$')
print(dbdf.memory_usage())
print(dbdf.dtypes)
print('$$$$$AFTER$$$$$')
dbdf = dbdf.astype({'ID': np.float64, 'Incr': np.int16, 'Found': str})
print(dbdf.memory_usage())
print(dbdf.dtypes)
Ниже приведены результаты
$$$$$BEFORE$$$$$
ID 6695328
Incr 6695328
Found 6695328
dtype: int64
ID object
Incr int64
found object
$$$$$AFTER$$$$$
ID 6695328
Incr 1673832
Found 6695328
dtype: int64
ID float64
Incr int16
Found object