一文教你如何利用免费接口在Python中获取并整理基金历史净值数据

2023-10-12 17:10

本文主要是介绍一文教你如何利用免费接口在Python中获取并整理基金历史净值数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一文教你如何利用免费接口在Python中获取并整理基金历史净值数据

  • 一、接口地址与格式
  • 二、获取数据与整理

这篇文章教大家如何在Python中使用免费的数据接口获取我们想要的各基金历史净值数据,以便我们进行后续的基金量化分析。

一、接口地址与格式

这里使用的接口地址是https://api.doctorxiong.club/v1/fund/detail?code=xxx,其中xxx为基金对应代号。

这里我们随便选一个例子,比如“公募一哥”张坤的易方达蓝筹精选混合,代号005827,对应的接口地址就是https://api.doctorxiong.club/v1/fund/detail?code=005827

我们用浏览器打开看看,是下面这样的数据格式:
在这里插入图片描述
分析结果,该接口返回的是一个字典,里面的key有"code",“message”,“data”。
其中"data"又是一个字典,里面包括该基金的各种信息和数据的key,比如"code",“name”,"manager"等等;
该基金的历史单位净值和历史累计净值数据就对应于其中的"netWorthData"和"totalNetWorthData"的key里。(大家可以自行观察一下)

二、获取数据与整理

使用到的库:

import urllib
from bs4 import BeautifulSoup
import json
import pandas as pd

先对接口地址发起请求,并利用beautifulsoup解析标签的功能来获取上面所示的文本信息。

>>> html=urllib.urlopen("https://api.doctorxiong.club/v1/fund/detail?code=005827")
>>> bsobj=BeautifulSoup(html.read())
>>> p_text = bsobj.p.get_text()

此时得到的p_text是unicode类型的文本,我们需要利用json将它转换成字典的数据类型。

>>> text_dict = json.loads(p_text)

现在我们来看一下这个字典里是不是有我们刚刚提到的各种key:

>>> print text_dict['data']['code']
005827
>>> print text_dict['data']['name']
易方达蓝筹精选混合
>>> print text_dict['data']['manager']
张坤

然后取出历史单位净值和历史累计净值,每天的数据都是以列表的形式保存,最后一个对象对应着今天的净值情况,我们输出看一看。

>>> Wdata1 = text_dict['data']['netWorthData']
>>> Wdata2 = text_dict['data']['totalNetWorthData']
>>> print Wdata1[-1]
[u'2021-09-10', u'2.5779', u'2.72', u'']
>>> print Wdata2[-1]
[u'2021-09-10', u'2.5779']

因为这个基金没有过分红派息,所以单位净值和累计净值是一样的,都是2.5779。值得注意的是单位净值里还有日涨幅率的数据,也就是上面的2.72。

最后我们把累计净值数据转换成float类型,并整体保存成DataFrame的数据类型。

>>> for i in Wdata2:i[1] = float(i[1])
>>> Wdf = pd.DataFrame(Wdata2,columns=['Date','Worth'],dtype=float)
>>> print WdfDate   Worth
0    2018-09-05  1.0000
1    2018-09-07  0.9986
2    2018-09-14  0.9985
3    2018-09-21  1.0143
4    2018-09-28  1.0192
5    2018-10-08  0.9972
6    2018-10-09  0.9970
7    2018-10-10  0.9885
8    2018-10-11  0.9731
9    2018-10-12  0.9872
10   2018-10-15  0.9820
11   2018-10-16  0.9793
12   2018-10-18  0.9706
13   2018-10-19  0.9855
14   2018-10-22  1.0084
15   2018-10-23  0.9830
16   2018-10-24  0.9748
17   2018-10-25  0.9623
18   2018-10-26  0.9529
19   2018-10-29  0.9246
20   2018-10-30  0.9201
21   2018-10-31  0.9374
22   2018-11-01  0.9503
23   2018-11-02  0.9893
24   2018-11-05  0.9727
25   2018-11-06  0.9686
26   2018-11-07  0.9667
27   2018-11-08  0.9688
28   2018-11-09  0.9602
29   2018-11-12  0.9593
..          ...     ...
680  2021-08-02  2.5664
681  2021-08-03  2.5785
682  2021-08-04  2.5596
683  2021-08-05  2.5337
684  2021-08-06  2.5355
685  2021-08-09  2.5653
686  2021-08-10  2.6544
687  2021-08-11  2.6350
688  2021-08-12  2.5897
689  2021-08-13  2.5887
690  2021-08-16  2.5718
691  2021-08-17  2.4887
692  2021-08-18  2.5224
693  2021-08-19  2.4838
694  2021-08-20  2.4039
695  2021-08-23  2.4548
696  2021-08-24  2.5038
697  2021-08-25  2.5281
698  2021-08-26  2.4635
699  2021-08-27  2.4561
700  2021-08-30  2.4472
701  2021-08-31  2.4386
702  2021-09-01  2.5119
703  2021-09-02  2.5006
704  2021-09-03  2.5057
705  2021-09-06  2.5506
706  2021-09-07  2.5704
707  2021-09-08  2.5484
708  2021-09-09  2.5097
709  2021-09-10  2.5779[710 rows x 2 columns]

最后的最后,,建议把"Date"转换成datetime的类型,这样方便日后放入各种量化框架中进行测试。

>>> Wdf['Date'] = pd.to_datetime(Wdf['Date'],format='%Y-%m-%d')

这篇关于一文教你如何利用免费接口在Python中获取并整理基金历史净值数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/197247

相关文章

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下