CommencezCommencez gratuitement

Pivot et jointure

Pouvoir « exploser » et pivoter un champ composé, c'est utile, mais on se retrouve avec un dataframe qui ne contient que ces valeurs pivotées. Pour que ce soit réellement utile, vous devrez le rejoindre au jeu de données original ! Après la jointure, il y aura 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.

Cette activité fait partie du cours

Ingénierie des caractéristiques avec PySpark

Voir le cours

Instructions de l’exercice

  • Faites un pivot des valeurs de ex_garage_list en groupant 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.
  • Faites 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 de piv_df.
  • Remplissez de zéros les colonnes pivotées, zfill_cols, à l'aide de 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