Pyspark.sql.DataFrame.selectExpr()
Funktionen selectexpr() tar kolumnerna/uppsättningen uttryck och returnerar DataFrame baserat på de angivna uttrycken/kolumnerna. Flera uttryck kan anges i den här funktionen som är separerade med kommatecken. För att visa DataFrame kan vi använda funktionerna show()/collect().
Syntax:
pyspark_DataFrame_object.selectExpr(”Kolumner”/”Uttryck”)
Här är pyspark_DataFrame_object indata PySpark DataFrame.
Scenario 1: Välj kolumnerna
I det här scenariot kommer vi att se hur man väljer de specifika kolumnerna från PySpark DataFrame med hjälp av selectExpr()-funktionen.
Uttrycket som används är 'existing_column as new_name'. Här är existerande_kolumnen kolumnnamnet som finns i DataFrame och det visas som nytt_namn (Aliasing).
Exempel:
Skapa en PySpark DataFrame med namnet 'agri_df' med 5 rader och kolumner. Hämta kolumnerna 'Soil_status' och 'Soil_Type' som 'STATUS' och 'TYPE'.
importera pysparkfrån pyspark.sql importera SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux tips' ).getOrCreate()
# jordbruksdata med 5 rader och 5 kolumner
agri =[{ 'Soil_Type' : 'Svart' , 'Irrigation_availability' : 'Nej' , 'Acres' : 2500 , 'Soil_status' : 'Torr' ,
'Land' : 'USA' },
{ 'Soil_Type' : 'Svart' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Soil_status' : 'Våt' ,
'Land' : 'Indien' },
{ 'Soil_Type' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Soil_status' : 'Torr' ,
'Land' : 'STORBRITANNIEN' },
{ 'Soil_Type' : 'Övrig' , 'Irrigation_availability' : 'Nej' , 'Acres' : 1000 , 'Soil_status' : 'Våt' ,
'Land' : 'USA' },
{ 'Soil_Type' : 'Sand' , 'Irrigation_availability' : 'Nej' , 'Acres' : 500 , 'Soil_status' : 'Torr' ,
'Land' : 'Indien' }]
# skapa dataramen från ovanstående data
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Hämta Soil_status och Soil_Type som 'STATUS' och 'TYPE'.
agri_df.selectExpr( 'Mark_status som STATUS' , 'Soil_Type as TYPE' ).show()
Produktion:
Scenario 2: Specificering av de villkorliga uttrycken
I det här scenariot kommer vi att se hur man utvärderar villkoren i selectExpr()-funktionen.
Uttrycket som används är 'existing_column operator value'. Här är existerande_kolumn kolumnnamnet som finns i DataFrame och vi jämför varje värde i denna kolumn med strängen/värdet.
Exempel 1:
Kontrollera om landet är 'USA' eller inte. Operatorn equalto (=) används här.
importera pysparkfrån pyspark.sql importera SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux tips' ).getOrCreate()
# jordbruksdata med 5 rader och 5 kolumner
agri =[{ 'Soil_Type' : 'Svart' , 'Irrigation_availability' : 'Nej' , 'Acres' : 2500 , 'Soil_status' : 'Torr' ,
'Land' : 'USA' },
{ 'Soil_Type' : 'Svart' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Soil_status' : 'Våt' ,
'Land' : 'Indien' },
{ 'Soil_Type' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Soil_status' : 'Torr' ,
'Land' : 'STORBRITANNIEN' },
{ 'Soil_Type' : 'Övrig' , 'Irrigation_availability' : 'Nej' , 'Acres' : 1000 , 'Soil_status' : 'Våt' ,
'Land' : 'USA' },
{ 'Soil_Type' : 'Sand' , 'Irrigation_availability' : 'Nej' , 'Acres' : 500 , 'Soil_status' : 'Torr' ,
'Land' : 'Indien' }]
# skapa dataramen från ovanstående data
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Kontrollera om landet är 'USA' eller inte.
agri_df.selectExpr( 'Land = 'USA'' ).show()
Produktion:
Exempel 2:
Kontrollera om Soil_Type är NULL eller inte. Nyckelordet NULL kontrollerar om värdet är NULL eller inte. Om den är null returneras true. Annars returneras false. Det slutliga uttrycket är 'Soil_Type IS NULL'
importera pysparkfrån pyspark.sql importera SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux tips' ).getOrCreate()
# jordbruksdata med 5 rader och 5 kolumner
agri =[{ 'Soil_Type' : 'Svart' , 'Irrigation_availability' : 'Nej' , 'Acres' : 2500 , 'Soil_status' : 'Torr' ,
'Land' : 'USA' },
{ 'Soil_Type' : 'Svart' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Soil_status' : 'Våt' ,
'Land' : 'Indien' },
{ 'Soil_Type' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Soil_status' : 'Torr' ,
'Land' : 'STORBRITANNIEN' },
{ 'Soil_Type' : 'Övrig' , 'Irrigation_availability' : 'Nej' , 'Acres' : 1000 , 'Soil_status' : 'Våt' ,
'Land' : 'USA' },
{ 'Soil_Type' : 'Sand' , 'Irrigation_availability' : 'Nej' , 'Acres' : 500 , 'Soil_status' : 'Torr' ,
'Land' : 'Indien' }]
# skapa dataramen från ovanstående data
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Kontrollera om Soil_Type är NULL eller inte.
agri_df.selectExpr( 'Soil_Type IS NULL' ).show()
Produktion:
Scenario 3: Utvärdering av uttrycken
I det här scenariot kommer vi att se hur man anger de matematiska uttrycken. Uttrycket som används är 'existing_column matematical_expression'.
Exempel:
- Visa den faktiska kolumnen 'Acres'.
- Lägg till 100 i kolumnen 'Acres'.
- Subtrahera 100 från kolumnen 'Acres'.
- Multiplicera 100 med kolumnen 'Acres'.
- Dela kolumnen 'Acres' med 100.
från pyspark.sql importera SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux tips' ).getOrCreate()
# jordbruksdata med 5 rader och 5 kolumner
agri =[{ 'Soil_Type' : 'Svart' , 'Irrigation_availability' : 'Nej' , 'Acres' : 2500 , 'Soil_status' : 'Torr' ,
'Land' : 'USA' },
{ 'Soil_Type' : 'Svart' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Soil_status' : 'Våt' ,
'Land' : 'Indien' },
{ 'Soil_Type' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Soil_status' : 'Torr' ,
'Land' : 'STORBRITANNIEN' },
{ 'Soil_Type' : 'Övrig' , 'Irrigation_availability' : 'Nej' , 'Acres' : 1000 , 'Soil_status' : 'Våt' ,
'Land' : 'USA' },
{ 'Soil_Type' : 'Sand' , 'Irrigation_availability' : 'Nej' , 'Acres' : 500 , 'Soil_status' : 'Torr' ,
'Land' : 'Indien' }]
# skapa dataramen från ovanstående data
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Skriv 4 uttryck för att subtrahera, addera, dividera och multiplicera Acres-kolumnen.
agri_df.selectExpr( 'Acres' , 'Acres - 100' , 'Acres * 100' , 'Acres + 100' , 'Acres / 100' ).show()
Produktion:
Scenario 4: Tillämpa aggregerade funktioner
SUM(kolumnnamn) – Den utvärderar det totala värdet i den angivna kolumnen.
MEAN(kolumnnamn) – Den utvärderar medelvärdet i den angivna kolumnen.
MIN(kolumnnamn) – Den returnerar minimielementet bland alla element i den angivna kolumnen.
MAX(kolumnnamn) – Det returnerar det maximala elementet bland alla element i den angivna kolumnen.
Exempel:
- Hitta de totala, genomsnittliga, antal, minsta och högsta elementen för 'Acres'.
- Hitta minimum- och maximumelementen i kolumnen 'Soil_status'.
från pyspark.sql importera SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux tips' ).getOrCreate()
# jordbruksdata med 5 rader och 5 kolumner
agri =[{ 'Soil_Type' : 'Svart' , 'Irrigation_availability' : 'Nej' , 'Acres' : 2500 , 'Soil_status' : 'Torr' ,
'Land' : 'USA' },
{ 'Soil_Type' : 'Svart' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Soil_status' : 'Våt' ,
'Land' : 'Indien' },
{ 'Soil_Type' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Soil_status' : 'Torr' ,
'Land' : 'STORBRITANNIEN' },
{ 'Soil_Type' : 'Övrig' , 'Irrigation_availability' : 'Nej' , 'Acres' : 1000 , 'Soil_status' : 'Våt' ,
'Land' : 'USA' },
{ 'Soil_Type' : 'Sand' , 'Irrigation_availability' : 'Nej' , 'Acres' : 500 , 'Soil_status' : 'Torr' ,
'Land' : 'Indien' }]
# skapa dataramen från ovanstående data
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Aggregerade operationer
agri_df.selectExpr( 'SUM(Acres)' , 'MEDEL(Acres)' , 'COUNT(Acres)' , 'AVG(Acres)' , 'MIN(Acres)' ,
'MAX(Acres)' ).show()
agri_df.selectExpr( 'MIN(jordstatus)' , 'MAX(jordstatus)' ).show()
Produktion:
Slutsats
Vi diskuterade om funktionen selectExpr() som tar kolumnerna/uppsättningarna av uttryck och returnerar DataFrame baserat på de angivna uttrycken/kolumnerna. Som en del av detta lärde vi oss de fyra stora scenarierna där selectExpr() är tillämplig. Flera uttryck kan anges i den här funktionen som är separerade med kommatecken. Det finns inget behov av att skapa en TEMPORARY VIEW för att använda selectExpr()-funktionen.