Pandas — мощная библиотека Python для обработки и анализа данных. Управление типами данных имеет решающее значение для эффективной обработки данных. В этой статье рассматриваются различные методы эффективного изменения типов данных столбцов в ваших Pandas DataFrame.
Содержание
- Преобразование в числовые типы с помощью
pd.to_numeric()
- Гибкое преобразование типов с помощью
astype()
- Интеллектуальный вывод типа с помощью
infer_objects()
- Рекомендации по преобразованию типов данных
1. Преобразование в числовые типы с помощью pd.to_numeric()
Функция pd.to_numeric()
идеально подходит для преобразования столбцов в числовые типы данных (int
, float
). Она особенно полезна при работе со столбцами, содержащими строковые представления чисел, часто встречающиеся при импорте данных.
import pandas as pd
data = {'col1': ['1', '2', '3', '4', '5'], 'col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)
df['col1'] = pd.to_numeric(df['col1'])
print(df.dtypes)
Параметр errors
управляет обработкой ошибок:
'coerce'
: Недопустимые значения становятсяNaN
.'raise'
: Вызывает исключение для недопустимых значений.'ignore'
: Игнорирует недопустимые значения.
data = {'col1': ['1', '2', 'a', '4', '5']}
df = pd.DataFrame(data)
df['col1'] = pd.to_numeric(df['col1'], errors='coerce')
print(df)
2. Гибкое преобразование типов с помощью astype()
Метод astype()
предоставляет общий подход к изменению типов данных. Вы можете преобразовывать практически в любой поддерживаемый тип (int
, float
, str
, bool
, datetime
и т. д.).
data = {'col1': [1, 2, 3, 4, 5], 'col2': [True, False, True, False, True]}
df = pd.DataFrame(data)
df['col1'] = df['col1'].astype(str)
df['col2'] = df['col2'].astype(int)
print(df.dtypes)
Внимание: Преобразование типов может привести к потере данных (например, усечение десятичных знаков при преобразовании float
в int
).
3. Интеллектуальный вывод типа с помощью infer_objects()
Метод infer_objects()
полезен для DataFrame со смешанными типами данных в столбцах типа «object». Он пытается вывести наиболее подходящий тип для каждого столбца.
data = {'col1': ['1', 2, '3.14', 4], 'col2': ['A', 'B', 'C', 'D']}
df = pd.DataFrame(data)
df = df.infer_objects()
print(df.dtypes)
Примечание: Несогласованные данные могут помешать успешному выводу типа.
4. Рекомендации по преобразованию типов данных
Всегда проверяйте свои данные до и после преобразования, чтобы убедиться в изменениях и избежать непредвиденных результатов. Используйте метод .info()
для проверки типов данных и пропущенных значений. Грациозно обрабатывайте потенциальные ошибки, используя параметр errors
в pd.to_numeric()
или предварительно обработав данные для удаления или замены проблемных значений.