CommencerCommencez gratuitement

Sélection II

À l'instar de SQL, vous pouvez également utiliser la méthode .select() pour effectuer des opérations sur les colonnes. Lorsque vous sélectionnez une colonne à l'aide de la notation df.colName, vous pouvez effectuer n'importe quelle opération sur la colonne et la méthode .select() renverra la colonne transformée. Par exemple,

flights.select(flights.air_time/60)

renvoie une colonne indiquant la durée des vols en heures plutôt qu'en minutes. Vous pouvez également utiliser la méthode .alias() pour renommer une colonne que vous sélectionnez. Si vous souhaitez utiliser .select() pour la colonne duration_hrs (qui ne figure pas dans votre DataFrame), vous pouvez procéder comme suit :

flights.select((flights.air_time/60).alias("duration_hrs"))

La méthode équivalente Spark DataFrame, .selectExpr(), accepte les expressions SQL sous forme de chaîne :

flights.selectExpr("air_time/60 as duration_hrs")

avec le mot-clé SQL as étant équivalent à la méthode .alias(). Pour sélectionner plusieurs colonnes, vous pouvez transmettre plusieurs chaînes.

Veuillez noter qu'un SparkSession nommé spark se trouve déjà dans votre espace de travail, ainsi que le Spark DataFrame flights.

Cet exercice fait partie du cours

<cours>Principes fondamentaux de PySpark</cours>
Voir le cours

Instructions de l’exercice

Créez une table indiquant la vitesse moyenne de chaque vol dans les deux sens.

  • Calculez la vitesse moyenne en divisant distance par air_time (convertie en heures). Veuillez utiliser la méthode .alias() et nommer cette colonne "avg_speed". Veuillez enregistrer la sortie sous la variable avg_speed.
  • Veuillez sélectionner les colonnes "origin", "dest", "tailnum" et avg_speed (sans les guillemets). Enregistrez cela sous speed1.
  • Veuillez créer la même table en utilisant .selectExpr() et une chaîne contenant une expression SQL. Enregistrez cela sous speed2.

Exercice interactif pratique

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

# Define avg_speed
avg_speed = (flights.____/(flights.____/60)).alias("____")

# Select the correct columns
speed1 = flights.select("origin", "dest", "tailnum", avg_speed)

# Create the same table using a SQL expression
speed2 = flights.selectExpr("____", "____", "____", "distance/(air_time/60) as ____")
Modifier et exécuter le code