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:
- Método - 1: filtro () com operadores relacionais
- Método - 2: filtro () com operadores relacionais usando a função col
- Método - 3: filtro () com operadores relacionais em várias condições
- 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.
- quadro de dados.Column_name é a coluna onde a filtragem é aplicada.
- Operador é o operador relacional.
- 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.
- quadro de dados.Column_name é a coluna onde a filtragem é aplicada.
- Operador é o operador relacional.
- 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.
- quadro de dados.Column_name é a coluna onde a filtragem é aplicada.
- Operador é o operador relacional.
- O valor é o valor da string/numérico em comparação com os valores da coluna.
- 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.
- quadro de dados.Column_name é a coluna onde a filtragem é aplicada.
- Operador é o operador relacional.
- 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.