通过python的yfinance包获取股票数据
source link: https://www.bobobk.com/512.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
股票历史数据时是非常重要的一种时间序列数据,它在数据科学中占据重要的作用。那么现在开始学习时间数据序列的处理,为以后的股票预测分析做准备。当然数据分析离不开数据的,因此本文首要的问题是如何获取股票数据用于机器学习分析? 自从雅虎公布了股票数据的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进行数据获取,因此在国内可能访问速度过慢,建议在国外服务器上运行或者挂代理。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK