logo

Выбор числовых столбцов в Pandas: функция is_numeric()

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

Для обнаружения числовых столбцов в Pandas можно применить встроенную функцию select_dtypes:

Python
Скопировать код
numeric_cols = df.select_dtypes(include='number').columns

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

Python
Скопировать код
float_cols = df.select_dtypes(include='float64').columns 
int_cols = df.select_dtypes(include='int64').columns

Функция select_dtypes – удобный инструмент для масштабной обработки данных, даже если их объём достаточно велик.

Отбор числовых данных

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

Python
Скопировать код
# Отбор числовых и булевых столбцов
numeric_bool_cols = df.select_dtypes(include=['number', 'bool']).columns

# Исключение нечисловых столбцов
non_numeric_cols = df.select_dtypes(exclude='number').columns

Предупреждение ошибок приведения типов

Для предотвращения нежелательного приведения типов, важно произвести проверку числовых столбцов:

Python
Скопировать код
# Проверка на числовые типы данных
assert all(df[numeric_cols].apply(lambda x: pd.api.types.is_numeric_dtype(x)))

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

Немного обращаемый внимание герой – метод _get_numeric_data()

Помимо select_dtypes существует метод ._get_numeric_data(), который может работать быстрее, однако предпочтение лучше отдать документированному и более стабильному варианту.

Python
Скопировать код
# Получение всех числовых данных
all_numeric_df = df._get_numeric_data()

Метод не является официально задокументированным, поэтому при его использовании существует риск изменений в новых версиях Pandas.

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

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

Python
Скопировать код
numeric_df = df.select_dtypes(include=[np.number])
# Детектор обнаруживает числовые «золотые жилы» среди данных

Углублённый поиск по типам данных

Специализированный подход

В Pandas задействовано большое количество числовых типов для решения различных задач:

Python
Скопировать код
# Выделение столбцов определённых типов
optimized_cols = df.select_dtypes(include=['int8', 'int16', 'float16']).columns

Работа со сложными типами

Помимо числовых столбцов бывают полезны также и столбцы datetime или timedelta:

Python
Скопировать код
# Добавление к числовым данным временных типов
numer_time_cols = df.select_dtypes(include=['number','datetime','timedelta']).columns

Внимание к смешанным типам

Столбцы смешанных типов могут сбивать с толку, так как вобрав в себя числовые и нечисловые данные, они могут влиять на анализ:

Python
Скопировать код
# Выявление смешанных столбцов
imp_cols = df.applymap(lambda x: isinstance(x, (int, float, str))).any()
suspect_cols = df.columns[imp_cols]

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

  1. Документация pandas 2.2.0 для pandas.DataFrame.select_dtypes
  2. Документация pandas 0.23.1 для pandas.DataFrame.dtypes
  3. Документация pandas 2.2.0 для pandas.DataFrame.info
  4. Статья о работе с пропущенными данными в Pandas на GeeksforGeeks
  5. Обзор типов данных Pandas на Practical Business Python
  6. Оптимизация работы с данными в Pandas – Real Python