Ispezionare visivamente i dati

Feature Engineering con PySpark

John Hogue

Lead Data Scientist, General Mills

Descrivere i dati con DataFrame.describe()

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

Molte funzioni descrittive sono già disponibili

  • Media
    • pyspark.sql.functions.mean(col)
  • Asimmetria
    • pyspark.sql.functions.skewness(col)
  • Minimo
    • pyspark.sql.functions.min(col)
  • Covarianza
    • cov(col1, col2)
  • Correlazione
    • corr(col1, col2)
Feature Engineering con PySpark

Esempio con mean()

  • mean(col)
  • Funzione di aggregazione: restituisce la media dei valori in un gruppo.
df.agg({'SALESCLOSEPRICE': 'mean'}).collect()
[Row(avg(SALESCLOSEPRICE)=262804.4668)]
Feature Engineering con PySpark

Esempio con cov()

  • cov(col1, col2)
  • Parametri:
    • col1 – prima colonna
    • col2 – seconda colonna
df.cov('SALESCLOSEPRICE', 'YEARBUILT')
1281910.3840634783
Feature Engineering con PySpark

seaborn: visualizzazione statistica dei dati

Seaborn

Feature Engineering con PySpark

Note sui grafici

Creare grafici da DataFrame PySpark con librerie come Seaborn richiede la conversione in Pandas

ATTENZIONE: Campiona i DataFrame PySpark prima di convertirli in Pandas!

  • sample(withReplacement, fraction, seed=None)
    • withReplacement consente ripetizioni nel campione
    • fraction % di record da mantenere
    • seed seme casuale per la riproducibilità
# Campiona il 50% del DataFrame PySpark e conta le righe
df.sample(False, 0.5, 42).count()
2504
Feature Engineering con PySpark

Preparazione al grafico di una distribuzione

Seaborn distplot()

  • seaborn.distplot(a)
  • a : Series, array 1D o lista. Dati osservati.
# Importa la tua libreria di visualizzazione preferita
import seaborn as sns

# Campiona il dataframe sample_df = df.select(['SALESCLOSEPRICE']).sample(False, 0.5, 42)
# Converti il campione in un DataFrame Pandas pandas_df = sample_df.toPandas()
# Traccia il grafico sns.distplot(pandas_df)
Feature Engineering con PySpark

Distribuzione del prezzo di chiusura delle vendite

Displot

Feature Engineering con PySpark

Grafici di relazione

Seaborn lmplot()

  • seaborn.lmplot(x, y, data)
  • x, y : stringhe, variabili di input; devono essere nomi di colonne in data.
  • data : DataFrame Pandas
# Importa la tua libreria di visualizzazione preferita
import seaborn as sns

# Seleziona le colonne s_df = df.select(['SALESCLOSEPRICE', 'SQFTABOVEGROUND']) # Campiona il dataframe s_df = s_df.sample(False, 0.5, 42)
# Converti in DataFrame Pandas pandas_df = s_df.toPandas()
# Traccia il grafico sns.lmplot(x='SQFTABOVEGROUND', y='SALESCLOSEPRICE', data=pandas_df)
Feature Engineering con PySpark

Modello lineare tra SQFT above ground e prezzo di vendita

Grafico modello lineare

Feature Engineering con PySpark

Esercitiamoci!

Feature Engineering con PySpark

Preparing Video For Download...