Panda's: hoe je het verschil tussen twee lijnen kunt vinden


U kunt de functie DataFrame.diff() gebruiken om het verschil tussen twee rijen in een panda’s DataFrame te vinden.

Deze functie gebruikt de volgende syntaxis:

DataFrame.diff(perioden=1, as=0)

Goud:

  • perioden: het aantal voorgaande regels om het verschil te berekenen.
  • as: zoek het verschil op rijen (0) of kolommen (1).

De volgende voorbeelden laten zien hoe u deze functie in de praktijk kunt gebruiken.

Voorbeeld 1: Zoek het verschil tussen elke voorgaande rij

Stel dat we de volgende panda’s DataFrame hebben:

 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

De volgende code laat zien hoe u het verschil kunt vinden tussen elke huidige rij van een DataFrame en de vorige rij:

 #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

Merk op dat we ook het verschil tussen verschillende voorgaande regels kunnen vinden. De volgende code laat bijvoorbeeld zien hoe u het verschil kunt vinden tussen elke huidige rij en de rij die drie rijen eerder verscheen:

 #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

Voorbeeld 2: Zoek het verschil op basis van de voorwaarde

We kunnen het DataFrame ook filteren om rijen weer te geven waarin het verschil tussen de huidige rij en de vorige rij kleiner of groter is dan een bepaalde waarde.

De volgende code retourneert bijvoorbeeld alleen rijen waarin de waarde van de huidige rij kleiner is dan de waarde van de vorige rij:

 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

Aanvullende bronnen

Hoe unieke waarden in meerdere kolommen in Panda’s te vinden
Hoe u een Pandas DataFrame filtert op kolomwaarden
Hoe rijen op index te selecteren in een Pandas DataFrame

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert