Pandas / numpy поставляются с множеством dtypes для числовых значений.
Из соображений памяти и вычислений я стараюсь быть максимально понятным.
Исходя из postgres мира , я пытаюсь привести NUMERIC(8,3)
к подходящему dtype
.
Легко сказать, NUMERC(8,3)
может представлять все числа с пятью цифрами до и 3 цифрами после точки (IT парень в математике ..). Макс. будет 9999.99
, мин. 0
.
. Есть ли в pandas более точные типы данных / numpy, чтобы определить это как postgresql? В каком виде dtype
такое значение должно храниться?
df['my_numeric'] = df['my_numeric'].as_type('???')
РЕДАКТИРОВАТЬ после двух ответов:
Я больше изучаю расходы меньше места. Например, df.memory_usage()
на кадре данных размером 374 КБ, показывает 3 МБ на float64
, 1,5 МБ на float32
, 750 КБ на 16-битном и 375 КБ на 8-битном столбце.
Так что, если я правильно понял, мне нужно 13 бит для основного числа и 7 бит для точности. float 64
имеет 11-битную экспоненту, 52-битную мантиссу и может хранить все значения. Но для этого также требуется больше памяти, чем было бы на самом деле необходимо.