JavaRush /Курсы /Python SELF /Форматирование данных и очистка таблиц от лишней информац...

Форматирование данных и очистка таблиц от лишней информации

Python SELF
28 уровень , 2 лекция
Открыта

1. Зачем это нужно?

Представьте, что вы инженер на фабрике данных. Вам нужно проанализировать и организовать сырье (данные), чтобы получить готовый продукт (инсайты, отчеты). Без чистки и форматирования ваши данные останутся как куча разбросанных запчастей, из которых трудно что-то собрать.

Чистые и отформатированные данные — это не только вопрос эстетики и удобочитаемости, но и важное условие для корректного анализа и построения моделей. Неправильно обработанные данные могут привести к ошибочным выводам, а никто не хочет оказаться в ситуации, когда под конец рабочего дня ты понимаешь, что вычислил средний возраст сотрудников не в годах, а в мелких осколках данных.

Основные задачи форматирования

Перед тем как приступить к коду, давайте разберём, каких проблем мы хотим избежать и решить при помощи форматирования:

  • Удаление пустых строк и столбцов: Они как пустые карманы — не приносят пользы, но легко вводят в заблуждение.
  • Удаление дубликатов: Повторяющиеся записи вносят шум в наши данные.
  • Заполнение пропущенных значений: Это как дыры в сыре, которые иногда стоит заполнить чем-то вкусненьким.
  • Преобразование типов данных: Важно убедиться, что возраст — это число, а не текст. Чтобы не путать реальный возраст с "25 лет опыта работы", написанными в кавычках.

2. Инструменты для очистки и форматирования данных

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

  • Удаление пустых значений: dropna()
  • Работа с дубликатами: duplicated() и drop_duplicates()
  • Заполнение пропусков: fillna()
  • Преобразование типов данных: astype()

Удаление пустых значений

Пустые значения — одни из тех вещей, которые всегда появляются не вовремя. С помощью dropna() мы можем избавиться от них как от старых ненужных носков. Давайте посмотрим на пример:

Python

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().

Python

# Создаем DataFrame с дубликатами
data = {'Имя': ['Анна', 'Иван', 'Анна', 'Мария'],
        'Возраст': [29, 34, 29, 23]}

df = pd.DataFrame(data)

# Удаляем дубликаты
unique_df = df.drop_duplicates()

print(unique_df)

Заполнение пропусков

Заполнять пустые значения можно по-разному, например, средним значением или даже фиксированным значением. Метод fillna() поможет вам в этом:

Python

# Заполняем пропуски в 'Возраст' средним значением столбца
df['Возраст'] = df['Возраст'].fillna(df['Возраст'].mean())

print(df)

Преобразование типов данных

Преобразование данных иногда необходимо, чтобы не попасть в ловушку текстовых значений там, где ожидаются числа:

Python

# Преобразуем тип данных столбца 'Возраст' в целое число
df['Возраст'] = df['Возраст'].astype(int)

print(df)

3. Практическое применение: очистка реального набора данных

Давайте попробуем очистить и отформатировать реальный набор данных для отчетности. Возьмем, например, гипотетический Excel-файл с информацией о продажах.

Python

# Загрузка данных из 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. Типичные ошибки при очистке данных

Как и в случае с починкой электроники, с данными всегда можно что-то напутать, поэтому вот несколько типичных ошибок, которых стоит избегать.

Удаление полезной информации вместе с дубликатами. Иногда дубликаты могут быть сигналом об ошибке в данных, и стоит разобраться в их природе. Не путайте типы данных. Иногда кажется, что преобразование в другой формат просто, но это может привести к потере данных, если не проверять, допустимо ли это преобразование.

Следя за этими советами и выполняя предложенные шаги, вы сможете легко и с удовольствием работать с данными, даже если они изначально похожи на страшный сон аналитика. И помните, данные, как и ваш код, должны быть чистыми!

Комментарии (6)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 64
18 июля 2025
В последних лекциях, этого и нескольких прошлых уровней (которые явно были написаны другим человеком и в другое время), стало как-то слишком много клоунады, шуток и прибауток. При этом сами лекции на порядок более качественные, чем то, что было до этого. Почистить бы...
Никита Уровень 30
8 октября 2025
Как ты cюда попал с уровнем 10?
Slevin Уровень 64
8 октября 2025
Ммм.. ну учитывая что я курс Питона закончил полностью еще в Августе.. Видимо оно показывает мой уровень в том курсе который я прохожу сейчас - А это Докер...
Japan_Dragon Уровень 32
10 марта 2025
столбец с датами: df['date']
Japan_Dragon Уровень 32
10 марта 2025
в последнем примере сначала удаляют None, а потом ставят среднее по пропущеным значениям... но там же нечего стаивть будет)
Slevin Уровень 64
18 июля 2025
То же замечание хотел сделать