這篇文章主要介紹“Python怎么實現折線圖顯示股票數據”,在日常操作中,相信很多人在Python怎么實現折線圖顯示股票數據問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python怎么實現折線圖顯示股票數據”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
準備數據
可視化數據、審查數據
處理數據
根據ACF、PACF定階
擬合ARIMA模型
預測
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
import pandas as pd
import pandas_datareader
import datetime
import matplotlib.pylab as plt
from matplotlib.pylab import style
from statsmodels.tsa.arima_model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
style.use('ggplot') # 設置圖片顯示的主題樣式
# 解決matplotlib顯示中文問題
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默認字體
plt.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負號'-'顯示為方塊的問題
def run_main():
"""
主函數
"""
# 1. 準備數據
# 指定股票分析開始日期
start_date = datetime.datetime(2009, 1, 1)
# 指定股票分析截止日期
end_date = datetime.datetime(2019, 4, 1)
# 股票代碼
stock_code = '600519.SS' # 滬市貴州茅臺
stock_df = pandas_datareader.data.DataReader(
stock_code, 'yahoo', start_date, end_date
)
# 預覽數據
print(stock_df.head())
# 2. 可視化數據
plt.plot(stock_df['Close'])
plt.title('股票每日收盤價')
plt.show()
# 按周重采樣
stock_s = stock_df['Close'].resample('W-MON').mean()
stock_train = stock_s['2014':'2018']
plt.plot(stock_train)
plt.title('股票周收盤價均值')
plt.show()
# 分析 ACF
acf = plot_acf(stock_train, lags=20)
plt.title("股票指數的 ACF")
acf.show()
# 分析 PACF
pacf = plot_pacf(stock_train, lags=20)
plt.title("股票指數的 PACF")
pacf.show()
# 3. 處理數據,平穩化數據
# 這里只是簡單第做了一節差分,還有其他平穩化時間序列的方法
stock_diff = stock_train.diff()
diff = stock_diff.dropna()
print(diff.head())
print(diff.dtypes)
plt.figure()
plt.plot(diff)
plt.title('一階差分')
plt.show()
acf_diff = plot_acf(diff, lags=20)
plt.title("一階差分的 ACF")
acf_diff.show()
pacf_diff = plot_pacf(diff, lags=20)
plt.title("一階差分的 PACF")
pacf_diff.show()
# 4. 根據ACF和PACF定階并建立模型
model = ARIMA(stock_train, order=(1, 1, 1), freq='W-MON')
# 擬合模型
arima_result = model.fit()
print(arima_result.summary())
# 5. 預測
pred_vals = arima_result.predict(start=str('2019-01'),end=str('2019-03'),
dynamic=False, typ='levels')
print(pred_vals)
# 6. 可視化預測結果
stock_forcast = pd.concat([stock_s, pred_vals], axis=1, keys=['original', 'predicted'])
plt.figure()
plt.plot(stock_forcast)
plt.title('真實值vs預測值')
plt.savefig('./stock_pred.png', format='png')
plt.show()
if __name__ == '__main__':
run_main()到此,關于“Python怎么實現折線圖顯示股票數據”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。