CommencerCommencez gratuitement

Pivot et jointure

Pouvoir « exploser » puis pivoter un champ composé est très utile, mais cela ne laisse qu’un dataframe avec les seules valeurs pivotées. Pour que ce soit vraiment utile, vous devez le rejoindre au jeu de données d’origine ! Après avoir joint les jeux de données, nous aurons beaucoup de valeurs NULL dans les nouvelles colonnes. Comme nous connaissons le contexte de leur création, nous pouvons sans risque les remplacer par des zéros : soit le nouvel élément possède un attribut, soit non.

Cet exercice fait partie du cours

<cours>Feature Engineering avec PySpark</cours>
Voir le cours

Instructions de l’exercice

  • Pivotez les valeurs de ex_garage_list en regroupant par l’identifiant d’enregistrement NO avec groupBy() ; utilisez le code fourni pour agréger constant_val afin d’ignorer les valeurs nulles et de prendre la première valeur.
  • Effectuez une jointure gauche de piv_df avec df en utilisant NO comme condition de jointure.
  • Créez la liste des colonnes à remplir avec des zéros, zfill_cols, en utilisant l’attribut columns sur piv_df.
  • Remplissez par des zéros les colonnes du dataframe pivoté, zfill_cols, en utilisant fillna() avec un subset.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

from pyspark.sql.functions import coalesce, first

# Pivot 
piv_df = ex_df.____(____).____(____).agg(coalesce(first(____)))

# Join the dataframes together and fill null
joined_df = ____.join(____, on='NO', how=____)

# Columns to zero fill
zfill_cols = ____.____

# Zero fill the pivoted values
zfilled_df = joined_df.____(0, subset=____)
Modifier et exécuter le code