Začněte nyníZačněte zdarma

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

Zobrazit kurz

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 distance sloupcem air_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" a avg_speed (bez uvozovek!). Výsledek ulož jako speed1.
  • Vytvoř stejnou tabulku pomocí .selectExpr() a řetězce obsahujícího SQL výraz. Výsledek ulož jako speed2.

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 ____")
Upravit a spustit kód