ComeçarComece de graça

Seleção II

Assim como no SQL, você também pode usar o método .select() para realizar operações por colunas. Quando estiver selecionando uma coluna usando a notação df.colName, você poderá executar qualquer operação com colunas, e o método .select() retornará a coluna transformada. Por exemplo:

flights.select(flights.air_time/60)

retorna uma coluna de durações de voo em horas em vez de minutos. Você também pode usar o método .alias() para renomear uma coluna que está selecionando. Portanto, se você quiser usar .select() para selecionar a coluna duration_hrs (que não está no DataFrame), poderá fazer o seguinte:

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

O método equivalente de DataFrames do Spark .selectExpr() recebe expressões SQL como uma string:

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

sendo que a palavra-chave as do SQL equivale ao método .alias(). Para selecionar várias colunas, você pode passar várias strings.

Lembre-se de que uma SparkSession chamada spark já está em seu espaço de trabalho, junto com o DataFrame flights do Spark.

Este exercício faz parte do curso

Introdução ao PySpark

Ver curso

Instruções do exercício

Crie uma tabela com a velocidade média de cada voo nos dois sentidos.

  • Calcule a velocidade média dividindo a distância (distance) pelo tempo de voo (air_time) convertido em horas. Use o método .alias() para chamar essa coluna de "avg_speed". Salve a saída como a variável avg_speed.
  • Selecione as colunas "origin", "dest", "tailnum" e avg_speed (sem aspas!). Salve o resultado como speed1.
  • Crie a mesma tabela usando .selectExpr() e uma string contendo uma expressão SQL. Salve o resultado como speed2.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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 e executar o código