Introdução
Neste projeto, você aprenderá como limpar e purificar dados CSV removendo dados incompletos, incorretos e inválidos. O objetivo é criar um conjunto de dados limpo a partir dos dados brutos, que pode ser usado para análise ou processamento posterior.
🎯 Tarefas
Neste projeto, você aprenderá:
- Como configurar o ambiente do projeto e preparar os arquivos necessários
- Como importar as bibliotecas necessárias para a limpeza de dados
- Como ler e processar os dados brutos, verificando vários tipos de dados sujos (dirty data)
- Como escrever os dados limpos em um novo arquivo CSV
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Usar Python e sua biblioteca padrão para trabalhar com dados CSV
- Aplicar técnicas para validar e limpar dados, como verificar valores ausentes, formatos inválidos e dados irrealistas
- Implementar um processo de limpeza de dados para criar um conjunto de dados de alta qualidade
- Gerar um novo arquivo CSV com os dados limpos
Entendendo o Formato dos Dados
Nesta etapa, você entenderá os dados antes do processo de limpeza de dados.
- Navegue até o diretório
/home/labex/project. - Dentro do diretório do projeto, você deve encontrar um arquivo
raw_data.csv. Este arquivo contém os dados brutos que precisam ser limpos. - Abra o arquivo
raw_data.csv. Você pode ver todas as colunas, e seu formato correto deve ser:- Coluna Nome (Name Column): Com mais de 1 palavra.
- Coluna Gênero (Gender Column): Espera-se 'F' ou 'M'.
- Coluna Data de Nascimento (Birth Date Column): Formatada como
%Y-%m-%d. - Coluna Email (Email Column): Conforme
username@domain.com.
Importar as Bibliotecas Necessárias
Nesta etapa, você importará as bibliotecas necessárias para o processo de limpeza de dados.
Abra o arquivo
data_clean.pyem um editor de texto.Adicione o seguinte código no início do arquivo:
import csv
import re
from datetime import datetime
Essas bibliotecas serão usadas para trabalhar com arquivos CSV, expressões regulares e operações de data/hora.
Inicializar a Lista de Dados Limpos
Nesta etapa, você criará uma lista vazia para armazenar os dados limpos.
- No arquivo
data_clean.py, adicione o seguinte código abaixo das importações:
## Initialize an empty list to store cleaned data
clean_data = []
Esta lista será usada para armazenar as linhas de dados limpos.
Ler e Processar os Dados Brutos
Nesta etapa, você lerá os dados brutos do arquivo raw_data.csv, processará cada linha e adicionará as linhas válidas à lista clean_data.
- No arquivo
data_clean.py, adicione o seguinte código abaixo da inicialização da listaclean_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)
Este código lê os dados brutos do arquivo raw_data.csv, processa cada linha e adiciona as linhas válidas à lista clean_data.
Escrever os Dados Limpos para um Novo Arquivo CSV
Nesta etapa, você escreverá os dados limpos da lista clean_data em um novo arquivo CSV chamado clean_data.csv.
- No arquivo
data_clean.py, adicione o seguinte código abaixo da seção de processamento de dados:
## 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
Este código cria um novo arquivo CSV chamado clean_data.csv e escreve os dados limpos da lista clean_data nele.
Executar o Script de Limpeza de Dados
Nesta etapa final, você executará o script data_clean.py para gerar o arquivo clean_data.csv.
Salve o arquivo
data_clean.py.No terminal, navegue até o diretório
/home/labex/project, caso ainda não esteja lá.Execute o seguinte comando para executar o script de limpeza de dados:
python data_clean.py
Após executar o script, você deverá encontrar um novo arquivo clean_data.csv no diretório /home/labex/project, contendo os dados limpos.
Parabéns! Você concluiu com sucesso o projeto de purificação de dados CSV.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



