import pandas as pd
import numpy as np
# 1. Cargar el archivo CSV
datos = pd.read_csv("citrus.csv")
# 2. Separar los datos de naranjas y toronjas
naranjas = datos[datos["name"] == "orange"]
toronjas = datos[datos["name"] == "grapefruit"]
# 3. Función para calcular mínimos cuadrados
# Recibe:
# x -> variable independiente (diámetro)
# y -> variable dependiente (peso)
def minimos_cuadrados(x, y):
n = len(x) # número de datos
# Cálculo del coeficiente angular (pendiente)
m = (n * np.sum(x * y) - np.sum(x) * np.sum(y)) / \
(n * np.sum(x**2) - (np.sum(x))**2)
# Cálculo del coeficiente lineal (intersección)
b = (np.sum(y) - m * np.sum(x)) / n
return m, b
# 4. Calcular recta para naranjas
m_naranjas, b_naranjas = minimos_cuadrados(
naranjas["diameter"].values,
naranjas["weight"].values
)
# 5. Calcular recta para toronjas
m_toronjas, b_toronjas = minimos_cuadrados(
toronjas["diameter"].values,
toronjas["weight"].values
)
# 6. Mostrar resultados
print("Recta de las naranjas:")
print(f"peso = {m_naranjas:.4f} * diametro + {b_naranjas:.4f}")
print("\nRecta de las toronjas:")
print(f"peso = {m_toronjas:.4f} * diametro + {b_toronjas:.4f}")
Coeficiente angular (m)
Naranjas: 14.7997
Toronjas: 15.7088
Coeficiente lineal (b)
Naranjas: 27.3856
Toronjas: 17.0071