【问题标题】:How do you plot a trendline for a dataset imported from Excel?如何为从 Excel 导入的数据集绘制趋势线?
【发布时间】:2022-10-14 23:35:32
【问题描述】:

我一直在尝试为我在 pandas 的帮助下从 Excel 导入的 161 个平均温度值的数据集绘制趋势线。但我无法为数据集创建趋势线。我已经按照 YouTube 和其他网站上的教程进行操作,但它不起作用。无论我做什么,我都没有得到趋势线。我试过这样的事情:

m, b = polyfit(data.Year, data.January, 1)
fit = m*(data.Year) + b
plt.plot(data.Year, fit)

这种方法没有任何作用。 我很想得到一些帮助来解决这个问题,谢谢。

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    如果您使用matplotlib,您可以使用polyfit 生成趋势线: import matplotlib.pyplot as plt import numpy as np

    # create sample data
    xdata = np.array([0,1,2,3,4,5,6,7,8,9])
    ydata = np.array([0,1,2,2.5,3.5,4,5,5.5,6,7])
    
    # calculate polynomial
    z = np.polyfit(xdata, ydata, 1)
    f = np.poly1d(z)
    
    # calculate new x's and y's
    x_new = np.linspace(xdata[0], xdata[-1], 50)
    y_new = f(x_new)
    
    plt.plot(xdata, ydata, 'o', x_new, y_new)
    plt.xlim([xdata[0]-1, xdata[-1] + 1])
    plt.show()
    

    【讨论】:

      【解决方案2】:

      使用较新的 numpy.polynomial 包的替代方法可能更易于阅读:

      import matplotlib.pyplot as plt
      from numpy.polynomial import Polynomial
      
      xdata = np.array([0,1,2,3,4,5,6,7,8,9])
      ydata = np.array([0,1,2,2.5,3.5,4,5,5.5,6,7])
      
      poly_fit = Polynomial.fit(xdata, ydata, 1)
      
      plt.plot(xdata, ydata, 'o', *poly_fit.linspace())
      

      【讨论】:

        猜你喜欢
        • 2019-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-25
        • 2020-11-28
        • 1970-01-01
        • 2019-02-21
        • 2021-08-28
        相关资源
        最近更新 更多