Pyspark.sql.DataFrame.selectExpr()
La funció selectexpr() pren les columnes/conjunt d'expressions i retorna el DataFrame en funció de les expressions/columnes especificades. Es poden especificar diverses expressions en aquesta funció que està separada per comes. Per mostrar el DataFrame, podem utilitzar les funcions show()/collect().
Sintaxi:
pyspark_DataFrame_object.selectExpr(“Columnes”/”Expressions”)
Aquí, el pyspark_DataFrame_object és l'entrada PySpark DataFrame.
Escenari 1: seleccioneu les columnes
En aquest escenari, veurem com seleccionar les columnes particulars del PySpark DataFrame mitjançant la funció selectExpr().
L'expressió que s'utilitza és 'existing_column as new_name'. Aquí, la columna_existent és el nom de la columna que està present al DataFrame i es mostra com a nom_nou (aliasing).
Exemple:
Creeu un PySpark DataFrame anomenat 'agri_df' amb 5 files i columnes. Obteniu les columnes 'Soil_status' i 'Soil_Type' com a 'STATUS' i 'TYPE'.
importar pysparkdes de pyspark.sql importació SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Suggeriment de Linux' ).getOrCreate()
# dades agrícoles amb 5 files i 5 columnes
agri =[{ 'Tipus_sòl' : 'Negre' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 2500 , 'Estat_sòl' : 'Sec' ,
'País' : 'EUA' },
{ 'Tipus_sòl' : 'Negre' , 'Disponibilitat_de_reg' : 'Sí' , 'Acres' : 3500 , 'Estat_sòl' : 'Mullat' ,
'País' : 'Índia' },
{ 'Tipus_sòl' : Cap , 'Disponibilitat_de_reg' : 'Sí' , 'Acres' : 210 , 'Estat_sòl' : 'Sec' ,
'País' : 'UK' },
{ 'Tipus_sòl' : 'Altre' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 1000 , 'Estat_sòl' : 'Mullat' ,
'País' : 'EUA' },
{ 'Tipus_sòl' : 'Sorra' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 500 , 'Estat_sòl' : 'Sec' ,
'País' : 'Índia' }]
# creeu el marc de dades a partir de les dades anteriors
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Obteniu Soil_status i Soil_Type com a 'STATUS' i 'TYPE'.
agri_df.selectExpr( 'Soil_status com STATUS' , 'Soil_Type com a TYPE' ).espectacle()
Sortida:
Escenari 2: especificació de les expressions condicionals
En aquest escenari, veurem com avaluar les condicions dins de la funció selectExpr().
L'expressió que s'utilitza és 'valor de l'operador de columna_existent'. Aquí, la columna_existent és el nom de la columna que està present al DataFrame i comparem cada valor d'aquesta columna amb la cadena/valor.
Exemple 1:
Comproveu si el país és 'EUA' o no. Aquí s'utilitza l'operador equalto (=).
importar pysparkdes de pyspark.sql importació SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Suggeriment de Linux' ).getOrCreate()
# dades agrícoles amb 5 files i 5 columnes
agri =[{ 'Tipus_sòl' : 'Negre' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 2500 , 'Estat_sòl' : 'Sec' ,
'País' : 'EUA' },
{ 'Tipus_sòl' : 'Negre' , 'Disponibilitat_de_reg' : 'Sí' , 'Acres' : 3500 , 'Estat_sòl' : 'Mullat' ,
'País' : 'Índia' },
{ 'Tipus_sòl' : Cap , 'Disponibilitat_de_reg' : 'Sí' , 'Acres' : 210 , 'Estat_sòl' : 'Sec' ,
'País' : 'UK' },
{ 'Tipus_sòl' : 'Altre' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 1000 , 'Estat_sòl' : 'Mullat' ,
'País' : 'EUA' },
{ 'Tipus_sòl' : 'Sorra' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 500 , 'Estat_sòl' : 'Sec' ,
'País' : 'Índia' }]
# creeu el marc de dades a partir de les dades anteriors
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Comproveu si el país és 'EUA' o no.
agri_df.selectExpr( 'País = 'EUA'' ).espectacle()
Sortida:
Exemple 2:
Comproveu si Soil_Type és NULL o no. La paraula clau NULL comprova si el valor és NULL o no. Si és nul, es retorna true. En cas contrari, es retorna false. L'expressió final és 'Soil_Type IS NULL'
importar pysparkdes de pyspark.sql importació SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Suggeriment de Linux' ).getOrCreate()
# dades agrícoles amb 5 files i 5 columnes
agri =[{ 'Tipus_sòl' : 'Negre' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 2500 , 'Estat_sòl' : 'Sec' ,
'País' : 'EUA' },
{ 'Tipus_sòl' : 'Negre' , 'Disponibilitat_de_reg' : 'Sí' , 'Acres' : 3500 , 'Estat_sòl' : 'Mullat' ,
'País' : 'Índia' },
{ 'Tipus_sòl' : Cap , 'Disponibilitat_de_reg' : 'Sí' , 'Acres' : 210 , 'Estat_sòl' : 'Sec' ,
'País' : 'UK' },
{ 'Tipus_sòl' : 'Altre' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 1000 , 'Estat_sòl' : 'Mullat' ,
'País' : 'EUA' },
{ 'Tipus_sòl' : 'Sorra' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 500 , 'Estat_sòl' : 'Sec' ,
'País' : 'Índia' }]
# creeu el marc de dades a partir de les dades anteriors
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Comproveu si Soil_Type és NULL o no.
agri_df.selectExpr( 'Soil_Type IS NULL' ).espectacle()
Sortida:
Escenari 3: Avaluació de les expressions
En aquest escenari, veurem com especificar les expressions matemàtiques. L'expressió que s'utilitza és 'existing_column mathematical_expression'.
Exemple:
- Mostra la columna real 'Acres'.
- Afegiu 100 a la columna 'Acres'.
- Resteu 100 de la columna 'Acres'.
- Multiplica 100 amb la columna 'Acres'.
- Dividiu la columna 'Acres' per 100.
des de pyspark.sql importació SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Suggeriment de Linux' ).getOrCreate()
# dades agrícoles amb 5 files i 5 columnes
agri =[{ 'Tipus_sòl' : 'Negre' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 2500 , 'Estat_sòl' : 'Sec' ,
'País' : 'EUA' },
{ 'Tipus_sòl' : 'Negre' , 'Disponibilitat_de_reg' : 'Sí' , 'Acres' : 3500 , 'Estat_sòl' : 'Mullat' ,
'País' : 'Índia' },
{ 'Tipus_sòl' : Cap , 'Disponibilitat_de_reg' : 'Sí' , 'Acres' : 210 , 'Estat_sòl' : 'Sec' ,
'País' : 'UK' },
{ 'Tipus_sòl' : 'Altre' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 1000 , 'Estat_sòl' : 'Mullat' ,
'País' : 'EUA' },
{ 'Tipus_sòl' : 'Sorra' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 500 , 'Estat_sòl' : 'Sec' ,
'País' : 'Índia' }]
# creeu el marc de dades a partir de les dades anteriors
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Escriu 4 expressions per restar, sumar, dividir i multiplicar la columna Acres.
agri_df.selectExpr( 'Acres' , 'Acres - 100' , 'Acres * 100' , 'Acres + 100' , 'Acres / 100' ).espectacle()
Sortida:
Escenari 4: Aplicació de les funcions d'agregació
SUMA(nom_columna) – Avalua el valor total a la columna especificada.
MEAN(nom_columna) – Avalua el valor mitjà de la columna especificada.
MIN(nom_columna) – Retorna l'element mínim entre tots els elements de la columna especificada.
MAX(nom_columna) – Retorna l'element màxim entre tots els elements de la columna especificada.
Exemple:
- Trobeu els elements totals, mitjans, recomptes, mínims i màxims de 'Acres'.
- Cerqueu els elements mínims i màxims a la columna 'Estat_sòl'.
des de pyspark.sql importació SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Suggeriment de Linux' ).getOrCreate()
# dades agrícoles amb 5 files i 5 columnes
agri =[{ 'Tipus_sòl' : 'Negre' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 2500 , 'Estat_sòl' : 'Sec' ,
'País' : 'EUA' },
{ 'Tipus_sòl' : 'Negre' , 'Disponibilitat_de_reg' : 'Sí' , 'Acres' : 3500 , 'Estat_sòl' : 'Mullat' ,
'País' : 'Índia' },
{ 'Tipus_sòl' : Cap , 'Disponibilitat_de_reg' : 'Sí' , 'Acres' : 210 , 'Estat_sòl' : 'Sec' ,
'País' : 'UK' },
{ 'Tipus_sòl' : 'Altre' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 1000 , 'Estat_sòl' : 'Mullat' ,
'País' : 'EUA' },
{ 'Tipus_sòl' : 'Sorra' , 'Disponibilitat_de_reg' : 'No' , 'Acres' : 500 , 'Estat_sòl' : 'Sec' ,
'País' : 'Índia' }]
# creeu el marc de dades a partir de les dades anteriors
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Operacions agregades
agri_df.selectExpr( 'SUMA(Acres)' , 'MITJÀ (Acres)' , 'COUNT (acres)' , 'AVG (acres)' , 'MIN(Acres)' ,
'MAX(acres)' ).espectacle()
agri_df.selectExpr( 'MIN(estat_sòl)' , 'MAX(estat_sòl)' ).espectacle()
Sortida:
Conclusió
Hem parlat de la funció selectExpr() que pren les columnes/conjunts d'expressions i retorna el DataFrame en funció de les expressions/columnes especificades. Com a part d'això, vam conèixer els quatre escenaris principals en què s'aplica selectExpr(). En aquesta funció es poden especificar diverses expressions separades per comes. No cal crear una VISTA TEMPORAL per utilitzar la funció selectExpr().