Pandas Series.corr()-Funktion

Pandas 常用函数Häufig verwendete Pandas-Funktionen


Series.corr()ist eine Funktion in Pandas, die verwendet wird, um den Korrelationskoeffizienten zwischen zwei Series zu berechnen. Der Korrelationskoeffizient misst die Stärke der linearen Beziehung zwischen zwei Variablen und reicht von -1 bis 1.

Ein Korrelationskoeffizient nahe 1 weist auf eine positive Korrelation hin, nahe -1 auf eine negative Korrelation und nahe 0 auf nahezu keine Korrelation. Er wird häufig in Szenarien wie Datenanalyse, Merkmalsauswahl und Regressionsanalyse verwendet.


Grundlegende Syntax und Parameter

corr()ist eine Memberfunktion des Series-Objekts und erfordert, dass eine weitere Series als Parameter übergeben wird.

Syntaxformat

Series.corr(other, method='pearson', min_periods=None, **kwargs)

Parameterbeschreibung

Parameter Type Beschreibung Standardwert
other Serie Die andere Series, die zur Berechnung des Korrelationskoeffizienten verwendet wird. Erforderlich
method str Methode zur Berechnung des Korrelationskoeffizienten. Optionale Werte: 'pearson' (Pearson), 'spearman' (Spearman), 'kendall' (Kendall). 'pearson'
min_periods int Die minimale Anzahl gültiger Beobachtungen, die für die Berechnung erforderlich ist. Wenn die Anzahl gültiger Werte geringer als dieser Wert ist, wird NaN zurückgegeben. Keine

Rückgabewert

  • Rückgabetyp:float
  • Beschreibung: Gibt den Korrelationskoeffizienten zwischen den beiden Series zurück, der von -1 bis 1 reicht.

Beispiele

Lassen Sie uns anhand einer Reihe von Beispielen von einfach bis komplexSeries.corr()die Verwendung beherrschen.

Beispiel 1: Grundlegende Verwendung - Pearson-Korrelationskoeffizient

Der Pearson-Korrelationskoeffizient ist der am häufigsten verwendete Korrelationskoeffizient und misst die lineare Beziehung zwischen zwei Variablen.

Beispiel

import pandas as pd

# Erstelle zwei Series: Lernstunden und Prüfungsergebnisse
study_hours = pd.Series([1, 2, 3, 4, 5, 6, 7, 8])
exam_scores = pd.Series([55, 60, 65, 70, 75, 80, 85, 90])

print("Lernzeit (Stunden):")
print(study_hours)
print()

print("Prüfungsergebnis (Punkte):")
print(exam_scores)
print()

# Pearson-Korrelationskoeffizienten berechnen
correlation = study_hours.corr(exam_scores)

print(f"Pearson-Korrelationskoeffizient: {correlation:.4f}")
print()
print("Analyse: Der Korrelationskoeffizient liegt nahe bei 1, was auf eine starke positive Korrelation zwischen Lernzeit und Prüfungsergebnissen hindeutet.")

Ausgabe:

学习时间(小时):
0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
dtype: int64

考试成绩(分):
0    55
1    60
2    65
3    70
4    75
5    80
6    85
7    90
dtype: int64

皮尔逊相关系数:1.0000

Code-Erklärung:

  • Der Korrelationskoeffizient ist 1.0, was auf eine perfekte positive Korrelation hindeutet.
  • Das bedeutet, dass sich das Prüfungsergebnis für jede zusätzliche Stunde Lernzeit um 5 Punkte erhöht.

Beispiel 2: Beispiele für negative Korrelation und fehlende Korrelation

Zeigt verschiedene Arten von Korrelation.

Beispiel

import pandas as pd

# Positiv korrelierte Daten: Alter und Einkommen
ages = pd.Series([25, 30, 35, 40, 45, 50])
income = pd.Series([4000, 5000, 6000, 7000, 8000, 9000])

print("Beispiel für positive Korrelation - Alter vs. Einkommen:")
print(f"Korrelationskoeffizient: {ages.corr(income):.4f}")
print()

# Negativ korrelierte Daten: Spielzeit und akademische Leistung
game_hours = pd.Series([1, 2, 3, 4, 5, 6])
grades = pd.Series([95, 90, 82, 75, 65, 55])

print("Beispiel für negative Korrelation - Spielzeit vs. akademische Leistung:")
print(f"Korrelationskoeffizient: {game_hours.corr(grades):.4f}")
print()

# Unkorrelierte Daten: Schuhgröße und IQ
shoe_sizes = pd.Series([36, 37, 38, 39, 40, 41])
iq_scores = pd.Series([100, 105, 95, 110, 98, 102])

print("Beispiel ohne Korrelation – Schuhgröße vs. IQ:")
print(f"Korrelationskoeffizient: {shoe_sizes.corr(iq_scores):.4f}")
print()

print("Interpretation des Korrelationskoeffizienten:")
print(" |r| > 0.7: Starke Korrelation")
print(" 0.4 < |r| <= 0.7: Mittlere Korrelation")
print(" 0.2 < |r| <= 0.4: Schwache Korrelation")
print(" |r| <= 0.2: Nahezu keine Korrelation")

Ausgabe:

正相关示例 - 年龄与收入:
相关系数:1.0000
负相关示例 - 游戏时间与学习成绩:
相关系数:-0.9856
无相关示例 - 鞋码与智商:
相关系数:0.0857

Beispiel 3: Verwendung verschiedener Methoden für Korrelationskoeffizienten

Demonstriert die Verwendung der Korrelationskoeffizienten nach Spearman und Kendall.

Beispiel

import pandas as pd

# Daten mit einer nichtlinearen Beziehung erstellen
x = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# Eine exponentielle Beziehung verwenden, keine rein lineare
y = pd.Series([1, 4, 9, 16, 25, 36, 49, 64, 81, 100])

print("Daten X:")
print(x)
print()

print("Daten Y (X quadriert):")
print(y)
print()

# Pearson-Korrelationskoeffizient (misst lineare Beziehung)
pearson_corr = x.corr(y, method='pearson')
print(f"Pearson-Korrelationskoeffizient: {pearson_corr:.4f}")

# Spearman-Korrelationskoeffizient (misst monotone Beziehung)
spearman_corr = x.corr(y, method='spearman')
print(f"Spearman-Korrelationskoeffizient: {spearman_corr:.4f}")

# Kendall-Korrelationskoeffizient
kendall_corr = x.corr(y, method='kendall')
print(f"Kendall-Korrelationskoeffizient: {kendall_corr:.4f}")
print()

print("Analyse:")
print("Obwohl X und Y eine perfekte monotone Beziehung haben (y = x^2),")
print("Aber der Pearson-Korrelationskoeffizient ist nicht 1, weil sie nicht linear miteinander zusammenhängen.")
print("Die Korrelationskoeffizienten nach Spearman und Kendall sind 1, weil sie monotone Beziehungen messen.")

Ausgabe:

数据 X:
0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
8    9
9   10
dtype: int64

数据 Y(X 的平方):
0      1
1      4
2      9
3     16
4     25
5     36
6     49
7     64
8     81
9    100
dtype: int64

皮尔逊相关系数:0.9746
斯皮尔曼相关系数:1.0000
肯德尔相关系数:1.0000

Beispiel 4: Verwenden des Parameters min_periods

Steuert die Mindestanzahl gültiger Beobachtungen, die für die Berechnung erforderlich sind.

Beispiel

import pandas as pd
import numpy as np

# Erstellen von zwei Series, die fehlende Werte enthalten
s1 = pd.Series([1, 2, np.nan, 4, 5, np.nan, 7, 8])
s2 = pd.Series([2, 4, 6, 8, 10, 12, 14, 16])

print("Series 1:")
print(s1)
print()

print("Series 2:")
print(s2)
print()

# Standardmäßig sind mindestens 2 gültige Werte erforderlich
corr_default = s1.corr(s2)
print(f"Standardmäßiger Korrelationskoeffizient (min_periods=None): {corr_default:.4f}")

# Mindestens 6 gültige Werte festlegen
corr_6 = s1.corr(s2, min_periods=6)
print(f"min_periods=6 Korrelationskoeffizient: {corr_6:.4f}")

# Mindestens 7 gültige Werte festlegen (nur 6 gültige Werte, gibt NaN zurück)
corr_7 = s1.corr(s2, min_periods=7)
print(f"min_periods=7 Korrelationskoeffizient: {corr_7}")

Ausgabe:

Series 1:
0    1.0
1    2.0
2       NaN
3    4.0
4    5.0
5       NaN
6    7.0
7    8.0
dtype: float64

Series 2:
0     2
1     4
2     6
3     8
4    10
5    12
6    14
7    16
dtype: int64

默认(min_periods=None)相关系数:1.0000
min_periods=6 相关系数:1.0000
min_periods=7 相关系数:nan

Beispiel 5: Praktische Anwendung - Analyse von Korrelationen wirtschaftlicher Indikatoren

Demonstriert die Anwendung von Korrelationskoeffizienten in der Analyse realer Daten.

Beispiel

import pandas as pd

# Simulierte makroökonomische Daten erstellen
gdp_growth = pd.Series([6.5, 7.2, 8.1, 7.8, 6.9, 5.5, 4.8])
unemployment = pd.Series([4.2, 3.8, 3.5, 3.7, 4.0, 4.8, 5.2])
inflation = pd.Series([2.1, 2.5, 3.2, 3.0, 2.4, 1.8, 1.5])
stock_index = pd.Series([3000, 3200, 3500, 3400, 3100, 2800, 2600])

print("Makroökonomische Daten:")
print(f"BIP-Wachstumsrate: {gdp_growth.values}")
print(f"Arbeitslosenquote: {unemployment.values}")
print(f"Inflationsrate: {inflation.values}")
print(f"Aktienindex: {stock_index.values}")
print()

# Korrelation zwischen den Indikatoren analysieren
print("Korrelationsanalyse:")
print(f"BIP-Wachstumsrate vs. Arbeitslosenquote: {gdp_growth.corr(unemployment):.4f}")
print(f"BIP-Wachstumsrate vs. Aktienindex: {gdp_growth.corr(stock_index):.4f}")
print(f"Arbeitslosenquote vs. Aktienindex: {unemployment.corr(stock_index):.4f}")
print(f"Inflationsrate vs. Aktienindex: {inflation.corr(stock_index):.4f}")
print()

print("Fazit:")
print("- Die BIP-Wachstumsrate ist negativ mit der Arbeitslosenquote korreliert (wenn die Wirtschaft gut läuft, ist die Arbeitslosigkeit niedrig)")
print("- Die BIP-Wachstumsrate ist stark positiv mit dem Aktienindex korreliert (wenn die Wirtschaft gut läuft, steigt der Aktienmarkt)")
print("- Die Arbeitslosenquote ist negativ mit dem Aktienindex korreliert")

Ausgabe:

宏观经济数据:
GDP 增长率:[6.5 7.2 8.1 7.8 6.9 5.5 4.8]
失业率:[4.2 3.8 3.5 3.7 4.  4.  5.2]
通胀率:[2.1 2.5 3.2 3.  2.4 1.8 1.5]
股指:[3000 3200 3500 3400 3100 2800 2600]

相关性分析:
GDP 增长率 vs 失业率:-0.9036
GDP 增长率 vs 股指:0.9434
失业率 vs 股指:-0.9712
通胀率 vs 股指:-0.9712

Code-Erklärung:

  • Der Korrelationskoeffizient zwischen BIP-Wachstumsrate und Arbeitslosenquote beträgt -0.9036, was auf eine starke negative Korrelation hinweist.
  • Der Korrelationskoeffizient zwischen BIP-Wachstumsrate und Aktienindex beträgt 0.9434, was auf eine starke positive Korrelation hinweist.
  • Diese Korrelationen stehen im Einklang mit der ökonomischen Intuition.

Hinweise

  • Der Korrelationskoeffizient kann nur lineare Beziehungen messen und kann bei nichtlinearen Beziehungen ungenau sein.
  • Ein Korrelationskoeffizient nahe 0 bedeutet nicht, dass keine Beziehung besteht; es könnte eine nichtlineare Beziehung vorliegen.
  • Korrelation bedeutet nicht Kausalität; sie muss in Kombination mit der fachlichen Logik beurteilt werden.
  • Der Spearman-Korrelationskoeffizient eignet sich für Rangdaten oder nichtlineare monotone Beziehungen.
  • Der Kendall-Korrelationskoeffizient ist robuster gegenüber Rauschen in den Daten, aber langsamer zu berechnen.

Zusammenfassung

Series.corr()Es ist ein leistungsstarkes Werkzeug zur Analyse der Beziehung zwischen zwei Variablen. Zu seinen Hauptmerkmalen gehören:

  • Unterstützt drei Methoden zur Berechnung des Korrelationskoeffizienten: Pearson, Spearman und Kendall.
  • Der Pearson-Korrelationskoeffizient eignet sich zur Messung linearer Zusammenhänge.
  • Der Spearman- und der Kendall-Korrelationskoeffizient eignen sich zur Messung monotoner Zusammenhänge.
  • Sie können die Mindestanzahl gültiger Beobachtungen steuern.

In der praktischen Anwendung werden Korrelationskoeffizienten häufig zur Merkmalsauswahl, Datenexploration und Hypothesenprüfung verwendet. Beachten Sie jedoch, dass die Korrelationsanalyse nur statistische Zusammenhänge aufdecken kann und nicht direkt auf kausale Zusammenhänge schließen lässt.

Pandas 常用函数Pandas Häufige Funktionen

Andere Erweiterungen