python - 使用数据帧求解系数的二次方程

标签 python python-3.x pandas numpy

我有一个包含两列 x 和 y 的 pandas 数据框。我知道数据点的图形将是抛物线,因此该数据框的函数将是 ax²+bx+c=y。

我阅读了有关通过 numpy 求解变量的二次函数的不同帖子。但在这种情况下,我知道数据框带来的变量。

是否有一个函数可以借助数据帧中的 x、y 值获取系数 a、b 和 c 的值?

最佳答案

可以使用NumPy的polyfit进行多项式拟合并得到拟合系数。以下是一个最小的工作答案

import pandas as pd
import numpy as np

df = pd.DataFrame({'x':[1,2,3,4,5], 
                  'y':[0.9, 3.8, 9.2, 15.4, 25.5]})

fit = np.polyfit(df['x'], df['y'], 2)
equation = np.poly1d(fit)
print ("The fit coefficients are a = {0:.4f}, b = {1:.4f} c = {2:.4f}".format(*fit))
print (equation)

输出

The fit coefficients are a = 1.0857, b = -0.4343 c = 0.3200
       2
1.086 x - 0.4343 x + 0.32

您还可以使用matplotlib可视化拟合

import matplotlib.pyplot as plt

xmesh = np.linspace(min(df['x']), max(df['x']), 100)

plt.plot(df['x'], df['y'], 'bo', label='data')
plt.plot(xmesh, equation(xmesh), '-b', label='fit')
plt.legend(fontsize=20)
plt.xlabel('x', fontsize=20)
plt.ylabel('y', fontsize=20)
plt.show()

enter image description here

关于python - 使用数据帧求解系数的二次方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54200470/

相关文章:

python - 从字典中调用字典中的信息

python - 在 Docker 上使用需求文件构建 pipelinev

python - 获取每天的小时之间的最小值

python - 保留 DataFrame 中列的第一个元素

python - 使用 Pandas 的过滤器计算值之间的差异

python - Pandas 'Replacement not allowed with overlapping keys and values'

python - 使用 Python SDK 等待 Docker 容器开始运行

python - 断言错误 : can only start a process object created by current process

python - 在 Python 中混淆字符串

散点图中的 Python Matplotlib 线