Pyspark - filtro

Pyspark - filtro
No Python, Pyspark é um módulo Spark usado para fornecer um tipo semelhante de processamento como o Spark usando o DataFrame. Em Pyspark, filtro() é usado para filtrar as linhas no quadro de dados. Ele retornará o novo DataFrame filtrando as linhas no DataFrame existente. Vamos demonstrar quatro maneiras de usar o filtro() função neste artigo:
  1. Método - 1: filtro () com operadores relacionais
  2. Método - 2: filtro () com operadores relacionais usando a função col
  3. Método - 3: filtro () com operadores relacionais em várias condições
  4. Método - 4: filtro () com expressão SQL

Vamos primeiro criar um quadro de dados Pyspark que podemos usar para os exemplos.

Exemplo:

Neste exemplo, criaremos o pyspark DataFrame com 5 linhas e 6 colunas e exibir o método show ().

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#import a função col
de Pyspark.SQL.funções Importar col
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 5 linhas e 6 atributos
alunos = [
'rollno': '001', 'nome': 'sravan', 'idade': 23,
'Altura': 5.79, 'Peso': 67, 'Endereço': 'Guntur',
'rollno': '002', 'nome': 'ojaswi', 'idade': 16,
'Altura': 3.79, 'Peso': 34, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh chowdary', 'idade': 7,
'Altura': 2.79, 'Peso': 17, 'Endereço': 'Patna',
'rollno': '004', 'nome': 'rohith', 'idade': 9,
'Altura': 3.69, 'Peso': 28, 'Endereço': 'Hyd',
'rollno': '005', 'nome': 'sridevi', 'idade': 37,
'Altura': 5.59, 'Peso': 54, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#display dataframe
df.mostrar()

Saída:

Método - 1: filtro () com operadores relacionais

Aqui, estamos usando a função filter () para filtrar o quadro de dados do Pyspark com operadores relacionais como>, < . == etc.

Sintaxe:

quadro de dados.filtro (DataFrame.Valor do operador column_name)

Aqui, o filtro () aceita três parâmetros.

  1. quadro de dados.Column_name é a coluna onde a filtragem é aplicada.
  2. Operador é o operador relacional.
  3. O valor é o valor da string/numérico em comparação com os valores da coluna.

Exemplo:

Neste exemplo, vamos filtrar o quadro de dados com base em colunas de idade, altura, peso e nomes com diferentes operadores relacionais e exibir as linhas filtradas usando o método collect ().

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#import a função col
de Pyspark.SQL.funções Importar col
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 5 linhas e 6 atributos
alunos = [
'rollno': '001', 'nome': 'sravan', 'idade': 23,
'Altura': 5.79, 'Peso': 67, 'Endereço': 'Guntur',
'rollno': '002', 'nome': 'ojaswi', 'idade': 16,
'Altura': 3.79, 'Peso': 34, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh chowdary', 'idade': 7,
'Altura': 2.79, 'Peso': 17, 'Endereço': 'Patna',
'rollno': '004', 'nome': 'rohith', 'idade': 9,
'Altura': 3.69, 'Peso': 28, 'Endereço': 'Hyd',
'rollno': '005', 'nome': 'sridevi', 'idade': 37,
'Altura': 5.59, 'Peso': 54, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#display dataframe
#pela idade de filtragem como 23
Imprimir (df.filtro (df.idade == 23).colet ()))
imprimir("---------------------------")
#display dataframe
#por altura de filtragem como 2.79
Imprimir (df.filtro (df.altura == 2.79).colet ()))
imprimir("---------------------------")
#display dataframe
#por peso de filtragem maior que 30
Imprimir (df.filtro (df.peso> 30).colet ()))
imprimir("---------------------------")
#display dataframe
#by filtrando nome como sravan
Imprimir (df.filtro (df.nome == 'sravan').colet ()))

Saída:

[Linha (endereço = 'guntur', idade = 23, altura = 5.79, nome = "sravan", rollno = "001", peso = 67)]
---------------------------
[Linha (endereço = 'patna', idade = 7, altura = 2.79, nome = "Gnanesh Chowdary", rollno = "003", peso = 17)]
---------------------------
[Linha (endereço = 'guntur', idade = 23, altura = 5.79, nome = "sravan", rollno = "001", peso = 67), linha (endereço = 'hyd', idade = 16, altura = 3.79, nome = "ojaswi", rollno = "002", peso = 34), linha (endereço = 'hyd', idade = 37, altura = 5.59, nome = "sridevi", rollno = "005", peso = 54)]
---------------------------
[Linha (endereço = 'guntur', idade = 23, altura = 5.79, nome = "sravan", rollno = "001", peso = 67)]

Método - 2: filtro () com operadores relacionais usando a função col

Aqui, estamos usando a função filter () para filtrar o quadro de dados do Pyspark com operadores relacionais como>, < . == etc. through col function.

Sintaxe:

quadro de dados.filtro (col (“column_name”) valor do operador)

Aqui, onde () aceita três parâmetros.

  1. quadro de dados.Column_name é a coluna onde a filtragem é aplicada.
  2. Operador é o operador relacional.
  3. O valor é o valor da string/numérico em comparação com os valores da coluna.

Exemplo:

Neste exemplo, vamos filtrar o quadro de dados com base em colunas de idade, altura, peso e nomes com diferentes operadores relacionais e exibir as linhas filtradas usando o método collect ().

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#import a função col
de Pyspark.SQL.funções Importar col
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 5 linhas e 6 atributos
alunos = [
'rollno': '001', 'nome': 'sravan', 'idade': 23,
'Altura': 5.79, 'Peso': 67, 'Endereço': 'Guntur',
'rollno': '002', 'nome': 'ojaswi', 'idade': 16,
'Altura': 3.79, 'Peso': 34, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh chowdary', 'idade': 7,
'Altura': 2.79, 'Peso': 17, 'Endereço': 'Patna',
'rollno': '004', 'nome': 'rohith', 'idade': 9,
'Altura': 3.69, 'Peso': 28, 'Endereço': 'Hyd',
'rollno': '005', 'nome': 'sridevi', 'idade': 37,
'Altura': 5.59, 'Peso': 54, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#display dataframe
#pela idade de filtragem como 23
Imprimir (df.filtro (col ('idade') == 23).colet ()))
imprimir("---------------------------")
#display dataframe
#por altura de filtragem como 2.79
Imprimir (df.filtro (col ('altura') == 2.79).colet ()))
imprimir("---------------------------")
#display dataframe
#por peso de filtragem maior que 30
Imprimir (df.filtro (col ('peso')> 30).colet ()))
imprimir("---------------------------")
#display dataframe
#by filtrando nome como sravan
Imprimir (df.filtro (col ('nome') == 'sravan').colet ()))

Saída:

[Linha (endereço = 'guntur', idade = 23, altura = 5.79, nome = "sravan", rollno = "001", peso = 67)]
---------------------------
[Linha (endereço = 'patna', idade = 7, altura = 2.79, nome = "Gnanesh Chowdary", rollno = "003", peso = 17)]
---------------------------
[Linha (endereço = 'guntur', idade = 23, altura = 5.79, nome = "sravan", rollno = "001", peso = 67), linha (endereço = 'hyd', idade = 16, altura = 3.79, nome = "ojaswi", rollno = "002", peso = 34), linha (endereço = 'hyd', idade = 37, altura = 5.59, nome = "sridevi", rollno = "005", peso = 54)]
---------------------------
[Linha (endereço = 'guntur', idade = 23, altura = 5.79, nome = "sravan", rollno = "001", peso = 67)]

Método - 3: filtro () com operadores relacionais em várias condições

Aqui, estamos usando a função filter () para filtrar o quadro de dados do Pyspark com operadores relacionais como>, < . == etc with multiple conditions.

Sintaxe:

quadro de dados.Operador de filtro ((conditina1) (condição2)… .)

Aqui, o filtro () aceita três parâmetros.

  1. quadro de dados.Column_name é a coluna onde a filtragem é aplicada.
  2. Operador é o operador relacional.
  3. O valor é o valor da string/numérico em comparação com os valores da coluna.
  4. Condição Especifica - (DataFrame.Valor do operador column_name).

Exemplo:

Neste exemplo, vamos filtrar o quadro de dados com base na coluna de idade com ou (|) e (&) operador e exibir as linhas filtradas usando o método collect ().

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#import a função col
de Pyspark.SQL.funções Importar col
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 5 linhas e 6 atributos
alunos = [
'rollno': '001', 'nome': 'sravan', 'idade': 23,
'Altura': 5.79, 'Peso': 67, 'Endereço': 'Guntur',
'rollno': '002', 'nome': 'ojaswi', 'idade': 16,
'Altura': 3.79, 'Peso': 34, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh chowdary', 'idade': 7,
'Altura': 2.79, 'Peso': 17, 'Endereço': 'Patna',
'rollno': '004', 'nome': 'rohith', 'idade': 9,
'Altura': 3.69, 'Peso': 28, 'Endereço': 'Hyd',
'rollno': '005', 'nome': 'sridevi', 'idade': 37,
'Altura': 5.59, 'Peso': 54, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#display dataframe
#por idade de filtragem superior a 10 e menos de 21
Imprimir (df.filtro ((df.idade> 10) e (df.idade <21)).collect())
imprimir("---------------------------")
#display dataframe
#pela idade de filtragem superior a 10 ou menos de 21
Imprimir (df.filtro ((df.idade> 10) | (df.idade <21)).collect())

Saída:

[Linha (endereço = 'hyd', idade = 16, altura = 3.79, nome = "ojaswi", rollno = "002", peso = 34)]
---------------------------
[Linha (endereço = 'guntur', idade = 23, altura = 5.79, nome = "sravan", rollno = "001", peso = 67), linha (endereço = 'hyd', idade = 16, altura = 3.79, nome = "ojaswi", rollno = "002", peso = 34), linha (endereço = 'patna', idade = 7, altura = 2.79, nome = "Gnanesh Chowdary", rollno = "003", peso = 17), linha (endereço = 'hyd', idade = 9, altura = 3.69, nome = "rohith", rollno = "004", peso = 28), linha (endereço = 'hyd', idade = 37, altura = 5.59, nome = "sridevi", rollno = "005", peso = 54)]

Método - 4: filtro () com expressão SQL

Aqui, estamos usando a função filter () para filtrar o quadro de dados Pyspark com expressão SQL. A condição é fechada por "". No entanto, podemos especificar o operador relacional como uma condição.

Sintaxe:

quadro de dados.filtro (“DataFrame.Valor do operador column_name ”)

Aqui, o filtro () aceita três parâmetros.

  1. quadro de dados.Column_name é a coluna onde a filtragem é aplicada.
  2. Operador é o operador relacional.
  3. O valor é o valor da string/numérico em comparação com os valores da coluna.

Exemplo:

Neste exemplo, vamos filtrar o quadro de dados com base em colunas de idade, altura, peso e nomes com diferentes operadores relacionais e exibir as linhas filtradas usando o método collect ().

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#import a função col
de Pyspark.SQL.funções Importar col
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 5 linhas e 6 atributos
alunos = [
'rollno': '001', 'nome': 'sravan', 'idade': 23,
'Altura': 5.79, 'Peso': 67, 'Endereço': 'Guntur',
'rollno': '002', 'nome': 'ojaswi', 'idade': 16,
'Altura': 3.79, 'Peso': 34, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh chowdary', 'idade': 7,
'Altura': 2.79, 'Peso': 17, 'Endereço': 'Patna',
'rollno': '004', 'nome': 'rohith', 'idade': 9,
'Altura': 3.69, 'Peso': 28, 'Endereço': 'Hyd',
'rollno': '005', 'nome': 'sridevi', 'idade': 37,
'Altura': 5.59, 'Peso': 54, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#display dataframe
#pela idade de filtragem como 23
#Using SQL Expression
Imprimir (df.filtro ("idade == 23").colet ()))
imprimir("---------------------------")
#display dataframe
#por altura de filtragem como 2.79
#Using SQL Expression
Imprimir (df.filtro ("altura == 2.79 ").colet ()))
imprimir("---------------------------")
#display dataframe
#por peso de filtragem maior que 30
#Using SQL Expression
Imprimir (df.filtro ("Peso> 30").colet ()))
imprimir("---------------------------")
#display dataframe
#by filtrando nome como sravan
#Using SQL Expression
Imprimir (df.filtro ("nome == 'sravan'").colet ()))

Saída:

[Linha (endereço = 'guntur', idade = 23, altura = 5.79, nome = "sravan", rollno = "001", peso = 67)]
---------------------------
[Linha (endereço = 'patna', idade = 7, altura = 2.79, nome = "Gnanesh Chowdary", rollno = "003", peso = 17)]
---------------------------
[Linha (endereço = 'guntur', idade = 23, altura = 5.79, nome = "sravan", rollno = "001", peso = 67), linha (endereço = 'hyd', idade = 16, altura = 3.79, nome = "ojaswi", rollno = "002", peso = 34), linha (endereço = 'hyd', idade = 37, altura = 5.59, nome = "sridevi", rollno = "005", peso = 54)]
---------------------------
[Linha (endereço = 'guntur', idade = 23, altura = 5.79, nome = "sravan", rollno = "001", peso = 67)]

Método - 4: filtro () com métodos de string

Aqui, estamos usando a função filter () para filtrar o quadro de dados Pyspark com métodos de string. Estes são aplicados nas colunas cujo tipo de dados é string. Eles são:

começa com() - Verifique o caractere inicial nos dados fornecidos

Sintaxe:

quadro de dados.filtro (DataFrame.nome da coluna.StartSwith ("personagem")

Aqui nome da coluna é a coluna onde a filtragem é aplicada onde o valor começa com o personagem especificado.

termina com() - Verifique o caractere final nos dados fornecidos.

Sintaxe:

quadro de dados.filtro (DataFrame.nome da coluna.endswith ("personagem")

Aqui nome da coluna é a coluna onde a filtragem é aplicada onde o valor termina com o personagem especificado.

contém () - Verifique se o caractere contém nos dados fornecidos.

Sintaxe:

quadro de dados.filtro (DataFrame.nome da coluna.contém ("personagem")

Aqui nome da coluna é a coluna em que a filtragem é aplicada onde o valor contém com o personagem fornecido.

Exemplo:

Neste exemplo, vamos filtrar com base na coluna de endereço.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#import a função col
de Pyspark.SQL.funções Importar col
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 5 linhas e 6 atributos
alunos = [
'rollno': '001', 'nome': 'sravan', 'idade': 23,
'Altura': 5.79, 'Peso': 67, 'Endereço': 'Guntur',
'rollno': '002', 'nome': 'ojaswi', 'idade': 16,
'Altura': 3.79, 'Peso': 34, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh chowdary', 'idade': 7,
'Altura': 2.79, 'Peso': 17, 'Endereço': 'Patna',
'rollno': '004', 'nome': 'rohith', 'idade': 9,
'Altura': 3.69, 'Peso': 28, 'Endereço': 'Hyd',
'rollno': '005', 'nome': 'sridevi', 'idade': 37,
'Altura': 5.59, 'Peso': 54, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#display dataframe
#By Filtering Endereço
#starts com 'h'
Imprimir (df.filtro (df.endereço.StartSwith ("H")).colet ()))
imprimir("-----------------")
#display dataframe
#By Filtering Endereço
#ends com 'r'
Imprimir (df.filtro (df.endereço.endswith ("r")).colet ()))
imprimir("-----------------")
#display dataframe
#By Filtering Endereço
#Comntains 'tu'
Imprimir (df.filtro (df.endereço.contém ("r")).colet ()))

Saída:

[Linha (endereço = 'hyd', idade = 16, altura = 3.79, nome = "ojaswi", rollno = "002", peso = 34), linha (endereço = 'hyd', idade = 9, altura = 3.69, nome = "rohith", rollno = "004", peso = 28), linha (endereço = 'hyd', idade = 37, altura = 5.59, nome = "sridevi", rollno = "005", peso = 54)]
-----------------
[Linha (endereço = 'guntur', idade = 23, altura = 5.79, nome = "sravan", rollno = "001", peso = 67)]
-----------------
[Linha (endereço = 'guntur', idade = 23, altura = 5.79, nome = "sravan", rollno = "001", peso = 67)]

Conclusão

Neste artigo, discutimos como usar uma função filter () com vários métodos no quadro de dados Pyspark no python. E incluímos todas as condições com expressões SQL também.