如何为 Python 中的股票价格数据添加趋势线?

How do I add a trendline to stock price data in Python?

我正在尝试制作(即计算和绘制)python 中股票价格数据的趋势线。 到目前为止,我已经尝试使用 numpy 的 polyfit 函数。但是,它对我不起作用,因为我似乎无法定义 y 轴......在这一点上,我想显示我正在处理的数据是有帮助的:

import yfinance as yf
import matplotlib.pyplot as plt

#get the price data for the stock
data = yf.download("AAPL","1990-01-01","2021-01-01")

#plot the data
plt.plot(data["Adj Close"])
plt.show()

任何可以帮助我的想法将不胜感激!

你可以试试这个:

import yfinance as yf
import matplotlib.pyplot as plt

#get the price data for the stock
data = yf.download("AAPL","1990-01-01","2021-01-01")

data["index"]=data.index 
data.reset_index(drop=True,inplace=True)

data.index= data["index"]

#plot the data
plt.plot(data.index,data["Adj Close"])
plt.show()

结果是(示例仅适用于 2020 年和 2021 年):

1- 使用 ployfit 拟合多项式线(例如 2 次,1 次将是线性线)

import numpy as np 
import seaborn as sns

# create numpy array to fint regression line
x = np.arange(data["Adj Close"].size)
fit = np.polyfit(x, data["Adj Close"], deg=2)
fit_function = np.poly1d(fit)

sns.lineplot(data=data["Adj Close"]);
#Linear regression plot
sns.lineplot(x=data["Adj Close"].index ,y=fit_function(x))

或者你可以通过STL分解得到时间序列的趋势

!pip install stldecompose

from stldecompose import decompose

decomp = decompose(data["Adj Close"].values)
trend = decomp.trend

sns.lineplot(data=data["Adj Close"]);
sns.lineplot(x=data["Adj Close"].index ,y=trend)