Funções de soma e janela AVG Pyspark

Funções de soma e janela AVG Pyspark
Depois de particionar as linhas no quadro de dados do Pyspark, é possível retornar a soma total e a média em cada partição. Ao usar algumas funções agregadas em uma janela de partição, é possível retornar a soma total e a média. Primeiro, veremos como particionar o DataFrame em Pyspark.

Pyspark Partion Um quadro de dados

É possível particionar as linhas no quadro de dados usando a função da janela. Está disponível no Pyspark.SQL.janela módulo. Haverá duas etapas para particionar as linhas em um pyspark Dataframe.

Passos

  1. Crie um Dados de Dados Pyspark com valores semelhantes em pelo menos uma coluna.
  2. Partição dos dados usando o método Partionby () disponível na função da janela.

Sintaxe

partição = janela.Partionby ("coluna")

Podemos solicitar os dados particionados com a coluna particionada ou qualquer outra coluna. Vamos criar o quadro de dados.

Exemplo
Aqui, criaremos um pyspark Dataframe que possui 5 colunas: ['sujeito_id', 'nome', 'idade', 'tecnologia1', 'tecnologia2'] com 10 linhas.

Importar Pyspark
de Pyspark.SQL Import SparkSession
de Pyspark.SQL.Funções Importar *
Spark_App = SparkSession.construtor.nome do aplicativo('_').getorcreate ()
alunos = [(4, 'sravan', 23, 'php', 'testes'),
(4, 'sravan', 23, 'php', 'testing'),
(46, 'Mounika', 22, '.Net ',' html '),
(4, 'Deepika', 21, 'Oracle', 'html'),
(46, 'Mounika', 22, 'Oracle', 'Testing'),
(12, 'Chandrika', 22, 'Hadoop', 'C#'),
(12, 'Chandrika', 22, 'Oracle', 'Testing'),
(4, 'Sravan', 23, 'Oracle', 'C#'),
(4, 'Deepika', 21, 'Php', 'C#'),
(46, 'Mounika', 22, '.Net ',' teste ')
]
dataframe_obj = spark_app.CreatedataFrame (estudantes, ['sujeito_id', 'nome', 'idade', 'tecnologia1', 'tecnologia2']))
print ("---------- DataFrame real ----------")
dataframe_obj.mostrar()

Saída:

Função da janela Pyspark Sum ()

A soma () na função da janela é usada para retornar a soma total dos valores em cada partição. Portanto, é possível retornar uma soma depois de particionar o DataFrame.

Sintaxe

dataframe_obj.WithColumn ("Sum", Sum (Col ("Coluna")).sobre (partição))

Parâmetro:

soma (col ("coluna"))

Aqui o soma() Função toma o nome da coluna como o parâmetro. Então, ele retorna a soma dos valores nesta coluna em cada partição. Adicionamos o resultado em uma coluna de soma usando o withcolumn () função.

Exemplo 1
Agora, temos um DataFrame (criado acima). Vamos dividi -lo com base na coluna da tecnologia1 e obter a soma total de todos os valores na coluna sujeito_id em cada partição.

# importe a função da janela
de Pyspark.SQL.Janela de importação de janela
#import a soma e col de Pyspark.SQL.funções
de Pyspark.SQL.funções Importar soma, col
#Partition O DataFrame com base nos valores na coluna Technology1
partição = janela.partitionby ("tecnologia1")
print ("---------- Particionado DataFrame ----------")
#Return a soma total dos valores na coluna Subjetion_id para cada partição
dataframe_obj.WithColumn ("Sum", Sum (col ("sujeito_id")).sobre (partição)).mostrar()

Saída:

Explicação
Partições totais: 4

Partição 1:
.A rede ocorreu duas vezes na primeira partição. E a soma dos valores sujeitos_ID é 46+46 = 92.

Partição 2:
Hadoop ocorreu uma vez na segunda partição. Então, a soma é 12.

Partição 3:
Oracle ocorreu quatro vezes na terceira partição.
E a soma dos valores sujeitos_ID é 4+46+12+4 = 66.

Partição 4:
PHP ocorreu três vezes na quarta partição.
E a soma dos valores sujeitos_ID é 4+4+4 = 12.

Exemplo 2
Agora, temos um DataFrame (criado acima). Vamos particionar com base na coluna da tecnologia1 e obter a soma total de todos os valores na coluna etária em cada partição.

# importe a função da janela
de Pyspark.SQL.Janela de importação de janela
#import a soma e col de Pyspark.SQL.funções
de Pyspark.SQL.funções Importar soma, col
#Partition O DataFrame com base nos valores na coluna Technology1
partição = janela.partitionby ("tecnologia1")
print ("---------- Particionado DataFrame ----------")
#Return A soma total de valores na coluna de idade para cada partição
dataframe_obj.Withcolumn ("Sum", Sum (Col ("Age")).sobre (partição)).mostrar()

Saída:

Explicação
Partições totais: 4

Partição 1:
.A rede ocorreu duas vezes na primeira partição. E a soma dos valores da idade é 22+22 = 92.

Partição 2:
Hadoop ocorreu uma vez na segunda partição. Então, a soma é 22.

Partição 3:
Oracle ocorreu quatro vezes na terceira partição.
E a soma dos valores da idade é 21+22+22+23 = 88.

Partição 4:
PHP ocorreu três vezes na quarta partição.
E a soma dos valores da idade é 23+23+21 = 67.

Função da janela pyspark avg ()

O avg () na função da janela é usado para retornar a média total dos valores em cada partição. Portanto, é possível retornar a média após a partição do quadro de dados.

Sintaxe

dataframe_obj.WithColumn ("Média", AVG (col ("coluna")).sobre (partição))

Parâmetro:

AVG (col ("coluna"))

Aqui, AVG () toma o nome da coluna como o parâmetro. Então, ele retorna a média dos valores nesta coluna em cada partição. Estamos adicionando o resultado na coluna média usando o withcolumn () função.

Exemplo 1
Agora, temos um DataFrame (criado acima). Vamos participar com base na coluna da tecnologia1 e obter a média total de todos os valores na coluna Subjetion_id em cada partição.

# importe a função da janela
de Pyspark.SQL.Janela de importação de janela
#Import The AVG e Col da Pyspark.SQL.funções
de Pyspark.SQL.funções importam avg, col
#Partition O DataFrame com base nos valores na coluna Technology1
partição = janela.partitionby ("tecnologia1")
print ("---------- Particionado DataFrame ----------")
#Return a média total dos valores na coluna Subject_id para cada partição
dataframe_obj.WithColumn ("Média", AVG (col ("sujeito_id")).sobre (partição)).mostrar()

Saída:

Explicação
Partições totais: 4

Partição 1:
.A rede ocorreu duas vezes na primeira partição. E a média dos valores sujeitos_ID é (46+46)/2 = 46.0.

Partição 2:
Hadoop ocorreu uma vez na segunda partição. Então, a média é 12.0.

Partição 3:
Oracle ocorreu quatro vezes na terceira partição.
E a média dos valores sujeitos_ID é (4+46+12+4)/4 = 16.5.

Partição 4:
PHP ocorreu três vezes na quarta partição.
E a média dos valores sujeitos_ID é (4+4+4)/3 = 4.0.

Exemplo 2
Agora, temos um DataFrame (criado acima). Vamos particionar com base na coluna da tecnologia1 e obter a média total de todos os valores na coluna etária em cada partição.

# importe a função da janela
de Pyspark.SQL.Janela de importação de janela
#Import The AVG e Col da Pyspark.SQL.funções
de Pyspark.SQL.funções importam avg, col
#Partition O DataFrame com base nos valores na coluna Technology1
partição = janela.partitionby ("tecnologia1")
print ("---------- Particionado DataFrame ----------")
#Return a média total dos valores na coluna de idade para cada partição
dataframe_obj.Withcolumn ("Média", AVG (Col ("Age")).sobre (partição)).mostrar()

Saída:

Explicação
Partições totais: 4

Partição 1:
.A rede ocorreu duas vezes na primeira partição. E o valor médio da idade é (22+22)/2 = 22.0.

Partição 2:
Hadoop ocorreu uma vez na segunda partição. Então, a média é 22.0.

Partição 3:
Oracle ocorreu quatro vezes na terceira partição.
E a idade média é (21+22+22+23)/4 = 22.0.

Partição 4:
PHP ocorreu três vezes na quarta partição.
E o valor médio da idade é (23+23+21)/3 = 22.333.

Conclusão

Neste tutorial de particionamento Pyspark, vimos como retornar a soma dos valores em cada janela particionada usando o soma() função e os valores médios em cada janela particionada usando a função AVG (). Adicionamos o resultado ao quadro de dados existente como uma nova coluna. Também é possível obter a média semelhante ao AVG () função usando significar(). As coisas importantes significam de Pyspark.SQL.funções módulo e simplesmente certifique -se de importar a soma e a média do mesmo módulo.