Pyspark.sql.DataFrame.selectExpr()
selectexpr() işlevi, sütunları/ifade kümesini alır ve belirtilen ifadelere/sütunlara dayalı olarak DataFrame'i döndürür. Bu fonksiyonda virgülle ayrılmış birden çok ifade belirtilebilir. DataFrame'i görüntülemek için show()/collect() fonksiyonlarını kullanabiliriz.
Sözdizimi:
pyspark_DataFrame_object.selectExpr(“Sütunlar”/”İfadeler”)
Burada pyspark_DataFrame_object, PySpark DataFrame girişidir.
Senaryo 1: Sütunları Seçin
Bu senaryoda, selectExpr() işlevini kullanarak PySpark DataFrame'den belirli sütunların nasıl seçileceğini göreceğiz.
Kullanılan ifade “yeni_ad olarak mevcut_sütun” şeklindedir. Burada varolan_sütun, DataFrame'de bulunan sütun adıdır ve yeni_ad (Aliasing) olarak görüntülenir.
Örnek:
5 satır ve sütun içeren “agri_df” adlı bir PySpark DataFrame oluşturun. “Soil_status” ve “Soil_Type” sütunlarını “STATUS” ve “TYPE” olarak alın.
pyspark'ı içe aktarpyspark.sql'den SparkSession'ı içe aktarın
linuxhint_spark_app = SparkSession.builder.appName( 'Linux İpucu' ).getOrCreate()
# 5 satır ve 5 sütunlu tarım verileri
ağrı =[{ 'Toprak tipi' : 'Siyah' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 2500 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'AMERİKA BİRLEŞİK DEVLETLERİ' },
{ 'Toprak tipi' : 'Siyah' , 'Sulama_kullanılabilirliği' : 'Evet' , 'Dönüm' : 3500 , 'Toprak_durumu' : 'Islak' ,
'Ülke' : 'Hindistan' },
{ 'Toprak tipi' : Hiçbiri , 'Sulama_kullanılabilirliği' : 'Evet' , 'Dönüm' : 210 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'İngiltere' },
{ 'Toprak tipi' : 'Diğer' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 1000 , 'Toprak_durumu' : 'Islak' ,
'Ülke' : 'AMERİKA BİRLEŞİK DEVLETLERİ' },
{ 'Toprak tipi' : 'Kum' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 500 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'Hindistan' }]
# yukarıdaki verilerden veri çerçevesini oluştur
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Soil_status ve Soil_Type'ı 'STATUS' ve 'TYPE' olarak alın.
agri_df.selectExpr( 'DURUM olarak Soil_status' , 'TÜR olarak Soil_Type' ).göstermek()
Çıktı:
Senaryo 2: Koşullu İfadeleri Belirtme
Bu senaryoda, selectExpr() işlevi içindeki koşulları nasıl değerlendireceğimizi göreceğiz.
Kullanılan ifade “mevcut_sütun operatör değeri” dir. Burada, mevcut_sütun, DataFrame'de bulunan sütun adıdır ve bu sütundaki her değeri, dize/değer ile karşılaştırırız.
Örnek 1:
Ülkenin “ABD” olup olmadığını kontrol edin. Eşittir (=) operatörü burada kullanılır.
pyspark'ı içe aktarpyspark.sql'den SparkSession'ı içe aktarın
linuxhint_spark_app = SparkSession.builder.appName( 'Linux İpucu' ).getOrCreate()
# 5 satır ve 5 sütunlu tarım verileri
ağrı =[{ 'Toprak tipi' : 'Siyah' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 2500 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'AMERİKA BİRLEŞİK DEVLETLERİ' },
{ 'Toprak tipi' : 'Siyah' , 'Sulama_kullanılabilirliği' : 'Evet' , 'Dönüm' : 3500 , 'Toprak_durumu' : 'Islak' ,
'Ülke' : 'Hindistan' },
{ 'Toprak tipi' : Hiçbiri , 'Sulama_kullanılabilirliği' : 'Evet' , 'Dönüm' : 210 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'İngiltere' },
{ 'Toprak tipi' : 'Diğer' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 1000 , 'Toprak_durumu' : 'Islak' ,
'Ülke' : 'AMERİKA BİRLEŞİK DEVLETLERİ' },
{ 'Toprak tipi' : 'Kum' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 500 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'Hindistan' }]
# yukarıdaki verilerden veri çerçevesini oluştur
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Ülkenin 'ABD' olup olmadığını kontrol edin.
agri_df.selectExpr( 'Ülke = 'ABD'' ).göstermek()
Çıktı:
Örnek 2:
Soil_Type'ın NULL olup olmadığını kontrol edin. NULL anahtar sözcüğü, değerin NULL olup olmadığını kontrol eder. Null ise, true döndürülür. Aksi takdirde false döndürülür. Son ifade 'Soil_Type IS NULL' şeklindedir.
pyspark'ı içe aktarpyspark.sql'den SparkSession'ı içe aktarın
linuxhint_spark_app = SparkSession.builder.appName( 'Linux İpucu' ).getOrCreate()
# 5 satır ve 5 sütunlu tarım verileri
ağrı =[{ 'Toprak tipi' : 'Siyah' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 2500 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'AMERİKA BİRLEŞİK DEVLETLERİ' },
{ 'Toprak tipi' : 'Siyah' , 'Sulama_kullanılabilirliği' : 'Evet' , 'Dönüm' : 3500 , 'Toprak_durumu' : 'Islak' ,
'Ülke' : 'Hindistan' },
{ 'Toprak tipi' : Hiçbiri , 'Sulama_kullanılabilirliği' : 'Evet' , 'Dönüm' : 210 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'İngiltere' },
{ 'Toprak tipi' : 'Diğer' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 1000 , 'Toprak_durumu' : 'Islak' ,
'Ülke' : 'AMERİKA BİRLEŞİK DEVLETLERİ' },
{ 'Toprak tipi' : 'Kum' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 500 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'Hindistan' }]
# yukarıdaki verilerden veri çerçevesini oluştur
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Soil_Type'ın NULL olup olmadığını kontrol edin.
agri_df.selectExpr( 'Soil_Type IS NULL' ).göstermek()
Çıktı:
Senaryo 3: İfadeleri Değerlendirme
Bu senaryoda, matematiksel ifadelerin nasıl belirtileceğini göreceğiz. Kullanılan ifade “mevcut_sütun matematiksel_ifadesi”dir.
Örnek:
- Gerçek 'Dönüm' sütununu görüntüleyin.
- 'Acre' sütununa 100 ekleyin.
- 'Acre' sütunundan 100 çıkarın.
- 100'ü 'Acre' sütunuyla çarpın.
- 'Acre' sütununu 100'e bölün.
pyspark.sql'den SparkSession'ı içe aktarın
linuxhint_spark_app = SparkSession.builder.appName( 'Linux İpucu' ).getOrCreate()
# 5 satır ve 5 sütunlu tarım verileri
ağrı =[{ 'Toprak tipi' : 'Siyah' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 2500 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'AMERİKA BİRLEŞİK DEVLETLERİ' },
{ 'Toprak tipi' : 'Siyah' , 'Sulama_kullanılabilirliği' : 'Evet' , 'Dönüm' : 3500 , 'Toprak_durumu' : 'Islak' ,
'Ülke' : 'Hindistan' },
{ 'Toprak tipi' : Hiçbiri , 'Sulama_kullanılabilirliği' : 'Evet' , 'Dönüm' : 210 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'İngiltere' },
{ 'Toprak tipi' : 'Diğer' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 1000 , 'Toprak_durumu' : 'Islak' ,
'Ülke' : 'AMERİKA BİRLEŞİK DEVLETLERİ' },
{ 'Toprak tipi' : 'Kum' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 500 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'Hindistan' }]
# yukarıdaki verilerden veri çerçevesini oluştur
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Dönüm sütununu çıkarmak, toplamak, bölmek ve çarpmak için 4 İfade yazın.
agri_df.selectExpr( 'Dönüm' , 'Dönüm - 100' , 'Dönüm * 100' , 'Dönüm + 100' , 'Dönüm / 100' ).göstermek()
Çıktı:
Senaryo 4: Toplama İşlevlerini Uygulama
TOPLA(sütun_adı) – Belirtilen sütundaki toplam değeri değerlendirir.
ORTALAMA(sütun_adı) – Belirtilen sütundaki ortalama değeri değerlendirir.
MIN(sütun_adı) – Belirtilen sütundaki tüm öğeler arasından minimum öğeyi döndürür.
MAX(sütun_adı) – Belirtilen sütundaki tüm öğeler arasından maksimum öğeyi döndürür.
Örnek:
- 'Akre'nin toplam, ortalama, sayım, minimum ve maksimum öğelerini bulun.
- 'Soil_status' sütununda minimum ve maksimum öğeleri bulun.
pyspark.sql'den SparkSession'ı içe aktarın
linuxhint_spark_app = SparkSession.builder.appName( 'Linux İpucu' ).getOrCreate()
# 5 satır ve 5 sütunlu tarım verileri
ağrı =[{ 'Toprak tipi' : 'Siyah' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 2500 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'AMERİKA BİRLEŞİK DEVLETLERİ' },
{ 'Toprak tipi' : 'Siyah' , 'Sulama_kullanılabilirliği' : 'Evet' , 'Dönüm' : 3500 , 'Toprak_durumu' : 'Islak' ,
'Ülke' : 'Hindistan' },
{ 'Toprak tipi' : Hiçbiri , 'Sulama_kullanılabilirliği' : 'Evet' , 'Dönüm' : 210 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'İngiltere' },
{ 'Toprak tipi' : 'Diğer' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 1000 , 'Toprak_durumu' : 'Islak' ,
'Ülke' : 'AMERİKA BİRLEŞİK DEVLETLERİ' },
{ 'Toprak tipi' : 'Kum' , 'Sulama_kullanılabilirliği' : 'HAYIR' , 'Dönüm' : 500 , 'Toprak_durumu' : 'Kuru' ,
'Ülke' : 'Hindistan' }]
# yukarıdaki verilerden veri çerçevesini oluştur
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Toplu işlemler
agri_df.selectExpr( 'TOPLA(Akr)' , 'ORTALAMA(Dönüm)' , 'COUNT(Acre)' , 'ORTA(Dönüm)' , 'DAK (Dönüm)' ,
'MAKS(Dönüm)' ).göstermek()
agri_df.selectExpr( 'MIN(Toprak_durumu)' , 'MAKS(Toprak_durumu)' ).göstermek()
Çıktı:
Çözüm
Sütunları/ifade kümelerini alan ve belirtilen ifadelere/sütunlara göre DataFrame'i döndüren selectExpr() işlevi hakkında tartıştık. Bunun bir parçası olarak, selectExpr()'nin uygulanabileceği dört ana senaryoyu öğrendik. Bu işlevde virgülle ayrılmış birden fazla ifade belirtilebilir. selectExpr() işlevini kullanmak için GEÇİCİ GÖRÜNÜM oluşturmaya gerek yoktur.