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

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

W analizie danych korelacja jest jednym z kluczowych narzędzi pozwalających na ocenę, jak bardzo dwie zmienne są ze sobą związane. W bibliotece pandas mamy dostęp do bardzo przydatnej funkcji pandas.corr(), która ułatwia obliczanie współczynników korelacji pomiędzy kolumnami w strukturze DataFrame. W tym artykule przyjrzę się dokładnie, jak działa pandas.corr() w języku Python, omówię rodzaje wspieranych metod korelacji oraz pokażę przykłady zastosowania w praktyce.

Co robi pandas.corr()?

Funkcja pandas.corr() umożliwia obliczanie współczynnika korelacji pomiędzy kolumnami zawierającymi wartości numeryczne w obiekcie DataFrame. Korelacja to miara zależności między dwiema zmiennymi i może przyjmować wartości od -1 do 1:

  • -1: pełna korelacja ujemna (gdy jedna wartość rośnie, druga maleje).
  • 0: brak korelacji (zmienne nie są powiązane).
  • 1: pełna korelacja dodatnia (obie zmienne rosną lub maleją razem).

Funkcja ta przydaje się w różnych dziedzinach, takich jak analiza finansowa, nauka o danych i uczenie maszynowe.

Jak używać pandas.corr()?

Przykłady najlepiej tłumaczą działanie, więc zacznijmy od stworzenia przykładowego DataFrame i wywołania metody corr().

import pandas as pd

# Tworzymy przykładowe dane
dane = {
    'X': [1, 2, 3, 4, 5],
    'Y': [2, 4, 6, 8, 10],
    'Z': [5, 3, 2, 4, 1]
}

df = pd.DataFrame(dane)

# Obliczamy macierz korelacji
print(df.corr())

Wynik tego kodu to:

          X    Y    Z
X  1.000  1.000 -0.707
Y  1.000  1.000 -0.707
Z -0.707 -0.707  1.000

Jak widać:

  • X i Y są silnie skorelowane dodatnio (1.0), co ma sens, bo wartości w Y to po prostu wartości z X pomnożone przez 2.
  • X i Z są skorelowane ujemnie (-0.707), co oznacza, że mają odwrotny trend.

Rodzaje metod dostępnych w pandas.corr()

Funkcja corr() pozwala na wybranie różnych metod obliczania korelacji, dzięki argumentowi method. Dostępne opcje to:

  1. „pearson” (domyślna) – standardowy współczynnik korelacji Pearsona.
  2. „kendall” – współczynnik korelacji Kendalla Tau.
  3. „spearman” – współczynnik korelacji rangowej Spearmana.

Każda metoda ma swoje zastosowanie. Korelacja Pearsona działa dobrze dla danych ciągłych o rozkładzie normalnym, natomiast korelacja Spearmana i Kendalla sprawdza się w przypadku danych nieparametrycznych.

Oto przykład wykorzystania różnych metod:

print(df.corr(method="pearson"))   # Korelacja Pearsona
print(df.corr(method="kendall"))   # Korelacja Kendalla
print(df.corr(method="spearman"))  # Korelacja Spearmana

Obsługa brakujących danych

W praktyce często zdarza się, że dane zawierają wartości NaN. Funkcja corr() domyślnie pomija brakujące wartości w obliczeniach.

Przyjrzyjmy się temu na przykładzie:

dane_missing = {
    'A': [1, 2, 3, None, 5],
    'B': [2, None, 6, 8, 10],
    'C': [None, 3, 2, 4, 1]
}

df_missing = pd.DataFrame(dane_missing)

print(df_missing.corr())

Jak widzimy, obliczenia zostaną wykonane na dostępnych danych, a kolumny z dużą liczbą braków mogą skutkować mniejszą dokładnością wyliczeń.

Interpretacja wyników w kontekście rzeczywistych danych

Załóżmy, że analizujemy dane giełdowe i chcemy zobaczyć, czy istnieje korelacja między dwiema akcjami.

Przykładowy kod:

import numpy as np

np.random.seed(42)

# Generujemy przykładowe dane giełdowe
stock_data = {
    'Firma A': np.random.rand(100),
    'Firma B': np.random.rand(100),
    'Firma C': np.random.rand(100) * 0.5  # Osłabiona zależność
}

df_stocks = pd.DataFrame(stock_data)

# Korelacja między cenami akcji
stock_corr = df_stocks.corr()
print(stock_corr)

Jeśli wartości korelacji są wysokie dla dwóch firm, można przypuszczać, że ich ceny poruszają się podobnie. To może być istotne dla inwestorów.

Czy pandas.corr() ma ograniczenia?

Mimo swojej przydatności, funkcja corr() ma pewne ograniczenia:

  • Nie wykrywa zależności nieliniowych – jeśli dane są skorelowane nieliniowo, współczynnik może wynosić 0 mimo istnienia zależności.
  • Wymaga danych liczbowych – nie działa bezpośrednio na kolumnach tekstowych.
  • Nie mówi nic o przyczynowości – wysoka korelacja nie oznacza związku przyczynowego.

Podsumowanie

Funkcja pandas.corr() w języku Python to potężne narzędzie do analizy zależności między zmiennymi liczbowymi. Obsługuje różne metody korelacji, ignoruje wartości NaN i jest niezwykle przydatna w statystyce, analizie finansowej i eksploracyjnej analizie danych. Warto jednak pamiętać o jej ograniczeniach i uzupełniać wyniki korelacji innymi metodami analizy zależności.

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