Como calcular o número cumulativo em pandas


Você pode usar os seguintes métodos para calcular um número cumulativo em um DataFrame do pandas:

Método 1: Contagem cumulativa por grupo

 df[' cum_count '] = df. groupby (' col1 '). cumcount ()

Método 2: conta cumulativa por vários grupos

 df[' cum_count '] = df. groupby ([' col1 ', ' col2 ']). cumcount ()

Os exemplos a seguir mostram como usar cada método na prática com o seguinte DataFrame do pandas:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'G', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [14, 22, 25, 34, 30, 12, 10, 18]})

#view DataFrame
print (df)

  team position points
0 AG 14
1 AG 22
2 AG 25
3AF 34
4 BG 30
5 BG 12
6 BF 10
7 BF 18

Exemplo 1: Contagem cumulativa por grupo no Pandas

Podemos usar a seguinte sintaxe para criar uma nova coluna chamada team_cum_count que exibe a contagem cumulativa de cada equipe no DataFrame:

 #calculate cumulative count by team
df[' team_cum_count '] = df. groupby (' team '). cumcount ()

#view updated DataFrame
print (df)

  team position points team_cum_count
0 AG 14 0
1 AG 22 1
2 AG 25 2
3 AF 34 3
4 BG 30 0
5 BG 12 1
6 BF 10 2
7 BF 18 3

A nova coluna chamada team_cum_count contém a contagem cumulativa de cada equipe , começando com um valor zero.

Se você quiser que a contagem comece em um, basta adicionar um ao final da linha:

 #calculate cumulative count (starting at 1) by team
df[' team_cum_count '] = df. groupby (' team '). cumcount () + 1

#view updated DataFrame
print (df)

  team position points team_cum_count
0 AG 14 1
1 AG 22 2
2 AG 25 3
3 AF 34 4
4 BG 30 1
5 BG 12 2
6 BF 10 3
7 BF 18 4

A nova coluna chamada team_cum_count contém a contagem cumulativa de cada equipe , começando com o valor um.

Exemplo 2: Calcule a contagem cumulativa por grupo no Pandas

Podemos usar a seguinte sintaxe para criar uma nova coluna chamada team_pos_cum_count que exibe a contagem cumulativa para cada equipe e posição no DataFrame:

 #calculate cumulative count by team
df[' team_pos_cum_count '] = df. groupby ([' team ', ' position ']). cumcount () 

#view updated DataFrame
print (df)

  team position points team_pos_cum_count
0 AG 14 0
1 AG 22 1
2 AG 25 2
3 AF 34 0
4 BG 30 0
5 BG 12 1
6 BF 10 0
7 BF 18 1

A nova coluna chamada team_pos_cum_count contém a contagem cumulativa de cada equipe e posição começando com um valor zero.

Nota : Você pode encontrar a documentação completa da função cumcount no pandas aqui .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em pandas:

Como somar colunas específicas no Pandas
Como somar colunas com base em uma condição no Pandas
Como calcular uma soma cumulativa reversa em pandas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *