(十五)从外部网站导入金融数据

使用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 的开源金融数据接口库, 目的是实现对股票, 期货, 期权, 基金, 外汇, 债券, 指数, 数字货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集, 数据清洗, 到数据落地的一套开源工具, 满足金融数据科学家, 数据科学爱好者在金融数据获取方面的需求。

发布了31 篇原创文章 · 获赞 2 · 访问量 1608

猜你喜欢

转载自blog.csdn.net/hzk427/article/details/104074285