Удаление бесконечных значений из DataFrame в Pandas

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

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

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

Для быстрого удаления бесконечных и отрицательно бесконечных значений из DataFrame используйте следующую команду:

Python
Скопировать код
df = df.replace([np.inf, -np.inf], np.nan).dropna()

Здесь метод .replace() в Pandas заменяет оба типа бесконечностей (np.inf и -np.inf) на пропуски NaN, после чего .dropna() исключает строки с этими пропусками.

Если в некотором контексте вам требуется временно рассматривать бесконечности как NaN, используйте следующий код:

Python
Скопировать код
with pd.option_context('use_inf_as_na', True):
    df = df.dropna()

Для постоянного представления бесконечностей как пропусков можно задать соответствующие параметры Pandas:

Python
Скопировать код
pd.set_option('use_inf_as_na', True)

Чтобы оставить в DataFrame только конечные значения, воспользуйтесь следующим кодом:

Python
Скопировать код
df = df[np.isfinite(df).all(1)]

Если необходимо обработать бесконечности в определённых колонках, используйте такой код:

Python
Скопировать код
df = df.replace({col: {np.inf: np.nan, -np.inf: np.nan} for col in ['col1', 'col2']}).dropna(subset=['col1', 'col2'])

Берегите целостность данных: важно не удалять значимую информацию вместе с нежелательными значениями.

Кинга Идем в IT: пошаговый план для смены профессии

Тишина бесконечностей

Возможно, в вашем DataFrame появляются положительная или отрицательная бесконечности в результате расчётов. Они не представляют угрозы, но могут создавать путаницу при анализе или визуализации данных.

Обращение с бесконечностями как с NaN

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

Особенности удаления из конкретных колонок

Чтобы удалить бесконечности из определённой колонки, вы можете воспользоваться таким кодом:

Python
Скопировать код
df['your_column'] = df['your_column'].replace([np.inf, -np.inf], np.nan)

Если колонка должна содержать только конечные значения:

Python
Скопировать код
df = df[df['your_column'].apply(np.isfinite)]

Если нужно заменить бесконечности в нескольких колонках в зависимости от их типа, примените следующую команду:

Python
Скопировать код
df = df.apply(lambda x: x.replace([np.inf, -np.inf], np.nan) if x.dtype == 'float64' else x)

Обратите внимание, что в старых версиях библиотеки Pandas вместо use_inf_as_na использовался use_inf_as_null. Всегда проверяйте версии библиотек, которыми пользуетесь!

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

После применения команды df.replace([np.inf, -np.inf], np.nan).dropna(), бесконечные значения исчезают:

Markdown
Скопировать код
До: [🌾, 🍇, 🍯, 🎈]
После: [🌾, 🍇, 🍯]

DataFrame освобождается от всех бесконечностей!

Управление бесконечными значениями

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

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

Создание настраиваемой функции для решения специфических проблем с данными позволит вам быстрее находить и устранять непредвиденные искажения. Защитите такую функцию при помощи блока try/except для повышения надёжности.

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

  1. pandas.DataFrame.drop – документация pandas 2.2.0 – детальное руководство по удалению данных по меткам в pandas.
  2. Удаление бесконечных значений из DataFrame в pandas – Stack Overflow – проверенный указанной проблемой способ удаления бесконечных значений из DataFrame.
  3. Работа с отсутствующими данными – документация pandas 2.2.0 – экстенсивное руководство по работе с пропущенными данными в pandas, включая NaN и None.
  4. numpy.isfinite – Руководство NumPy v1.26 – всё, что вам нужно знать о выявлении скрытых бесконечных значений, таких как inf, -inf и NaN.
  5. Индексация и выбор данных – документация pandas 2.2.0 – руководство по избирательной индексации в pandas.