Jak działa pandas diff w języku Python? Przykład zastosowania

Jak działa pandas diff w języku Python? Przykład zastosowania
„`html

Podczas pracy z danymi w bibliotece Pandas często zachodzi potrzeba obliczenia różnic między kolejnymi wartościami w kolumnach lub wierszach. Funkcja pandas.DataFrame.diff() jest jednym z wygodniejszych narzędzi do tego celu. Pozwala ona na szybkie obliczenie różnicy między kolejnymi wartościami w określonej osi oraz na kontrolę tego, jak daleko sięgamy wstecz. Dziś chciałbym przybliżyć, jak działa funkcja pandas.diff() w języku Python wraz z przykładami jej zastosowania.

Czym jest pandas.diff() i jak działa?

Funkcja diff() oblicza różnicę między bieżącą wartością a wartością z określonego kroku wstecz. Domyślnie oblicza różnicę między kolejnymi wartościami, ale za pomocą parametru periods można zmieniać ten interwał.

Podstawowa składnia tej funkcji wygląda następująco:

DataFrame.diff(periods=1, axis=0)

Gdzie:

  • periods – określa liczbę kroków wstecz, dla których obliczana jest różnica (domyślnie 1).
  • axis – określa, czy różnicę obliczać wzdłuż wierszy (axis=0) czy kolumn (axis=1).

Podstawowy przykład użycia pandas.diff()

Najłatwiejszym sposobem na zrozumienie działania tej funkcji jest przykład. Załóżmy, że mamy obiekt DataFrame z pewnymi wartościami liczbowymi.

import pandas as pd

# Tworzymy DataFrame
df = pd.DataFrame({
    'A': [10, 20, 30, 40, 50],
    'B': [5, 15, 25, 35, 45]
})

print(df.diff())

Wynik działania powyższego kodu:

      A     B
0   NaN   NaN
1  10.0  10.0
2  10.0  10.0
3  10.0  10.0
4  10.0  10.0

W pierwszym wierszu otrzymujemy NaN, ponieważ dla pierwszej wartości nie ma żadnej wcześniejszej, z którą moglibyśmy ją porównać.

Zmiana wartości periods

Ustawienie innej wartości periods pozwala obliczyć różnicę względem wcześniejszych rekordów o więcej niż jedno miejsce.

print(df.diff(periods=2))

Wynik:

      A     B
0   NaN   NaN
1   NaN   NaN
2  20.0  20.0
3  20.0  20.0
4  20.0  20.0

Widać, że teraz różnica została obliczona względem wartości sprzed dwóch wierszy.

Obliczanie różnicy wzdłuż kolumn (axis=1)

Można również zastosować diff() do różnicy między wartościami w tej samej wierszy w różnych kolumnach. Do tego celu używamy axis=1.

print(df.diff(axis=1))

Wynik:

     A     B
0  NaN  -5.0
1  NaN -5.0
2  NaN -5.0
3  NaN -5.0
4  NaN -5.0

Widzimy, że różnice zostały obliczone dla każdej kolumny w prawo.

Praktyczny przykład zastosowania

Załóżmy, że mamy dane przedstawiające ceny akcji w kolejnych dniach i chcemy obliczyć dzienne zmiany cen.

# Tworzymy DataFrame z danymi o cenach akcji
stocks = pd.DataFrame({
    'Day': ['2024-06-01', '2024-06-02', '2024-06-03', '2024-06-04', '2024-06-05'],
    'Price': [100, 102,  98, 99, 105]
})

# Obliczamy dzienną zmianę ceny
stocks['Daily Change'] = stocks['Price'].diff()

print(stocks)

Wynik:

         Day  Price  Daily Change
0  2024-06-01    100           NaN
1  2024-06-02    102           2.0
2  2024-06-03     98          -4.0
3  2024-06-04     99           1.0
4  2024-06-05    105           6.0

Teraz w kolumnie Daily Change mamy codzienną zmianę ceny w porównaniu do poprzedniego dnia.

Tabela podsumowująca działanie pandas.diff()

Zastosowanie Opis Przykładowe wywołanie
Podstawowa różnica między kolejnymi wartościami Oblicza różnicę względem poprzedniego rekordu df.diff()
Określenie liczby okresów Porównuje wartości sprzed więcej niż jednego wiersza df.diff(periods=2)
Różnica w kolumnach Oblicza różnicę między wartościami w tej samej kolumnie df.diff(axis=1)
Zmiany procentowe Przydatne do analizy trendów df.pct_change()

Podsumowanie

Funkcja pandas.diff() w języku Python to potężne narzędzie do analizy danych liczbowych. Umożliwia szybkie obliczenie różnic względem wartości w poprzednich wierszach lub kolumnach. Możliwość określania interwałów czasowych oraz zmiany osi czyni ją niezwykle elastycznym narzędziem, które można wykorzystać m.in. do analizy danych finansowych, pomiarów zmian w czasie lub wykrywania trendów.

„` Inny ciekawy artykuł: Jak działa pandas cumprod w języku Python? Przykład zastosowania
KajoDataSpace