通过python的yfinance包获取股票数据
股票历史数据时是非常重要的一种时间序列数据,它在数据科学中占据重要的作用。那么现在开始学习时间数据序列的处理,为以后的股票预测分析做准备。当然数据分析离不开数据的,因此本文首要的问题是如何获取股票数据用于机器学习分析? 自从雅虎公布了股票数据的api后,获取股票数据显得非常简单高效,本文作者已经找到了一个非常方便的获取股票数据的python包yfinance.为了方便以后的说明,本文以微软公司的股票数据为例,股票名称为MSFT,下面进行说明,步骤如下:
- 安装yfinance包
-
yfianance的基本使用教程
1. 安装yfinance包
包直接使用pip安装即可,当然yfinance使用了在数据分析中广泛应用的包,pandas,numpy,为了从雅虎api获取数据,requests也必不可少,那么直接使用下面的代码一键安装所需的包吧。
#!env bash
pip install numpy
pip install pandas
pip install requests
pip install yfinance
如果已经是conda环境的话,也可以使用下面的代码安装
#! env bash
conda install -c ranaroussi yfinance
安装好后使用import确认是否成功
import yfinance
不报错就说明安装成功了
2. yfianance的基本使用教程
为了理解yfianance的数据构成,大家可以去yfianance官方github查看代码,本文为了更好的理解,把代码分析注释简化为分成几个部分
- Ticker() 模块
- 单个公司股票数据下载
- 多公司股票数据下载
2.1 Ticker() 模块
该部分为股票的meta数据,包含股票基本信息,股东啊等等,直接在下面的代码中看注释信息好了。
# 获取股票基本信息,包括地址,电话领域等等信息
msft.info
# 股票股价的历史信息,以一天间隔为例
hist = msft.history(interval="1d",period="max")
hist
"""
Open High Low Close Volume Dividends Stock Splits
Date
1986-03-13 0.06 0.07 0.06 0.06 1031788800 0.0 0.0
1986-03-14 0.06 0.07 0.06 0.06 308160000 0.0 0.0
1986-03-17 0.06 0.07 0.06 0.07 133171200 0.0 0.0
1986-03-18 0.07 0.07 0.06 0.06 67766400 0.0 0.0
1986-03-19 0.06 0.06 0.06 0.06 47894400 0.0 0.0
... ... ... ... ... ... ... ...
2020-05-04 174.49 179.00 173.80 178.84 30372900 0.0 0.0
2020-05-05 180.62 183.65 179.90 180.76 36839200 0.0 0.0
2020-05-06 182.08 184.20 181.63 182.54 32139300 0.0 0.0
2020-05-07 184.17 184.55 182.58 183.60 28316000 0.0 0.0
2020-05-08 184.98 185.00 183.36 184.68 30877800 0.0 0.0
"""
##可以看到获取到的股票信息都是最新的
# 股票分红,拆分等信息
msft.actions
"""
Dividends Stock Splits
Date
1987-09-21 0.00 2.0
1990-04-16 0.00 2.0
1991-06-27 0.00 1.5
1992-06-15 0.00 1.5
1994-05-23 0.00 2.0
... ... ...
2019-02-20 0.46 0.0
2019-05-15 0.46 0.0
2019-08-14 0.46 0.0
2019-11-20 0.51 0.0
2020-02-19 0.51 0.0
"""
# 只看分红信息
msft.dividends
"""
Date
2003-02-19 0.08
2003-10-15 0.16
2004-08-23 0.08
2004-11-15 3.08
2005-02-15 0.08
...
2019-02-20 0.46
2019-05-15 0.46
2019-08-14 0.46
2019-11-20 0.51
2020-02-19 0.51
"""
# 不同股东占比
msft.major_holders
"""
0 1
0 1.42% % of Shares Held by All Insider
1 74.09% % of Shares Held by Institutions
2 75.16% % of Float Held by Institutions
3 4630 Number of Institutions Holding Shares
"""
# 机构占比
msft.institutional_holders
"""
Holder Shares Date Reported % Out Value
0 Vanguard Group, Inc. (The) 623667281 2019-12-30 0.0822 98352330213
1 Blackrock Inc. 517578906 2020-03-30 0.0683 81627369265
2 State Street Corporation 315672520 2019-12-30 0.0416 49781556404
3 FMR, LLC 239124143 2019-12-30 0.0315 37709877351
4 Capital World Investors 180557630 2019-12-30 0.0238 28473938251
5 Price (T.Rowe) Associates Inc 175036277 2019-12-30 0.0231 27603220882
6 Geode Capital Management, LLC 113401519 2019-12-30 0.0150 17883419546
7 Capital International Investors 99996798 2019-12-30 0.0132 15769495044
8 Northern Trust Corporation 93192050 2019-12-30 0.0123 14696386285
9 Capital Research Global Investors 92776236 2019-12-30 0.0122 14630812417
"""
# 基本上重要信息就这些了
# 其他的好像都不重要
2.2 单个公司股票数据下载
了解了股票基本信息构成后,接下来就是具体操作单个股票获得用于分析的dataframe了。
#! env python
#就是股票信息就好了呗,下面代码下载2000年以来的微软股票信息
import yfinance as yf
msft = yf.download("MSFT", start="2000-01-01")
"""
[*********************100%***********************] 1 of 1 completed
msft
Open High Low Close Adj Close Volume
Date
1999-12-31 58.750000 58.875000 58.125000 58.375000 37.453701 12517600
2000-01-03 58.687500 59.312500 56.000000 58.281250 37.393559 53228400
2000-01-04 56.781250 58.562500 56.125000 56.312500 36.130390 54119000
2000-01-05 55.562500 58.187500 54.687500 56.906250 36.511333 64059600
2000-01-06 56.093750 56.937500 54.187500 55.000000 35.288280 54976600
... ... ... ... ... ... ...
2020-05-04 174.490005 179.000000 173.800003 178.839996 178.839996 30372900
2020-05-05 180.619995 183.649994 179.899994 180.759995 180.759995 36839200
2020-05-06 182.080002 184.199997 181.630005 182.539993 182.539993 32139300
2020-05-07 184.169998 184.550003 182.580002 183.600006 183.600006 28316000
2020-05-08 184.979996 185.000000 183.360001 184.679993 184.679993 30877800
"""
2.3 多公司股票数据下载
同时包也允许同时下载多种股票的信息下载,这里使用苹果公司,直接上代码:
data = yf.download(tickers = "MSFT AAPL",start="2019-01-01",group_by = 'ticker')
data
"""
MSFT AAPL
Open High Low Close Adj Close Volume Open High Low Close Adj Close Volume
Date
2018-12-31 101.290001 102.400002 100.440002 101.570000 99.817421 33173800 158.529999 159.360001 156.479996 157.740005 154.618546 35003500
2019-01-02 99.550003 101.750000 98.940002 101.120003 99.375191 35329300 154.889999 158.850006 154.229996 157.919998 154.794983 37039700
2019-01-03 100.099998 100.190002 97.199997 97.400002 95.719376 42579100 143.979996 145.720001 142.000000 142.190002 139.376251 91312200
2019-01-04 99.720001 102.510002 98.930000 101.930000 100.171211 44060600 144.529999 148.550003 143.800003 148.259995 145.326126 58607100
2019-01-07 101.639999 103.269997 100.980003 102.059998 100.298965 35656100 148.699997 148.830002 145.899994 147.929993 145.002686 54777800
... ... ... ... ... ... ... ... ... ... ... ... ...
2020-05-04 174.490005 179.000000 173.800003 178.839996 178.839996 30372900 289.170013 293.690002 286.320007 293.160004 292.368561 33392000
2020-05-05 180.619995 183.649994 179.899994 180.759995 180.759995 36839200 295.059998 301.000000 294.459991 297.559998 296.756683 36937800
2020-05-06 182.080002 184.199997 181.630005 182.539993 182.539993 32139300 300.459991 303.239990 298.869995 300.630005 299.818390 35583400
2020-05-07 184.169998 184.550003 182.580002 183.600006 183.600006 28316000 303.220001 305.170013 301.970001 303.739990 302.919983 28803800
2020-05-08 184.979996 185.000000 183.360001 184.679993 184.679993 30877800 305.640015 310.350006 304.290009 310.130005 310.130005 33459600
"""
总结
本文介绍了使用yfinance包进行股票数据的信息获取,为后面进行估价预测进行一个预热。该模块是通过雅虎api进行数据获取,因此在国内可能访问速度过慢,建议在国外服务器上运行或者挂代理。
- 原文作者:春江暮客
- 原文链接:https://www.bobobk.com/512.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。