Aller plus loin dans l’analyse
Vous avez déjà transformé ce jeu de données en un format très différent, mais il reste encore quelques étapes. Vous devez préparer les données de colonnes pour les analyses à venir et supprimer quelques colonnes intermédiaires.
Le contexte spark est disponible et pyspark.sql.functions est importé sous l’alias F. Les types de pyspark.sql.types sont déjà importés. Le DataFrame split_df est dans l’état où vous l’avez laissé. Rappel : vous pouvez utiliser .printSchema() sur un DataFrame dans la console pour afficher les noms et les types des colonnes.
⚠️ Remarque : Si vous voyez une AttributeError, actualisez les exercices et cliquez sur Run Solution sans cliquer sur Exécuter le code.
Cet exercice fait partie du cours
Nettoyer des données avec PySpark
Instructions
- Créez une nouvelle fonction appelée
retrieverqui prend deux arguments : les colonnes découpées (cols) et le nombre total de colonnes (colcount). Cette fonction doit renvoyer une liste des éléments qui n’ont pas encore été définis comme colonnes (c’est‑à‑dire tout ce qui vient après l’élément 4 dans la liste). - Définissez la fonction comme une UDF Spark, renvoyant un tableau de chaînes de caractères.
- Créez la nouvelle colonne
dog_listà l’aide de l’UDF et des colonnes disponibles dans le DataFrame. - Supprimez les colonnes
_c0,colcountetsplit_cols.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
def retriever(____, ____):
# Return a list of dog data
return ____[4:____]
# Define the method as a UDF
udfRetriever = ____(____, ArrayType(____))
# Create a new column using your UDF
split_df = split_df.withColumn('dog_list', ____(____, ____))
# Remove the original column, split_cols, and the colcount
split_df = split_df.drop('____').____('____').____('____')