CommencerCommencer gratuitement

Sélection II

Comme pour SQL, vous pouvez également utiliser la méthode .select() pour effectuer des opérations en 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 de durées de vol en heures au lieu de minutes. Vous pouvez également utiliser la méthode .alias() pour renommer une colonne que vous sélectionnez. Ainsi, si vous souhaitez .select() la colonne duration_hrs (qui n'est pas dans votre DataFrame), vous pouvez faire ce qui suit

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

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

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

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

Rappelez-vous qu'un site SparkSession appelé spark se trouve déjà dans votre espace de travail, ainsi que le DataFrame Spark flights.

Cet exercice fait partie du cours

Introduction à PySpark

Afficher le cours

Instructions

Créez un tableau de la vitesse moyenne de chaque vol dans les deux sens.

  • Calculez la vitesse moyenne en divisant le site distance par le site air_time (converti en heures). Utilisez la méthode .alias() pour nommer cette colonne "avg_speed". Enregistrez la sortie sous la forme de la variable avg_speed.
  • Sélectionnez les colonnes "origin", "dest", "tailnum", et avg_speed (sans les guillemets !). Enregistrez ceci sous speed1.
  • Créez le même tableau en utilisant .selectExpr() et une chaîne contenant une expression SQL. Enregistrez ceci sous speed2.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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