
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.
Opanuj analizę danych w Pythonie z moim kursem!
Opanujesz podstawy programowania w Pythonie, w tym typy danych, zmienne, listy, słowniki, funkcje oraz obsługę błędów. Nauczysz się korzystać z biblioteki pandas do zaawansowanej analizy danych i pracy z różnymi rodzajami danych. Zrozumiesz proces analizy, eksploracji (EDA) i wizualizacji. Tworzenie własnych funkcji przygotuje Cię do rozmów kwalifikacyjnych i rozwiązywania rzeczywistych problemów biznesowych.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.