PySpark SelectExpr()

Pyspark Selectexpr



Mit der Funktion selectExpr() in PySpark können wir einen Ausdruck direkt auswerten, ohne eine TABELLE oder ANSICHT zu erstellen. Diese Funktion ist im Modul pyspark.sql.DataFrame verfügbar, das der Methode select() ähnelt. Mit selectExpr() können wir die Spalten anzeigen, die Funktionen auf die Spalten anwenden, die Ausdrücke auswerten, die Aggregationsoperationen durchführen usw. Es ist auch möglich, mehrere Spalten gleichzeitig auszuwerten/anzugeben.

Pyspark.sql.DataFrame.selectExpr()

Die Funktion selectexpr() übernimmt die Spalten/Ausdruckssätze und gibt den DataFrame basierend auf den angegebenen Ausdrücken/Spalten zurück. In dieser Funktion können mehrere Ausdrücke angegeben werden, die durch Komma getrennt werden. Um den DataFrame anzuzeigen, können wir die Funktionen show()/collect() verwenden.

Syntax:







pyspark_DataFrame_object.selectExpr(„Spalten“/„Ausdrücke“)

Hier ist das pyspark_DataFrame_object der Eingabe-PySpark-DataFrame.



Szenario 1: Wählen Sie die Spalten aus

In diesem Szenario erfahren Sie, wie Sie mithilfe der Funktion selectExpr() bestimmte Spalten aus dem PySpark-DataFrame auswählen.



Der verwendete Ausdruck ist „existing_column as new_name“. Hier ist „existierende Spalte“ der Spaltenname, der im DataFrame vorhanden ist, und wird als „neuer_Name“ (Aliasing) angezeigt.





Beispiel:

Erstellen Sie einen PySpark-DataFrame mit dem Namen „agri_df“ mit 5 Zeilen und Spalten. Rufen Sie die Spalten „Soil_status“ und „Soil_Type“ als „STATUS“ und „TYPE“ ab.

Pyspark importieren

aus pyspark.sql SparkSession importieren

linuxhint_spark_app = SparkSession.builder.appName( „Linux-Hinweis“ ).getOrCreate()

# Landwirtschaftsdaten mit 5 Zeilen und 5 Spalten

agri =[{ 'Bodenart' : 'Schwarz' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 2500 , 'Soil_status' : 'Trocken' ,
'Land' : 'USA' },

{ 'Bodenart' : 'Schwarz' , „Bewässerungsverfügbarkeit“ : 'Ja' , 'Acres' : 3500 , 'Soil_status' : 'Nass' ,
'Land' : 'Indien' },

{ 'Bodenart' : Keiner , „Bewässerungsverfügbarkeit“ : 'Ja' , 'Acres' : 210 , 'Soil_status' : 'Trocken' ,
'Land' : 'VEREINIGTES KÖNIGREICH' },

{ 'Bodenart' : 'Andere' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 1000 , 'Soil_status' : 'Nass' ,
'Land' : 'USA' },

{ 'Bodenart' : 'Sand' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 500 , 'Soil_status' : 'Trocken' ,
'Land' : 'Indien' }]



# Erstellen Sie den Datenrahmen aus den oben genannten Daten

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Holen Sie sich Soil_status und Soil_Type als „STATUS“ und „TYPE“.

agri_df.selectExpr( „Soil_status als STATUS“ , „Soil_Type als TYPE“ ).zeigen()

Ausgang:



Szenario 2: Angeben der bedingten Ausdrücke

In diesem Szenario werden wir sehen, wie die Bedingungen innerhalb der Funktion selectExpr() ausgewertet werden.

Der verwendete Ausdruck ist „vorhandener_Spaltenoperatorwert“. Hier ist „existierende_Spalte“ der Spaltenname, der im DataFrame vorhanden ist, und wir vergleichen jeden Wert in dieser Spalte mit der Zeichenfolge/dem Wert.

Beispiel 1:

Überprüfen Sie, ob das Land „USA“ ist oder nicht. Hier wird der Gleichheitsoperator (=) verwendet.

Pyspark importieren

aus pyspark.sql SparkSession importieren

linuxhint_spark_app = SparkSession.builder.appName( „Linux-Hinweis“ ).getOrCreate()

# Landwirtschaftsdaten mit 5 Zeilen und 5 Spalten

agri =[{ 'Bodenart' : 'Schwarz' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 2500 , 'Soil_status' : 'Trocken' ,
'Land' : 'USA' },

{ 'Bodenart' : 'Schwarz' , „Bewässerungsverfügbarkeit“ : 'Ja' , 'Acres' : 3500 , 'Soil_status' : 'Nass' ,
'Land' : 'Indien' },

{ 'Bodenart' : Keiner , „Bewässerungsverfügbarkeit“ : 'Ja' , 'Acres' : 210 , 'Soil_status' : 'Trocken' ,
'Land' : 'VEREINIGTES KÖNIGREICH' },

{ 'Bodenart' : 'Andere' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 1000 , 'Soil_status' : 'Nass' ,
'Land' : 'USA' },

{ 'Bodenart' : 'Sand' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 500 , 'Soil_status' : 'Trocken' ,
'Land' : 'Indien' }]



# Erstellen Sie den Datenrahmen aus den oben genannten Daten

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Überprüfen Sie, ob das Land „USA“ ist oder nicht.

agri_df.selectExpr( „Land = ‚USA‘“ ).zeigen()

Ausgang:

Beispiel 2:

Überprüfen Sie, ob Soil_Type NULL ist oder nicht. Das Schlüsselwort NULL prüft, ob der Wert NULL ist oder nicht. Wenn es null ist, wird true zurückgegeben. Andernfalls wird false zurückgegeben. Der letzte Ausdruck ist „Soil_Type IS NULL“

Pyspark importieren

aus pyspark.sql SparkSession importieren

linuxhint_spark_app = SparkSession.builder.appName( „Linux-Hinweis“ ).getOrCreate()

# Landwirtschaftsdaten mit 5 Zeilen und 5 Spalten

agri =[{ 'Bodenart' : 'Schwarz' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 2500 , 'Soil_status' : 'Trocken' ,
'Land' : 'USA' },

{ 'Bodenart' : 'Schwarz' , „Bewässerungsverfügbarkeit“ : 'Ja' , 'Acres' : 3500 , 'Soil_status' : 'Nass' ,
'Land' : 'Indien' },

{ 'Bodenart' : Keiner , „Bewässerungsverfügbarkeit“ : 'Ja' , 'Acres' : 210 , 'Soil_status' : 'Trocken' ,
'Land' : 'VEREINIGTES KÖNIGREICH' },

{ 'Bodenart' : 'Andere' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 1000 , 'Soil_status' : 'Nass' ,
'Land' : 'USA' },

{ 'Bodenart' : 'Sand' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 500 , 'Soil_status' : 'Trocken' ,
'Land' : 'Indien' }]



# Erstellen Sie den Datenrahmen aus den oben genannten Daten

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Überprüfen Sie, ob der Soil_Type NULL ist oder nicht.

agri_df.selectExpr( „Soil_Type IST NULL“ ).zeigen()

Ausgang:

Szenario 3: Auswerten der Ausdrücke

In diesem Szenario werden wir sehen, wie man die mathematischen Ausdrücke angibt. Der verwendete Ausdruck ist „vorhandener_Spaltenmathematischer_Ausdruck“.

Beispiel:

  1. Zeigt die aktuelle Spalte „Acres“ an.
  2. Addieren Sie 100 zur Spalte „Acres“.
  3. Subtrahieren Sie 100 von der Spalte „Acres“.
  4. Multiplizieren Sie 100 mit der Spalte „Acres“.
  5. Teilen Sie die Spalte „Acres“ durch 100.
Pyspark importieren

aus pyspark.sql SparkSession importieren

linuxhint_spark_app = SparkSession.builder.appName( „Linux-Hinweis“ ).getOrCreate()

# Landwirtschaftsdaten mit 5 Zeilen und 5 Spalten

agri =[{ 'Bodenart' : 'Schwarz' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 2500 , 'Soil_status' : 'Trocken' ,
'Land' : 'USA' },

{ 'Bodenart' : 'Schwarz' , „Bewässerungsverfügbarkeit“ : 'Ja' , 'Acres' : 3500 , 'Soil_status' : 'Nass' ,
'Land' : 'Indien' },

{ 'Bodenart' : Keiner , „Bewässerungsverfügbarkeit“ : 'Ja' , 'Acres' : 210 , 'Soil_status' : 'Trocken' ,
'Land' : 'VEREINIGTES KÖNIGREICH' },

{ 'Bodenart' : 'Andere' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 1000 , 'Soil_status' : 'Nass' ,
'Land' : 'USA' },

{ 'Bodenart' : 'Sand' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 500 , 'Soil_status' : 'Trocken' ,
'Land' : 'Indien' }]



# Erstellen Sie den Datenrahmen aus den oben genannten Daten

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Schreiben Sie 4 Ausdrücke, um die Acres-Spalte zu subtrahieren, zu addieren, zu dividieren und zu multiplizieren.

agri_df.selectExpr( „Acres“ , „Acres – 100“ , „Acres * 100“ , „Morgen + 100“ , „Acres / 100“ ).zeigen()

Ausgang:

Szenario 4: Anwenden der Aggregatfunktionen

SUM(Spaltenname) – Es wertet den Gesamtwert in der angegebenen Spalte aus.

MEAN(Spaltenname) – Es wertet den Durchschnittswert in der angegebenen Spalte aus.

MIN(Spaltenname) – Es gibt das kleinste Element unter allen Elementen in der angegebenen Spalte zurück.

MAX(Spaltenname) – Es gibt das maximale Element unter allen Elementen in der angegebenen Spalte zurück.

Beispiel:

  1. Finden Sie die Gesamt-, Durchschnitts-, Anzahl-, Mindest- und Höchstelemente von „Acres“.
  2. Finden Sie die minimalen und maximalen Elemente in der Spalte „Soil_status“.
Pyspark importieren

aus pyspark.sql SparkSession importieren

linuxhint_spark_app = SparkSession.builder.appName( „Linux-Hinweis“ ).getOrCreate()

# Landwirtschaftsdaten mit 5 Zeilen und 5 Spalten

agri =[{ 'Bodenart' : 'Schwarz' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 2500 , 'Soil_status' : 'Trocken' ,
'Land' : 'USA' },

{ 'Bodenart' : 'Schwarz' , „Bewässerungsverfügbarkeit“ : 'Ja' , 'Acres' : 3500 , 'Soil_status' : 'Nass' ,
'Land' : 'Indien' },

{ 'Bodenart' : Keiner , „Bewässerungsverfügbarkeit“ : 'Ja' , 'Acres' : 210 , 'Soil_status' : 'Trocken' ,
'Land' : 'VEREINIGTES KÖNIGREICH' },

{ 'Bodenart' : 'Andere' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 1000 , 'Soil_status' : 'Nass' ,
'Land' : 'USA' },

{ 'Bodenart' : 'Sand' , „Bewässerungsverfügbarkeit“ : 'NEIN' , 'Acres' : 500 , 'Soil_status' : 'Trocken' ,
'Land' : 'Indien' }]



# Erstellen Sie den Datenrahmen aus den oben genannten Daten

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Aggregierte Operationen

agri_df.selectExpr( „SUMME(Acres)“ , „MEAN(Acres)“ , „ANZAHL(Acres)“ , „AVG(Acres)“ , „MIN(Acres)“ ,
„MAX(Acres)“ ).zeigen()

agri_df.selectExpr( „MIN(Soil_status)“ , „MAX(Soil_status)“ ).zeigen()

Ausgang:

Abschluss

Wir haben über die Funktion selectExpr() gesprochen, die die Spalten/Ausdruckssätze übernimmt und den DataFrame basierend auf den angegebenen Ausdrücken/Spalten zurückgibt. Dabei haben wir die vier Hauptszenarien kennengelernt, in denen selectExpr() anwendbar ist. In dieser Funktion können mehrere Ausdrücke angegeben werden, die durch Komma getrennt werden. Es ist nicht erforderlich, eine TEMPORÄRE ANSICHT zu erstellen, um die Funktion selectExpr() zu verwenden.