Очистка и очищение данных с использованием Python

PythonBeginner
Практиковаться сейчас

Введение

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

🎯 Задачи

В этом проекте вы научитесь:

  • настраивать проектную среду и готовить необходимые файлы;
  • импортировать необходимые библиотеки для очистки данных;
  • читать и обрабатывать исходные данные, проверяя на различные виды "грязных" данных;
  • записывать очищенные данные в новый файл CSV.

🏆 Достижения

После завершения этого проекта вы сможете:

  • использовать Python и его стандартную библиотеку для работы с данными в формате CSV;
  • применять методы валидации и очистки данных, такие как проверка на отсутствующие значения, неправильный формат и нереальные данные;
  • реализовать процесс очистки данных для создания высококачественного набора данных;
  • сгенерировать новый файл CSV с очищенными данными.

Разбор формата данных

В этом шаге вы будете знакомиться с данными перед процессом очистки данных.

  1. Перейдите в директорию /home/labex/project.
  2. Внутри директории проекта вы должны найти файл raw_data.csv. Этот файл содержит исходные данные, которые необходимо очистить.
  3. Откройте файл raw_data.csv, вы можете увидеть все столбцы, и его правильный формат должен быть таким:
    • Столбец "Имя": Состоит из более чем одного слова.
    • Столбец "Пол": Ожидается 'F' или 'M'.
    • Столбец "Дата рождения": Форматируется как %Y-%m-%d.
    • Столбец "Email": Согласуется с форматом username@domain.com.

Импортировать необходимые библиотеки

В этом шаге вы импортируете необходимые библиотеки для процесса очистки данных.

  1. Откройте файл data_clean.py в текстовом редакторе.

  2. Добавьте следующий код в начало файла:

import csv
import re
from datetime import datetime

Эти библиотеки будут использоваться для работы с файлами CSV, регулярными выражениями и операциями с датой/ временем.

Инициализировать список очищенных данных

В этом шаге вы создадите пустой список для хранения очищенных данных.

  1. В файле data_clean.py добавьте следующий код ниже импортов:
## Initialize an empty list to store cleaned data
clean_data = []

Этот список будет использоваться для хранения строк очищенных данных.

Прочитать и обработать исходные данные

В этом шаге вы прочитаете исходные данные из файла raw_data.csv, обработаете каждую строку и добавите валидные строки в список clean_data.

  1. В файле data_clean.py добавьте следующий код ниже инициализации списка clean_data:
## Open and read the raw data CSV file
with open("raw_data.csv", "r") as f:
    reader = csv.DictReader(f)  ## Use DictReader for easy access to columns by name
    for row in reader:
        ## Extract relevant fields from each row
        name = row["name"]
        sex = row["gender"]
        date = row["birth date"]
        mail = row["mail"]

        ## Check if the name field is empty and skip the row if it is
        if len(name) < 1:
            continue

        ## Check if the gender field is valid (either 'M' or 'F') and skip the row if not
        if sex not in ["M", "F"]:
            continue

        ## Attempt to parse the birth date and calculate age; skip the row if parsing fails
        try:
            date = datetime.strptime(date, "%Y-%m-%d")
        except ValueError:
            continue
        age = datetime.now().year - date.year
        ## Skip the row if the calculated age is unrealistic (less than 0 or more than 200)
        if age < 0 or age > 200:
            continue

        ## Define a regex pattern for validating email addresses
        r = r"^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}$"
        ## Check if the email field matches the regex pattern and skip the row if it doesn't
        if not re.match(r, mail):
            continue

        ## If all checks pass, append the row to the cleaned data list
        clean_data.append(row)

Этот код читает исходные данные из файла raw_data.csv, обрабатывает каждую строку и добавляет валидные строки в список clean_data.

Записать очищенные данные в новый файл CSV

В этом шаге вы запишете очищенные данные из списка clean_data в новый CSV-файл с именем clean_data.csv.

  1. В файле data_clean.py добавьте следующий код ниже раздела обработки данных:
## Write the cleaned data to a new CSV file
with open("clean_data.csv", "w", newline="") as f:
    writer = csv.DictWriter(
        f, fieldnames=row.keys()
    )  ## DictWriter to write using column names
    writer.writeheader()  ## Write the header row
    writer.writerows(clean_data)  ## Write all the cleaned rows

Этот код создает новый CSV-файл с именем clean_data.csv и записывает в него очищенные данные из списка clean_data.

Запустить скрипт очистки данных

В этом последнем шаге вы запустите скрипт data_clean.py для генерации файла clean_data.csv.

  1. Сохраните файл data_clean.py.

  2. В терминале перейдите в директорию /home/labex/project, если вы этого еще не сделали.

  3. Запустите следующую команду для выполнения скрипта очистки данных:

python data_clean.py

После запуска скрипта в директории /home/labex/project должен появиться новый файл clean_data.csv, содержащий очищенные данные.

Поздравляем! Вы успешно завершили проект по очистке CSV-данных.

Резюме

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

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться