Gestire i dati mancanti

Feature Engineering con PySpark

John Hogue

Lead Data Scientist, General Mills

Come si perdono i dati nell'era digitale?

Raccolta dati

  • Sensori guasti

Regole di archiviazione

  • 2017-01-01 vs January 1st, 2017

Unire dati eterogenei

  • Mensile a settimanale

Mancanti intenzionali

  • Problemi di privacy

Scomparsa

Feature Engineering con PySpark

Tipi di mancanza

Missing completely at random

  • I dati mancanti sono un sottoinsieme totalmente casuale

Missing at random

  • Mancanze condizionalmente casuali in base a un'altra osservazione

Missing not at random

  • I dati mancano per come vengono raccolti
Feature Engineering con PySpark

Valutare i valori mancanti

Quando eliminare righe con dati mancanti?

  • I valori mancanti sono rari
  • Missing Completely at Random

isNull()

  • True se l'espressione corrente è null.
df.where(df['ROOF'].isNull()).count()
765
Feature Engineering con PySpark

Grafici dei valori mancanti

# Importa la libreria
import seaborn as sns

# Sottoinsieme del dataframe sub_df = df.select(['ROOMAREA1'])
# Campiona il dataframe sample_df = sub_df.sample(False, .5, 4)
# Converti in DataFrame Pandas pandas_df = sample_df.toPandas()
# Traccia il grafico sns.heatmap(data=pandas_df.isnull())
Feature Engineering con PySpark

Heatmap dei valori mancanti

Heatmap dei dati mancanti

Feature Engineering con PySpark

Imputazione dei valori mancanti

Processo di sostituzione dei valori mancanti

Basata su regole

  • Valore definito da logiche di business

Basata su statistiche

  • Media, mediana, ecc.

Basata su modello

  • Usa un modello per prevedere il valore
Feature Engineering con PySpark

Imputazione dei valori mancanti

** fillna(value, subset=None)

  • value il valore con cui sostituire i mancanti
  • subset l'elenco delle colonne in cui sostituire i mancanti
# Sostituire i valori mancanti con zero
df.fillna(0, subset=['DAYSONMARKET'])
# Sostituire con la media della colonna
col_mean = df.agg({'DAYSONMARKET': 'mean'}).collect()[0][0]
df.fillna(col_mean, subset=['DAYSONMARKET'])
Feature Engineering con PySpark

Esercitiamoci!

Feature Engineering con PySpark

Preparing Video For Download...