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
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
distancelaair_time(convertit în ore). Folosește metoda.alias()pentru a numi această coloană"avg_speed". Salvează rezultatul în variabilaavg_speed. - Selectează coloanele
"origin","dest","tailnum"șiavg_speed(fără ghilimele!). Salvează rezultatul caspeed1. - Creează același tabel folosind
.selectExpr()și un șir de caractere care conține o expresie SQL. Salvează rezultatul caspeed2.
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 ____")