金融數據
目錄
數據分析離不開數據的獲取,這里介紹幾種常用的獲取金融方面數據的方法。
pandas-datareader
pandas-datareader 庫包含了全球最著名的幾家公司所整理的金融數據,這些數據庫包括:
安裝
pip install -U pandas-datareader
使用
引入庫:import pandas_datareader.data as web
獲取數據:
web.DataReader(name=,data_source=,start=,end=)
通過指定的數據源獲取金融數據並返回 DataFrame 類型的數據。
- name:數據集名稱,通常是股票代碼
- data_source:數據源,yahoo,google,fred,ff 等
- start,end 起始(默認為 2010/01/01)、結束日期(默認為當天)
start_dt = datetime.datetime(2010, 1, 1)
end_dt = datetime.date.today()
google_data = web.DataReader(name='GOOG', data_source='google', start=start_dt, end=end_dt)
TuShare
- 免費、開源的python財經數據接口包
- 實現對股票等金融數據從數據采集、清洗加工到數據存儲的過程
- TuShare 返回的絕大部分的數據格式都是 pandas DataFrame 類型
數據類型
- 股票分類數據
http://tushare.org/classifying.html - 基本面數據
http://tushare.org/fundamental.html - 宏觀經濟
http://tushare.org/macro.html - 新聞事件數據
http://tushare.org/newsevent.html
使用
- 安裝:
pip install -U tushare
- 引入
import tushare as ts
- 歷史數據獲取
ts.get_k_data()
import tushare as ts
start_dt = datetime.datetime(2010, 1, 1)
end_dt = datetime.date.today()
maotai_data = ts.get_k_data(code='600519', start='2010-01-01', end='2017-07-01')
- 實時數據獲取
ts.get_today_all()
金融學圖表
matplotlib 庫自帶的畫圖工具 matplotib.finance
可滿足我們的基本使用。
API鏈接:https://matplotlib.org/api/finance_api.html
常用的方法有:
- candlestick2__ochl,candlestick2_ohlc
- candlestick_ochl,candlestick_ohlc
- plot_day_summary2_ochl,plot_day_summary2_ohlc
- plot_day_summary_oclh,plot_day_summary_ohlc
案例
引入相應庫:
import tushare as ts
import matplotlib.pyplot as plt
import matplotlib
from matplotlib.dates import date2num, DateFormatter
import matplotlib.finance as mpf
import pandas as pd
%matplotlib inline
獲取數據:
stock_data = ts.get_k_data(code='600519', start='2017-01-01', end='2017-07-01')
candlestick2_ochl
fig, ax = plt.subplots(figsize=(12, 5))
mpf.candlestick2_ochl(ax, stock_data['open'], stock_data['close'], stock_data['high'], stock_data['low'],
width=0.6, colorup='r', colordown='g')
ax.set_xticklabels(stock_data['date'])
plt.grid(True)
plt.xticks(rotation=45)
plt.ylabel('Stock Price')
plt.xlabel('Date')
plt.show()
candlestick_ochl
ochl_data = stock_data[['date', 'open', 'close', 'high', 'low']]
ochl_data['date'] = pd.to_datetime(ochl_data['date'])
ochl_data['date'] = ochl_data['date'].apply(date2num)
fig, ax = plt.subplots(figsize=(12, 5))
# 蠟燭圖
mpf.candlestick_ochl(ax, ochl_data.values, width=.6, colorup='r', colordown='g')
ax.xaxis_date()
ax.autoscale_view()
ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))
plt.grid(True)
plt.xticks(rotation=45)
plt.ylabel('Stock Price')
plt.xlabel('Date')
plt.show()
plot_day_summary2_ochl
fig, ax = plt.subplots(figsize=(12, 5))
mpf.plot_day_summary_ochl(ax, stock_data['open'], stock_data['close'], stock_data['high'], stock_data['low'],
colorup='r', colordown='g')
ax.set_xticklabels(stock_data['date'])
plt.grid(True)
plt.xticks(rotation=45)
plt.ylabel('Stock Price')
plt.xlabel('Date')
plt.show()
plot_day_summary_oclh
oclh_data = stock_data[['date', 'open', 'close', 'low', 'high']]
oclh_data['date'] = pd.to_datetime(oclh_data['date'])
oclh_data['date'] = oclh_data['date'].apply(date2num)
fig, ax = plt.subplots(figsize=(12, 5))
mpf.plot_day_summary_oclh(ax, oclh_data.values, colorup='r', colordown='g')
ax.xaxis_date()
ax.autoscale_view()
ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))
plt.grid(True)
plt.xticks(rotation=45)
plt.ylabel('Stock Price')
plt.xlabel('Date')
plt.show()