【问题标题】:How do I add a trendline to stock price data in Python?如何在 Python 中为股票价格数据添加趋势线?
【发布时间】:2021-07-05 02:37:03
【问题描述】:

我正在尝试在 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()

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

【问题讨论】:

    标签: python dataframe plot statistics trendline


    【解决方案1】:

    你可以试试这个:

    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 年):

    【讨论】:

      【解决方案2】:

      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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-05
        • 2018-11-20
        • 2021-10-25
        • 2016-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多