ÎncepețiÎncepe gratuit

Selecție II

Similar cu SQL, poți folosi și metoda .select() pentru a efectua operații pe coloane. Când selectezi o coloană folosind notația df.colName, poți aplica orice operație pe coloana respectivă, iar .select() va returna coloana transformată. De exemplu,

flights.select(flights.air_time/60)

returnează o coloană cu duratele zborurilor în ore, în loc de minute. Poți folosi și metoda .alias() pentru a redenumi o coloană selectată. Dacă vrei să .select() coloana duration_hrs (care nu există în DataFrame-ul tău), poți scrie:

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

Metoda echivalentă .selectExpr() din Spark DataFrame acceptă expresii SQL ca șir de caractere:

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

unde cuvântul cheie SQL as este echivalentul metodei .alias(). Pentru a selecta mai multe coloane, poți transmite mai multe șiruri de caractere.

Reține că în spațiul tău de lucru există deja o sesiune SparkSession numită spark, împreună cu DataFrame-ul Spark flights.

Acest exercițiu face parte din cursul

Fundamente PySpark

Vezi cursul

Instrucțiuni pentru exercițiu

Creează un tabel cu viteza medie a fiecărui zbor, calculată în ambele variante.

  • Calculează viteza medie împărțind distance la air_time (convertit în ore). Folosește metoda .alias() pentru a numi această coloană "avg_speed". Salvează rezultatul în variabila avg_speed.
  • Selectează coloanele "origin", "dest", "tailnum" și avg_speed (fără ghilimele!). Salvează rezultatul ca speed1.
  • Creează același tabel folosind .selectExpr() și un șir de caractere care conține o expresie SQL. Salvează rezultatul ca speed2.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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 ____")
Editează și rulează codul