10

通过python的yfinance包获取股票数据

 3 years ago
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.
neoserver,ios ssh client

股票历史数据时是非常重要的一种时间序列数据,它在数据科学中占据重要的作用。那么现在开始学习时间数据序列的处理,为以后的股票预测分析做准备。当然数据分析离不开数据的,因此本文首要的问题是如何获取股票数据用于机器学习分析? 自从雅虎公布了股票数据的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进行数据获取,因此在国内可能访问速度过慢,建议在国外服务器上运行或者挂代理。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK