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>Instructions de l’exercice
- Pivotez les valeurs de
ex_garage_listen regroupant par l’identifiant d’enregistrementNOavecgroupBy(); utilisez le code fourni pour agrégerconstant_valafin d’ignorer les valeurs nulles et de prendre la première valeur. - Effectuez une jointure gauche de
piv_dfavecdfen utilisantNOcomme condition de jointure. - Créez la liste des colonnes à remplir avec des zéros,
zfill_cols, en utilisant l’attributcolumnssurpiv_df. - Remplissez par des zéros les colonnes du dataframe pivoté,
zfill_cols, en utilisantfillna()avec unsubset.
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=____)