Pyspark.sql.DataFrame.selectExpr()
A função selectexpr() pega as colunas/conjunto de expressões e retorna o DataFrame com base nas expressões/colunas especificadas. Várias expressões podem ser especificadas nesta função que é separada por vírgula. Para exibir o DataFrame, podemos usar as funções show()/collect().
Sintaxe:
pyspark_DataFrame_object.selectExpr(“Colunas”/”Expressões”)
Aqui, o pyspark_DataFrame_object é o PySpark DataFrame de entrada.
Cenário 1: selecione as colunas
Neste cenário, veremos como selecionar as colunas específicas do PySpark DataFrame usando a função selectExpr().
A expressão usada é “existing_column as new_name”. Aqui, o current_column é o nome da coluna que está presente no DataFrame e é exibido como new_name (Aliasing).
Exemplo:
Crie um PySpark DataFrame chamado “agri_df” com 5 linhas e colunas. Obtenha as colunas “Soil_status” e “Soil_Type” como “STATUS” e “TYPE”.
importar pysparkde pyspark.sql importar SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Dica do Linux' ).getOrCreate()
# dados agrícolas com 5 linhas e 5 colunas
agro =[{ 'Tipo de solo' : 'Preto' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 2500 , 'Soil_status' : 'Seco' ,
'País' : 'EUA' },
{ 'Tipo de solo' : 'Preto' , 'Irrigação_disponibilidade' : 'Sim' , 'Acres' : 3500 , 'Soil_status' : 'Molhado' ,
'País' : 'Índia' },
{ 'Tipo de solo' : Nenhum , 'Irrigação_disponibilidade' : 'Sim' , 'Acres' : 210 , 'Soil_status' : 'Seco' ,
'País' : 'REINO UNIDO' },
{ 'Tipo de solo' : 'Outro' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 1000 , 'Soil_status' : 'Molhado' ,
'País' : 'EUA' },
{ 'Tipo de solo' : 'Areia' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 500 , 'Soil_status' : 'Seco' ,
'País' : 'Índia' }]
# cria o dataframe a partir dos dados acima
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Obtenha o Soil_status e o Soil_Type como 'STATUS' e 'TYPE'.
agri_df.selectExpr( 'Soil_status como STATUS' , 'Soil_Type como TYPE' ).mostrar()
Saída:
Cenário 2: especificando as expressões condicionais
Neste cenário, veremos como avaliar as condições dentro da função selectExpr().
A expressão usada é “existing_column operator value”. Aqui, a current_column é o nome da coluna que está presente no DataFrame e comparamos cada valor dessa coluna com a string/valor.
Exemplo 1:
Verifique se o país é “EUA” ou não. O operador igual a (=) é usado aqui.
importar pysparkde pyspark.sql importar SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Dica do Linux' ).getOrCreate()
# dados agrícolas com 5 linhas e 5 colunas
agro =[{ 'Tipo de solo' : 'Preto' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 2500 , 'Soil_status' : 'Seco' ,
'País' : 'EUA' },
{ 'Tipo de solo' : 'Preto' , 'Irrigação_disponibilidade' : 'Sim' , 'Acres' : 3500 , 'Soil_status' : 'Molhado' ,
'País' : 'Índia' },
{ 'Tipo de solo' : Nenhum , 'Irrigação_disponibilidade' : 'Sim' , 'Acres' : 210 , 'Soil_status' : 'Seco' ,
'País' : 'REINO UNIDO' },
{ 'Tipo de solo' : 'Outro' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 1000 , 'Soil_status' : 'Molhado' ,
'País' : 'EUA' },
{ 'Tipo de solo' : 'Areia' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 500 , 'Soil_status' : 'Seco' ,
'País' : 'Índia' }]
# cria o dataframe a partir dos dados acima
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Verifique se o país é 'EUA' ou não.
agri_df.selectExpr( 'País = 'EUA'' ).mostrar()
Saída:
Exemplo 2:
Verifique se o Soil_Type é NULL ou não. A palavra-chave NULL verifica se o valor é NULL ou não. Se for nulo, true é retornado. Caso contrário, falso é retornado. A expressão final é “Soil_Type IS NULL”
importar pysparkde pyspark.sql importar SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Dica do Linux' ).getOrCreate()
# dados agrícolas com 5 linhas e 5 colunas
agro =[{ 'Tipo de solo' : 'Preto' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 2500 , 'Soil_status' : 'Seco' ,
'País' : 'EUA' },
{ 'Tipo de solo' : 'Preto' , 'Irrigação_disponibilidade' : 'Sim' , 'Acres' : 3500 , 'Soil_status' : 'Molhado' ,
'País' : 'Índia' },
{ 'Tipo de solo' : Nenhum , 'Irrigação_disponibilidade' : 'Sim' , 'Acres' : 210 , 'Soil_status' : 'Seco' ,
'País' : 'REINO UNIDO' },
{ 'Tipo de solo' : 'Outro' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 1000 , 'Soil_status' : 'Molhado' ,
'País' : 'EUA' },
{ 'Tipo de solo' : 'Areia' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 500 , 'Soil_status' : 'Seco' ,
'País' : 'Índia' }]
# cria o dataframe a partir dos dados acima
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Verifique se o Soil_Type é NULL ou não.
agri_df.selectExpr( 'Soil_Type É NULO' ).mostrar()
Saída:
Cenário 3: avaliando as expressões
Neste cenário, veremos como especificar as expressões matemáticas. A expressão que é usada é “existing_column math_expression”.
Exemplo:
- Exiba a coluna “Acres” real.
- Adicione 100 à coluna “Acres”.
- Subtraia 100 da coluna “Acres”.
- Multiplique 100 pela coluna “Acres”.
- Divida a coluna “Acres” por 100.
de pyspark.sql importar SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Dica do Linux' ).getOrCreate()
# dados agrícolas com 5 linhas e 5 colunas
agro =[{ 'Tipo de solo' : 'Preto' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 2500 , 'Soil_status' : 'Seco' ,
'País' : 'EUA' },
{ 'Tipo de solo' : 'Preto' , 'Irrigação_disponibilidade' : 'Sim' , 'Acres' : 3500 , 'Soil_status' : 'Molhado' ,
'País' : 'Índia' },
{ 'Tipo de solo' : Nenhum , 'Irrigação_disponibilidade' : 'Sim' , 'Acres' : 210 , 'Soil_status' : 'Seco' ,
'País' : 'REINO UNIDO' },
{ 'Tipo de solo' : 'Outro' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 1000 , 'Soil_status' : 'Molhado' ,
'País' : 'EUA' },
{ 'Tipo de solo' : 'Areia' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 500 , 'Soil_status' : 'Seco' ,
'País' : 'Índia' }]
# cria o dataframe a partir dos dados acima
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Escreva 4 expressões para subtrair, adicionar, dividir e multiplicar a coluna de acres.
agri_df.selectExpr( 'Acres' , 'Acres - 100' , 'Acres * 100' , 'Acres + 100' , 'Acres / 100' ).mostrar()
Saída:
Cenário 4: Aplicando as Funções Agregadas
SUM(coluna_nome) – Avalia o valor total na coluna especificada.
MEAN(coluna_nome) – Avalia o valor médio na coluna especificada.
MIN(coluna_nome) – Retorna o elemento mínimo entre todos os elementos na coluna especificada.
MAX(coluna_nome) – Retorna o elemento máximo entre todos os elementos na coluna especificada.
Exemplo:
- Encontre os elementos total, médio, contagem, mínimo e máximo de “Acres”.
- Encontre os elementos mínimo e máximo na coluna “Soil_status”.
de pyspark.sql importar SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Dica do Linux' ).getOrCreate()
# dados agrícolas com 5 linhas e 5 colunas
agro =[{ 'Tipo de solo' : 'Preto' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 2500 , 'Soil_status' : 'Seco' ,
'País' : 'EUA' },
{ 'Tipo de solo' : 'Preto' , 'Irrigação_disponibilidade' : 'Sim' , 'Acres' : 3500 , 'Soil_status' : 'Molhado' ,
'País' : 'Índia' },
{ 'Tipo de solo' : Nenhum , 'Irrigação_disponibilidade' : 'Sim' , 'Acres' : 210 , 'Soil_status' : 'Seco' ,
'País' : 'REINO UNIDO' },
{ 'Tipo de solo' : 'Outro' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 1000 , 'Soil_status' : 'Molhado' ,
'País' : 'EUA' },
{ 'Tipo de solo' : 'Areia' , 'Irrigação_disponibilidade' : 'Não' , 'Acres' : 500 , 'Soil_status' : 'Seco' ,
'País' : 'Índia' }]
# cria o dataframe a partir dos dados acima
agri_df = linuxhint_spark_app.createDataFrame(agri)
# operações agregadas
agri_df.selectExpr( 'SUM(Acres)' , 'MÉDIO(Acres)' , 'CONTAGEM (Acres)' , 'AVG (Acres)' , 'MIN(Acres)' ,
'MAX (Acres)' ).mostrar()
agri_df.selectExpr( 'MIN(status_do_solo)' , 'MAX(status_do_solo)' ).mostrar()
Saída:
Conclusão
Discutimos sobre a função selectExpr() que pega as colunas/conjuntos de expressões e retorna o DataFrame com base nas expressões/colunas especificadas. Como parte disso, aprendemos os quatro cenários principais nos quais o selectExpr() é aplicável. Várias expressões podem ser especificadas nesta função que são separadas por vírgula. Não há necessidade de criar uma TEMPORARY VIEW para usar a função selectExpr().