PySpark SelectExpr()

Pyspark Selectexpr



PySpark'ta selectExpr() işlevini kullanarak, herhangi bir TABLO veya GÖRÜNÜM oluşturmadan doğrudan bir ifadeyi değerlendirebiliriz. Bu işlev, select() yöntemine benzeyen pyspark.sql.DataFrame modülünde bulunur. selectExpr() ile sütunları görüntüleyebilir, sütunlar üzerindeki işlevleri uygulayabilir, ifadeleri değerlendirebilir, toplama işlemlerini gerçekleştirebiliriz vb. Aynı anda birden çok sütunu değerlendirmek/belirtmek de mümkündür.

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 aktar

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)

# 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 aktar

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)

# Ü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 aktar

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)

# 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:

  1. Gerçek 'Dönüm' sütununu görüntüleyin.
  2. 'Acre' sütununa 100 ekleyin.
  3. 'Acre' sütunundan 100 çıkarın.
  4. 100'ü 'Acre' sütunuyla çarpın.
  5. 'Acre' sütununu 100'e bölün.
pyspark'ı içe aktar

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:

  1. 'Akre'nin toplam, ortalama, sayım, minimum ve maksimum öğelerini bulun.
  2. 'Soil_status' sütununda minimum ve maksimum öğeleri bulun.
pyspark'ı içe aktar

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.