PySpark SelectExpr()

Pyspark Selectexpr



Χρησιμοποιώντας τη συνάρτηση selectExpr() στο PySpark, μπορούμε να αξιολογήσουμε απευθείας μια έκφραση χωρίς να δημιουργήσουμε κανένα ΠΙΝΑΚΑ ή ΠΡΟΒΟΛΗ. Αυτή η συνάρτηση είναι διαθέσιμη στη λειτουργική μονάδα pyspark.sql.DataFrame, η οποία είναι παρόμοια με τη μέθοδο select(). Με το selectExpr(), μπορούμε να εμφανίσουμε τις στήλες, να εφαρμόσουμε τις συναρτήσεις στις στήλες, να αξιολογήσουμε τις εκφράσεις, να εκτελέσουμε τις συναθροίσεις κ.λπ. Είναι επίσης δυνατό να αξιολογήσουμε/καθορίσουμε πολλές στήλες κάθε φορά.

Pyspark.sql.DataFrame.selectExpr()

Η συνάρτηση selectexpr() παίρνει τις στήλες/σύνολο παραστάσεων και επιστρέφει το DataFrame με βάση τις καθορισμένες εκφράσεις/στήλες. Σε αυτή τη συνάρτηση, η οποία χωρίζεται με κόμμα, μπορούν να καθοριστούν πολλές εκφράσεις. Για να εμφανίσουμε το DataFrame, μπορούμε να χρησιμοποιήσουμε τις συναρτήσεις show()/collect().

Σύνταξη:







pyspark_DataFrame_object.selectExpr('Στήλες'/'Εκφράσεις')

Εδώ, το pyspark_DataFrame_object είναι η είσοδος PySpark DataFrame.



Σενάριο 1: Επιλέξτε τις Στήλες

Σε αυτό το σενάριο, θα δούμε πώς να επιλέξετε τις συγκεκριμένες στήλες από το PySpark DataFrame χρησιμοποιώντας τη συνάρτηση selectExpr().



Η έκφραση που χρησιμοποιείται είναι 'existing_column as new_name'. Εδώ, το exist_column είναι το όνομα της στήλης που υπάρχει στο DataFrame και εμφανίζεται ως new_name (Aliasing).





Παράδειγμα:

Δημιουργήστε ένα PySpark DataFrame με το όνομα “agri_df” με 5 σειρές και στήλες. Αποκτήστε τις στήλες 'Soil_status' και 'Soil_Type' ως 'STATUS' και 'TYPE'.

εισαγωγή pyspark

από το pyspark.sql εισαγωγή SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Συμβουλή Linux' .getOrCreate()

# γεωργικά δεδομένα με 5 σειρές και 5 στήλες

agri =[{ 'Τύπος_Εδάφους' : 'Μαύρος' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 2500 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'ΗΠΑ' },

{ 'Τύπος_Εδάφους' : 'Μαύρος' , 'Irrigation_availability' : 'Ναί' , 'στρέμματα' : 3500 , 'Κατάσταση_εδάφους' : 'Βρεγμένος' ,
'Χώρα' : 'Ινδία' },

{ 'Τύπος_Εδάφους' : Κανένας , 'Irrigation_availability' : 'Ναί' , 'στρέμματα' : 210 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'ΗΝΩΜΕΝΟ ΒΑΣΙΛΕΙΟ' },

{ 'Τύπος_Εδάφους' : 'Αλλα' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 1000 , 'Κατάσταση_εδάφους' : 'Βρεγμένος' ,
'Χώρα' : 'ΗΠΑ' },

{ 'Τύπος_Εδάφους' : 'Αμμος' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 500 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'Ινδία' }]



# δημιουργήστε το πλαίσιο δεδομένων από τα παραπάνω δεδομένα

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Αποκτήστε τα Soil_status και Soil_Type ως 'STATUS' και 'TYPE'.

agri_df.selectExpr( 'Soil_status as STATUS' , 'Soil_Type as TYPE' ).προβολή()

Παραγωγή:



Σενάριο 2: Καθορισμός των παραστάσεων υπό όρους

Σε αυτό το σενάριο, θα δούμε πώς να αξιολογήσουμε τις συνθήκες στη συνάρτηση selectExpr().

Η έκφραση που χρησιμοποιείται είναι 'existing_column value operator'. Εδώ, το exist_column είναι το όνομα της στήλης που υπάρχει στο DataFrame και συγκρίνουμε κάθε τιμή σε αυτήν τη στήλη με τη συμβολοσειρά/τιμή.

Παράδειγμα 1:

Ελέγξτε εάν η χώρα είναι 'ΗΠΑ' ή όχι. Εδώ χρησιμοποιείται ο τελεστής ισοδυναμίας (=).

εισαγωγή pyspark

από το pyspark.sql εισαγωγή SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Συμβουλή Linux' .getOrCreate()

# γεωργικά δεδομένα με 5 σειρές και 5 στήλες

agri =[{ 'Τύπος_Εδάφους' : 'Μαύρος' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 2500 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'ΗΠΑ' },

{ 'Τύπος_Εδάφους' : 'Μαύρος' , 'Irrigation_availability' : 'Ναί' , 'στρέμματα' : 3500 , 'Κατάσταση_εδάφους' : 'Βρεγμένος' ,
'Χώρα' : 'Ινδία' },

{ 'Τύπος_Εδάφους' : Κανένας , 'Irrigation_availability' : 'Ναί' , 'στρέμματα' : 210 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'ΗΝΩΜΕΝΟ ΒΑΣΙΛΕΙΟ' },

{ 'Τύπος_Εδάφους' : 'Αλλα' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 1000 , 'Κατάσταση_εδάφους' : 'Βρεγμένος' ,
'Χώρα' : 'ΗΠΑ' },

{ 'Τύπος_Εδάφους' : 'Αμμος' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 500 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'Ινδία' }]



# δημιουργήστε το πλαίσιο δεδομένων από τα παραπάνω δεδομένα

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Ελέγξτε εάν η χώρα είναι 'ΗΠΑ' ή όχι.

agri_df.selectExpr( 'Χώρα = 'ΗΠΑ'' ).προβολή()

Παραγωγή:

Παράδειγμα 2:

Ελέγξτε εάν το Soil_Type είναι NULL ή όχι. Η λέξη-κλειδί NULL ελέγχει εάν η τιμή είναι NULL ή όχι. Εάν είναι μηδενικό, επιστρέφεται το true. Διαφορετικά, το false επιστρέφεται. Η τελική έκφραση είναι 'Soil_Type IS NULL'

εισαγωγή pyspark

από το pyspark.sql εισαγωγή SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Συμβουλή Linux' .getOrCreate()

# γεωργικά δεδομένα με 5 σειρές και 5 στήλες

agri =[{ 'Τύπος_Εδάφους' : 'Μαύρος' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 2500 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'ΗΠΑ' },

{ 'Τύπος_Εδάφους' : 'Μαύρος' , 'Irrigation_availability' : 'Ναί' , 'στρέμματα' : 3500 , 'Κατάσταση_εδάφους' : 'Βρεγμένος' ,
'Χώρα' : 'Ινδία' },

{ 'Τύπος_Εδάφους' : Κανένας , 'Irrigation_availability' : 'Ναί' , 'στρέμματα' : 210 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'ΗΝΩΜΕΝΟ ΒΑΣΙΛΕΙΟ' },

{ 'Τύπος_Εδάφους' : 'Αλλα' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 1000 , 'Κατάσταση_εδάφους' : 'Βρεγμένος' ,
'Χώρα' : 'ΗΠΑ' },

{ 'Τύπος_Εδάφους' : 'Αμμος' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 500 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'Ινδία' }]



# δημιουργήστε το πλαίσιο δεδομένων από τα παραπάνω δεδομένα

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Ελέγξτε εάν το Soil_Type είναι NULL ή όχι.

agri_df.selectExpr( 'Soil_Type IS NULL' ).προβολή()

Παραγωγή:

Σενάριο 3: Αξιολόγηση των εκφράσεων

Σε αυτό το σενάριο, θα δούμε πώς να καθορίσουμε τις μαθηματικές εκφράσεις. Η έκφραση που χρησιμοποιείται είναι 'existing_column mathematical_expression'.

Παράδειγμα:

  1. Εμφανίστε την πραγματική στήλη 'Acres'.
  2. Προσθέστε 100 στη στήλη 'Acres'.
  3. Αφαιρέστε 100 από τη στήλη 'Acres'.
  4. Πολλαπλασιάστε το 100 με τη στήλη 'Acres'.
  5. Διαιρέστε τη στήλη 'Acres' με το 100.
εισαγωγή pyspark

από το pyspark.sql εισαγωγή SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Συμβουλή Linux' .getOrCreate()

# γεωργικά δεδομένα με 5 σειρές και 5 στήλες

agri =[{ 'Τύπος_Εδάφους' : 'Μαύρος' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 2500 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'ΗΠΑ' },

{ 'Τύπος_Εδάφους' : 'Μαύρος' , 'Irrigation_availability' : 'Ναί' , 'στρέμματα' : 3500 , 'Κατάσταση_εδάφους' : 'Βρεγμένος' ,
'Χώρα' : 'Ινδία' },

{ 'Τύπος_Εδάφους' : Κανένας , 'Irrigation_availability' : 'Ναί' , 'στρέμματα' : 210 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'ΗΝΩΜΕΝΟ ΒΑΣΙΛΕΙΟ' },

{ 'Τύπος_Εδάφους' : 'Αλλα' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 1000 , 'Κατάσταση_εδάφους' : 'Βρεγμένος' ,
'Χώρα' : 'ΗΠΑ' },

{ 'Τύπος_Εδάφους' : 'Αμμος' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 500 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'Ινδία' }]



# δημιουργήστε το πλαίσιο δεδομένων από τα παραπάνω δεδομένα

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Γράψτε 4 παραστάσεις για αφαίρεση, προσθήκη, διαίρεση και πολλαπλασιασμό της στήλης Acres.

agri_df.selectExpr( 'στρέμματα' , 'Στρέμματα - 100' , 'Στρέμματα * 100' , 'Στρέμματα + 100' , 'Στρέμματα / 100' ).προβολή()

Παραγωγή:

Σενάριο 4: Εφαρμογή των αθροιστικών συναρτήσεων

SUM(όνομα_στήλης) – Αξιολογεί τη συνολική τιμή στην καθορισμένη στήλη.

MEAN(όνομα_στήλης) – Αξιολογεί τη μέση τιμή στην καθορισμένη στήλη.

MIN(όνομα_στήλης) – Επιστρέφει το ελάχιστο στοιχείο μεταξύ όλων των στοιχείων στην καθορισμένη στήλη.

MAX(όνομα_στήλης) – Επιστρέφει το μέγιστο στοιχείο μεταξύ όλων των στοιχείων στην καθορισμένη στήλη.

Παράδειγμα:

  1. Βρείτε το σύνολο, τον μέσο όρο, την καταμέτρηση, το ελάχιστο και το μέγιστο των στοιχείων του 'Acres'.
  2. Βρείτε τα ελάχιστα και μέγιστα στοιχεία στη στήλη 'Κατάσταση_εδάφους'.
εισαγωγή pyspark

από το pyspark.sql εισαγωγή SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Συμβουλή Linux' .getOrCreate()

# γεωργικά δεδομένα με 5 σειρές και 5 στήλες

agri =[{ 'Τύπος_Εδάφους' : 'Μαύρος' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 2500 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'ΗΠΑ' },

{ 'Τύπος_Εδάφους' : 'Μαύρος' , 'Irrigation_availability' : 'Ναί' , 'στρέμματα' : 3500 , 'Κατάσταση_εδάφους' : 'Βρεγμένος' ,
'Χώρα' : 'Ινδία' },

{ 'Τύπος_Εδάφους' : Κανένας , 'Irrigation_availability' : 'Ναί' , 'στρέμματα' : 210 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'ΗΝΩΜΕΝΟ ΒΑΣΙΛΕΙΟ' },

{ 'Τύπος_Εδάφους' : 'Αλλα' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 1000 , 'Κατάσταση_εδάφους' : 'Βρεγμένος' ,
'Χώρα' : 'ΗΠΑ' },

{ 'Τύπος_Εδάφους' : 'Αμμος' , 'Irrigation_availability' : 'Οχι' , 'στρέμματα' : 500 , 'Κατάσταση_εδάφους' : 'Ξηρός' ,
'Χώρα' : 'Ινδία' }]



# δημιουργήστε το πλαίσιο δεδομένων από τα παραπάνω δεδομένα

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Συγκεντρωτικές πράξεις

agri_df.selectExpr( 'SUM(Acres)' , 'MEAN(Acres)' , 'COUNT(Acres)' , 'AVG(Acres)' , 'MIN(Acres)' ,
'MAX(Acres)' ).προβολή()

agri_df.selectExpr( 'MIN(Soil_status)' , 'MAX(Soil_status)' ).προβολή()

Παραγωγή:

συμπέρασμα

Συζητήσαμε για τη συνάρτηση selectExpr() που παίρνει τις στήλες/σύνολα παραστάσεων και επιστρέφει το DataFrame με βάση τις καθορισμένες εκφράσεις/στήλες. Ως μέρος αυτού, μάθαμε τα τέσσερα κύρια σενάρια στα οποία εφαρμόζεται το selectExpr(). Σε αυτή τη συνάρτηση μπορούν να καθοριστούν πολλαπλές εκφράσεις που χωρίζονται με κόμμα. Δεν χρειάζεται να δημιουργήσετε μια ΠΡΟΣΩΡΙΝΗ ΠΡΟΒΟΛΗ για να χρησιμοποιήσετε τη συνάρτηση selectExpr().