一文教你如何利用免费接口在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

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(