Práce s chybějícími daty

Feature Engineering with PySpark

John Hogue

Lead Data Scientist, General Mills

Jak data v digitální době mizí?

Sběr dat

  • Poruchy senzorů

Pravidla ukládání dat

  • 2017-01-01 vs 1. ledna 2017

Spojování různorodých dat

  • Měsíční vs. týdenní data

Záměrně chybějící

  • Ochrana soukromí

Chybějící

Feature Engineering with PySpark

Typy chybějících dat

Zcela náhodně chybějící

  • Chybějící data tvoří zcela náhodnou podmnožinu

Náhodně chybějící

  • Chybějící podmíněně náhodně na základě jiného pozorování

Nenáhodně chybějící

  • Data chybí kvůli způsobu jejich sběru
Feature Engineering with PySpark

Posouzení chybějících hodnot

Kdy odstraňovat řádky s chybějícími daty?

  • Chybějící hodnoty jsou vzácné
  • Zcela náhodně chybějící

isNull()

  • Vrátí True, pokud je aktuální výraz null.
df.where(df['ROOF'].isNull()).count()
765
Feature Engineering with PySpark

Vizualizace chybějících hodnot

# 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 with PySpark

Heatmapa chybějících hodnot

Heatmapa chybějících dat

Feature Engineering with PySpark

Imputace chybějících hodnot

Proces nahrazování chybějících hodnot

Na základě pravidel

  • Hodnota vycházející z obchodní logiky

Na základě statistik

  • Použití průměru, mediánu atd.

Na základě modelu

  • Predikce hodnoty pomocí modelu
Feature Engineering with PySpark

Imputace chybějících hodnot

** fillna(value, subset=None)

  • value hodnota nahrazující chybějící data
  • subset seznam názvů sloupců k nahrazení
# Replacing missing values with zero
df.fillna(0, subset=['DAYSONMARKET'])
# Replacing with the mean value for that column
col_mean = df.agg({'DAYSONMARKET': 'mean'}).collect()[0][0]
df.fillna(col_mean, subset=['DAYSONMARKET'])
Feature Engineering with PySpark

Pojďme si to procvičit!

Feature Engineering with PySpark

Preparing Video For Download...