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 importerenimporteer 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 importerenimporteer 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 importerenimporteer 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:
- Geef de daadwerkelijke kolom 'Acres' weer.
- Voeg 100 toe aan de kolom 'Acres'.
- Trek 100 af van de kolom 'Acres'.
- Vermenigvuldig 100 met de kolom 'Acres'.
- Deel de kolom 'Acres' door 100.
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:
- Zoek de elementen totaal, gemiddelde, aantal, minimum en maximum van 'Acres'.
- Zoek de minimale en maximale elementen in de kolom 'Soil_status'.
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.