La neteja de dades és un pas fonamental en el procés de preprocessament de dades en Machine Learning. Aquest procés implica identificar i corregir errors, omplir valors mancants, eliminar duplicats i assegurar-se que les dades siguin coherents i adequades per a l'anàlisi. Una bona neteja de dades pot millorar significativament la qualitat dels models de Machine Learning.

Objectius de la Neteja de Dades

  • Eliminar errors i inconsistències: Corregir dades incorrectes o incoherents.
  • Gestionar valors mancants: Decidir com tractar les dades incompletes.
  • Eliminar duplicats: Assegurar que cada registre sigui únic.
  • Normalitzar dades: Assegurar que les dades segueixin un format consistent.

Passos per a la Neteja de Dades

  1. Identificació de Dades Incorrectes o Incoherents

  • Errors tipogràfics: Correcció de faltes d'ortografia o errors de digitació.
  • Valors fora de rang: Identificació de valors que no tenen sentit en el context (per exemple, una edat de 150 anys).
  • Incoherències: Verificar que les dades siguin coherents entre diferents camps (per exemple, una data de naixement posterior a la data de registre).

  1. Tractament de Valors Mancants

  • Eliminació de registres: Si hi ha molts valors mancants en un registre, pot ser millor eliminar-lo.
  • Imputació de valors: Substituir els valors mancants per la mitjana, mediana o mode de la columna, o utilitzar tècniques més avançades com la imputació basada en models.
  • Utilització de valors per defecte: Assignar un valor per defecte quan sigui apropiat.

  1. Eliminació de Duplicats

  • Identificació de duplicats: Utilitzar funcions per detectar registres duplicats.
  • Eliminació de duplicats: Decidir quins duplicats eliminar i assegurar-se que es manté la informació rellevant.

  1. Normalització de Dades

  • Conversió d'unitats: Assegurar que totes les dades utilitzen les mateixes unitats (per exemple, convertir totes les mesures de longitud a metres).
  • Formateig de dades: Assegurar que les dades segueixen un format consistent (per exemple, dates en el mateix format).

Exemples Pràctics

Exemple 1: Identificació i Correcció d'Errors

import pandas as pd

# Crear un DataFrame d'exemple
data = {'Nom': ['Anna', 'Joan', 'Maria', 'Pere'],
        'Edat': [25, -30, 29, 150],
        'Ciutat': ['Barcelona', 'Girona', 'Lleida', 'Tarragona']}

df = pd.DataFrame(data)

# Identificar valors fora de rang
print("Valors fora de rang:")
print(df[df['Edat'] < 0])
print(df[df['Edat'] > 120])

# Corregir valors fora de rang
df.loc[df['Edat'] < 0, 'Edat'] = 0
df.loc[df['Edat'] > 120, 'Edat'] = 120

print("\nDataFrame corregit:")
print(df)

Exemple 2: Tractament de Valors Mancants

import pandas as pd
import numpy as np

# Crear un DataFrame amb valors mancants
data = {'Nom': ['Anna', 'Joan', 'Maria', 'Pere'],
        'Edat': [25, np.nan, 29, 35],
        'Ciutat': ['Barcelona', 'Girona', np.nan, 'Tarragona']}

df = pd.DataFrame(data)

# Imputació de valors mancants amb la mitjana
df['Edat'].fillna(df['Edat'].mean(), inplace=True)

# Imputació de valors mancants amb un valor per defecte
df['Ciutat'].fillna('Desconegut', inplace=True)

print("DataFrame amb valors mancants imputats:")
print(df)

Exemple 3: Eliminació de Duplicats

import pandas as pd

# Crear un DataFrame amb duplicats
data = {'Nom': ['Anna', 'Joan', 'Maria', 'Pere', 'Anna'],
        'Edat': [25, 30, 29, 35, 25],
        'Ciutat': ['Barcelona', 'Girona', 'Lleida', 'Tarragona', 'Barcelona']}

df = pd.DataFrame(data)

# Identificar duplicats
print("Duplicats:")
print(df[df.duplicated()])

# Eliminar duplicats
df.drop_duplicates(inplace=True)

print("\nDataFrame sense duplicats:")
print(df)

Exercicis Pràctics

Exercici 1: Neteja de Dades Incorrectes

  1. Crea un DataFrame amb dades incorrectes (errors tipogràfics, valors fora de rang, etc.).
  2. Identifica i corregeix aquests errors.

Exercici 2: Tractament de Valors Mancants

  1. Crea un DataFrame amb valors mancants.
  2. Imputa els valors mancants utilitzant diferents tècniques (mitjana, mediana, mode, etc.).

Exercici 3: Eliminació de Duplicats

  1. Crea un DataFrame amb registres duplicats.
  2. Identifica i elimina els duplicats.

Solucions als Exercicis

Solució a l'Exercici 1

import pandas as pd

# Crear un DataFrame amb dades incorrectes
data = {'Nom': ['Anna', 'Joan', 'Maria', 'Pere'],
        'Edat': [25, -30, 29, 150],
        'Ciutat': ['Barcelona', 'Girona', 'Lleida', 'Tarragona']}

df = pd.DataFrame(data)

# Identificar i corregir errors
df.loc[df['Edat'] < 0, 'Edat'] = 0
df.loc[df['Edat'] > 120, 'Edat'] = 120

print("DataFrame corregit:")
print(df)

Solució a l'Exercici 2

import pandas as pd
import numpy as np

# Crear un DataFrame amb valors mancants
data = {'Nom': ['Anna', 'Joan', 'Maria', 'Pere'],
        'Edat': [25, np.nan, 29, 35],
        'Ciutat': ['Barcelona', 'Girona', np.nan, 'Tarragona']}

df = pd.DataFrame(data)

# Imputació de valors mancants amb la mitjana
df['Edat'].fillna(df['Edat'].mean(), inplace=True)

# Imputació de valors mancants amb un valor per defecte
df['Ciutat'].fillna('Desconegut', inplace=True)

print("DataFrame amb valors mancants imputats:")
print(df)

Solució a l'Exercici 3

import pandas as pd

# Crear un DataFrame amb duplicats
data = {'Nom': ['Anna', 'Joan', 'Maria', 'Pere', 'Anna'],
        'Edat': [25, 30, 29, 35, 25],
        'Ciutat': ['Barcelona', 'Girona', 'Lleida', 'Tarragona', 'Barcelona']}

df = pd.DataFrame(data)

# Identificar i eliminar duplicats
df.drop_duplicates(inplace=True)

print("DataFrame sense duplicats:")
print(df)

Resum

En aquesta secció, hem après la importància de la neteja de dades en el procés de preprocessament de dades per a Machine Learning. Hem explorat diferents tècniques per identificar i corregir errors, gestionar valors mancants, eliminar duplicats i normalitzar dades. A més, hem vist exemples pràctics i hem proporcionat exercicis per reforçar els conceptes apresos. La neteja de dades és un pas crucial per assegurar que els models de Machine Learning es basen en dades de qualitat, la qual cosa pot millorar significativament el seu rendiment i precisió.

Curs de Machine Learning

Mòdul 1: Introducció al Machine Learning

Mòdul 2: Fonaments d'Estadística i Probabilitat

Mòdul 3: Preprocessament de Dades

Mòdul 4: Algoritmes de Machine Learning Supervisat

Mòdul 5: Algoritmes de Machine Learning No Supervisat

Mòdul 6: Avaluació i Validació de Models

Mòdul 7: Tècniques Avançades i Optimització

Mòdul 8: Implementació i Desplegament de Models

Mòdul 9: Projectes Pràctics

Mòdul 10: Recursos Addicionals

© Copyright 2024. Tots els drets reservats