Trabalhando com dados ausentes

Feature Engineering com PySpark

John Hogue

Lead Data Scientist, General Mills

Como os dados se perdem na era digital?

Coleta de dados

  • Sensores com defeito

Regras de armazenamento de dados

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

Junção de dados díspares

  • Mensal para semanal

Ausência intencional

  • Questões de privacidade

Ausente

Feature Engineering com PySpark

Tipos de ausência

Completamente ausentes ao acaso

  • Dados ausentes formam um subconjunto totalmente aleatório

Ausentes ao acaso

  • Ausentes condicionalmente ao acaso com base em outra observação

Ausentes não ao acaso

  • Ausência causada pela forma de coleta dos dados
Feature Engineering com PySpark

Avaliando valores ausentes

Quando excluir linhas com dados ausentes?

  • Valores ausentes são raros
  • Completamente ausentes ao acaso

isNull()

  • Retorna True se a expressão atual é nula.
df.where(df['ROOF'].isNull()).count()
765
Feature Engineering com PySpark

Plotando valores ausentes

# Import library
import seaborn as sns

# subset the dataframe sub_df = df.select(['ROOMAREA1'])
# sample the dataframe sample_df = sub_df.sample(False, .5, 4)
# Convert to Pandas DataFrame pandas_df = sample_df.toPandas()
# Plot it sns.heatmap(data=pandas_df.isnull())
Feature Engineering com PySpark

Mapa de calor de valores ausentes

Mapa de calor de dados ausentes

Feature Engineering com PySpark

Imputação de valores ausentes

Processo de substituir valores ausentes

Baseado em regras

  • Valor definido por lógica de negócio

Baseado em estatística

  • Usando média, mediana etc.

Baseado em modelo

  • Usar modelo para prever o valor
Feature Engineering com PySpark

Imputação de valores ausentes

** fillna(value, subset=None)

  • value: valor para substituir ausentes
  • subset: lista de colunas onde substituir ausentes
# Substituir ausentes por zero
df.fillna(0, subset=['DAYSONMARKET'])
# Substituir pela média da coluna
col_mean = df.agg({'DAYSONMARKET': 'mean'}).collect()[0][0]
df.fillna(col_mean, subset=['DAYSONMARKET'])
Feature Engineering com PySpark

Vamos praticar!

Feature Engineering com PySpark

Preparing Video For Download...