Fonction Series.corr() de Pandas

Pandas 常用函数Fonctions Pandas couramment utilisées


Series.corr()est une fonction dans Pandas utilisée pour calculer le coefficient de corrélation entre deux Series. Le coefficient de corrélation mesure la force de la relation linéaire entre deux variables, allant de -1 à 1.

Un coefficient de corrélation proche de 1 indique une corrélation positive, proche de -1 indique une corrélation négative, et proche de 0 indique presque aucune corrélation. Il est largement utilisé dans des scénarios tels que l'analyse de données, la sélection de caractéristiques et l'analyse de régression.


Syntaxe de base et paramètres

corr()est une fonction membre de l'objet Series, et nécessite qu'une autre Series soit passée en paramètre.

Format de syntaxe

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

Description du paramètre

Paramètre Type Description Valeur par défaut
other Séries L'autre Series utilisée pour calculer le coefficient de corrélation. Requis
method str Méthode de calcul du coefficient de corrélation. Valeurs possibles : 'pearson' (Pearson), 'spearman' (Spearman), 'kendall' (Kendall). 'pearson'
min_periods int Le nombre minimum d'observations valides requises pour le calcul. Si le nombre de valeurs valides est inférieur à ce nombre, NaN est renvoyé. Aucune

Valeur de retour

  • Type de retour:float
  • Description: Renvoie le coefficient de corrélation entre les deux Series, allant de -1 à 1.

Exemples

À travers une série d'exemples du simple au complexe, apprenons à maîtriser parfaitementSeries.corr()l'utilisation.

Exemple 1 : Utilisation de base - Coefficient de corrélation de Pearson

Le coefficient de corrélation de Pearson est le coefficient de corrélation le plus couramment utilisé, mesurant la relation linéaire entre deux variables.

Exemple

import pandas as pd

# Créer deux Series : heures d'étude et notes d'examen
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("Temps d'étude (heures) :")
print(study_hours)
print()

print("Note d'examen (points) :")
print(exam_scores)
print()

# Calculer le coefficient de corrélation de Pearson
correlation = study_hours.corr(exam_scores)

print(f"Coefficient de corrélation de Pearson : {correlation:.4f}")
print()
print("Analyse : Le coefficient de corrélation est proche de 1, indiquant une forte corrélation positive entre le temps d'étude et les notes d'examen.")

Sortie :

学习时间(小时):
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

Explication du code :

  • Le coefficient de corrélation est 1.0, indiquant une corrélation positive parfaite.
  • Cela signifie que pour chaque heure supplémentaire d'étude, la note d'examen augmente de 5 points.

Exemple 2 : exemples de corrélation négative et d'absence de corrélation

Montre différents types de corrélation.

Exemple

import pandas as pd

# Données corrélées positivement : âge et revenu
ages = pd.Series([25, 30, 35, 40, 45, 50])
income = pd.Series([4000, 5000, 6000, 7000, 8000, 9000])

print("Exemple de corrélation positive - Âge vs Revenu :")
print(f"Coefficient de corrélation : {ages.corr(income):.4f}")
print()

# Données corrélées négativement : temps de jeu et performance académique
game_hours = pd.Series([1, 2, 3, 4, 5, 6])
grades = pd.Series([95, 90, 82, 75, 65, 55])

print("Exemple de corrélation négative - Temps de jeu vs Performance académique :")
print(f"Coefficient de corrélation : {game_hours.corr(grades):.4f}")
print()

# Données non corrélées : pointure et QI
shoe_sizes = pd.Series([36, 37, 38, 39, 40, 41])
iq_scores = pd.Series([100, 105, 95, 110, 98, 102])

print("Exemple sans corrélation - Pointure vs QI :")
print(f"Coefficient de corrélation : {shoe_sizes.corr(iq_scores):.4f}")
print()

print("Interprétation du coefficient de corrélation :")
print(" |r| > 0.7 : Corrélation forte")
print(" 0.4 < |r| <= 0.7 : Corrélation modérée")
print(" 0.2 < |r| <= 0.4 : Corrélation faible")
print(" |r| <= 0.2 : Presque aucune corrélation")

Sortie :

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

Exemple 3 : Utilisation de différentes méthodes de coefficient de corrélation

Démontre l'utilisation des coefficients de corrélation de Spearman et Kendall.

Exemple

import pandas as pd

# Créer des données avec une relation non linéaire
x = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# Utiliser une relation exponentielle, et non purement linéaire
y = pd.Series([1, 4, 9, 16, 25, 36, 49, 64, 81, 100])

print("Données X :")
print(x)
print()

print("Données Y (X au carré) :")
print(y)
print()

# Coefficient de corrélation de Pearson (mesure la relation linéaire)
pearson_corr = x.corr(y, method='pearson')
print(f"Coefficient de corrélation de Pearson : {pearson_corr:.4f}")

# Coefficient de corrélation de Spearman (mesure la relation monotone)
spearman_corr = x.corr(y, method='spearman')
print(f"Coefficient de corrélation de Spearman : {spearman_corr:.4f}")

# Coefficient de corrélation de Kendall
kendall_corr = x.corr(y, method='kendall')
print(f"Coefficient de corrélation de Kendall : {kendall_corr:.4f}")
print()

print("Analyse :")
print("Bien que X et Y aient une relation monotone parfaite (y = x^2),")
print("Mais le coefficient de corrélation de Pearson n'est pas 1, car elles ne sont pas liées linéairement.")
print("Les coefficients de corrélation de Spearman et de Kendall valent 1, car ils mesurent des relations monotones.")

Sortie :

数据 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

Exemple 4 : Utilisation du paramètre min_periods

Contrôle le nombre minimum d'observations valides requises pour le calcul.

Exemple

import pandas as pd
import numpy as np

# Créer deux Series contenant des valeurs manquantes
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("Série 1:")
print(s1)
print()

print("Série 2:")
print(s2)
print()

# Par défaut, au moins 2 valeurs valides sont requises
corr_default = s1.corr(s2)
print(f"Coefficient de corrélation par défaut (min_periods=None) : {corr_default:.4f}")

# Définir un minimum de 6 valeurs valides
corr_6 = s1.corr(s2, min_periods=6)
print(f"min_periods=6 coefficient de corrélation : {corr_6:.4f}")

# Définir un minimum de 7 valeurs valides (seulement 6 valeurs valides, renvoie NaN)
corr_7 = s1.corr(s2, min_periods=7)
print(f"min_periods=7 coefficient de corrélation : {corr_7}")

Sortie :

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

Exemple 5 : Application pratique - Analyse des corrélations entre indicateurs économiques

Démontre l'application des coefficients de corrélation dans l'analyse de données du monde réel.

Exemple

import pandas as pd

# Créer des données macroéconomiques simulées
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("Données macroéconomiques :")
print(f"Taux de croissance du PIB : {gdp_growth.values}")
print(f"Taux de chômage : {unemployment.values}")
print(f"Taux d'inflation : {inflation.values}")
print(f"Indice boursier : {stock_index.values}")
print()

# Analyser la corrélation entre les indicateurs
print("Analyse de corrélation :")
print(f"Taux de croissance du PIB vs taux de chômage : {gdp_growth.corr(unemployment):.4f}")
print(f"Taux de croissance du PIB vs indice boursier : {gdp_growth.corr(stock_index):.4f}")
print(f"Taux de chômage vs indice boursier : {unemployment.corr(stock_index):.4f}")
print(f"Taux d'inflation vs indice boursier : {inflation.corr(stock_index):.4f}")
print()

print("Conclusion :")
print("- Le taux de croissance du PIB est corrélé négativement avec le taux de chômage (lorsque l'économie se porte bien, le chômage est faible)")
print("- Le taux de croissance du PIB est fortement corrélé positivement à l'indice boursier (quand l'économie se porte bien, le marché boursier monte)")
print("- Le taux de chômage est corrélé négativement à l'indice boursier")

Sortie :

宏观经济数据:
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

Explication du code :

  • Le coefficient de corrélation entre le taux de croissance du PIB et le taux de chômage est -0.9036, ce qui indique une forte corrélation négative.
  • Le coefficient de corrélation entre le taux de croissance du PIB et l'indice boursier est 0.9434, ce qui indique une forte corrélation positive.
  • Ces corrélations sont cohérentes avec l'intuition économique.

Notes

  • Le coefficient de corrélation ne peut mesurer que les relations linéaires et peut être inexact pour les relations non linéaires.
  • Un coefficient de corrélation proche de 0 ne signifie pas qu'il n'y a pas de relation ; il peut y avoir une relation non linéaire.
  • Une corrélation n'équivaut pas à une causalité ; elle doit être jugée en tenant compte de la logique métier.
  • Le coefficient de corrélation de Spearman convient aux données classées ou aux relations monotones non linéaires.
  • Le coefficient de corrélation de Kendall est plus robuste au bruit dans les données, mais il est plus lent à calculer.

Résumé

Series.corr()C'est un outil puissant pour analyser la relation entre deux variables. Ses principales caractéristiques incluent :

  • Prend en charge trois méthodes de calcul du coefficient de corrélation : Pearson, Spearman et Kendall.
  • Le coefficient de corrélation de Pearson convient pour mesurer les relations linéaires.
  • Les coefficients de corrélation de Spearman et de Kendall conviennent pour mesurer les relations monotones.
  • Vous pouvez contrôler le nombre minimum d'observations valides.

Dans les applications pratiques, les coefficients de corrélation sont souvent utilisés pour la sélection de caractéristiques, l'exploration de données et les tests d'hypothèses. Toutefois, notez que l'analyse de corrélation ne peut révéler que des associations statistiques et ne peut pas directement inférer de relations causales.

Pandas 常用函数Fonctions courantes de Pandas

Autres extensions