Python简单指数平滑

Joh*_*wan 0 python csv forecasting exponential python-ggplot

我从www.nasdaq.com下载了TESLA股票;下载CSV文件后,我意识到我需要使用Microsoft Excel 2016转换CSV。然后单击“文本到列”。标头现在很清楚,它们是:日期,收盘价,成交量,开盘价,最高价,最低价。请在此处查看csv文件。LinK:https://drive.google.com/open id = 1cirQi47U4uumvA14g6vOmgsXbV-YvS4l

Preview (The CSV data is from 02/02/2017 until 02/02/2018):

 1. date        | close  |  volume  | open   | high   | low   |
 2. 02/02/2018  | 343.75 |  3696157 | 348.44 | 351.95 | 340.51|
 3. 01/02/2018  | 349.25 |  4187440 | 351.00 | 359.66 | 348.63|
Run Code Online (Sandbox Code Playgroud)

我面临的挑战是创建每个月的数据指针,并使其尽可能接近每月的第一天。我过滤了excel文件,这就是我得到的数据。

 - date | close
 - 01/02/2018 | 349.25
 - 02/01/2018 | 320.53
 - 01/12/2017 | 306.53
 - 01/11/2017 | 321.08
 - 02/10/2017 | 341.53
 - 01/09/2017 | 355.40
 - 01/08/2017 | 319.57
 - 03/07/2017 | 352.62
 - 01/06/2017 | 340.37
 - 01/05/2017 | 322.83
 - 03/04/2017 | 298.52
 - 01/03/2017 | 250.02
 - 02/02/2017 | 251.55
Run Code Online (Sandbox Code Playgroud)

如果创建数据点,则需要创建图形。为了通过简单的指数平滑或有时称为单指数平滑的方式显示原始数据和“平滑数据”的图形。这是有关使用python-ggplot的时间序列预测的更多信息。

 - x | y
 - 01/02/2018 | 349.25
 - 02/01/2018 | 320.53
 - 01/12/2017 | 306.53
 - 01/11/2017 | 321.08
 - 02/10/2017 | 341.53
 - 01/09/2017 | 355.40
 - 01/08/2017 | 319.57
 - 03/07/2017 | 352.62
 - 01/06/2017 | 340.37
 - 01/05/2017 | 322.83
 - 03/04/2017 | 298.52
 - 01/03/2017 | 250.02
 - 02/02/2017 | 251.55
Run Code Online (Sandbox Code Playgroud)

我写的python程序是:

# -*- coding: utf-8 -*-

"""
Created on Sat Feb  3 13:20:28 2018

@author: johannesbambang
"""

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

my_data = pd.read_csv('C:\TESLA Exponential Smoothing\TSLA.csv',dayfirst=True,index_col=0)
my_data.plot()

plt.show()
Run Code Online (Sandbox Code Playgroud)

我的问题是我应该在python程序中进行哪些改进?任何帮助都会很棒。先感谢您。

eri*_*fis 5

statsmodels ExponentialSmoothing呢?

statsmodels包中有很多用于python中的时间序列分析的工具。

from statsmodels.tsa.api import ExponentialSmoothing
Run Code Online (Sandbox Code Playgroud)

另外,请参阅本文中有关python中的时间序列分析的文章:

https://www.analyticsvidhya.com/blog/2018/02/time-series-forecasting-methods/

  • 作为补充:`exp = ExponentialSmoothing(data)``exp_model = exp.fit(smoothing_level=0.1)``result = exp_model.fittedvalues` (2认同)