Función Pandas Series.corr()

Pandas 常用函数Funciones comunes de Pandas


Series.corr()Es una función de Pandas utilizada para calcular el coeficiente de correlación entre dos Series. El coeficiente de correlación mide la fuerza de la relación lineal entre dos variables, con un rango de -1 a 1.

Un coeficiente de correlación cercano a 1 indica una correlación positiva, cercano a -1 indica una correlación negativa, y cercano a 0 indica casi ninguna correlación. Se utiliza ampliamente en análisis de datos, selección de características, análisis de regresión y otros escenarios.


Sintaxis básica y parámetros

corr()Es una función miembro del objeto Series y requiere pasar otra Series como parámetro.

Formato de sintaxis

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

Descripción de parámetros

Parámetro Tipo Descripción Valor predeterminado
other Series La otra Series utilizada para calcular el coeficiente de correlación. Obligatorio
method str Método de cálculo del coeficiente de correlación. Valores opcionales: 'pearson' (Pearson), 'spearman' (Spearman), 'kendall' (Kendall). 'pearson'
min_periods int Cantidad mínima de observaciones válidas requeridas para el cálculo. Si los valores válidos son menores que esta cantidad, devuelve NaN. None

Valor de retorno

  • Tipo de retorno:float
  • Descripción: Devuelve el coeficiente de correlación entre las dos Series, con un rango de [-1, 1].

Ejemplos

A través de una serie de ejemplos de simples a complejos, dominaremos a fondoSeries.corr()el uso.

Ejemplo 1: Uso básico - Coeficiente de correlación de Pearson

El coeficiente de correlación de Pearson es el coeficiente de correlación más utilizado y mide la relación lineal entre dos variables.

Ejemplo

import pandas as pd

# Crear dos Series: tiempo de estudio y calificaciones de 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("Tiempo de estudio (horas):")
print(study_hours)
print()

print(Calificaciones del examen (puntos):)
print(exam_scores)
print()

# Calcular el coeficiente de correlación de Pearson
correlation = study_hours.corr(exam_scores)

print(fCoeficiente de correlación de Pearson: {correlation:.4f})
print()
print("Análisis: el coeficiente de correlación es cercano a 1, lo que indica una fuerte correlación positiva entre el tiempo de estudio y los resultados del examen.")

Resultado:

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

Análisis del código:

  • El coeficiente de correlación es 1.0, lo que indica una correlación positiva perfecta.
  • Esto significa que por cada hora adicional de estudio, la puntuación del examen aumenta en 5 puntos fijos.

Ejemplo 2: Ejemplos de correlación negativa y sin correlación

Muestra diferentes tipos de correlación.

Ejemplo

import pandas as pd

# Datos con correlación positiva: edad e ingresos
ages = pd.Series([25, 30, 35, 40, 45, 50])
income = pd.Series([4000, 5000, 6000, 7000, 8000, 9000])

print(Ejemplo de correlación positiva - Edad e ingresos:)
print(fCoeficiente de correlación: {ages.corr(income):.4f})
print()

# Datos con correlación negativa: tiempo de juego y rendimiento académico
game_hours = pd.Series([1, 2, 3, 4, 5, 6])
grades = pd.Series([95, 90, 82, 75, 65, 55])

print(Ejemplo de correlación negativa - tiempo de juego y rendimiento académico:)
print(fCoeficiente de correlación: {game_hours.corr(grades):.4f})
print()

# Datos sin correlación: talla de zapato y cociente intelectual
shoe_sizes = pd.Series([36, 37, 38, 39, 40, 41])
iq_scores = pd.Series([100, 105, 95, 110, 98, 102])

print(Ejemplo de no correlación - Talla de calzado y coeficiente intelectual:)
print(fCoeficiente de correlación: {shoe_sizes.corr(iq_scores):.4f})
print()

print(Interpretación de los coeficientes de correlación:)
print(|r| > 0.7: correlación fuerte)
print(" 0.4 < |r| <= 0.7: correlación moderada")
print(" 0.2 < |r| <= 0.4: correlación débil")
print(" |r| <= 0.2: casi sin correlación")

Resultado:

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

Ejemplo 3: Uso de diferentes métodos de coeficiente de correlación

Muestra el uso de los coeficientes de correlación de Spearman y Kendall.

Ejemplo

import pandas as pd

# Crear datos con una relación no lineal
x = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# Usar una relación exponencial, no una relación completamente lineal
y = pd.Series([1, 4, 9, 16, 25, 36, 49, 64, 81, 100])

print(Datos X:)
print(x)
print()

print(Datos Y (X al cuadrado):)
print(y)
print()

# Coeficiente de correlación de Pearson (mide la relación lineal)
pearson_corr = x.corr(y, method='pearson')
print(f"Coeficiente de correlación de Pearson: {pearson_corr:.4f}")

# Coeficiente de correlación de Spearman (mide relaciones monótonas)
spearman_corr = x.corr(y, method='spearman')
print(fCoeficiente de correlación de Spearman: {spearman_corr:.4f})

# Coeficiente de correlación de Kendall
kendall_corr = x.corr(y, method='kendall')
print(f"Coeficiente de correlación de Kendall: {kendall_corr:.4f}")
print()

print(Análisis:)
print(Aunque X e Y tienen una relación monótona perfecta (y = x^2),)
print(Pero el coeficiente de correlación de Pearson no es 1, porque no están linealmente relacionados.)
print(Los coeficientes de correlación de Spearman y Kendall son 1, porque miden relaciones monótonas.)

Resultado:

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

Ejemplo 4: Uso del parámetro min_periods

Controla la cantidad mínima de observaciones válidas requeridas para el cálculo.

Ejemplo

import pandas as pd
import numpy as np

# Crear dos Series que contengan valores faltantes
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()

# Por defecto se requieren al menos 2 valores válidos
corr_default = s1.corr(s2)
print(f"Por defecto (min_periods=None) coeficiente de correlación: {corr_default:.4f}")

# Establecer un mínimo de 6 valores válidos
corr_6 = s1.corr(s2, min_periods=6)
print(fmin_periods=6 coeficiente de correlación: {corr_6:.4f})

# Establece un mínimo de 7 valores válidos (solo hay 6 valores válidos, devuelve NaN)
corr_7 = s1.corr(s2, min_periods=7)
print(fmin_periods=7 coeficiente de correlación: {corr_7})

Resultado:

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

Ejemplo 5: Aplicación práctica - Análisis de correlación de indicadores económicos

Muestra la aplicación del coeficiente de correlación en el análisis de datos reales.

Ejemplo

import pandas as pd

# Crear datos macroeconómicos simulados
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(Datos macroeconómicos:)
print(fTasa de crecimiento del PIB: {gdp_growth.values})
print(fTasa de desempleo: {unemployment.values})
print(f"Tasa de inflación: {inflation.values}")
print(fÍndice bursátil: {stock_index.values})
print()

# Analizar las correlaciones entre los indicadores
print(Análisis de correlación:)
print(f"Tasa de crecimiento del PIB vs tasa de desempleo: {gdp_growth.corr(unemployment):.4f}")
print(f"Tasa de crecimiento del GDP vs índice bursátil: {gdp_growth.corr(stock_index):.4f}")
print(f"Tasa de desempleo vs índice bursátil: {unemployment.corr(stock_index):.4f}")
print(fTasa de inflación vs índice bursátil: {inflation.corr(stock_index):.4f})
print()

print(Conclusión:)
print(- El crecimiento del PIB tiene una correlación negativa con la tasa de desempleo (cuando la economía está bien, el desempleo es bajo))
print(- El crecimiento del PIB tiene una fuerte correlación positiva con el índice bursátil (cuando la economía está bien, la bolsa sube))
print(- La tasa de desempleo tiene una correlación negativa con el índice bursátil)

Resultado:

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

Análisis del código:

  • El coeficiente de correlación entre el crecimiento del PIB y la tasa de desempleo es -0.9036, lo que indica una fuerte correlación negativa.
  • El coeficiente de correlación entre el crecimiento del PIB y el índice bursátil es 0.9434, lo que indica una fuerte correlación positiva.
  • Estas correlaciones son consistentes con la intuición económica.

Notas

  • El coeficiente de correlación solo puede medir relaciones lineales; para relaciones no lineales puede ser inexacto.
  • Un coeficiente de correlación cercano a 0 no significa que no haya relación; puede existir una relación no lineal.
  • La correlación no implica causalidad; es necesario combinarla con la lógica del negocio para juzgar.
  • El coeficiente de correlación de Spearman es adecuado para datos ordinales o relaciones monótonas no lineales.
  • El coeficiente de correlación de Kendall es más robusto ante el ruido en los datos, pero su cálculo es más lento.

Resumen

Series.corr()Es una poderosa herramienta para analizar la relación entre dos variables. Sus principales características incluyen:

  • Admite tres métodos de cálculo del coeficiente de correlación: Pearson, Spearman, Kendall.
  • El coeficiente de correlación de Pearson es adecuado para medir relaciones lineales.
  • Los coeficientes de correlación de Spearman y Kendall son adecuados para medir relaciones monótonas.
  • Se puede controlar el número mínimo de observaciones válidas.

En la práctica, los coeficientes de correlación se utilizan a menudo para la selección de características, la exploración de datos y la verificación de hipótesis. Pero hay que tener en cuenta que el análisis de correlación solo puede revelar asociaciones estadísticas, no puede inferir directamente relaciones causales.

Pandas 常用函数Funciones comunes de Pandas

Otras extensiones