Как конвертировать числа с плавающей точкой в int в Pandas

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для преобразования чисел с плавающей точкой в целые числа в Pandas используйте метод .astype() с аргументом 'int' или 'Int64'. Применять его можно как к отдельным столбцам, так и ко всему DataFrame.

Вот примеры использования:

Python
Скопировать код
df['col'] = df['col'].astype(int)  # Применение к конкретному столбцу
df = df.astype(int)                # Применение ко всему DataFrame
Кинга Идем в IT: пошаговый план для смены профессии

Обработка пропущенных значений и округление

Работая с числами с плавающей точкой, следует обращать внимание на округление и обработку пропущенных значений. Чтобы заменить пропущенные значения (NaN), используйте fillna(0.0) перед преобразованием типов данных. Для сохранения точности данных после округления используйте функцию round():

Python
Скопировать код
# Будьте аккуратны 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']) для отбора и преобразования только столбцов с числами с плавающей точкой:

Python
Скопировать код
# Выбираем столбцы с числами с плавающей точкой
float_cols = df.select_dtypes(include=['float64']).columns
# Преобразуем эти столбцы к целочисленному типу
df[float_cols] = df[float_cols].applymap(np.int64)

Изменение отображения: Камуфляж

Если вы хотите оставить данные в формате с плавающей точкой, но при этом отображать их как целые числа, сделать это можно с помощью options.display.float_format:

Python
Скопировать код
# "Я всего лишь целое число, во мне нет ничего подозрительного!" 🕵️‍♂️
pd.options.display.float_format = '{:,.0f}'.format

Контроль типа целого числа: Контрольный пункт

Иногда данные требуют конкретного типа целого числа в зависимости от их размера или знака. В таком случае используйте специальные типы, такие как np.int8, np.int16, np.int32 или np.int64:

Python
Скопировать код
# "Мне нужен не просто целый тип, я выбираю int32!" 😍
df['col'] = df['col'].astype(np.int32)

Визуализация

Представьте данный DataFrame как поднос, на котором числа с плавающей точкой выглядят как фрукты:

Markdown
Скопировать код
DataFrame-поднос: [🍏 2.0, 🍊 3.5, 🍋 4.9, 🍉 5.0]

При преобразовании этих чисел в целые, это можно представить как нож для фруктов (🔪), который отрезает дробную часть:

Markdown
Скопировать код
Применяем: df.astype(int)

И в итоге, все фрукты становятся идеальными целыми числами:

Markdown
Скопировать код
🔪➡️ [🍏 2, 🍊 3, 🍋 4, 🍉 5]

Обратите внимание, что это преобразование необратимо: десятичные доли теряются навсегда!

Сознательное преобразование: Сохранение целостности данных

Преобразование чисел с плавающей точкой в целые часто приводит к потере информации, это можно сравнить с потерей чемодана в аэропорту. Поэтому необходимо тщательно подходить к конвертации, сохраняя целостность данных.

Импорт данных: Задание типов

При импорте данных можно сразу задать нужный тип данных с помощью dtype='Int64'. Это можно сравнить с маркировкой багажа – вы точно знаете, что в него запаковали:

Python
Скопировать код
# "Добро пожаловать на борт, целочисленные путешественники типа Int64!" 🛫
df = pd.read_csv('file.csv', dtype={'col': 'Int64'})

Проверка после преобразования: Перепроверка данных

Не забывайте проверять изменения! Действительно ли все данные сохранились? Для проверки используйте df.dtypes:

Python
Скопировать код
# "Все данные на месте!" – Удовлетворенный аналитик данных 🧑‍🔬
print(df.dtypes)

Лучшая производительность: Эффективная конвертация

Для улучшения производительности используйте векторные операции типа applymap(). После преобразования важно вернуть измененные столбцы обратно в DataFrame:

Python
Скопировать код
# "Applymap — это волшебник в мире векторных карт!" – Возможно, немного озадаченный аналитик данных
df[float_cols] = df[float_cols].applymap(lambda x: int(round(x)))

Полезные материалы

  1. pandas.DataFrame.astype — документация pandas 2.2.0
  2. Преобразование чисел с плавающей точкой в целые в Pandas? – Stack Overflow
  3. numpy.ndarray.astype — Руководство NumPy v1.26
  4. Как преобразовать строки в числа с плавающей точкой в DataFrame Pandas – Data to Fish
  5. Работа с пропущенными данными — документация pandas 2.2.0
  6. Преобразование типов в Python
  7. DataFrame в pandas: как сделать работу с данными удобной – Real Python