1. Зачем это нужно?
Представьте, что вы инженер на фабрике данных. Вам нужно проанализировать и организовать сырье (данные), чтобы получить готовый продукт (инсайты, отчеты). Без чистки и форматирования ваши данные останутся как куча разбросанных запчастей, из которых трудно что-то собрать.
Чистые и отформатированные данные — это не только вопрос эстетики и удобочитаемости, но и важное условие для корректного анализа и построения моделей. Неправильно обработанные данные могут привести к ошибочным выводам, а никто не хочет оказаться в ситуации, когда под конец рабочего дня ты понимаешь, что вычислил средний возраст сотрудников не в годах, а в мелких осколках данных.
Основные задачи форматирования
Перед тем как приступить к коду, давайте разберём, каких проблем мы хотим избежать и решить при помощи форматирования:
- Удаление пустых строк и столбцов: Они как пустые карманы — не приносят пользы, но легко вводят в заблуждение.
- Удаление дубликатов: Повторяющиеся записи вносят шум в наши данные.
- Заполнение пропущенных значений: Это как дыры в сыре, которые иногда стоит заполнить чем-то вкусненьким.
- Преобразование типов данных: Важно убедиться, что возраст — это число, а не текст. Чтобы не путать реальный возраст с "25 лет опыта работы", написанными в кавычках.
2. Инструменты для очистки и форматирования данных
Теперь, когда мы знаем, зачем это нужно, давайте посмотрим на инструменты, которые помогут нам в этом, как швейцарский нож в походе:
- Удаление пустых значений:
dropna() - Работа с дубликатами:
duplicated()иdrop_duplicates() - Заполнение пропусков:
fillna() - Преобразование типов данных:
astype()
Удаление пустых значений
Пустые значения — одни из тех вещей, которые всегда появляются не вовремя. С помощью dropna() мы можем избавиться от них как от старых ненужных носков. Давайте посмотрим на пример:
import pandas as pd
# Создаем DataFrame с пропусками
data = {'Имя': ['Анна', 'Иван', None, 'Мария'],
'Возраст': [29, None, 34, 23],
'Город': ['Москва', 'Санкт-Петербург', 'Новосибирск', None]}
df = pd.DataFrame(data)
# Удаляем строки с любыми NaN значениями
cleaned_df = df.dropna()
print(cleaned_df)
Этот код удалит все строки, содержащие хотя бы одно пустое значение.
Работа с дубликатами
Иногда в ваших данных встречаются дубликаты, как в игре "Найди отличия", где отличий нет. Подобные записи мы можем отсеять при помощи drop_duplicates().
# Создаем DataFrame с дубликатами
data = {'Имя': ['Анна', 'Иван', 'Анна', 'Мария'],
'Возраст': [29, 34, 29, 23]}
df = pd.DataFrame(data)
# Удаляем дубликаты
unique_df = df.drop_duplicates()
print(unique_df)
Заполнение пропусков
Заполнять пустые значения можно по-разному, например, средним значением или даже фиксированным значением. Метод fillna() поможет вам в этом:
# Заполняем пропуски в 'Возраст' средним значением столбца
df['Возраст'] = df['Возраст'].fillna(df['Возраст'].mean())
print(df)
Преобразование типов данных
Преобразование данных иногда необходимо, чтобы не попасть в ловушку текстовых значений там, где ожидаются числа:
# Преобразуем тип данных столбца 'Возраст' в целое число
df['Возраст'] = df['Возраст'].astype(int)
print(df)
3. Практическое применение: очистка реального набора данных
Давайте попробуем очистить и отформатировать реальный набор данных для отчетности. Возьмем, например, гипотетический Excel-файл с информацией о продажах.
# Загрузка данных из Excel
filename = "sales_data.xlsx"
df = pd.read_excel(filename)
# Удаление строк с пропусками в любом из столбцов
df = df.dropna()
# Удаление дублирующихся записей
df = df.drop_duplicates()
# Заполнение пропущенных значений по выходу средним значением для этого столбца
df['Продажи'] = df['Продажи'].fillna(df['Продажи'].mean())
# Преобразование типов данных
df['Код продукта'] = df['Код продукта'].astype(str)
# Сохранение отформатированных данных обратно в Excel
df.to_excel("cleaned_sales_data.xlsx", index=False)
В результате, у нас получится аккуратный и чистый Excel-файл, готовый для анализа и производства отчетов.
4. Типичные ошибки при очистке данных
Как и в случае с починкой электроники, с данными всегда можно что-то напутать, поэтому вот несколько типичных ошибок, которых стоит избегать.
Удаление полезной информации вместе с дубликатами. Иногда дубликаты могут быть сигналом об ошибке в данных, и стоит разобраться в их природе. Не путайте типы данных. Иногда кажется, что преобразование в другой формат просто, но это может привести к потере данных, если не проверять, допустимо ли это преобразование.
Следя за этими советами и выполняя предложенные шаги, вы сможете легко и с удовольствием работать с данными, даже если они изначально похожи на страшный сон аналитика. И помните, данные, как и ваш код, должны быть чистыми!
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ