Как использовать Pandas для очистки и предварительной обработки данных
Стив Лор из The New York Times сказал: «Согласно интервью и оценкам экспертов, ученые, работающие с данными, тратят от 50 до 80 процентов своего времени, погрязая в рутинной работе по сбору и подготовке неуправляемых цифровых данных, прежде чем их можно будет исследовать на предмет полезных самородков.
Это утверждение на 100% верно, поскольку оно включает в себя ряд шагов, которые гарантируют, что данные, используемые для проектов по науке о данных, машинному обучению и анализу, являются полными, точными, беспристрастными и надежными.
Качество вашего набора данных играет ключевую роль в успехе вашего анализа или модели. Как говорится, «мусор на входе — мусор на выходе», качество и надежность вашей модели и анализа во многом зависят от качества ваших данных.
Необработанные данные, собранные из различных источников, часто беспорядочны, содержат ошибки, несоответствия, пропущенные значения и выбросы. Очистка и предварительная обработка данных направлены на выявление и устранение этих проблем для обеспечения точных, надежных и значимых результатов во время построения моделей и анализа данных, поскольку неправильные выводы могут стоить дорого.
Именно здесь в игру вступает Pandas — это замечательный инструмент, используемый в мире данных для очистки и предварительной обработки данных. В этой статье мы углубимся в основные концепции очистки и предварительной обработки данных с использованием мощной библиотеки Python Pandas.
Что такое очистка данных?
Прежде чем мы приступим к нашему приключению с данными с помощью Pandas, давайте потратим немного времени на объяснение термина «очистка данных». Думайте об этом как о цифровой детоксикации вашего набора данных, когда мы наводим порядок и ставим точность превыше всего.
Очистка данных включает в себя выявление и исправление ошибок, несоответствий и пропущенных значений в наборе данных. Это похоже на подготовку ингредиентов перед приготовлением; вам нужно все, чтобы получить идеальный анализ или визуализацию.
Зачем беспокоиться об очистке данных? Что ж, представьте, что вы пытаетесь проанализировать тенденции продаж, когда некоторые записи отсутствуют, или работаете с набором данных, в котором есть повторяющиеся записи, что сбивает ваши расчеты. Не идеально, правда?
В рамках этой цифровой детоксикации мы используем такие инструменты, как Pandas, чтобы избавиться от несоответствий, исправить ошибки и обеспечить истинную ясность ваших данных.
Что такое обработка данных?
Вы можете задаться вопросом: «Означает ли очистка данных и предварительная обработка данных одно и то же?» Ответ: нет, они этого не делают.
Представьте себе: вы натыкаетесь на древний сундук с сокровищами, похороненный в цифровых песках вашего набора данных. Очистка данных — это все равно, что тщательно раскопать этот сундук, смахнуть пыль с паутины и убедиться, что то, что внутри, является подлинным и надежным.
Что касается предварительной обработки данных, вы можете думать об этом как о взятии обнаруженного сокровища и подготовке его содержимого для публичного показа. Это выходит за рамки очистки; речь идет о преобразовании и оптимизации данных для конкретного анализа или задач.
Очистка данных — это начальный этап уточнения вашего набора данных, который делает его читабельным и пригодным для использования с помощью таких методов, как удаление дубликатов, обработка пропущенных значений и преобразование типов данных, в то время как предварительная обработка данных аналогична сбору этих уточненных данных и масштабированию с помощью более продвинутых методов, таких как разработка функций. кодирование категориальных переменных и обработка выбросов для достижения лучших и более продвинутых результатов.
Цель — превратить ваш набор данных в изысканный шедевр, готовый к анализу или моделированию.
Как импортировать необходимые библиотеки
Прежде чем мы приступим к очистке и предварительной обработке данных, давайте импортируем библиотеку Pandas.
Чтобы сэкономить время и сократить набор текста, мы часто импортируем Pandas как pd. Это позволяет нам использовать более короткий pd.read_csv()
вместо pandas.read_csv()
для чтения файлов CSV, что делает наш код более эффективным и читаемым.
import pandas as pd
Как загрузить набор данных
Начните с загрузки вашего набора данных в DataFrame Pandas.
В этом примере мы будем использовать гипотетический набор данных с именем your_dataset.csv
. Мы загрузим набор данных в переменную с именем df.
#Replace 'your_dataset.csv' with the actual dataset name or file path
df = pd.read_csv('your_dataset.csv')
Исследовательский анализ данных (EDA)
EDA помогает вам понять структуру и характеристики вашего набора данных. Некоторые функции Pandas помогают нам получить представление о нашем наборе данных. Мы вызываем эти функции, вызывая переменную набора данных плюс функцию.
Например:
df.head()
вызовет первые 5 строк набора данных. В скобках можно указать количество отображаемых строк.
df.describe()
предоставляет некоторые статистические данные, такие как процентиль, среднее и стандартное отклонение числовых значенийSeries
илиDataFrame
.
df.info()
выдает количество столбцов, метки столбцов, типы данных столбцов, использование памяти, индекс диапазона и количество ячеек в каждом столбце (ненулевые значения).
Ниже приведен пример кода:
#Display the first few rows of the dataset
print(df.head())
#Summary statistics
print(df.describe())
#Information about the dataset
print(df.info())
Как обрабатывать пропущенные значения
Для новичка в этой области недостающие значения создают значительный стресс, поскольку они представлены в разных форматах и могут отрицательно повлиять на ваш анализ или модель.
Модели машинного обучения нельзя обучать с помощью данных, в которых отсутствуют значения или значения «NAN», поскольку они могут изменить конечный результат во время анализа. Но не волнуйтесь, Pandas предоставляет методы решения этой проблемы.
Один из способов сделать это — полностью удалить пропущенные значения. Фрагмент кода ниже:
#Check for missing values
print(df.isnull().sum())
#Drop rows with missing valiues and place it in a new variable "df_cleaned"
df_cleaned = df.dropna()
#Fill missing values with mean for numerical data and place it ina new variable called df_filled
df_filled = df.fillna(df.mean())
Но если количество строк с пропущенными значениями велико, то этот метод будет неадекватным.
Для числовых данных вы можете просто вычислить среднее значение и ввести его в строки, в которых есть пропущенные значения. Фрагмент кода ниже:
#Replace missing values with the mean of each column
df.fillna(df.mean(), inplace=True)
#If you want to replace missing values in a specific column, you can do it this way:
#Replace 'column_name' with the actual column name
df['column_name'].fillna(df['column_name'].mean(), inplace=True)
#Now, df contains no missing values, and NaNs have been replaced with column mean
Как удалить повторяющиеся записи
Дублирующиеся записи могут исказить ваш анализ, влияя на результаты таким образом, что они не точно отражают тенденции и основные закономерности (из-за выбросов).
Pandas помогает легко идентифицировать и удалять повторяющиеся значения, помещая их в новые переменные.
Фрагмент кода ниже:
#Identify duplicates
print(df.duplicated().sum())
#Remove duplicates
df_no_duplicates = df.drop_duplicates()
Типы данных и преобразование
Преобразование типов данных в Pandas — это важнейший аспект предварительной обработки данных, позволяющий вам гарантировать, что ваши данные находятся в подходящем формате для анализа или моделирования.
Данные из различных источников обычно беспорядочны, а типы данных некоторых значений могут иметь неправильный формат, например, некоторые числовые значения могут иметь формат «с плавающей запятой» или «строку» вместо «целочисленного» формата или смесь этих форматов. приводит к ошибкам и неверным результатам.
Вы можете преобразовать столбец типа int
в float
с помощью следующего кода:
#Convert 'Column1' to float
df['Column1'] = df['Column1'].astype(float)
#Display updated data types
print(df.dtypes)
Вы можете использовать df.dtypes
для печати типов данных столбцов.
Как кодировать категориальные переменные
Для алгоритмов машинного обучения наличие в наборе данных категориальных значений (нечисловых значений) имеет решающее значение для обеспечения наилучшей модели, поскольку они одинаково важны.
Это могут быть названия марок автомобилей в наборе данных об автомобилях для прогнозирования цен на автомобили. Но алгоритмы машинного обучения не могут обрабатывать этот тип данных, поэтому перед использованием его необходимо преобразовать в числовые данные.
Pandas предоставляет функцию get_dummies
, которая преобразует категориальные значения в числовой формат (двоичный формат), так что алгоритм распознает его как заполнитель для значений, а не как иерархические данные, которые можно подвергнуть численному анализу. это просто означает, что числа, в которые преобразуется название бренда, не интерпретируются как 1 больше 0, а сообщают алгоритму, что и 1
, и 0
являются заполнителями для категориальных данных. Фрагмент кода показан ниже:
#To convert categorical data from the column "Car_Brand" to numerical data
df_encode = pd.get_dummies(df, columns=[Car_Brand])
#The categorical data is converted to binary format of Numerical data
Как обрабатывать выбросы
Выбросы — это точки данных, значительно отличающиеся от большинства данных. Они могут искажать статистические показатели и отрицательно влиять на производительность моделей машинного обучения.
Они могут быть вызваны человеческой ошибкой, отсутствием значений NaN или представлять собой точные данные, не коррелирующие с остальными данными.
Существует несколько методов выявления и удаления выбросов:
- Удалите значения NaN.
- Визуализируйте данные до и после удаления.
- Метод Z-оценки (для нормально распределенных данных).
- Метод IQR (межквартильный размах) для получения более надежных данных.
IQR полезен для выявления выбросов в наборе данных. Согласно методу IQR, значения, которые находятся ниже Q1-1,5×IQR
или выше Q3+1,5×IQR
, считаются выбросами.
Это правило основано на предположении, что большая часть данных нормального распределения должна попадать в этот диапазон.
Вот фрагмент кода метода IQR:
#Using median calculations and IQR, outliers are identified and these data points should be removed
Q1 = df["column_name"].quantile(0.25)
Q3 = df["column_name"].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
df = df[df["column_name"].between(lower_bound, upper_bound)]
Заключение
Очистка и предварительная обработка данных являются неотъемлемыми компонентами любого анализа данных, научного проекта или проекта машинного обучения. Pandas с его универсальными функциями эффективно облегчает эти процессы.
Следуя концепциям, изложенным в этой статье, вы можете быть уверены, что ваши данные хорошо подготовлены к анализу и моделированию, что в конечном итоге приведет к более точным и надежным результатам.