Очистка данных с помощью Pandas
Очистка данных с помощью Pandas краткое изложение
Введение
Если вы занимаетесь наукой о данных, то термин “очистка данных” вам, вероятно, знаком. Если нет, позвольте мне объяснить. Наши данные часто поступают из нескольких источников и не являются чистыми. Они могут содержать отсутствующие значения, дубликаты, неправильные или нежелательные форматы и т. д. Запуск экспериментов на этом беспорядочных данных приводит к неправильным результатам. Поэтому необходимо подготовить данные перед их подачей на модель. Эта подготовка данных путем выявления и устранения потенциальных ошибок, неточностей и несоответствий называется очисткой данных.
- Использование генеративного искусственного интеллекта для анализа и визуализации данных
- Бросить поиск работы в области науки о данных
- SHAP для бинарных и многоклассовых целевых переменных
В этом руководстве я расскажу вам о процессе очистки данных с использованием библиотеки Pandas.
Набор данных
Я буду работать с известным набором данных Iris. Набор данных Iris содержит измерения четырех характеристик трех видов ирисов: длина чашелистика, ширина чашелистика, длина лепестка и ширина лепестка. Мы будем использовать следующие библиотеки:
- Pandas: Мощная библиотека для манипулирования и анализа данных
- Scikit-learn: Предоставляет инструменты для предобработки данных и машинного обучения
Шаги по очистке данных
1. Загрузка набора данных
Загрузите набор данных Iris с помощью функции read_csv() библиотеки Pandas:
column_names = ['id', 'sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species']
iris_data = pd.read_csv('data/Iris.csv', names= column_names, header=0)
iris_data.head()
Вывод:
id | sepal_length | sepal_width | petal_length | petal_width | species |
1 | 5.1 | 3.5 | 1.4 | 0.2 | Iris-setosa |
2 | 4.9 | 3.0 | 1.4 | 0.2 | Iris-setosa |
3 | 4.7 | 3.2 | 1.3 | 0.2 | Iris-setosa |
4 | 4.6 | 3.1 | 1.5 | 0.2 | Iris-setosa |
5 | 5.0 | 3.6 | 1.4 | 0.2 | Iris-setosa |
Параметр header=0 указывает, что первая строка CSV-файла содержит имена столбцов (заголовок).
2. Изучение набора данных
Чтобы получить информацию о наборе данных, мы выведем некоторую базовую информацию, используя встроенные функции в pandas
print(iris_data.info())
print(iris_data.describe())
Вывод:
RangeIndex: 150 entries, 0 to 149
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 id 150 non-null int64
1 sepal_length 150 non-null float64
2 sepal_width 150 non-null float64
3 petal_length 150 non-null float64
4 petal_width 150 non-null float64
5 species 150 non-null object
dtypes: float64(4), int64(1), object(1)
memory usage: 7.2+ KB
None
Функция info() полезна для понимания общей структуры фрейма данных, количества ненулевых значений в каждом столбце и использования памяти. Сводная статистика дает обзор числовых характеристик вашего набора данных.
3. Проверка распределения классов
Это важный шаг для понимания, как классы распределены в категориальных столбцах, что является важной задачей для классификации. Вы можете выполнить этот шаг, используя функцию value_counts() в pandas.
print(iris_data['species'].value_counts())
Вывод:
Iris-setosa 50
Iris-versicolor 50
Iris-virginica 50
Name: species, dtype: int64
Наши результаты показывают, что набор данных сбалансирован с равным количеством представлений каждого вида. Это создает основу для справедливой оценки и сравнения всех 3 классов.
4. Удаление отсутствующих значений
Поскольку из метода info() ясно, что у нас есть 5 столбцов без отсутствующих значений, мы пропускаем этот шаг. Но если вы столкнетесь с отсутствующими значениями, используйте следующую команду для их обработки:
iris_data.dropna(inplace=True)
5. Удаление дубликатов
Дубликаты могут исказить наши анализы, поэтому мы удаляем их из нашего набора данных. Сначала мы проверим их существование с помощью нижеприведенной команды:
duplicate_rows = iris_data.duplicated()
print("Количество дублирующихся строк:", duplicate_rows.sum())
Вывод:
Количество дублирующихся строк: 0
У нас нет ни одного дубликата для этого набора данных. Тем не менее, дубликаты можно удалить с помощью функции drop_duplicates().
iris_data.drop_duplicates(inplace=True)
6. Кодирование One-Hot
Для категориального анализа мы выполним кодирование в формате One-Hot для столбца species. Этот шаг выполняется из-за тенденции алгоритмов машинного обучения лучше работать с числовыми данными. Процесс кодирования One-Hot преобразует категориальные переменные в бинарный формат (0 или 1).
encoded_species = pd.get_dummies(iris_data['species'], prefix='species', drop_first=False).astype('int')
iris_data = pd.concat([iris_data, encoded_species], axis=1)
iris_data.drop(columns=['species'], inplace=True)
7. Нормализация столбцов с числовыми значениями с плавающей точкой
Нормализация – это процесс масштабирования числовых признаков так, чтобы их среднее значение было равно 0, а стандартное отклонение – 1. Этот процесс выполняется для того, чтобы убедиться, что признаки одинаково вносят вклад в анализ. Мы будем нормализовать столбцы с числовыми значениями с плавающей точкой для обеспечения одинакового масштабирования.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
cols_to_normalize = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
scaled_data = scaler.fit(iris_data[cols_to_normalize])
iris_data[cols_to_normalize] = scaler.transform(iris_data[cols_to_normalize])
8. Сохранение очищенного набора данных
Сохраните очищенный набор данных в новый файл CSV.
iris_data.to_csv('cleaned_iris.csv', index=False)
Заключение
Поздравляю! Вы успешно провели очистку своего первого набора данных с помощью pandas. Возможно, вам придется столкнуться с дополнительными сложностями при работе с сложными наборами данных. Однако основные техники, описанные здесь, помогут вам начать и подготовить данные для анализа.
Канвал Мехрин – молодой разработчик программного обеспечения с большим интересом к науке о данных и применению искусственного интеллекта в медицине. Канвал была выбрана как Google Generation Scholar 2022 для региона APAC. Канвал любит делиться техническими знаниями, пиша статьи по актуальным темам, и стремится улучшить представление женщин в технической индустрии.