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
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 siteair_time
(converti en heures). Utilisez la méthode.alias()
pour nommer cette colonne"avg_speed"
. Enregistrez la sortie sous la forme de la variableavg_speed
. - Sélectionnez les colonnes
"origin", "dest", "tailnum"
, etavg_speed
(sans les guillemets !). Enregistrez ceci sousspeed1
. - Créez le même tableau en utilisant
.selectExpr()
et une chaîne contenant une expression SQL. Enregistrez ceci sousspeed2
.
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 ____")