簡體   English   中英

用數據框求解二次方程

[英]Solving quadratic equation for coefficients with dataframe

我有一個帶有兩列x和y的pandas數據框。 我知道數據點的圖形將是拋物線,因此此數據ax²+bx+c=y的功能將是ax²+bx+c=y

我讀過有關通過numpy解決變量的二次函數的不同文章。 但是在這種情況下,由於數據幀,我知道了變量。

是否有一個函數可以從數據框中獲取x,y值來獲取系數a,b和c的值?

您可以使用NumPy的polyfit來使多項式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()

在此處輸入圖片說明

是。 您可以使用.polyfit ,度為2

import numpy as np
x = np.array([0, 1, 2, 3,  4,  5])
y = np.array([4, 7, 12, 19, 28, 39])
z = np.polyfit(x, y, 2)

a = z[0].round(2)
b = z[1].round(2)
c = z[2].round(2)

print ('a: %.1f\nb: %.1f\nc: %.1f' %(a,b,c))
print ('y = %.1fx\u00b2 + %.1fx + %.1f' %(a,b,c))
print ('f(x) = %.1fx\u00b2 + %.1fx + %.1f' %(a,b,c))

輸出:

a: 1.0
b: 2.0
c: 4.0
y = 1.0x² + 2.0x + 4.0
f(x) = 1.0x² + 2.0x + 4.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM