No Python, Pyspark é um módulo Spark usado para fornecer um tipo semelhante de processamento como o Spark usando o DataFrame. Em Pyspark, onde () é usado para filtrar as linhas no quadro de dados, ele retornará o novo DataFrame filtrando as linhas no quadro de dados existente.
- Método - 1: onde () com operadores relacionais
- Método - 2: onde () com operadores relacionais usando a função col
- Método - 3: onde () com operadores relacionais em várias condições
- Método - 4: onde () com expressão SQL
- Método - 5: onde () com métodos de string
Vamos criar um pyspark dataframe:
Exemplo:
Este exemplo criará o Pyspark DataFrame com 5 linhas e 6 colunas e exibirá -as usando o método show ().
#import o módulo PysPaprk
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: onde () com operadores relacionais
Aqui, estamos usando onde () função para filtrar o quadro de dados do Pyspark com operadores relacionais como>, < . == etc.
Sintaxe:
Quadro de dados.onde (dataframe.Valor do operador column_name)
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, filtraremos 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 PysPaprk
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.onde (df.idade == 23).colet ()))
imprimir("---------------------------")
#display dataframe
#por altura de filtragem como 2.79
Imprimir (df.onde (df.altura == 2.79).colet ()))
imprimir("---------------------------")
#display dataframe
#por peso de filtragem maior que 30
Imprimir (df.onde (df.peso> 30).colet ()))
imprimir("---------------------------")
#display dataframe
#by filtrando nome como sravan
Imprimir (df.onde (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: onde () com operadores relacionais usando a função col
Aqui, estamos usando onde () função para filtrar o quadro de dados do Pyspark com operadores relacionais como>, < . == etc. through col function
Sintaxe:
Quadro de dados.onde (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, filtraremos 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 PysPaprk
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.onde (col ('idade') == 23).colet ()))
imprimir("---------------------------")
#display dataframe
#por altura de filtragem como 2.79
Imprimir (df.onde (col ('altura') == 2.79).colet ()))
imprimir("---------------------------")
#display dataframe
#por peso de filtragem maior que 30
Imprimir (df.onde (col ('peso')> 30).colet ()))
imprimir("---------------------------")
#display dataframe
#by filtrando nome como sravan
Imprimir (df.onde (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: onde () com operadores relacionais em várias condições
Aqui, estamos usando onde () função para filtrar o quadro de dados do Pyspark com operadores relacionais como>, < . == etc with multiple conditions.
Sintaxe:
Quadro de dados.onde (((conditina1) operador (condição2)… .)
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
- 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 PysPaprk
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.onde ((df.idade> 10) e (df.idade <21)).collect())
imprimir("---------------------------")
#display dataframe
#pela idade de filtragem superior a 10 ou menos de 21
Imprimir (df.onde ((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: onde () com expressão SQL
Aqui, usamos a função where () para filtrar o quadro de dados do Pyspark com a expressão SQL. A condição é fechada por "". No entanto, podemos especificar o operador relacional como uma condição.
Sintaxe:
Quadro de dados.onde (“dataframe.Valor do operador column_name ”)
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, filtraremos 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 PysPaprk
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.onde ("idade == 23").colet ()))
imprimir("---------------------------")
#display dataframe
#por altura de filtragem como 2.79
#Using SQL Expression
Imprimir (df.onde ("altura == 2.79 ").colet ()))
imprimir("---------------------------")
#display dataframe
#por peso de filtragem maior que 30
#Using SQL Expression
Imprimir (df.onde ("peso> 30").colet ()))
imprimir("---------------------------")
#display dataframe
#by filtrando nome como sravan
#Using SQL Expression
Imprimir (df.onde ("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 - 5: onde () com métodos de string
Aqui, estamos usando a função where () para filtrar o quadro de dados Pyspark com métodos de string. Estes são aplicados nas colunas cujo tipo de dados é uma string. Eles são
começa com() - Verifique o caractere inicial nos dados fornecidos
Sintaxe:
Quadro de dados.onde (dataframe.nome da coluna.StartSwith ("personagem")
Aqui,
Column_name é a coluna em que a filtragem é aplicada onde o valor começa com o personagem fornecido.
termina com() - Verifique o caractere final nos dados fornecidos
Sintaxe:
Quadro de dados.onde (dataframe.nome da coluna.endswith ("personagem")
Aqui,
Column_name é a coluna em que a filtragem é aplicada onde o valor termina com o personagem fornecido.
contém () - Verifique se o caractere contém nos dados fornecidos
Sintaxe:
Quadro de dados.onde (dataframe.nome da coluna.contém ("personagem")
Aqui,
Column_name é 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 PysPaprk
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.onde (df.endereço.StartSwith ("H")).colet ()))
imprimir("-----------------")
#display dataframe
#By Filtering Endereço
#ends com 'r'
Imprimir (df.onde (df.endereço.endswith ("r")).colet ()))
imprimir("-----------------")
#display dataframe
#By Filtering Endereço
#Comntains 'tu'
Imprimir (df.onde (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
Este artigo discute como usar um filtro WHERS () com vários métodos no Pyspark DataFrame no Python. E incluímos todas as condições com expressões SQL também.