
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
iY
są silnie skorelowane dodatnio (1.0), co ma sens, bo wartości wY
to po prostu wartości zX
pomnożone przez 2.X
iZ
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:
- „pearson” (domyślna) – standardowy współczynnik korelacji Pearsona.
- „kendall” – współczynnik korelacji Kendalla Tau.
- „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.
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.