Data visueel inspecteren

Feature Engineering met PySpark

John Hogue

Lead Data Scientist, General Mills

Beschrijvend worden met DataFrame.describe()

df.describe(['LISTPRICE']).show()
+-------+------------------+
|summary|         LISTPRICE|
+-------+------------------+
|  count|              5000|
|   mean|        263419.365|
| stddev|143944.10818036905|
|    min|            100000|
|    max|             99999|
+-------+------------------+
Feature Engineering met PySpark

Veel beschrijvende functies zijn al beschikbaar

  • Gemiddelde
    • pyspark.sql.functions.mean(col)
  • Scheefheid
    • pyspark.sql.functions.skewness(col)
  • Minimum
    • pyspark.sql.functions.min(col)
  • Covariantie
    • cov(col1, col2)
  • Correlatie
    • corr(col1, col2)
Feature Engineering met PySpark

Voorbeeld met mean()

  • mean(col)
  • Aggregatiefunctie: geeft het gemiddelde van de waarden in een groep.
df.agg({'SALESCLOSEPRICE': 'mean'}).collect()
[Row(avg(SALESCLOSEPRICE)=262804.4668)]
Feature Engineering met PySpark

Voorbeeld met cov()

  • cov(col1, col2)
  • Parameters:
    • col1 – eerste kolom
    • col2 – tweede kolom
df.cov('SALESCLOSEPRICE', 'YEARBUILT')
1281910.3840634783
Feature Engineering met PySpark

seaborn: statistische datavisualisatie

Seaborn

Feature Engineering met PySpark

Opmerkingen bij plotten

PySpark DataFrames plotten met standaardbibliotheken zoals Seaborn vereist conversie naar Pandas

WAARSCHUWING: Neem een steekproef van PySpark DataFrames voordat je naar Pandas converteert!

  • sample(withReplacement, fraction, seed=None)
    • withReplacement laat herhaling in de steekproef toe
    • fraction % van de rijen om te behouden
    • seed willekeurig startgetal voor reproduceerbaarheid
# Neem 50% steekproef van de PySpark DataFrame en tel rijen
df.sample(False, 0.5, 42).count()
2504
Feature Engineering met PySpark

Voorbereiden op het plotten van een verdeling

Seaborn distplot()

  • seaborn.distplot(a)
  • a : Series, 1d-array of lijst. Geobserveerde data.
# Importeer je favoriete visualisatiebibliotheek
import seaborn as sns

# Neem een steekproef uit de dataframe sample_df = df.select(['SALESCLOSEPRICE']).sample(False, 0.5, 42)
# Converteer de steekproef naar een Pandas DataFrame pandas_df = sample_df.toPandas()
# Plotten sns.distplot(pandas_df)
Feature Engineering met PySpark

Verdelingsplot van verkoopprijs bij afsluiten

Displot

Feature Engineering met PySpark

Relaties plotten

Seaborn lmplot()

  • seaborn.lmplot(x, y, data)
  • x, y : strings. Invoer: kolomnamen in data.
  • data : Pandas DataFrame
# Importeer je favoriete visualisatiebibliotheek
import seaborn as sns

# Selecteer kolommen s_df = df.select(['SALESCLOSEPRICE', 'SQFTABOVEGROUND']) # Neem steekproef van dataframe s_df = s_df.sample(False, 0.5, 42)
# Converteer naar Pandas DataFrame pandas_df = s_df.toPandas()
# Plotten sns.lmplot(x='SQFTABOVEGROUND', y='SALESCLOSEPRICE', data=pandas_df)
Feature Engineering met PySpark

Lineair model tussen SQFT boven maaiveld en verkoopprijs

Linear Model Plot

Feature Engineering met PySpark

Laten we oefenen!

Feature Engineering met PySpark

Preparing Video For Download...