Pandy: jak znaleźć różnicę między dwiema liniami
Możesz użyć funkcji DataFrame.diff() , aby znaleźć różnicę między dwoma wierszami w ramce DataFrame pandy.
Ta funkcja używa następującej składni:
DataFrame.diff(okresy=1, oś=0)
Złoto:
- okresy: liczba poprzednich wierszy do obliczenia różnicy.
- oś: znajdź różnicę w wierszach (0) lub kolumnach (1).
Poniższe przykłady pokazują, jak w praktyce wykorzystać tę funkcję.
Przykład 1: Znajdź różnicę między każdym poprzednim wierszem
Załóżmy, że mamy następującą ramkę DataFrame pand:
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
Poniższy kod pokazuje, jak znaleźć różnicę między każdym bieżącym wierszem ramki DataFrame a poprzednim wierszem:
#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
Zauważ, że możemy również znaleźć różnicę między kilkoma poprzednimi liniami. Na przykład poniższy kod pokazuje, jak znaleźć różnicę między każdym bieżącym wierszem a wierszem, który pojawił się trzy wiersze wcześniej:
#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
Przykład 2: Znajdź różnicę na podstawie warunku
Możemy również filtrować ramkę DataFrame, aby wyświetlić wiersze, w których różnica między bieżącym wierszem a poprzednim wierszem jest mniejsza lub większa niż określona wartość.
Na przykład poniższy kod zwraca tylko te wiersze, w których wartość bieżącego wiersza jest mniejsza niż wartość poprzedniego wiersza:
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
Dodatkowe zasoby
Jak znaleźć unikalne wartości w wielu kolumnach w Pandach
Jak filtrować ramkę danych Pandas według wartości kolumn
Jak wybierać wiersze według indeksu w ramce danych Pandas