PySpark SelecteerUitdr()

Pyspark Selecteeruitdr



Met behulp van de functie selectExpr() in PySpark kunnen we een uitdrukking direct evalueren zonder een TABLE of VIEW te maken. Deze functie is beschikbaar in de pyspark.sql.DataFrame module die vergelijkbaar is met de select() methode. Met selectExpr() kunnen we de kolommen weergeven, de functies op de kolommen toepassen, de uitdrukkingen evalueren, de aggregatiebewerkingen uitvoeren, enz. Het is ook mogelijk om meerdere kolommen tegelijk te evalueren/specificeren.

Pyspark.sql.DataFrame.selectExpr()

De functie selectexpr() neemt de kolommen/set uitdrukkingen en retourneert het DataFrame op basis van de opgegeven uitdrukkingen/kolommen. In deze functie kunnen meerdere expressies worden opgegeven, gescheiden door komma's. Om het DataFrame weer te geven, kunnen we de functies show()/collect() gebruiken.

Syntaxis:







pyspark_DataFrame_object.selectExpr(“Kolommen”/”Uitdrukkingen”)

Hier is het pyspark_DataFrame_object de invoer PySpark DataFrame.



Scenario 1: Selecteer de kolommen

In dit scenario zullen we zien hoe de specifieke kolommen uit het PySpark DataFrame kunnen worden geselecteerd met behulp van de functie selectExpr().



De uitdrukking die wordt gebruikt is 'bestaande_kolom als nieuwe_naam'. Hier is de existing_column de kolomnaam die aanwezig is in het DataFrame en wordt weergegeven als new_name (Aliasing).





Voorbeeld:

Maak een PySpark DataFrame met de naam 'agri_df' met 5 rijen en kolommen. Verkrijg de kolommen 'Soil_status' en 'Soil_Type' als 'STATUS' en 'TYPE'.

pyspark importeren

importeer vanuit pyspark.sql SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# landbouwgegevens met 5 rijen en 5 kolommen

landbouw =[{ 'Grondsoort' : 'Zwart' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 2500 , 'Bodem_status' : 'Droog' ,
'Land' : 'VERENIGDE STATEN VAN AMERIKA' },

{ 'Grondsoort' : 'Zwart' , 'Irrigatie_beschikbaarheid' : 'Ja' , 'Acres' : 3500 , 'Bodem_status' : 'Nat' ,
'Land' : 'Indië' },

{ 'Grondsoort' : Geen , 'Irrigatie_beschikbaarheid' : 'Ja' , 'Acres' : 210 , 'Bodem_status' : 'Droog' ,
'Land' : 'VK' },

{ 'Grondsoort' : 'Ander' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 1000 , 'Bodem_status' : 'Nat' ,
'Land' : 'VERENIGDE STATEN VAN AMERIKA' },

{ 'Grondsoort' : 'Zand' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 500 , 'Bodem_status' : 'Droog' ,
'Land' : 'Indië' }]



# maak het dataframe van de bovenstaande gegevens

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Verkrijg de Soil_status en Soil_Type als 'STATUS' en 'TYPE'.

agri_df.selectUitdr( 'Bodem_status als STATUS' , 'Soil_Type als TYPE' ).show()

Uitgang:



Scenario 2: de voorwaardelijke uitdrukkingen specificeren

In dit scenario zullen we zien hoe we de voorwaarden binnen de functie selectExpr() kunnen evalueren.

De uitdrukking die wordt gebruikt is 'existing_column operator value'. Hier is de existing_column de kolomnaam die aanwezig is in het DataFrame en we vergelijken elke waarde in deze kolom met de tekenreeks/waarde.

Voorbeeld 1:

Controleer of het land 'USA' is of niet. De operator is gelijk aan (=) wordt hier gebruikt.

pyspark importeren

importeer vanuit pyspark.sql SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# landbouwgegevens met 5 rijen en 5 kolommen

landbouw =[{ 'Grondsoort' : 'Zwart' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 2500 , 'Bodem_status' : 'Droog' ,
'Land' : 'VERENIGDE STATEN VAN AMERIKA' },

{ 'Grondsoort' : 'Zwart' , 'Irrigatie_beschikbaarheid' : 'Ja' , 'Acres' : 3500 , 'Bodem_status' : 'Nat' ,
'Land' : 'Indië' },

{ 'Grondsoort' : Geen , 'Irrigatie_beschikbaarheid' : 'Ja' , 'Acres' : 210 , 'Bodem_status' : 'Droog' ,
'Land' : 'VK' },

{ 'Grondsoort' : 'Ander' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 1000 , 'Bodem_status' : 'Nat' ,
'Land' : 'VERENIGDE STATEN VAN AMERIKA' },

{ 'Grondsoort' : 'Zand' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 500 , 'Bodem_status' : 'Droog' ,
'Land' : 'Indië' }]



# maak het dataframe van de bovenstaande gegevens

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Controleer of het land 'USA' is of niet.

agri_df.selectUitdr( 'Land = 'VS'' ).show()

Uitgang:

Voorbeeld 2:

Controleer of het Soil_Type NULL is of niet. Het sleutelwoord NULL controleert of de waarde NULL is of niet. Als het null is, wordt waar geretourneerd. Anders wordt false geretourneerd. De laatste uitdrukking is 'Soil_Type IS NULL'

pyspark importeren

importeer vanuit pyspark.sql SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# landbouwgegevens met 5 rijen en 5 kolommen

landbouw =[{ 'Grondsoort' : 'Zwart' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 2500 , 'Bodem_status' : 'Droog' ,
'Land' : 'VERENIGDE STATEN VAN AMERIKA' },

{ 'Grondsoort' : 'Zwart' , 'Irrigatie_beschikbaarheid' : 'Ja' , 'Acres' : 3500 , 'Bodem_status' : 'Nat' ,
'Land' : 'Indië' },

{ 'Grondsoort' : Geen , 'Irrigatie_beschikbaarheid' : 'Ja' , 'Acres' : 210 , 'Bodem_status' : 'Droog' ,
'Land' : 'VK' },

{ 'Grondsoort' : 'Ander' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 1000 , 'Bodem_status' : 'Nat' ,
'Land' : 'VERENIGDE STATEN VAN AMERIKA' },

{ 'Grondsoort' : 'Zand' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 500 , 'Bodem_status' : 'Droog' ,
'Land' : 'Indië' }]



# maak het dataframe van de bovenstaande gegevens

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Controleer of het Soil_Type NULL is of niet.

agri_df.selectUitdr( 'Soil_Type IS NULL' ).show()

Uitgang:

Scenario 3: de uitdrukkingen evalueren

In dit scenario zullen we zien hoe we de wiskundige uitdrukkingen kunnen specificeren. De uitdrukking die wordt gebruikt is 'bestaande_kolom wiskundige_expressie'.

Voorbeeld:

  1. Geef de daadwerkelijke kolom 'Acres' weer.
  2. Voeg 100 toe aan de kolom 'Acres'.
  3. Trek 100 af van de kolom 'Acres'.
  4. Vermenigvuldig 100 met de kolom 'Acres'.
  5. Deel de kolom 'Acres' door 100.
pyspark importeren

importeer vanuit pyspark.sql SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# landbouwgegevens met 5 rijen en 5 kolommen

landbouw =[{ 'Grondsoort' : 'Zwart' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 2500 , 'Bodem_status' : 'Droog' ,
'Land' : 'VERENIGDE STATEN VAN AMERIKA' },

{ 'Grondsoort' : 'Zwart' , 'Irrigatie_beschikbaarheid' : 'Ja' , 'Acres' : 3500 , 'Bodem_status' : 'Nat' ,
'Land' : 'Indië' },

{ 'Grondsoort' : Geen , 'Irrigatie_beschikbaarheid' : 'Ja' , 'Acres' : 210 , 'Bodem_status' : 'Droog' ,
'Land' : 'VK' },

{ 'Grondsoort' : 'Ander' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 1000 , 'Bodem_status' : 'Nat' ,
'Land' : 'VERENIGDE STATEN VAN AMERIKA' },

{ 'Grondsoort' : 'Zand' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 500 , 'Bodem_status' : 'Droog' ,
'Land' : 'Indië' }]



# maak het dataframe van de bovenstaande gegevens

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Schrijf 4 uitdrukkingen om de Acres-kolom af te trekken, op te tellen, te delen en te vermenigvuldigen.

agri_df.selectUitdr( 'Acres' , 'Acres - 100' , 'Acres * 100' , 'Acres + 100' , 'Acres / 100' ).show()

Uitgang:

Scenario 4: de aggregatiefuncties toepassen

SUM(kolomnaam) - Het evalueert de totale waarde in de opgegeven kolom.

MEAN(kolomnaam) - Het evalueert de gemiddelde waarde in de opgegeven kolom.

MIN(kolomnaam) - Het retourneert het minimale element van alle elementen in de opgegeven kolom.

MAX(kolomnaam) - Het retourneert het maximale element van alle elementen in de opgegeven kolom.

Voorbeeld:

  1. Zoek de elementen totaal, gemiddelde, aantal, minimum en maximum van 'Acres'.
  2. Zoek de minimale en maximale elementen in de kolom 'Soil_status'.
pyspark importeren

importeer vanuit pyspark.sql SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# landbouwgegevens met 5 rijen en 5 kolommen

landbouw =[{ 'Grondsoort' : 'Zwart' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 2500 , 'Bodem_status' : 'Droog' ,
'Land' : 'VERENIGDE STATEN VAN AMERIKA' },

{ 'Grondsoort' : 'Zwart' , 'Irrigatie_beschikbaarheid' : 'Ja' , 'Acres' : 3500 , 'Bodem_status' : 'Nat' ,
'Land' : 'Indië' },

{ 'Grondsoort' : Geen , 'Irrigatie_beschikbaarheid' : 'Ja' , 'Acres' : 210 , 'Bodem_status' : 'Droog' ,
'Land' : 'VK' },

{ 'Grondsoort' : 'Ander' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 1000 , 'Bodem_status' : 'Nat' ,
'Land' : 'VERENIGDE STATEN VAN AMERIKA' },

{ 'Grondsoort' : 'Zand' , 'Irrigatie_beschikbaarheid' : 'Nee' , 'Acres' : 500 , 'Bodem_status' : 'Droog' ,
'Land' : 'Indië' }]



# maak het dataframe van de bovenstaande gegevens

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Geaggregeerde bewerkingen

agri_df.selectUitdr( 'SUM(Acres)' , 'GEMIDDELDE (Acres)' , 'AANTAL (Acres)' , 'AVG(Acres)' , 'MIN (Acres)' ,
'MAX (Acres)' ).show()

agri_df.selectUitdr( 'MIN(bodem_status)' , 'MAX(bodem_status)' ).show()

Uitgang:

Conclusie

We bespraken de functie selectUitdr() die de kolommen/reeksen uitdrukkingen neemt en het DataFrame retourneert op basis van de opgegeven uitdrukkingen/kolommen. Als onderdeel hiervan hebben we de vier belangrijkste scenario's geleerd waarin selectExpr() van toepassing is. In deze functie kunnen meerdere uitdrukkingen worden gespecificeerd die worden gescheiden door komma's. Het is niet nodig om een ​​TIJDELIJKE WEERGAVE te maken om de functie selectUitdr() te gebruiken.