Seçim II
SQL'e benzer şekilde, sütun bazlı işlemleri yapmak için .select() metodunu da kullanabilirsin. df.colName gösterimini kullanarak bir sütun seçtiğinde, herhangi bir sütun işlemi yapabilir ve .select() metodu dönüştürülmüş sütunu döndürür. Örneğin,
flights.select(flights.air_time/60)
dakika yerine saat cinsinden uçuş sürelerinden oluşan bir sütun döndürür. Seçtiğin bir sütunu yeniden adlandırmak için .alias() metodunu da kullanabilirsin. Yani, duration_hrs sütununu .select() ile seçmek istersen (DataFrame'inde yoksa) şöyle yapabilirsin:
flights.select((flights.air_time/60).alias("duration_hrs"))
Eşdeğer Spark DataFrame metodu olan .selectExpr() ise SQL ifadelerini string olarak alır:
flights.selectExpr("air_time/60 as duration_hrs")
burada SQL'deki as anahtar sözcüğü .alias() metoduna denktir. Birden fazla sütun seçmek için birden fazla string geçebilirsin.
Unutma, çalışma alanında spark adlı bir SparkSession ve flights adlı Spark DataFrame zaten mevcut.
Bu egzersiz
PySpark Temelleri
kursunun bir parçasıdırEgzersiz talimatları
Her uçuşun ortalama hızını iki farklı yolla içeren bir tablo oluştur.
- Ortalama hızı,
distancedeğerini (saat cinsine çevrilmiş)air_timedeğerine bölerek hesapla. Bu sütunu adlandırmak için.alias()metodunu kullan ve adını"avg_speed"yap. Çıktıyıavg_speeddeğişkeni olarak kaydet. "origin", "dest", "tailnum"sütunlarını veavg_speed(tırnaksız!) sütununu seç. Bunuspeed1olarak kaydet.- Aynı tabloyu
.selectExpr()ve bir SQL ifadesi içeren string kullanarak oluştur. Bunuspeed2olarak kaydet.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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 ____")