python股票分析挖掘预测金融大数据获取方法和实现(1)

news/2024/7/4 10:31:18

本人股市多年的老韭菜了,各种股票分析书籍,技术指标书籍阅历无数,萌发想法,何不自己开发个股票预测分析软件,选择python因为够强大,它提供了很多高效便捷的数据分析工具包,

我们已经初步的接触与学习其中数据分析中常见的3大利器---Numpy,PandasMatplotlib库。

数据是万物之源,我们做股票分析,首要条件是获取最新的,最全面的金融数据,我们才能进行下一步开发。

我们获取数据主要有二大渠道,爬虫爬取金融网站数据和金融网站主动提供API接口方式获得,这一章简单介绍一下金融数据接口的使用方法:

 金融数据接口

目前有不少支持Python接口的金融数据库,比如Tushare、AKshare、Baostock、wind等,都可以获得国内股票、基金、期货、利率等数据。总共加起来几十个差不多,各位开发者可以按照自己的情况选择(很多接口版本如果升级,很大可能接口代码有所改变,所以开发者随时要调整代码,才能获得数据

(1)AKshare接口

 AKShare 是基于 Python 的开源金融数据接口库,目的是实现对股票、期货、期权、基金、债券、外汇等金融产品和另类数据从数据采集,数据清洗到数据下载的工具,满足金融数据科学家、数据科学爱好者在数据获取方面的需求。
它的特点是利用 AKShare 获取的是基于可信任数据源发布的原始数据,开发人员可以利用原始数据进行再加工,从而得出科学的结论。

  优点:

  • 码语法符合PEP8 规范数据接口的命名;
  • 最佳支持Python 3.7.5 及其以上版本;
  • 提供最佳的文档支持每个数据接口提供详细明和示例只需要复制粘就可以下数据;
  • 续维护由于目页变化而致的部分数据接口运行异常问题;
  • 更新财经数据接口时优化源;

  缺点:

如果是免费版本,如果访问过多随时封闭接口,也存在接口版本升级,很多获取数据代码随着改变,增加开发人员工作量。

安装: pip install akshare

 

代码案例:


import akshare as ak
import pandas as pdpd.set_option('expand_frame_repr', False)  # True就是可以换行显示。设置成False的时候不允许换行
pd.set_option('display.max_columns', None)  # 显示所有列
# pd.set_option('display.max_rows', None)  # 显示所有行
pd.set_option('colheader_justify', 'centre')  # 显示居中def a_hist():# period#     str#     choice of {'daily', 'weekly', 'monthly'}# start_date#     str#     开始查询的日期# end_date#     str#     结束查询的日期# adjust#     str#     默认返回不复权的数据;#     qfq: 返回前复权后的数据;#     hfq: 返回后复权后的数据stock_zh_a_hist_df = ak.stock_zh_a_hist(symbol="002389", period="weekly", start_date="20231001",end_date='20231227',adjust="qfq")print(stock_zh_a_hist_df)if __name__ == "__main__":a_hist()# a_hist_min()#执行结果成功得到数据:日期     开盘     收盘     最高     最低     成交量           成交额    振幅   涨跌幅   涨跌额   换手率
0   2023-10-13  19.98  20.14  21.46  19.83  665132  1.367442e+09  8.28  2.34  0.46  6.73
1   2023-10-20  20.32  19.72  21.12  19.60  598403  1.219992e+09  7.55 -2.09 -0.42  6.05
2   2023-10-27  19.59  20.55  20.68  18.79  497698  9.752065e+08  9.58  4.21  0.83  5.04
3   2023-11-03  20.35  19.82  20.46  19.58  447499  8.934958e+08  4.28 -3.55 -0.73  4.53
4   2023-11-10  19.86  19.69  20.06  19.39  429908  8.483078e+08  3.38 -0.66 -0.13  4.35

(2)pandasdatareader接口 

接口特点 

 pandasdatareader是一个使用Python语言获取数据的库,主要通过pandas库对Yahoo Finance、Google Finance、World Bank等数据源进行操作。pandasdatareader支持多个金融数据源,可以使用一个API来获取多个数据源的数据信息,使得数据的获取更加方便

   安装:pip install pandas-datareader 

代码案例: 


#使用pip进行安装:pip install pandas-datareader
import pandas as pd
import pandas_datareader.data as webstart = pd.to_datetime('2020-05-01')
end = pd.to_datetime('2023-05-31')data = web.DataReader('AAPL', 'yahoo', start, end)
print(data.head())

(3) efinance接口 

优点

 efinance 是由个人打造的用于获取股票、基金、期货数据的免费开源 Python 库,你可以使用它很方便地获取数据以便更好地服务于个人的交易系统需求。

缺点

免费版查看数据的频率和接口获得的数据受到限制,具体的规则由接口提供者制定。

安装:pip install efinance

代码案例

 下面这个例子完成了从网上获取数据保存到本地,然后通过Matplotlib来实现简单的k线图

import efinance as efimport mplfinance as mpfimport seaborn as snsdf = ef.stock.get_quote_history('600118', beg='20230601', end='20231101')
df.head()df.to_csv('date.csv', encoding='utf-8-sig', index=None)df_arr = df.valuesfrom datetime import datetimedf['日期'] = df['日期'].apply(lambda x: datetime.strptime(x, '%Y-%m-%d'))
import matplotlib.pyplot as pltplt.plot(df['日期'], df['收盘'])
plt.show()# (7) 绘制股票K线图、均线图、成交量柱状图
fig, axes = plt.subplots(2, 1, sharex=True, figsize=(15, 8))
ax1, ax2 = axes.flatten()
mpf.candlestick(ax1, df_arr, width=0.6, colorup='r', colordown='g', alpha=1.0)
ax1.plot(df_arr[:, 0], df['MA5'])
ax1.plot(df_arr[:, 0], df['MA10'])
ax1.set_title('万科A')
ax1.set_ylabel('价格')
ax1.grid(True)
ax1.xaxis_date()
ax2.bar(df_arr[:, 0], df_arr[:, 5])
ax2.set_xlabel('日期')
ax2.set_ylabel('成交量')
ax2.grid(True)
ax2.xaxis_date()

本地date.csv数据保存成功,呈现出来的k线图

 

其他接口

除此以外还有几十种金融数据接口,就不一一介绍,有兴趣的朋友可以研究,选择自己合适的开发
附国内外金融数据接口大全
•    findatapy - 获取彭博终端,Quandl和雅虎财经的数据
•    googlefinance - 从谷歌财经获取实时股票价格
•    yahoo-finance - 从雅虎财经下载股票报价,历史价格,产品信息和财务报表
•    pandas-finance - 提供高级接口下载和分析金融时间序列
•    pyhoofinance - 从雅虎财经批量获取股票数据
•    yfinanceapi - 从雅虎财经获取数据
•    yql-finance - 从雅虎财经获取数据
•    ystockquote - 从雅虎财经获取实时报价
•    wallstreet - 实时股票和期权报价
•    stock_extractor - 从网络上爬取股票信息
•    Stockex - 从雅虎财经获取数据
•    finsymbols - 获取全美证券交易所,纽约证券交易所和纳斯达克上市公司的详细数据
•    inquisitor - 从Econdb获取经济数据,Econdb是全球经济指标聚合器
•    chinesestockapi - 获取A股数据
•    exchange - 获取最新的汇率报价
•    ticks - 命令行程序,获取股票报价
•    pybbg - 彭博终端COM的Python接口
•    ccy - 获取外汇数据
•    tushare - 获取中国股票,基金,债券和期货市场的历史数据
•    jsm - 获取日本股票市场的历史数据
•    cn_stock_src - 从不同数据源获取中国的股票数据
•    coinmarketcap - 从coinmarketcap获取数字货币数据
•    after-hours - 获取美股盘前和盘后的市场价格
•    bronto-python - 整合Bronto API接口
•    pytdx - 获取中国国内股票的实时报价
•    pdblp - 整合Pandas和彭博终端的公共接口
•    tiingo - 从Tiingo平台获取股票日K线和实时报价/新闻流
•    IEX - 从IEX交易所获取股票的实时报价和历史数据
•    alpaca-trade-api - 从Alpaca平台获取股票实时报价和历史数据,并提供交易接口交易美股
•    metatrader5 - 集成Python和MQL5交易平台,适合外汇交易
•    akshare - 获取中国股票,基金,债券和宏观经济数据
•    yahooquery - 从雅虎财经获取数据
•    investpy - 从英为财经(http://Investing.com)获取数据
•    yliveticker - 从雅虎财经通过Websocket获取实时报价

注释:上述接口获取数据代码我已经整理完成,有兴趣的朋友可以下载研究。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/6155.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Django Web 开发实战-实现用户管理系统(部门管理、用户管理、注册登录、文件上传)

简介 基于Django Python Web框架 MySQL Bootstrap 开发的用户管理系统。支持增删改查、模糊搜索、分页。 功能介绍 部门管理---》已完成 用户管理---》已完成 认证(注册/登录)---》开发中 数据统计---》待开发 文件上传---》待开发 效果图 部门…

卫星互联网与MEC融合方案研究

卫星互联网与MEC融合方案研究 作者:温特、王立中、司鹏、颜明明、马恬、郭伊蒙 中国卫通集团股份有限公司 本文首发:第十九届卫星通信学术年会 摘 要:在卫星互联网中引入移动边缘计算(MEC)技术可有效提高用户体验质量,降低运营成…

DsPdf:GcPdf 7.0 for NET Crack

DsPdf:GcPdf 7.0 用于全面文档控制的功能丰富的 C# .NET PDF API 库 PDF 文档解决方案(DsPdf,以前称为 GcPdf)可让您快速、高效地生成文档,且无需依赖任何内存。 在 C# .NET 中生成、加载、编辑和保存 PDF 文档 支持多种语言的全…

elasticsearch系列四:集群常规运维

概述 在使用es中如果遇到了集群不可写入或者部分索引状态unassigned,明明写入了很多数据但是查不到等等系列问题该怎么办呢?咱们今天一起看下常用运维命令。 案例 起初我们es性能还跟得上,随着业务发展壮大,发现查询性能越来越不…

不会代码(零基础)学语音开发(语音播报红外寻迹/接近传感器实时输出)

这个有意思了,红外寻迹传感器是为智能⼩车、机器⼈等⾃动化机械装置提供⼀种多⽤途的红外线探测系统的解决⽅案。当有物体靠近的时候,可以提示“危险,危险,危险”。 日常中,应用的场景也很多,想开发点什么…

思福迪运维安全管理系统 test_qrcode_b RCE漏洞复现

产品简介 思福迪运维安全管理系统是思福迪开发的一款运维安全管理堡垒机 漏洞描述 由于思福迪运维安全管理系统 test_qrcode_b路由存在命令执行漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控…