Выборка столбцов pandas dataframe по типу данных

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

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

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

Чтобы выбрать столбцы в pandas DataFrame по типу данных, воспользуйтесь функцией select_dtypes. Если необходимо получить все столбцы типа float, используйте следующий код:

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

Для выбора столбцов различных типов данных, таких как int и bool, примените этот подход:

Python
Скопировать код
int_bool_cols = df.select_dtypes(['int', 'bool']).columns

Существует также возможность отбирать столбцы через атрибут dtypes:

Python
Скопировать код
numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']
numeric_cols = df.columns[df.dtypes.isin(numerics)]

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

Python
Скопировать код
def get_columns_by_type(df, data_types):
    """
    Данная функция позволяет отобрать столбцы заданных типов данных.
    """
    return df.select_dtypes(include=data_types).columns.tolist()
Кинга Идем в IT: пошаговый план для смены профессии

Выделение по запросу с помощью удобных функций

Гибкий выбор типов через функцию

Чтобы сделать процесс выборки данных более удобным и повторяемым, определите вспомогательную функцию:

Python
Скопировать код
def select_columns_by_dtype(df, data_types):
    return df.select_dtypes(include=data_types).columns.tolist()

Работа с dtypes напрямую

Для прямого управления типами данных можно использовать атрибут dtypes:

Python
Скопировать код
dtype_dict = df.dtypes.apply(lambda x: x.name).to_dict()

Применение булевых масок для отбора

Можно использовать булеву маску для удобства при выполнении операций со столбцами определенного типа:

Python
Скопировать код
mask = df.dtypes.isin(['int64', 'float64'])
selected_cols = df.columns[mask]

С помощью такой маски можно делать специфические манипуляции с данными:

Python
Скопировать код
df.loc[:, mask] = df.loc[:, mask].round(2)

Продвинутые методы: группировка типов данных и их преобразование

Группировка по dtypes

Применение groupby вместе с dtypes дает возможность группировать данные по типу:

Python
Скопировать код
grouped_dtypes = df.columns.to_series().groupby(df.dtypes).groups

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

Python
Скопировать код
for dtype, columns in grouped_dtypes.items():
    # Здесь можно выполнить операции со всей группой столбцов

Изменение типов данных

Иногда возникает необходимость в изменении типа данных столбца:

Python
Скопировать код
df['some_column'] = df['some_column'].astype('float')

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

Воспринимайте ваш DataFrame как набор инструментов. Каждый инструмент (столбец) выполняет свою функцию и имеет соответствующий тип данных:

Тип данныхИнструменты в наборе
Целые числа🛠️ (Молоток)
Числа с плавающей точкой📏 (Линейка)
Строки (объекты)🖌️ (Кисть)
Дата и время⏱️ (Секундомер)

Отбор инструментов по типу:

Python
Скопировать код
df.select_dtypes(include=['int'])

При использовании этого метода вы сможете извлечь из DataFrame необходимые "инструменты" по типу данных и работать с ними:

Python
Скопировать код
df.loc[:, mask] = df.loc[:, mask].apply(lambda x: x.round(2))

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

  1. Базовые функции — документация pandas 2.2.0
  2. Как найти числовые столбцы в pandas?
  3. Осведомленность о типах данных в Pandas
  4. Эффективное использование Pandas: dtype для оптимизации операций с DataFrame
  5. Базовые типы данных в Python – Real Python
  6. Выбор столбцов в Pandas по типу данных: пример из практики — руководство по выбору столбцов в pandas в зависимости от их типа данных.