推广 热搜:

python读取股票板块(Python获取股票数据和可视化)

   2025-07-19 13:07  发布时间: 2个月前   2560
核心提示:抓住自己最有兴趣的东西,由浅入深,循序渐进地学。 ——华罗庚引 言数据获取是金融量化分析的第一步,找不到可靠、真实的数据,量化分析就无从谈起。随着信息技术的不断发展,数据获取渠道也越来越多,尤其是网络爬虫,近几年愈来愈火,网络培训视频和教程满天飞。然而,很多人毕竟精力有限,没有时间专门去学习网络爬虫技术。当然,不会网络爬虫不要

抓住自己最有兴趣的东西,由浅入深,循序渐进地学。

——华罗庚

引 言

数据获取是金融量化分析的第一步,找不到可靠、真实的数据,量化分析就无从谈起。随着信息技术的不断发展,数据获取渠道也越来越多,尤其是网络爬虫,近几年愈来愈火,网络培训视频和教程满天飞。然而,很多人毕竟精力有限,没有时间专门去学习网络爬虫技术。当然,不会网络爬虫不要紧,我们还可以借助的开源数据包(其本质也是网络爬虫),如:、、和等财经数据API,这样可以节省不少精力。本文将以股票行情数据为例,逐一、简要介绍如何使用这几个开源库获取数据并进行可视化。在介绍使用的API获取数据之前,本文首先给出了根据股票涨跌驱动因素,广泛获取求证信息来源,如下面图1、2、3所示,很多网站提供了非结构化的数据(信息),如股票论坛,信息含量非常大,后期考虑使用网络爬虫爬取股票论坛评论数据,建立舆情指标,探讨群体性交易情绪与股价走势的关系。本篇属于金融量化入门学习的分享之一,希望能起到抛砖引玉的作用。

图1 股票涨跌驱动因素

图2 公司基本面信息源

图3 知名股票论坛

01 社区

公众号上不少文章使用了库获取财经和股票交易数据,当时用的是旧版本()。社区目前主要维护新版本: pro,数据更稳定质量更高,可获取沪深股票行情、财务、市场参考等数据,以及指数(含国外股指)、基金、期货、期权、宏观经济、行业经济等财经数据,为金融量化爱好者节省了大量宝贵时间。此外,近期还增加了新闻联播的文本数据,为文本分析和数据挖掘提供了很好的素材。不过,新版本需要注册获取token才能免费使用,注册网址: 。安装(进入cmd模式):pip ,或升级:pip --。下面以股票行情数据为例,展示下如何获取数据。股票行情数据以股票行情数据为例,简要介绍如何获取数据。

#先引入后面分析、可视化等可能用到的库 as as pd . as plt#正常显示画图时出现的中文和负号from pylab .["font.sans-serif"]=[""]mpl.["axes."]=False#设置="你的token"#ts.(token)pro = ts.(token)

个股行情数据:

pro.()参数:is_hs:是否沪深港通标的,N否、H沪股通、S深股通;:上市状态,L上市、D退市、P暂停上市;:交易所 SSE上交所,SZSE深交所,HKEX港交所。 pro.daily(= 或 =)日行情:daily;周行情:;月行情:

#获取当前上市的股票代码、简称、注册地、行业、上市时间等数据basic=pro.(="L")#查看前五行数据#basic.head(5)#获取平安银行日行情数据pa=pro.daily(=".SZ", ="", ="")#pa.head()#K线图可视化from .index=pd.(pa.)pa=pa.()v1=list(pa.loc[:,["open","close","low","high"]].)t=pa.=list(t.("%Y%m%d"))kline = Kline("平安银行K线图"=15)kline.add("", v0, =True, =[""], =["max", "min"], e=60, =["", ""] )#kline.("上证指数图.html")kline

#定义获取多只股票函数:def (): ={} for code in : [code]=pro.daily(=code, = =end) #保存本地def (): for in .items(): data.("c:/zjy//"+code+".csv", =True, index=False)=list(basic.)[:15]start=""end=""=()[".SZ"].tail()#将数据保存到本地()#读取本地文件夹里所有文件 os#文件存储路径file="c:/zjy//"g=os.walk(file)=[]for in g: for in : .(os.path.join())print()#将读取的数据文件放入一个字典中df={}#从文件名中分离出股票代码code=[name.split(".")[0] for name in ]for i in range(len()): =file+[i] df[code[i]]=pd.()#查看第一只股票前五行数据#df[code[0]].head()

指数数据:pro.(=)

def (): """是字典格式""" ={} for in .items(): df=pro.(=code) df.index=pd.(df.) [name]=df.() #获取常见股票指数行情={"上证综指": ".SH","深证成指": ".SZ", "沪深300": ".SH","创业板指": ".SZ", "上证50": ".SH", "中证500": ".SH", "中小板指": ".SZ","上证180": ".SH"}=()#["上证综指"].head()#对股价走势进行可视化分析 =list(.keys())#每个子图的 = [] # 每个子图的位置 = ["#","#", "#", "#", "#","#", "#", "#","#","#"]fig = plt.(=(16,18))fig.("A股股指走势"=18)for pos in np.(len()): ax = fig.([pos]) =[[pos]]["close"] b = ax.plot(=[pos]) ax.([pos]) # 将右上边的两条边颜色设置为空,相当于抹掉这两条边 ax = plt.gca() ax.["right"].("none") ax.["top"].("none") plt.show()

02 证券宝

也是免费、开源的证券数据平台。提供了大量准确、完整的证券历史行情数据、上市公司财务数据等。 通过 API获取证券数据信息,可以满足量化交易投资者、数量金融爱好者、计量经济从业者数据需求。返回的数据格式: 类型,以便于用/NumPy/进行数据分析和可视化。证券宝链接地址:文档 。安装:进入cmd模式,pip

as bs

# 登陆系统

#lg = bs.login()

# 获取历史K线数据

## ()= ""rs = bs.("sh.", ="2000-01-01", ="2018-09-07", ="d", ="2") #="d"取日k线,="3"默认不复权,#1:后复权;2:前复权 = []while (rs. == "0") & rs.next(): # 获取一条记录,将记录合并在一起 .(rs.()) = pd.( =rs.).index=pd.(.date)

# 结果集输出到csv文件

##.("c:/zjy/.csv", # ="gbk", index=False).head()

# 登出系统
##bs.().info()#将某些转化=.apply(pd. ="").info().close.plot(=(16,8))ax = plt.gca() ax.["right"].("none") ax.["top"].("none") plt.show()

03 雅虎财经API

原来的雅虎财经开源库2018年后已不在维护,还好有大神推出了雅虎财经的修复版本,使用pip 安装。

as fyfy.()def (="2000-01-01", ="2019-01-07"): data = fy.(tick, start= end=) =["AAPL", "GOOG","AMZN","FB"] = {}for in : []=() = ["苹果公司股价走势","谷歌公司股价走势", "亚马逊公司股价走势","公司股价走势"] #每个子图的 = [] # 每个子图的位置 = ["#","#", "#", "#", "#","#", "#", "#","#","#"]fig = plt.(=(16,9))fig.("美股&指数走势"=18)for pos in np.(len()): ax = fig.([pos]) = [[pos]]["Adj Close"] b = ax.plot(=[pos]) ax.([pos]) ax = plt.gca() ax.["right"].("none") ax.["top"].("none") plt.show()

= { ".SS":"中国上证指数", "^DJI":"道琼斯工业平均指数", "^IXIC":"纳斯达克综合指数", "^N225":"日本日经225指数", "^HSI" :"香港恒生指数", "^FCHI":"法国CAC40指数", "^FTSE":"英国富时100指数", "^GDAXI":"德国法兰克福DAX指数"}={}for in .keys(): []=() =list(.())=list()#每个子图的 = [] # 每个子图的位置 = ["#","#", "#", "#", "#","#", "#", "#","#","#"]fig = plt.(=(16,18))fig.("全球股指走势"=18)for pos in np.(len()): ax = fig.([pos]) =[[pos]]["Adj Close"] b = ax.plot(=[pos]) ax.([pos]) ax = plt.gca() ax.["right"].("none") ax.["top"].("none") plt.show()

关于金融量化

专注于分享在金融领域的实际应用,包括金融数据分析与挖掘(含文本分析)、金融建模与量化投资等。公众号本身具有AI自动回复功能,具有查询天气、星座运势、专业名词、中英翻译、讲笑话、小故事等功能,关于公众号文章源码及其他资料,可回复“指南”查看详情。
 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  赣ICP备2024040164号-4