Pandas: como encontrar a diferença entre duas linhas


Você pode usar a função DataFrame.diff() para encontrar a diferença entre duas linhas em um DataFrame do pandas.

Esta função usa a seguinte sintaxe:

DataFrame.diff(períodos=1, eixo=0)

Ouro:

  • períodos: o número de linhas anteriores para calcular a diferença.
  • eixo: encontre a diferença nas linhas (0) ou colunas (1).

Os exemplos a seguir mostram como usar esta função na prática.

Exemplo 1: Encontre a diferença entre cada linha anterior

Suponha que temos o seguinte DataFrame do pandas:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' period ': [1, 2, 3, 4, 5, 6, 7, 8],
                   ' sales ': [12, 14, 15, 15, 18, 20, 19, 24],
                   ' returns ': [2, 2, 3, 3, 5, 4, 4, 6]})

#view DataFrame
df

	period sales returns
0 1 12 2
1 2 14 2
2 3 15 3
3 4 15 3
4 5 18 5
5 6 20 4
6 7 19 4
7 8 24 6

O código a seguir mostra como encontrar a diferença entre cada linha atual de um DataFrame e a linha anterior:

 #add new column to represent sales differences between each row
df[' sales_diff '] = df[' sales ']. diff ()

#view DataFrame
df

        period sales returns sales_diff
0 1 12 2 NaN
1 2 14 2 2.0
2 3 15 3 1.0
3 4 15 3 0.0
4 5 18 5 3.0
5 6 20 4 2.0
6 7 19 4 -1.0
7 8 24 6 5.0

Observe que também podemos encontrar a diferença entre várias linhas anteriores. Por exemplo, o código a seguir mostra como encontrar a diferença entre cada linha atual e a linha que apareceu três linhas antes:

 #add new column to represent sales differences between current row and 3 rows earlier
df[' sales_diff '] = df[' sales ']. diff (periods= 3 )

#view DataFrame
df

        period sales returns sales_diff
0 1 12 2 NaN
1 2 14 2 NaN
2 3 15 3 NaN
3 4 15 3 3.0
4 5 18 5 4.0
5 6 20 4 5.0
6 7 19 4 4.0
7 8 24 6 6.0

Exemplo 2: Encontre a diferença com base na condição

Também podemos filtrar o DataFrame para exibir linhas onde a diferença entre a linha atual e a linha anterior é menor ou maior que um determinado valor.

Por exemplo, o código a seguir retorna apenas linhas nas quais o valor da linha atual é menor que o valor da linha anterior:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' period ': [1, 2, 3, 4, 5, 6, 7, 8],
                   ' sales ': [12, 14, 15, 13, 18, 20, 19, 24],
                   ' returns ': [2, 2, 3, 3, 5, 4, 4, 6]})

#find difference between each current row and the previous row
df[' sales_diff '] = df[' sales ']. diff ()

#filter for rows where difference is less than zero
df = df[df[' sales_diff ']< 0 ]

#view DataFrame
df

        period sales returns sales_diff
3 4 13 3 -2.0
6 7 19 4 -1.0

Recursos adicionais

Como encontrar valores únicos em múltiplas colunas no Pandas
Como filtrar um DataFrame do Pandas por valores de coluna
Como selecionar linhas por índice em um DataFrame do Pandas

Add a Comment

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