使用quandl包获取股票数据
1、包括港股数据、沪深股数据、美股数据以及其他海外股数据等,国内股票数据好像是付费的。首先在Anaconda3界面安装quandl包,具体操作如下图:
2、导入quandl包和datetime包后,指定你自己的api_key(登录quandl.com注册),格式为quandl.get(dataset,start_date,end_date),参数分别表示数据集的quandl代码(官网可查)、数据的起始日期和结束日期。
from datetime import date
import quandl
quandl.ApiConfig.api_key="API key"#输入你自己的API key
data=quandl.get("HKEX/02319",start_date=date(2018,1,1),end_date=date.today())
#从港股数据中获取规定时段内蒙牛乳业股票数据
data.head()
Out[5]:
Nominal Price Net Change ... Turnover (000) Lot Size
Date ...
2018-01-02 23.00 None ... 218657.0 None
2018-01-03 23.40 None ... 195503.0 None
2018-01-04 22.45 None ... 416411.0 None
2018-01-05 22.40 None ... 498251.0 None
2018-01-08 23.40 None ... 344637.0 None
[5 rows x 12 columns]
data.columns#查看列名
Out[6]:
Index(['Nominal Price', 'Net Change', 'Change (%)', 'Bid', 'Ask', 'P/E(x)',
'High', 'Low', 'Previous Close', 'Share Volume (000)', 'Turnover (000)',
'Lot Size'], dtype='object')
df=data[['Nominal Price','P/E(x)','High','Low','Previous Close']]
#取出想要的数据列
df.tail()
Out[7]:
Nominal Price P/E(x) High Low Previous Close
Date
2020-01-16 32.70 None 32.85 32.05 32.40
2020-01-17 32.15 None 32.90 31.70 32.70
2020-01-20 32.25 None 33.00 32.10 32.15
2020-01-21 31.40 None 32.50 31.30 32.25
2020-01-22 32.25 None 32.40 31.25 31.40
使用Pandas-datareader模块获取股票数据
1、Pandas库的子模块pandas-datareader提供了从雅虎财经、新浪财经等网站获取股票等金融数据的接口。首先在Anaconda3界面安装Pandas-datareader,过程与quandl一样;或者在Anaconda prompt界面输入pip install pandas-datareader安装:
2、使用 pandas_datareader.data模块里的DataReader函数,格式为DataReader(name, data_source, start, end),参数分别表示数据集的名称、数据源、数据起始和结束日期;
3、数据集名称为股票代码时,美股直接输入股票代码如GOOG;其他股票输入格式为“股票代码.对应股市”,上交所股票后面加上.SS,深交所股票加上.SZ,港股加上.hk;
import pandas_datareader.data as web
df=web.DataReader("000001.SS","yahoo",date(2019, 1, 1),date.today())
#从雅虎财经读入2019年至今的上证指数数据
pd.set_option('display.max_columns',None)#显示所有列
df.head()
Out[2]:
High Low Open Close Volume \
Date
2019-01-02 2500.278076 2456.423096 2497.881104 2465.291016 109900
2019-01-03 2488.479004 2455.926025 2461.782959 2464.363037 124400
2019-01-04 2515.315918 2440.906982 2446.019043 2514.867920 168900
2019-01-07 2536.978027 2515.508057 2528.698975 2533.089111 177300
2019-01-08 2531.344971 2520.165039 2530.300049 2526.461914 158100
Adj Close
Date
2019-01-02 2465.291016
2019-01-03 2464.363037
2019-01-04 2514.867920
2019-01-07 2533.089111
2019-01-08 2526.461914
df.Close.plot()#画出上证指数收盘价走势
Out[18]: <matplotlib.axes._subplots.AxesSubplot at 0x1e529457048>
使用Tushare包导入金融数据
同样步骤安装后,到官网注册获得一个token,具体操作以及可查询的数据见官网Tushare。比如平安银行的日价格数据可按照如下方式获取:
import tushare as ts
pro = ts.pro_api('9c7248d161b00c3fb17……563c983d07fabcbf95e')#你的token
pingan=pro.daily(ts_code='601318.SH',start_date='20170101',end_date='20190110')
pingan
Out[16]:
ts_code trade_date open ... pct_chg vol amount
0 601318.SH 20190110 56.87 ... 0.9658 673282.23 3858446.844
1 601318.SH 20190109 56.20 ... 2.0609 819146.13 4673997.766
2 601318.SH 20190108 56.05 ... -0.8881 559920.92 3116381.576
3 601318.SH 20190107 57.09 ... -0.5125 765930.07 4326151.604
4 601318.SH 20190104 55.28 ... 1.6343 1129855.85 6376773.583
.. ... ... ... ... ... ... ...
489 601318.SH 20170109 35.47 ... -0.0600 270616.97 958713.466
490 601318.SH 20170106 35.73 ... -0.8100 362862.27 1290794.307
491 601318.SH 20170105 35.73 ... 0.2200 286910.33 1027949.508
492 601318.SH 20170104 35.69 ... -0.0800 252574.05 900817.691
493 601318.SH 20170103 35.34 ... 0.7100 296977.99 1062134.997
[494 rows x 11 columns]
其他方法
1、baostock证券宝:baostock
证券宝www.baostock.com是一个免费、开源的证券数据平台(无需注册)。提供大量准确、完整的证券历史行情数据、上市公司财务数据等。通过python API获取证券数据信息,满足量化交易投资者、数量金融爱好者、计量经济从业者数据需求。返回的数据格式:pandas DataFrame类型,以便于用pandas/NumPy/Matplotlib进行数据分析和可视化。
2、AkShare:AkShare
AkShare 是基于 Python 的开源金融数据接口库, 目的是实现对股票, 期货, 期权, 基金, 外汇, 债券, 指数, 数字货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集, 数据清洗, 到数据落地的一套开源工具, 满足金融数据科学家, 数据科学爱好者在金融数据获取方面的需求。