HOWTO · Python
Calcular la pendiente en Python
Este tutorial analiza cómo calcular la pendiente de una línea en Python.
En esta página
La pendiente indica cuánto cambia la coordenada y de una recta por cada unidad que cambia su coordenada x. Para dos puntos, se calcula con m = (y2 - y1) / (x2 - x1). En Python, use una función sencilla para calcular directamente la pendiente entre dos puntos; use SciPy o NumPy cuando quiera ajustar una recta a datos emparejados. Las funciones de ajuste también sirven con dos puntos, pero su principal ventaja es trabajar con conjuntos de datos que contienen más observaciones.
Para más problemas de matemáticas y operadores explicados paso a paso, consulta el tutorial de Python.
Calcular la pendiente entre dos puntos con una función de Python
Para los puntos (x1, y1) y (x2, y2), el numerador representa el cambio vertical y el denominador, el cambio horizontal. Al pasar los valores a la función, mantenga cada coordenada x emparejada con su correspondiente coordenada y.
Ejecute este ejemplo:
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
def slope(x1, y1, x2, y2):
return (y2 - y1) / (x2 - x1)
print(slope(4, 5, 8, 10))
1.25
La función devuelve el cociente entre el cambio en y y el cambio en x. En estas coordenadas, el cambio vertical es 5 y el horizontal es 4, por lo que la pendiente es 5/4. Un resultado positivo indica que y aumenta a medida que aumenta x; uno negativo indica que y disminuye.
Calcular una pendiente de regresión con SciPy
scipy.stats.linregress ajusta una recta a valores emparejados de x e y y devuelve estadísticas de regresión. slope es la pendiente de la recta ajustada; entre los demás valores devueltos están la intersección con el eje y, el coeficiente de correlación, el valor p y el error estándar. Con dos puntos, la recta ajustada pasa por ambos. Con más puntos, se obtiene un ajuste lineal del conjunto de datos, en lugar de calcular una pendiente distinta para cada pareja.
Este ejemplo usa los mismos dos puntos que la función directa. Para trabajar con un conjunto de datos, sustituya las listas por secuencias de observaciones del mismo tamaño.
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
from scipy.stats import linregress
x = [4, 8]
y = [5, 10]
result = linregress(x, y)
print(result.slope)
1.25
La función importada es específicamente linregress; no es un método de toda la biblioteca SciPy. Instale SciPy en el entorno de Python antes de ejecutar el ejemplo.
Ajustar una recta con NumPy
np.polyfit calcula coeficientes polinómicos que se ajustan a los datos proporcionados. Para obtener una recta, establezca el grado en 1. Los coeficientes devueltos van de la potencia más alta al término constante, así que el primero es la pendiente y el segundo es la intersección con el eje y.
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
import numpy as np
x = [4, 8]
y = [5, 10]
slope, intercept = np.polyfit(x, y, 1)
print(slope)
1.2499999999999991
Al igual que con la regresión, usar más de dos observaciones ajusta una sola recta al conjunto de datos. La aritmética de punto flotante puede hacer que el coeficiente calculado se muestre como un valor muy cercano a la pendiente matemática, en vez de como un decimal exacto. Instale NumPy en el entorno de Python antes de ejecutar el ejemplo.
Tratar las rectas verticales y elegir un método
La fórmula directa divide por x2 - x1. Si ambos puntos tienen la misma coordenada x, esa diferencia es cero; por tanto, una recta vertical no tiene una pendiente finita y la función no puede devolverla mediante una división ordinaria. Según la aplicación, trate este caso indicando, por ejemplo, que la pendiente no está definida o representando la recta por separado, en vez de asignarle una pendiente numérica.
Elija la función directa si tiene exactamente dos puntos y quiere calcular su pendiente. Elija linregress si necesita una pendiente de regresión y estadísticas relacionadas para observaciones emparejadas. Elija np.polyfit(x, y, 1) si necesita los coeficientes de un ajuste polinómico de grado 1. Ambos métodos de biblioteca describen una recta de mejor ajuste para un conjunto de datos más amplio; no eliminan la limitación de representar una recta vertical mediante una pendiente finita.