En aquest tema, aprendrem com gestionar dades faltants en Apache Spark. La gestió de dades faltants és una part crucial del processament de dades, ja que les dades incompletes poden afectar la qualitat de les anàlisis i els resultats dels models d'aprenentatge automàtic.

Objectius

  • Comprendre què són les dades faltants i per què és important gestionar-les.
  • Aprendre diferents tècniques per identificar i gestionar dades faltants en DataFrames de Spark.
  • Aplicar aquestes tècniques en exemples pràctics.

Què són les Dades Faltants?

Les dades faltants es refereixen a valors que no estan presents en un conjunt de dades. Això pot ocórrer per diverses raons, com errors en la recopilació de dades, problemes tècnics o simplement perquè la informació no estava disponible en el moment de la recopilació.

Importància de Gestionar les Dades Faltants

  • Qualitat de les Dades: Les dades incompletes poden portar a conclusions errònies.
  • Modelatge: Molts algoritmes d'aprenentatge automàtic no poden manejar dades faltants i requereixen que es tractin abans de l'entrenament.
  • Anàlisi: Les anàlisis estadístiques poden ser esbiaixades si no es gestionen adequadament les dades faltants.

Identificació de Dades Faltants

Exemple Pràctic

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, isnan, when, count

# Crear una sessió de Spark
spark = SparkSession.builder.appName("HandlingMissingData").getOrCreate()

# Crear un DataFrame d'exemple
data = [(1, "Alice", 50), (2, "Bob", None), (3, None, 30), (4, "David", 45), (5, "Eve", None)]
columns = ["id", "name", "age"]

df = spark.createDataFrame(data, columns)

# Mostrar el DataFrame original
df.show()

# Identificar les dades faltants
df.select([count(when(isnan(c) | col(c).isNull(), c)).alias(c) for c in df.columns]).show()

Explicació del Codi

  1. Crear una Sessió de Spark: Iniciem una sessió de Spark.
  2. Crear un DataFrame d'Exemple: Definim un DataFrame amb algunes dades faltants.
  3. Mostrar el DataFrame Original: Utilitzem show() per veure el contingut del DataFrame.
  4. Identificar les Dades Faltants: Utilitzem isnan i isNull per comptar els valors faltants en cada columna.

Tècniques per Gestionar Dades Faltants

  1. Eliminar Files o Columnes

Exemple Pràctic

# Eliminar files amb qualsevol valor faltant
df_cleaned = df.na.drop()
df_cleaned.show()

# Eliminar columnes amb qualsevol valor faltant
df_cleaned_cols = df.dropna(how='any', subset=['name', 'age'])
df_cleaned_cols.show()

Explicació del Codi

  1. Eliminar Files amb Valors Faltants: Utilitzem na.drop() per eliminar files que continguin qualsevol valor faltant.
  2. Eliminar Columnes amb Valors Faltants: Utilitzem dropna() amb el paràmetre subset per eliminar columnes específiques amb valors faltants.

  1. Imputació de Valors

Exemple Pràctic

from pyspark.ml.feature import Imputer

# Imputar valors faltants amb la mitjana
imputer = Imputer(inputCols=["age"], outputCols=["imputed_age"]).setStrategy("mean")
df_imputed = imputer.fit(df).transform(df)
df_imputed.show()

Explicació del Codi

  1. Imputació de Valors: Utilitzem Imputer de pyspark.ml.feature per substituir els valors faltants amb la mitjana de la columna.

  1. Substituir amb un Valor Específic

Exemple Pràctic

# Substituir valors faltants amb un valor específic
df_filled = df.na.fill({"age": 0, "name": "Unknown"})
df_filled.show()

Explicació del Codi

  1. Substituir amb un Valor Específic: Utilitzem na.fill() per substituir els valors faltants amb un valor específic per a cada columna.

Exercicis Pràctics

Exercici 1

Descripció: Carrega un DataFrame amb dades faltants i elimina totes les files que continguin valors faltants.

Codi

# Carregar un DataFrame amb dades faltants
data = [(1, "Alice", 50), (2, "Bob", None), (3, None, 30), (4, "David", 45), (5, "Eve", None)]
columns = ["id", "name", "age"]
df = spark.createDataFrame(data, columns)

# Eliminar files amb valors faltants
df_cleaned = df.na.drop()
df_cleaned.show()

Exercici 2

Descripció: Imputa els valors faltants en la columna age amb la mitjana de la columna.

Codi

from pyspark.ml.feature import Imputer

# Imputar valors faltants amb la mitjana
imputer = Imputer(inputCols=["age"], outputCols=["imputed_age"]).setStrategy("mean")
df_imputed = imputer.fit(df).transform(df)
df_imputed.show()

Resum

En aquesta secció, hem après què són les dades faltants i per què és important gestionar-les. Hem explorat diverses tècniques per identificar i gestionar dades faltants en DataFrames de Spark, incloent l'eliminació de files o columnes, la imputació de valors i la substitució amb valors específics. A més, hem aplicat aquestes tècniques en exemples pràctics i hem proporcionat exercicis per reforçar els conceptes apresos.

En el següent mòdul, explorarem la programació avançada amb Spark, incloent Spark Streaming i Spark MLlib.

© Copyright 2024. Tots els drets reservats