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
Instructions de l’exercice
- Faites un pivot des valeurs de
ex_garage_listen groupant 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. - Faites 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'attributcolumnsdepiv_df. - Remplissez de zéros les colonnes pivotées,
zfill_cols, à l'aide defillna()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=____)