【问题标题】:Calculating straight line values in python在python中计算直线值
【发布时间】:2020-04-02 17:57:38
【问题描述】:

我有一个包含 2 列的数据框:日期和总用水量。数据集生成如下图

这张图不是我要找的,所以我决定添加一条直线,显示从 1968 年到 2003 年的逐渐增加。我在 excel 中做了这个,得到了下图

这里绿线是1968-2003年引入的直线,灰线是原始线

有没有办法我可以在 python 中做同样的事情以得到相同的图表?比如曲线拟合。我想使用直线计算中间日期的总使用值。我知道直线有一个方程:y = mx + c。 在这种情况下,x 是我的日期,y 是我的总使用价值。因此,当我将一条直线拟合到数据点时,我必须计算 m 和 c。我怎样才能在python中实现这个?

以下是我的示例数据集:

df = pd.DataFrame({
'Date': [1970, 1975, 1980, 1985, 1990, 1995, 2000, 2005,2010],
'Total usage': [50, 50.2, 50.3,50.6, 80, 81, 90,91]

}) 

df.plot()

【问题讨论】:

  • 请分享您尝试过的代码。

标签: python pandas


【解决方案1】:

您不应修改原始数据点,但可以叠加一条最适合您的数据的曲线,或平滑样本或点之间的任何突然变化。 首先将你的 X & Y 数据准备成 Numpy 数组,并修改附加代码的顺序以获得你认为最好的曲线。

很可能更高的阶数会产生更好看的曲线。

import numpy as np
import matplotlib.pyplot as plt

points = np.array([(1, 1), (2, 4), (3, 1), (9, 3)])
# get x and y vectors
x = points[:,0]
y = points[:,1]

order = 5

# calculate polynomial
z = np.polyfit(x, y, order)
f = np.poly1d(z)

# calculate new x's and y's
x_new = np.linspace(x[0], x[-1], 50)
y_new = f(x_new)

plt.plot(x,y,'o', x_new, y_new)
plt.xlim([x[0]-1, x[-1] + 1 ])
plt.show()

【讨论】:

    猜你喜欢
    • 2022-06-11
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    相关资源
    最近更新 更多