目录
金融数据
数据分析离不开数据的获取,这里介绍几种常用的获取金融方面数据的方法。
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()