Inspection visuelle des données

Ingénierie des caractéristiques avec PySpark

John Hogue

Lead Data Scientist, General Mills

Décrire avec DataFrame.describe()

df.describe(['LISTPRICE']).show()
+-------+------------------+
|summary|         LISTPRICE|
+-------+------------------+
|  count|              5000|
|   mean|        263419.365|
| stddev|143944.10818036905|
|    min|            100000|
|    max|             99999|
+-------+------------------+
Ingénierie des caractéristiques avec PySpark

De nombreuses fonctions descriptives sont déjà offertes

  • Moyenne
    • pyspark.sql.functions.mean(col)
  • Asymétrie (skewness)
    • pyspark.sql.functions.skewness(col)
  • Minimum
    • pyspark.sql.functions.min(col)
  • Covariance
    • cov(col1, col2)
  • Corrélation
    • corr(col1, col2)
Ingénierie des caractéristiques avec PySpark

Exemple avec mean()

  • mean(col)
  • Fonction d'agrégation : renvoie la moyenne des valeurs d'un groupe.
df.agg({'SALESCLOSEPRICE': 'mean'}).collect()
[Row(avg(SALESCLOSEPRICE)=262804.4668)]
Ingénierie des caractéristiques avec PySpark

Exemple avec cov()

  • cov(col1, col2)
  • Paramètres :
    • col1 – première colonne
    • col2 – deuxième colonne
df.cov('SALESCLOSEPRICE', 'YEARBUILT')
1281910.3840634783
Ingénierie des caractéristiques avec PySpark

seaborn : visualisation statistique des données

Seaborn

Ingénierie des caractéristiques avec PySpark

Remarques sur le traçage

Tracer des DataFrames PySpark avec des bibliothèques comme Seaborn exige une conversion en Pandas

AVERTISSEMENT : Échantillonnez les DataFrames PySpark avant de convertir en Pandas !

  • sample(withReplacement, fraction, seed=None)
    • withReplacement permet les répétitions dans l'échantillon
    • fraction % des enregistrements à garder
    • seed graine aléatoire pour la reproductibilité
# Échantillonner 50 % du DataFrame PySpark et compter les lignes
df.sample(False, 0.5, 42).count()
2504
Ingénierie des caractéristiques avec PySpark

Préparer le tracé d'une distribution

Seaborn distplot()

  • seaborn.distplot(a)
  • a : Series, tableau 1D ou liste. Données observées.
# Importer votre bibliothèque de visualisation préférée
import seaborn as sns

# Échantillonner le DataFrame sample_df = df.select(['SALESCLOSEPRICE']).sample(False, 0.5, 42)
# Convertir l'échantillon en DataFrame Pandas pandas_df = sample_df.toPandas()
# Tracer sns.distplot(pandas_df)
Ingénierie des caractéristiques avec PySpark

Distribution du prix de vente final

Displot

Ingénierie des caractéristiques avec PySpark

Tracer des relations

Seaborn lmplot()

  • seaborn.lmplot(x, y, data)
  • x, y : chaînes. Variables d'entrée ; doivent être des noms de colonnes dans data.
  • data : DataFrame Pandas
# Importer votre bibliothèque de visualisation préférée
import seaborn as sns

# Sélectionner les colonnes s_df = df.select(['SALESCLOSEPRICE', 'SQFTABOVEGROUND']) # Échantillonner le DataFrame s_df = s_df.sample(False, 0.5, 42)
# Convertir en DataFrame Pandas pandas_df = s_df.toPandas()
# Tracer sns.lmplot(x='SQFTABOVEGROUND', y='SALESCLOSEPRICE', data=pandas_df)
Ingénierie des caractéristiques avec PySpark

Modèle linéaire entre la superficie hors-sol et le prix de vente

Diagramme de modèle linéaire

Ingénierie des caractéristiques avec PySpark

Passons à la pratique!

Ingénierie des caractéristiques avec PySpark

Preparing Video For Download...