Función Pandas Series.corr()
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
# 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
# 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
# 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 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
# 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.
Otras extensiones
Funciones comunes de Pandas