Daten visuell prüfen

Feature Engineering mit PySpark

John Hogue

Lead Data Scientist, General Mills

Beschreibend werden mit DataFrame.describe()

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

Viele beschreibende Funktionen sind schon verfügbar

  • Mittelwert
    • pyspark.sql.functions.mean(col)
  • Schiefe
    • pyspark.sql.functions.skewness(col)
  • Minimum
    • pyspark.sql.functions.min(col)
  • Kovarianz
    • cov(col1, col2)
  • Korrelation
    • corr(col1, col2)
Feature Engineering mit PySpark

Beispiel mit mean()

  • mean(col)
  • Aggregatfunktion: gibt den Durchschnitt (Mittelwert) der Werte in einer Gruppe zurück.
df.agg({'SALESCLOSEPRICE': 'mean'}).collect()
[Row(avg(SALESCLOSEPRICE)=262804.4668)]
Feature Engineering mit PySpark

Beispiel mit cov()

  • cov(col1, col2)
  • Parameter:
    • col1 – erste Spalte
    • col2 – zweite Spalte
df.cov('SALESCLOSEPRICE', 'YEARBUILT')
1281910.3840634783
Feature Engineering mit PySpark

seaborn: statistische Datenvisualisierung

Seaborn

Feature Engineering mit PySpark

Hinweise zum Plotten

Zum Plotten von PySpark-DataFrames mit Standardbibliotheken wie Seaborn musst du erst nach Pandas konvertieren

WARNUNG: Sample PySpark-DataFrames, bevor du sie zu Pandas konvertierst!

  • sample(withReplacement, fraction, seed=None)
    • withReplacement erlaubt Wiederholungen in der Stichprobe
    • fraction % der zu behaltenden Zeilen
    • seed Zufallsstartwert für Reproduzierbarkeit
# 50 % des PySpark-DataFrames sampeln und Zeilen zählen
df.sample(False, 0.5, 42).count()
2504
Feature Engineering mit PySpark

Vorbereitung zum Plotten einer Verteilung

Seaborn distplot()

  • seaborn.distplot(a)
  • a : Series, 1D-Array oder Liste. Beobachtete Daten.
# Deine bevorzugte Visualisierungsbibliothek importieren
import seaborn as sns

# DataFrame sampeln sample_df = df.select(['SALESCLOSEPRICE']).sample(False, 0.5, 42)
# Sample in einen Pandas-DataFrame umwandeln pandas_df = sample_df.toPandas()
# Plotten sns.distplot(pandas_df)
Feature Engineering mit PySpark

Verteilungsplot des Verkaufsschlusspreises

Displot

Feature Engineering mit PySpark

Beziehungen plotten

Seaborn lmplot()

  • seaborn.lmplot(x, y, data)
  • x, y : Strings, Eingabevariablen; sollten Spaltennamen in data sein.
  • data : Pandas-DataFrame
# Deine bevorzugte Visualisierungsbibliothek importieren
import seaborn as sns

# Spalten auswählen s_df = df.select(['SALESCLOSEPRICE', 'SQFTABOVEGROUND']) # DataFrame sampeln s_df = s_df.sample(False, 0.5, 42)
# In Pandas-DataFrame umwandeln pandas_df = s_df.toPandas()
# Plotten sns.lmplot(x='SQFTABOVEGROUND', y='SALESCLOSEPRICE', data=pandas_df)
Feature Engineering mit PySpark

Lineares Modell: Fläche über Erdgeschoss vs. Verkaufspreis

Linear Model Plot

Feature Engineering mit PySpark

Lass uns üben!

Feature Engineering mit PySpark

Preparing Video For Download...