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 pysparkdari 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 pysparkdari 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 pysparkdari 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:
- Tampilkan kolom “Acres” yang sebenarnya.
- Tambahkan 100 ke kolom “Acres”.
- Kurangi 100 dari kolom “Acres”.
- Kalikan 100 dengan kolom “Acres”.
- Bagilah kolom “Acres” dengan 100.
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:
- Temukan total, rata-rata, jumlah, minimum, dan maksimum elemen “Acres”.
- Temukan elemen minimum dan maksimum di kolom 'Status_tanah'.
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().