Fonction Series.corr() de 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
# 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
# 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
# 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 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
# 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.
Autres extensions