Wizualna inspekcja danych

Inżynieria cech z PySpark

John Hogue

Lead Data Scientist, General Mills

Statystyki opisowe z DataFrame.describe()

df.describe(['LISTPRICE']).show()
+-------+------------------+
|summary|         LISTPRICE|
+-------+------------------+
|  count|              5000|
|   mean|        263419.365|
| stddev|143944.10818036905|
|    min|            100000|
|    max|             99999|
+-------+------------------+
Inżynieria cech z PySpark

Dostępnych jest wiele funkcji opisowych

  • Średnia
    • pyspark.sql.functions.mean(col)
  • Skośność
    • pyspark.sql.functions.skewness(col)
  • Minimum
    • pyspark.sql.functions.min(col)
  • Kowariancja
    • cov(col1, col2)
  • Korelacja
    • corr(col1, col2)
Inżynieria cech z PySpark

Przykład z mean()

  • mean(col)
  • Funkcja agregująca: zwraca średnią wartości w grupie.
df.agg({'SALESCLOSEPRICE': 'mean'}).collect()
[Row(avg(SALESCLOSEPRICE)=262804.4668)]
Inżynieria cech z PySpark

Przykład z cov()

  • cov(col1, col2)
  • Parametry:
    • col1 – pierwsza kolumna
    • col2 – druga kolumna
df.cov('SALESCLOSEPRICE', 'YEARBUILT')
1281910.3840634783
Inżynieria cech z PySpark

seaborn: wizualizacja danych statystycznych

Seaborn

Inżynieria cech z PySpark

Uwagi dotyczące wykresów

Wykresy PySpark DataFrames przy użyciu bibliotek takich jak Seaborn wymagają konwersji do Pandas

UWAGA: Przed konwersją do Pandas należy próbkować PySpark DataFrames!

  • sample(withReplacement, fraction, seed=None)
    • withReplacement – zezwala na powtórzenia w próbce
    • fraction – % rekordów do zachowania
    • seed – ziarno losowości dla reprodukowalności
# Sample 50% of the PySpark DataFrame and count rows
df.sample(False, 0.5, 42).count()
2504
Inżynieria cech z PySpark

Przygotowanie do wykresu rozkładu

Seaborn distplot()

  • seaborn.distplot(a)
  • a : Series, tablica 1D lub lista. Obserwowane dane.
# Import your favorite visualization library
import seaborn as sns

# Sample the dataframe sample_df = df.select(['SALESCLOSEPRICE']).sample(False, 0.5, 42)
# Convert the sample to a Pandas DataFrame pandas_df = sample_df.toPandas()
# Plot it sns.distplot(pandas_df)
Inżynieria cech z PySpark

Wykres rozkładu ceny zamknięcia sprzedaży

Wykres rozkładu

Inżynieria cech z PySpark

Wykres zależności między zmiennymi

Seaborn lmplot()

  • seaborn.lmplot(x, y, data)
  • x, y : ciągi znaków; nazwy kolumn w zbiorze danych.
  • data : Pandas DataFrame
# Import your favorite visualization library
import seaborn as sns

# Select columns s_df = df.select(['SALESCLOSEPRICE', 'SQFTABOVEGROUND']) # Sample dataframe s_df = s_df.sample(False, 0.5, 42)
# Convert to Pandas DataFrame pandas_df = s_df.toPandas()
# Plot it sns.lmplot(x='SQFTABOVEGROUND', y='SALESCLOSEPRICE', data=pandas_df)
Inżynieria cech z PySpark

Wykres modelu liniowego: pow. nad ziemią a cena sprzedaży

Wykres modelu liniowego

Inżynieria cech z PySpark

Czas na ćwiczenia!

Inżynieria cech z PySpark

Preparing Video For Download...