Pyspark - SumDistinct & CountDistinct

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

Pyspark - Sumdistinct ()

Sumdistinct () em Pyspark retorna o valor total distinto (soma) de uma coluna específica no quadro de dados. Ele retornará a soma considerando apenas valores únicos. Não serão necessários valores duplicados para formar uma soma.

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

Exemplo:

Criaremos um DataFrame com 5 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
#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.69, 'Peso': 67, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh Chowdary', 'idade': 16, '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.79, 'Peso': 28, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#display dataframe
df.mostrar()

Saída:

No quadro de dados do Pyspark acima, observamos que, na idade, a coluna 16 ocorreu 2 vezes, na coluna de altura 5.79 e 3.69 ocorreram duas vezes e na coluna de peso 67 e 28 ocorreram duas vezes.

Portanto, o SumDistinct () considera esses valores duplicados como um único valor e formam a soma dentro da coluna.

Usando o método select ()

Podemos obter o valor total distinto da coluna no quadro de dados usando o método select (). Usando o método SUMDISTINC (), podemos obter o valor total distinto da coluna. Para usar este método, temos que importá -lo do Pyspark.SQL.Módulo de funções e, finalmente, podemos usar o método collect () para obter a soma distinta da coluna

Sintaxe:

df.Selecione (Sumdistinct ('Column_Name')))

Onde,

  1. DF é o quadro de dados Pyspark de entrada
  2. Column_name é a coluna para obter o valor da soma distinto

Se queremos retornar o valor total distinto de várias colunas, devemos usar o método SumDistinct () dentro do método select (), especificando o nome da coluna separado por uma vírgula.

Sintaxe:

df.SELECT (SUMDISTING ('COLUNN_NAME'), SUMDISTING ('Column_Name'),… ., Sumdistinct ('Column_Name'))))

Onde,

  1. DF é o quadro de dados Pyspark de entrada
  2. Column_name é a coluna para obter o valor da soma distinto

Exemplo 1: Coluna única

Este exemplo receberá o valor total distinto da coluna de altura no quadro de dados Pyspark.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#import sumdistinct () função
de Pyspark.SQL.Funções importam Sumdistinct
#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.69, 'Peso': 67, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh Chowdary', 'idade': 16, '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.79, 'Peso': 28, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#Return a soma distinta da coluna de altura
df.Selecione (Sumdistinct ('altura')).colecionar ()

Saída:

[Linha (soma (altura distinta) = 12.27)]

O exemplo acima retorna o valor total distinto (soma) da coluna de altura.

Exemplo 2: várias colunas

Este exemplo receberá o valor total distinto das colunas de altura, idade e peso no quadro de dados Pyspark.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#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.69, 'Peso': 67, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh Chowdary', 'idade': 16, '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.79, 'Peso': 28, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#Return a soma distinta das colunas de altura, idade e peso
df.Selecione (Sumdistinct ('Height'), Sumdistinct ('Age'), Sumdistinct ('Peso')).colecionar ()

Saída:

[Linha (soma (altura distinta) = 12.27, soma (idade distinta) = 85, soma (peso distinto) = 112)]

O exemplo acima retorna o valor total distinto (soma) das colunas de altura, idade e peso.

Pyspark - CountDistinct ()

CountDistinct () em Pyspark retorna o número distinto de valores (contagem) de uma coluna específica no DataFrame. Ele retornará a contagem considerando apenas valores únicos. Não serão necessários valores duplicados para formar uma contagem.

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

Exemplo:

Criaremos um DataFrame com 5 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
#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.69, 'Peso': 67, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh Chowdary', 'idade': 16, '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.79, 'Peso': 28, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#display dataframe
df.mostrar()

Saída:

No quadro de dados do Pyspark acima, observamos que, na idade, a coluna 16 ocorreu 2 vezes, na coluna de altura 5.79 e 3.69 ocorreram duas vezes e na coluna de peso 67 e 28 ocorreram duas vezes.

Portanto, o countDistinct () considera esses valores duplicados como valores únicos e forma a contagem na coluna.

Usando o método select ()

Podemos obter a contagem distinta da coluna no DataFrame usando o método SELECT (). Usando o método countDistinct (), podemos obter uma contagem distinta de linhas da coluna. Para usar este método, temos que importá -lo do Pyspark.SQL.Módulo de funções e, finalmente, podemos usar o método collect () para obter a contagem distinta da coluna

Sintaxe:

df.Selecione (CountDistinct ('Column_Name')))

Onde,

  1. DF é o quadro de dados Pyspark de entrada
  2. Column_name é a coluna para obter a contagem distinta.

Se queremos retornar a contagem distinta de várias colunas, precisamos usar o método countDistinct () dentro do método select () especificando o nome da coluna separado por uma vírgula.

Sintaxe:

df.Selecione (CountDistinct ('Column_Name'), CountDistinct ('Column_Name'),… ., CountDistinct ('Column_Name')))

Onde,

  1. DF é o quadro de dados Pyspark de entrada
  2. Column_name é a coluna para obter o número distinto de linhas.

Exemplo 1: coluna única

Este exemplo receberá a contagem distinta da coluna de altura no quadro de dados Pyspark.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#import countDistinct () função
de Pyspark.SQL.funções importações de importação
#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.69, 'Peso': 67, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh Chowdary', 'idade': 16, '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.79, 'Peso': 28, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#Return a contagem distinta da coluna de altura
df.Selecione (CountDistinct ('altura')).colecionar ()

Saída:

[Linha (contagem (altura distinta) = 3)]

No exemplo acima, a contagem distinta da coluna de altura é retornada.

Exemplo 2: várias colunas

Este exemplo receberá a contagem distinta das colunas de altura, idade e peso no quadro de dados Pyspark.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#import countDistinct () função
de Pyspark.SQL.funções importações de importação
#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.69, 'Peso': 67, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh Chowdary', 'idade': 16, '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.79, 'Peso': 28, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#Return a contagem distinta das colunas de altura, idade e peso
df.Selecione (CountDistinct ('Height'), CountDistinct ('Age'), CountDistinct ('Weight'))).colecionar ()

Saída:

[Linha (contagem (altura distinta) = 3, contagem (idade distinta) = 4, contagem (peso distinto) = 3)]

O exemplo acima retorna a contagem distinta das colunas de altura, idade e peso.

Conclusão:

Discutimos como obter o valor distinto da soma (total) usando SumDistinct () e o número distinto de linhas (contagem) usando o countDistinct () do Pyspark Dataframe usando o método select ().