Pandas: como usar groupby com diff


Você pode usar a seguinte sintaxe básica para usar a função groupby() com a função diff() em pandas:

 df = df. sort_values (by=[' group_var1 ', ' group_var2 '])

df[' diff '] = df. groupby ([' group_var1 '])[' values_var ']. diff (). fillna ( 0 )

Este exemplo específico classifica as linhas do DataFrame por duas variáveis específicas, depois as agrupa por group_var1 e calcula a diferença entre as linhas na colunavalues_var .

Observe que fillna(0) diz ao pandas para inserir um zero sempre que o valor da variável de grupo mudar entre linhas consecutivas no DataFrame.

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: como usar groupby com diff no Pandas

Suponha que temos o seguinte DataFrame do pandas que contém o total de vendas feitas por duas lojas diferentes em datas diferentes:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' date ': pd. to_datetime (['2022-01-01', '2022-01-02',
                                           '2022-01-03', '2022-01-04',
                                           '2022-01-01', '2022-01-02',
                                           '2022-01-03', '2022-01-04']),
                   ' sales ': [12, 15, 24, 24, 14, 19, 12, 38]})

#view DataFrame
print (df)

  blind date sales
0 A 2022-01-01 12
1 A 2022-01-02 15
2 A 2022-01-03 24
3 A 2022-01-04 24
4 B 2022-01-01 14
5 B 2022-01-02 19
6 B 2022-01-03 12
7 B 2022-01-04 38

Agora digamos que queremos criar uma nova coluna chamada sales_diff que contenha a diferença dos valores de vendas entre datas consecutivas, agrupadas por loja.

Podemos usar a seguinte sintaxe para fazer isso:

 #sort DataFrame by store and date
df = df. sort_values (by=[' store ', ' date '])

#create new column that contains difference between sales grouped by store
df[' sales_diff '] = df. groupby ([' store '])[' sales ']. diff (). fillna ( 0 )

#view update DataFrame
print (df)

  store date sales sales_diff
0 A 2022-01-01 12 0.0
1 A 2022-01-02 15 3.0
2 A 2022-01-03 24 9.0
3 A 2022-01-04 24 0.0
4 B 2022-01-01 14 0.0
5 B 2022-01-02 19 5.0
6 B 2022-01-03 12 -7.0
7 B 2022-01-04 38 26.0

A nova coluna sales_diff contém a diferença dos valores de vendas entre datas consecutivas, agrupadas por loja.

Por exemplo, podemos ver:

  • A diferença nas vendas da loja A entre 01/01/2022 e 01/02/2022 é 3 .
  • A diferença nas vendas da loja A entre 01/02/2022 e 01/03/2022 é 9 .
  • A diferença nas vendas da loja A entre 03/01/2022 e 04/01/2022 é 0 .

E assim por diante.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em pandas:

Como realizar uma soma GroupBy no Pandas
Como usar Groupby e Plot no Pandas
Como contar valores únicos usando GroupBy no Pandas

Add a Comment

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