PySpark SelectExpr()

Pyspark Selectexpr



Menggunakan fungsi selectExpr() di PySpark, kita dapat langsung mengevaluasi ekspresi tanpa membuat TABEL atau TAMPILAN. Fungsi ini tersedia di modul pyspark.sql.DataFrame yang mirip dengan metode select(). Dengan selectExpr(), kita dapat menampilkan kolom, menerapkan fungsi pada kolom, mengevaluasi ekspresi, melakukan operasi agregasi, dll. Dimungkinkan juga untuk mengevaluasi/menentukan beberapa kolom sekaligus.

Pyspark.sql.DataFrame.selectExpr()

Fungsi selectexpr() mengambil kolom/set ekspresi dan mengembalikan DataFrame berdasarkan ekspresi/kolom yang ditentukan. Beberapa ekspresi dapat ditentukan dalam fungsi ini yang dipisahkan dengan koma. Untuk menampilkan DataFrame, kita dapat menggunakan fungsi show()/collect().

Sintaksis:







pyspark_DataFrame_object.selectExpr(“Kolom”/”Ekspresi”)

Di sini, pyspark_DataFrame_object adalah input PySpark DataFrame.



Skenario 1: Pilih Kolom

Dalam skenario ini, kita akan melihat cara memilih kolom tertentu dari PySpark DataFrame menggunakan fungsi selectExpr().



Ekspresi yang digunakan adalah “kolom_ada sebagai nama_baru”. Di sini, existing_column adalah nama kolom yang ada di DataFrame dan ditampilkan sebagai new_name (Aliasing).





Contoh:

Buat PySpark DataFrame bernama 'agri_df' dengan 5 baris dan kolom. Dapatkan kolom 'Soil_status' dan 'Soil_Type' sebagai 'STATUS' dan 'TYPE'.

impor pyspark

dari pyspark.sql impor SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()

# data pertanian dengan 5 baris dan 5 kolom

pertanian =[{ 'Jenis tanah' : 'Hitam' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 2500 , 'status_tanah' : 'Kering' ,
'Negara' : 'AMERIKA SERIKAT' },

{ 'Jenis tanah' : 'Hitam' , 'Irigasi_ketersediaan' : 'Ya' , 'Hektar' : 3500 , 'status_tanah' : 'Basah' ,
'Negara' : 'India' },

{ 'Jenis tanah' : Tidak ada , 'Irigasi_ketersediaan' : 'Ya' , 'Hektar' : 210 , 'status_tanah' : 'Kering' ,
'Negara' : 'Inggris' },

{ 'Jenis tanah' : 'Lainnya' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 1000 , 'status_tanah' : 'Basah' ,
'Negara' : 'AMERIKA SERIKAT' },

{ 'Jenis tanah' : 'Pasir' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 500 , 'status_tanah' : 'Kering' ,
'Negara' : 'India' }]



# buat kerangka data dari data di atas

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Dapatkan Soil_status dan Soil_Type sebagai 'STATUS' dan 'TYPE'.

agri_df.selectExpr( 'Status_tanah sebagai STATUS' , 'Soil_Type sebagai TYPE' ).menunjukkan()

Keluaran:



Skenario 2: Menentukan Ekspresi Bersyarat

Dalam skenario ini, kita akan melihat cara mengevaluasi kondisi dalam fungsi selectExpr().

Ekspresi yang digunakan adalah “nilai operator_kolom yang ada”. Di sini, existing_column adalah nama kolom yang ada di DataFrame dan kami membandingkan setiap nilai di kolom ini dengan string/nilai.

Contoh 1:

Periksa apakah negara tersebut adalah 'AS' atau bukan. Operator equalto (=) digunakan di sini.

impor pyspark

dari pyspark.sql impor SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()

# data pertanian dengan 5 baris dan 5 kolom

pertanian =[{ 'Jenis tanah' : 'Hitam' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 2500 , 'status_tanah' : 'Kering' ,
'Negara' : 'AMERIKA SERIKAT' },

{ 'Jenis tanah' : 'Hitam' , 'Irigasi_ketersediaan' : 'Ya' , 'Hektar' : 3500 , 'status_tanah' : 'Basah' ,
'Negara' : 'India' },

{ 'Jenis tanah' : Tidak ada , 'Irigasi_ketersediaan' : 'Ya' , 'Hektar' : 210 , 'status_tanah' : 'Kering' ,
'Negara' : 'Inggris' },

{ 'Jenis tanah' : 'Lainnya' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 1000 , 'status_tanah' : 'Basah' ,
'Negara' : 'AMERIKA SERIKAT' },

{ 'Jenis tanah' : 'Pasir' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 500 , 'status_tanah' : 'Kering' ,
'Negara' : 'India' }]



# buat kerangka data dari data di atas

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Periksa apakah negaranya 'USA' atau bukan.

agri_df.selectExpr( 'Negara = 'AS'' ).menunjukkan()

Keluaran:

Contoh 2:

Periksa apakah Soil_Type adalah NULL atau tidak. Kata kunci NULL memeriksa apakah nilainya NULL atau tidak. Jika null, true dikembalikan. Jika tidak, false dikembalikan. Ekspresi terakhirnya adalah “Soil_Type IS NULL”

impor pyspark

dari pyspark.sql impor SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()

# data pertanian dengan 5 baris dan 5 kolom

pertanian =[{ 'Jenis tanah' : 'Hitam' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 2500 , 'status_tanah' : 'Kering' ,
'Negara' : 'AMERIKA SERIKAT' },

{ 'Jenis tanah' : 'Hitam' , 'Irigasi_ketersediaan' : 'Ya' , 'Hektar' : 3500 , 'status_tanah' : 'Basah' ,
'Negara' : 'India' },

{ 'Jenis tanah' : Tidak ada , 'Irigasi_ketersediaan' : 'Ya' , 'Hektar' : 210 , 'status_tanah' : 'Kering' ,
'Negara' : 'Inggris' },

{ 'Jenis tanah' : 'Lainnya' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 1000 , 'status_tanah' : 'Basah' ,
'Negara' : 'AMERIKA SERIKAT' },

{ 'Jenis tanah' : 'Pasir' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 500 , 'status_tanah' : 'Kering' ,
'Negara' : 'India' }]



# buat kerangka data dari data di atas

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Periksa apakah Soil_Type adalah NULL atau tidak.

agri_df.selectExpr( 'Soil_Type IS NULL' ).menunjukkan()

Keluaran:

Skenario 3: Mengevaluasi Ekspresi

Dalam skenario ini, kita akan melihat bagaimana menentukan ekspresi matematika. Ekspresi yang digunakan adalah “ekspresi_matematika_kolom yang ada”.

Contoh:

  1. Tampilkan kolom “Acres” yang sebenarnya.
  2. Tambahkan 100 ke kolom “Acres”.
  3. Kurangi 100 dari kolom “Acres”.
  4. Kalikan 100 dengan kolom “Acres”.
  5. Bagilah kolom “Acres” dengan 100.
impor pyspark

dari pyspark.sql impor SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()

# data pertanian dengan 5 baris dan 5 kolom

pertanian =[{ 'Jenis tanah' : 'Hitam' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 2500 , 'status_tanah' : 'Kering' ,
'Negara' : 'AMERIKA SERIKAT' },

{ 'Jenis tanah' : 'Hitam' , 'Irigasi_ketersediaan' : 'Ya' , 'Hektar' : 3500 , 'status_tanah' : 'Basah' ,
'Negara' : 'India' },

{ 'Jenis tanah' : Tidak ada , 'Irigasi_ketersediaan' : 'Ya' , 'Hektar' : 210 , 'status_tanah' : 'Kering' ,
'Negara' : 'Inggris' },

{ 'Jenis tanah' : 'Lainnya' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 1000 , 'status_tanah' : 'Basah' ,
'Negara' : 'AMERIKA SERIKAT' },

{ 'Jenis tanah' : 'Pasir' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 500 , 'status_tanah' : 'Kering' ,
'Negara' : 'India' }]



# buat kerangka data dari data di atas

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Tulis 4 Ekspresi untuk mengurangi, menambah, membagi, dan mengalikan kolom Acres.

agri_df.selectExpr( 'Hektar' , 'Hektar - 100' , 'Hektar * 100' , 'Hektar + 100' , 'Hektar / 100' ).menunjukkan()

Keluaran:

Skenario 4: Menerapkan Fungsi Agregat

SUM(nama_kolom) – Ini mengevaluasi nilai total dalam kolom yang ditentukan.

MEAN(nama_kolom) – Ini mengevaluasi nilai rata-rata di kolom yang ditentukan.

MIN(nama_kolom) – Ini mengembalikan elemen minimum di antara semua elemen di kolom yang ditentukan.

MAX(nama_kolom) – Ini mengembalikan elemen maksimum di antara semua elemen di kolom yang ditentukan.

Contoh:

  1. Temukan total, rata-rata, jumlah, minimum, dan maksimum elemen “Acres”.
  2. Temukan elemen minimum dan maksimum di kolom 'Status_tanah'.
impor pyspark

dari pyspark.sql impor SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()

# data pertanian dengan 5 baris dan 5 kolom

pertanian =[{ 'Jenis tanah' : 'Hitam' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 2500 , 'status_tanah' : 'Kering' ,
'Negara' : 'AMERIKA SERIKAT' },

{ 'Jenis tanah' : 'Hitam' , 'Irigasi_ketersediaan' : 'Ya' , 'Hektar' : 3500 , 'status_tanah' : 'Basah' ,
'Negara' : 'India' },

{ 'Jenis tanah' : Tidak ada , 'Irigasi_ketersediaan' : 'Ya' , 'Hektar' : 210 , 'status_tanah' : 'Kering' ,
'Negara' : 'Inggris' },

{ 'Jenis tanah' : 'Lainnya' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 1000 , 'status_tanah' : 'Basah' ,
'Negara' : 'AMERIKA SERIKAT' },

{ 'Jenis tanah' : 'Pasir' , 'Irigasi_ketersediaan' : 'TIDAK' , 'Hektar' : 500 , 'status_tanah' : 'Kering' ,
'Negara' : 'India' }]



# buat kerangka data dari data di atas

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Operasi agregat

agri_df.selectExpr( 'SUM(Hektar)' , 'BERARTI (Hektar)' , 'JUMLAH (Hektar)' , 'AVG(Hektar)' , 'MIN(Hektar)' ,
'MAX (Hektar)' ).menunjukkan()

agri_df.selectExpr( 'MIN(Status_Tanah)' , 'MAX(Status_Tanah)' ).menunjukkan()

Keluaran:

Kesimpulan

Kita membahas tentang fungsi selectExpr() yang mengambil kolom/set ekspresi dan mengembalikan DataFrame berdasarkan ekspresi/kolom yang ditentukan. Sebagai bagian dari ini, kami mempelajari empat skenario utama di mana selectExpr() dapat diterapkan. Beberapa ekspresi dapat ditentukan dalam fungsi ini yang dipisahkan dengan koma. Tidak perlu membuat TAMPILAN SEMENTARA untuk menggunakan fungsi selectExpr().