Pyspark - distinto

Pyspark - distinto
No Python, Pyspark é um módulo Spark usado para fornecer um tipo semelhante de processamento como o Spark usando o DataFrame.

Distinct () em Pyspark remove linhas/dados duplicados e retorna as linhas exclusivas do DataFrame.

Ao usar distintos (), podemos remover linhas duplicadas no quadro de dados Pyspark.

Podemos soltar as colunas do quadro de dados de duas maneiras.

Antes disso, temos que criar dados de dados Pyspark para demonstração.

Exemplo:

Criaremos um DataFrame com 8 linhas e 6 colunas e exibiremos -o usando o método show ().

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#Import the CountFunction
de Pyspark.SQL.funções contagem de importações
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 8 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': '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 O DataFrame
df.mostrar()

Saída:

Neste DataFrame, os dados duplicados são Rollno - 2, 3 e 4 . São dados duplicados porque ocorreram duas vezes. Portanto, temos que remover este duplicado e retornar as linhas restantes usando a função distinta (). Este método retornará os nomes das colunas junto com seu tipo de dados.

Cenário -1: Obtenha dados distintos de todo o DataFrame

Obteremos os dados distintos de todo o DataFrame usando a função distinct ()

Sintaxe:

df.distinto ()

Onde df é o pyspark dataframe de entrada

Finalmente, temos que usar o método collect () para retornar todas as linhas do DataFrame.

Exemplo :

Neste exemplo, obteremos os dados distintos de todo o DataFrame.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#Import the CountFunction
de Pyspark.SQL.funções contagem de importações
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 8 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': '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)
#obtenha as linhas distintas
Imprimir (df.distinto ().colet ()))

Saída:

[Linha (endereço = 'guntur', idade = 23, altura = 5.79, nome = 'sravan', rollno = '001', peso = 67),
Linha (endereço = 'hyd', idade = 9, altura = 3.69, nome = 'rohith', rollno = '004', peso = 28),
Linha (endereço = 'patna', idade = 7, altura = 2.79, nome = 'gnanesh Chowdary', rollno = '003', peso = 17),
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)]

No exemplo acima, veremos que linhas duplicadas são removidas.

Cenário - 2: Obtenha dados distintos de colunas específicas no DataFrame.

Usaremos o método SELECT () para obter as linhas distintas das colunas selecionadas, o método select () é usado para selecionar colunas e, depois disso, precisamos usar a função Distinct () para retornar valores exclusivos da coluna selecionada e, finalmente, temos que usar o método collect () para obter as linhas retornadas pela função distinta ().

Sintaxe:

df.Selecione ("Column_Name").distinto ()

Onde,

  1. DF é o quadro de dados Pyspark de entrada
  2. Column_name é a coluna.

Exemplo :

Neste exemplo, obteremos separadamente as linhas distintas da coluna Rollno, Name and Endereço.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#Import the CountFunction
de Pyspark.SQL.funções contagem de importações
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 8 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': '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)
#Obtenha as linhas distintas da coluna Rollno
Imprimir (df.Selecione ("Rollno").distinto ().colet ()))
#Obtenha as linhas distintas da coluna de nome
Imprimir (df.Selecione ("Nome").distinto ().colet ()))
#Obtenha as linhas distintas da coluna de endereço
Imprimir (df.Selecione ("Endereço").distinto ().colet ()))

Saída:

[Linha (rollno = '003'), linha (rollno = '001'), linha (rollno = '004'), linha (rollno = '002'), linha (rollno = '005')]]
[Linha (nome = 'rohith'), linha (nome = 'gnanesh Chowdary'), linha (nome = 'sravan'), linha (nome = 'ojaswi'), linha (nome = 'sridevi')]
[Linha (endereço = 'patna'), linha (endereço = 'hyd'), linha (endereço = 'guntur')]]

No exemplo acima, devolvemos as linhas distintas da coluna Rollno, Nome e Endereço

Cenário - 3: Obtenha dados distintos de várias colunas no DataFrame.

Usaremos o método select () para obter as linhas distintas das várias colunas selecionadas de cada vez. Colunas, o método select () é usado para selecionar colunas e, depois disso, precisamos usar a função Distinct () para retornar valores exclusivos da coluna selecionada. Finalmente, devemos usar o método collect () para obter as linhas retornadas pela função distinta ().

Sintaxe:

df.Selecione ("Column_Name", "Column_Name",…, "Column_Name").distinto ()

Onde,

  1. DF é o quadro de dados Pyspark de entrada
  2. Column_name é a coluna.

Exemplo :

Neste exemplo, obteremos as linhas distintas da coluna Rollno, Name and Endereço.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#Import the CountFunction
de Pyspark.SQL.funções contagem de importações
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 8 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': '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)
#Obtenha as linhas distintas de Rollno, colunas de nome e endereço
Imprimir (df.Selecione ("rollno", "nome", "endereço").distinto ().colet ()))

Saída:

[Linha (rollno = '002', nome = 'ojaswi', endereço = 'hyd'), linha (rollno = '004', nome = 'rohith', endereço = 'hyd'), linha (rollno = '001' , nome = 'sravan', endereço = 'guntur'), ​​linha (rollno = '003', nome = 'gnanesh chowdary', endereço = 'patna'), linha (rollno = '005', nome = 'sridevi', endereço = 'hyd')]

No exemplo acima, devolvemos as linhas distintas da coluna Rollno, Nome e Endereço

Se queremos obter o número total de linhas distintas, precisamos usar a função count () após a função distinta ().

Sintaxe:

df.distinto ().contar()

Exemplo:

Neste exemplo, estamos retornando a contagem de linhas únicas.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#Import the CountFunction
de Pyspark.SQL.funções contagem de importações
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 8 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': '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)
#obtenha a contagem distinta
Imprimir (df.distinto ().contar())

Saída:

5

Conclusão:

Discutimos como obter dados distintos de todo o DataFrame e colunas únicas/múltiplas. Para obter a contagem de valores únicos, usamos o método count () e distinto ().