s.index=[0.0,1.1,2.2,3.3,4.4,5.5]
s.index
# Float64Index([0.0, 1.1, 2.2, 3.3, 4.4, 5.5], dtype='float64')
s
# 0.0    141.125
# 1.1    142.250
# 2.2    143.375
# 3.3    143.375
# 4.4    144.500
# 5.5    145.125
s.index=s.index.astype('float32')
# s.index
# Float64Index([              0.0, 1.100000023841858, 2.200000047683716,
#               3.299999952316284, 4.400000095367432,               5.5],
#              dtype='float64')

В чем заключается интуиция индексов с плавающей запятой? Пытаюсь понять, когда мы будем использовать их вместо индексов int (похоже, у вас может быть три типа индексов: int64, float64 или объект, например s.index=['a','b','c','d','e','f']).

Из приведенного выше кода также похоже, что Pandas действительно хочет, чтобы индексы с плавающей запятой были в 64-битном формате, так как эти 64-битные числа с плавающей запятой переводятся в 32-битные числа с плавающей запятой, а затем обратно в 64-битные числа с плавающей запятой с {{X0} } оставшегося индекса 'float64'.

Как люди используют индексы с плавающей запятой?

Есть ли идея, что у вас может быть какой-то статистический расчет по данным и вы хотите ранжировать его результат, но эти результаты могут быть плавающими? И мы хотим заставить float64 избежать потери разрешения?

9
phoenixdown 14 Июн 2020 в 09:50

1 ответ

Лучший ответ

Индексы с плавающей запятой обычно бесполезны для индексирования на основе меток из-за общих ограничений с плавающей запятой. Конечно, pd.Float64Index присутствует в API для полноты картины, но это не всегда означает, что вы должны его использовать. Джефф (участник основной библиотеки) сказал следующее на github:

[...] Фактически использовать индекс с плавающей запятой редко бывает необходимо; вам часто будет лучше, если вы воспользуетесь колонкой. Смысл индекса - сделать отдельные элементы быстрее, например. df [1.0], но это довольно сложно; это причина возникновения проблемы по этому поводу.

Сложность, связанная с наличием 1.0 == 1.0, не всегда верна, в зависимости от того, как вы представляете это 1.0 в битах.

Плавающие индексы полезны в нескольких ситуациях (как указано в выпуске github), в основном для записи временной оси (времени) или чрезвычайно минутных / точных измерений, например, в астрономических данных. Для большинства других случаев существует pd.cut или pd.qcut для биннинга ваши данные, потому что работать с категориальными данными обычно проще, чем с непрерывными данными.

8
cs95 14 Июн 2020 в 07:04