PySpark SelectExpr()

Pyspark Selectexpr



Utilitzant la funció selectExpr() a PySpark, podem avaluar directament una expressió sense crear cap TAULA o VISTA. Aquesta funció està disponible al mòdul pyspark.sql.DataFrame que és similar al mètode select(). Amb selectExpr(), podem mostrar les columnes, aplicar les funcions a les columnes, avaluar les expressions, realitzar les operacions d'agregació, etc. També és possible avaluar/especificar diverses columnes alhora.

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 pyspark

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)

# 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 pyspark

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)

# 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 pyspark

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)

# 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:

  1. Mostra la columna real 'Acres'.
  2. Afegiu 100 a la columna 'Acres'.
  3. Resteu 100 de la columna 'Acres'.
  4. Multiplica 100 amb la columna 'Acres'.
  5. Dividiu la columna 'Acres' per 100.
importar pyspark

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:

  1. Trobeu els elements totals, mitjans, recomptes, mínims i màxims de 'Acres'.
  2. Cerqueu els elements mínims i màxims a la columna 'Estat_sòl'.
importar pyspark

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().