ComenzarEmpieza gratis

Selección II

De forma similar a SQL, también puedes utilizar el método .select() para realizar operaciones por columnas. Cuando selecciones una columna utilizando la notación df.colName, puedes realizar cualquier operación con la columna y el método .select() devolverá la columna transformada. Por ejemplo:

flights.select(flights.air_time/60)

devuelve una columna de duraciones de vuelo en horas en lugar de minutos. También puedes utilizar el método .alias() para cambiar el nombre de una columna que estés seleccionando. Así que si quisieras .select() la columna duration_hrs (que no está en tu DataFrame) podrías hacer

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

El método equivalente de Spark DataFrame .selectExpr() toma las expresiones SQL como una cadena:

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

siendo la palabra clave SQL as equivalente al método .alias(). Para seleccionar varias columnas, puedes pasar varias cadenas.

Recuerda que ya tienes en tu espacio de trabajo un SparkSession llamado spark, junto con el Spark DataFrame flights.

Este ejercicio forma parte del curso

Introducción a PySpark

Ver curso

Instrucciones de ejercicio

Crea una tabla con la velocidad media de cada vuelo en ambos sentidos.

  • Calcula la velocidad media dividiendo la distance por la air_time (convertida en horas). Utiliza el método .alias() nombra esta columna "avg_speed". Guarda el resultado como la variable avg_speed.
  • Selecciona las columnas "origin", "dest", "tailnum", y avg_speed (¡sin comillas!). Guárdala como speed1.
  • Crea la misma tabla utilizando .selectExpr() y una cadena que contenga una expresión SQL. Guárdala como speed2.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

# 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 ____")
Editar y ejecutar código