python时间序列如何拟合_如何在python中对时间序列应用最佳拟合线

当我对时间序列数据应用最佳拟合线时,我会创建一条等间距线来表示日期,以简化回归。所以我使用np.linspace()来创建一组等于日期数的间隔。在

代码:from io import StringIO

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

data = StringIO("""

date value

24-Jan-16 0.786

25-Feb-16 0.781

29-Apr-16 0.786

15-May-16 0.761

16-Jun-16 0.762

04-Sep-16 0.783

22-Oct-16 0.797

""")

df = pd.read_table(data, delim_whitespace=True)

# To read from csv use:

# df = pd.read_csv("/path/to/file.csv")

df.loc[:, "date"] = pd.to_datetime(df.loc[:, "date"], format="%d-%b-%y")

y_values = df.loc[:, "value"]

x_values = np.linspace(0,1,len(df.loc[:, "value"]))

poly_degree = 3

coeffs = np.polyfit(x_values, y_values, poly_degree)

poly_eqn = np.poly1d(coeffs)

y_hat = poly_eqn(x_values)

plt.figure(figsize=(12,8))

plt.plot(df.loc[:, "date"], df.loc[:,"value"], "ro")

plt.plot(df.loc[:, "date"],y_hat)

plt.title('WSC-10-50')

plt.ylabel('NDVI')

plt.xlabel('Date')

plt.savefig("NDVI_plot.png")

输出:

AvK3i.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值