Как конвертировать числа с плавающей точкой в int в Pandas
Быстрый ответ
Для преобразования чисел с плавающей точкой в целые числа в Pandas используйте метод .astype()
с аргументом 'int'
или 'Int64'
. Применять его можно как к отдельным столбцам, так и ко всему DataFrame.
Вот примеры использования:
df['col'] = df['col'].astype(int) # Применение к конкретному столбцу
df = df.astype(int) # Применение ко всему DataFrame
Обработка пропущенных значений и округление
Работая с числами с плавающей точкой, следует обращать внимание на округление и обработку пропущенных значений. Чтобы заменить пропущенные значения (NaN), используйте fillna(0.0)
перед преобразованием типов данных. Для сохранения точности данных после округления используйте функцию round()
:
# Будьте аккуратны c NaN, они — тихие разрушители данных!
df['col'] = df['col'].fillna(0.0).round().astype('Int64')
df = df.fillna(0.0).round().astype('Int64') # Округляем и сразу боремся с NaN! 👊
Массовое преобразование: Мощный ход
Для больших DataFrame требуются эффективные способы преобразования данных. Используйте applymap(np.int64)
для точного преобразования на больших объемах и select_dtypes(include=['float64'])
для отбора и преобразования только столбцов с числами с плавающей точкой:
# Выбираем столбцы с числами с плавающей точкой
float_cols = df.select_dtypes(include=['float64']).columns
# Преобразуем эти столбцы к целочисленному типу
df[float_cols] = df[float_cols].applymap(np.int64)
Изменение отображения: Камуфляж
Если вы хотите оставить данные в формате с плавающей точкой, но при этом отображать их как целые числа, сделать это можно с помощью options.display.float_format
:
# "Я всего лишь целое число, во мне нет ничего подозрительного!" 🕵️♂️
pd.options.display.float_format = '{:,.0f}'.format
Контроль типа целого числа: Контрольный пункт
Иногда данные требуют конкретного типа целого числа в зависимости от их размера или знака. В таком случае используйте специальные типы, такие как np.int8
, np.int16
, np.int32
или np.int64
:
# "Мне нужен не просто целый тип, я выбираю int32!" 😍
df['col'] = df['col'].astype(np.int32)
Визуализация
Представьте данный DataFrame как поднос, на котором числа с плавающей точкой выглядят как фрукты:
DataFrame-поднос: [🍏 2.0, 🍊 3.5, 🍋 4.9, 🍉 5.0]
При преобразовании этих чисел в целые, это можно представить как нож для фруктов (🔪), который отрезает дробную часть:
Применяем: df.astype(int)
И в итоге, все фрукты становятся идеальными целыми числами:
🔪➡️ [🍏 2, 🍊 3, 🍋 4, 🍉 5]
Обратите внимание, что это преобразование необратимо: десятичные доли теряются навсегда!
Сознательное преобразование: Сохранение целостности данных
Преобразование чисел с плавающей точкой в целые часто приводит к потере информации, это можно сравнить с потерей чемодана в аэропорту. Поэтому необходимо тщательно подходить к конвертации, сохраняя целостность данных.
Импорт данных: Задание типов
При импорте данных можно сразу задать нужный тип данных с помощью dtype='Int64'
. Это можно сравнить с маркировкой багажа – вы точно знаете, что в него запаковали:
# "Добро пожаловать на борт, целочисленные путешественники типа Int64!" 🛫
df = pd.read_csv('file.csv', dtype={'col': 'Int64'})
Проверка после преобразования: Перепроверка данных
Не забывайте проверять изменения! Действительно ли все данные сохранились? Для проверки используйте df.dtypes
:
# "Все данные на месте!" – Удовлетворенный аналитик данных 🧑🔬
print(df.dtypes)
Лучшая производительность: Эффективная конвертация
Для улучшения производительности используйте векторные операции типа applymap()
. После преобразования важно вернуть измененные столбцы обратно в DataFrame:
# "Applymap — это волшебник в мире векторных карт!" – Возможно, немного озадаченный аналитик данных
df[float_cols] = df[float_cols].applymap(lambda x: int(round(x)))
Полезные материалы
- pandas.DataFrame.astype — документация pandas 2.2.0
- Преобразование чисел с плавающей точкой в целые в Pandas? – Stack Overflow
- numpy.ndarray.astype — Руководство NumPy v1.26
- Как преобразовать строки в числа с плавающей точкой в DataFrame Pandas – Data to Fish
- Работа с пропущенными данными — документация pandas 2.2.0
- Преобразование типов в Python
- DataFrame в pandas: как сделать работу с данными удобной – Real Python