Výběr sloupců II
Stejně jako v SQL můžeš metodou .select() provádět operace nad jednotlivými sloupci. Pokud vybíráš sloupec zápisem df.colName, můžeš rovnou provést libovolnou operaci – .select() vrátí transformovaný sloupec. Například:
flights.select(flights.air_time/60)
vrátí sloupec s délkou letu v hodinách místo minut. Pomocí metody .alias() pak můžeš přejmenovat sloupec, který vybíráš. Pokud bys chtěl/a vybrat sloupec duration_hrs (který v DataFrame není), napíšeš:
flights.select((flights.air_time/60).alias("duration_hrs"))
Ekvivalentní metoda .selectExpr() přijímá SQL výrazy jako řetězec:
flights.selectExpr("air_time/60 as duration_hrs")
Klíčové slovo SQL as je zde ekvivalentem metody .alias(). Pro výběr více sloupců jednoduše předej více řetězců.
Nezapomeň, že SparkSession pojmenovaná spark je v tvém workspace již k dispozici, stejně jako Spark DataFrame flights.
Toto cvičení je součástí kurzu
Foundations of PySpark
Pokyny k cvičení
Vytvoř tabulku s průměrnou rychlostí každého letu – oběma způsoby.
- Vypočítej průměrnou rychlost vydělením sloupce
distancesloupcemair_time(převedeným na hodiny). Pomocí metody.alias()pojmenuj tento sloupec"avg_speed". Výsledek ulož do proměnnéavg_speed. - Vyber sloupce
"origin","dest","tailnum"aavg_speed(bez uvozovek!). Výsledek ulož jakospeed1. - Vytvoř stejnou tabulku pomocí
.selectExpr()a řetězce obsahujícího SQL výraz. Výsledek ulož jakospeed2.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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 ____")