Wybieranie kolumn II
Podobnie jak w SQL, metody .select() możesz używać także do operacji na kolumnach. Gdy wybierasz kolumnę za pomocą notacji df.colName, możesz wykonać na niej dowolną operację – metoda .select() zwróci przekształconą kolumnę. Na przykład:
flights.select(flights.air_time/60)
zwraca kolumnę z czasem lotu w godzinach zamiast w minutach. Możesz też użyć metody .alias(), aby zmienić nazwę wybieranej kolumny. Jeśli chcesz za pomocą .select() uzyskać kolumnę duration_hrs (której nie ma w twoim DataFrame), możesz napisać:
flights.select((flights.air_time/60).alias("duration_hrs"))
Równoważna metoda .selectExpr() przyjmuje wyrażenia SQL w postaci ciągu znaków:
flights.selectExpr("air_time/60 as duration_hrs")
Słowo kluczowe SQL as pełni tu taką samą rolę jak metoda .alias(). Aby wybrać wiele kolumn, wystarczy przekazać kilka ciągów znaków.
Pamiętaj, że w twoim środowisku jest już dostępna SparkSession o nazwie spark oraz DataFrame Spark o nazwie flights.
To ćwiczenie jest częścią kursu
Podstawy PySpark
Instrukcje do ćwiczenia
Stwórz tabelę ze średnią prędkością każdego lotu – na dwa sposoby.
- Oblicz średnią prędkość, dzieląc
distanceprzezair_time(przeliczony na godziny). Użyj metody.alias(), aby nazwać tę kolumnę"avg_speed". Zapisz wynik w zmiennejavg_speed. - Wybierz kolumny
"origin","dest","tailnum"orazavg_speed(bez cudzysłowów!). Zapisz wynik jakospeed1. - Utwórz tę samą tabelę, używając
.selectExpr()i ciągu znaków zawierającego wyrażenie SQL. Zapisz wynik jakospeed2.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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 ____")