# -*- coding: utf-8 -*-

"""

* DataSource : 天天基金网 (http://fund.eastmoney.com/161005.html?spm=search),利用网站提供的数据接口,实现基金净值查询,并做一些简单的分析。数据是否准确,分析是否到位

* @Date : 2020-09-29 10:19

* @Auth : xiaoshuai.zhu

* @File :Python 爬取基金历史净值数据.py

* @IDE :PyCharm

* @Version 1.0

"""

# ## 基金单位净值、累计净值

# 一般在每个工作日公布上一个工作日的净值,单位净值=总净资产/基金份额,可以简单理解为基金的价格。

# 因此,净值越高,一定程度上表示基金越“贵”,也有可能是基金经理人管理的好,在交易日买入基金的时候,如果是当天15点之前购入,那么按照当天的基金净值确认份额,购入份额=购买金额/当日基金净值;

# 如果是在当天15点之后购入,则按照下一工作日的基金净值确认份额。因为基金净值一般在第二个工作日(或者当天晚上)才公布,所以在买入基金的时候,是不知道买入确认的基金净值是多少,也就不知道买入的份额是多少,

# 累计净值就是基金净值加上过往分红,反映基金过往整体的收益情况。单位净值提供基金即时交易价格的参考,从基金业绩的角度看,累计净值是一个更重要的指标。

#

# ## 近期入手的基金

#

# 富国天惠成长混合A(前端:161005 后端:161006)

# 导入需要的模块

import requests

from bs4 import BeautifulSoup

import re

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import matplotlib

#指定默认字体

matplotlib.rcParams['font.sans-serif'] = ['SimHei']

matplotlib.rcParams['font.family']='sans-serif'

#解决负号'-'显示为方块的问题

matplotlib.rcParams['axes.unicode_minus'] = False

# 抓取网页

def get_url(url, params=None, proxies=None):

rsp = requests.get(url, params=params, proxies=proxies)

rsp.raise_for_status()

return rsp.text

# 从网页抓取数据

def get_fund_data(code,per=10,sdate='',edate='',proxies=None):

url = 'http://fund.eastmoney.com/f10/F10DataApi.aspx'

params = {'type': 'lsjz', 'code': code, 'page':1,'per': per, 'sdate': sdate, 'edate': edate} # code:指明基金代码;sdate:数据开始日期;edate:数据结束日期;per:指定每页显示的条数,如果不指定该参数,则默认值为10,如果指定该参数值在1-49之间,则每页条数按照指定参数值显示,如果指定该值大于等于50,则每页显示20条;page:per指定了每页的显示条数,存在一页显示不完整的情况,该参数直接指定显示第几页

html = get_url(url, params, proxies)

soup = BeautifulSoup(html, 'html.parser')

# 获取总页数

pattern=re.compile(r'pages:(.*),')

result=re.search(pattern,html).group(1)

pages=int(result)

# 获取表头

heads = []

for head in soup.findAll("th"):

heads.append(head.contents[0])

# 数据存取列表

records = []

# 从第1页开始抓取所有页面数据

page=1

while page<=pages:

params = {'type': 'lsjz', 'code': code, 'page':page,'per': per, 'sdate': sdate, 'edate': edate}

html = get_url(url, params, proxies)

soup = BeautifulSoup(html, 'html.parser')

# 获取数据

for row in soup.findAll("tbody")[0].findAll("tr"):

row_records = []

for record in row.findAll('td'):

val = record.contents

# 处理空值

if val == []:

row_records.append(np.nan)

else:

row_records.append(val[0])

# 记录数据

records.append(row_records)

# 下一页

page=page+1

# 数据整理到dataframe

np_records = np.array(records)

data= pd.DataFrame()

for col,col_name in enumerate(heads):

data[col_name] = np_records[:,col]

return data

# 主程序

if __name__ == "__main__":

data=get_fund_data('161005',per=49,sdate='2020-09-24',edate='2020-09-30')

# 修改数据类型

data['净值日期']=pd.to_datetime(data['净值日期'],format='%Y/%m/%d')

data['单位净值']= data['单位净值'].astype(float)

data['累计净值']=data['累计净值'].astype(float)

data['日增长率']=data['日增长率'].str.strip('%').astype(float)

# 按照日期升序排序并重建索引

data=data.sort_values(by='净值日期',axis=0,ascending=True).reset_index(drop=True)

print(data)

# 获取净值日期、单位净值、累计净值、日增长率等数据并

net_value_date = data['净值日期']

net_asset_value = data['单位净值']

accumulative_net_value=data['累计净值']

daily_growth_rate = data['日增长率']

# 作基金净值图

fig = plt.figure()

#坐标轴1

ax1 = fig.add_subplot(111)

ax1.plot(net_value_date,net_asset_value)

ax1.plot(net_value_date,accumulative_net_value)

ax1.set_ylabel('净值数据')

ax1.set_xlabel('日期')

plt.legend(loc='upper left')

#坐标轴2

ax2 = ax1.twinx()

ax2.plot(net_value_date,daily_growth_rate,'r')

ax2.set_ylabel('日增长率(%)')

plt.legend(loc='upper right')

plt.title('基金净值数据')

plt.show()

# 绘制分红配送信息图

bonus = accumulative_net_value-net_asset_value

plt.figure()

plt.plot(net_value_date,bonus)

plt.xlabel('日期')

plt.ylabel('累计净值-单位净值')

plt.title('基金“分红”信息')

plt.show()

# 日增长率分析

print('日增长率缺失:',sum(np.isnan(daily_growth_rate)))

print('日增长率为正的天数:',sum(daily_growth_rate>0))

print('日增长率为负(包含0)的天数:',sum(daily_growth_rate<=0))

运行预览

python历史净值分析_Python 爬取基金历史净值数据相关推荐

  1. python获取天气分析_Python爬取南京市往年天气预报,使用pyecharts进行分析

    上一次分享了使用matplotlib对爬取的豆瓣书籍排行榜进行分析,但是发现python本身自带的这个绘图分析库还是有一些局限,绘图不够美观等,在网上搜索了一波,发现现在有很多的支持python的绘图 ...

  2. python获取虎牙弹幕_python爬取虎牙弹幕礼物数据

    python爬取虎牙弹幕礼物数据 查看官方文档 找到弹幕传输的方式 生成websocket对应的参数 第一步: 第二步: 调通websocket 建立链接 获取数据和保持心跳 附上完整代码 注: 查看 ...

  3. python微博爬虫分析_python爬取和分析新浪微博(一):scrapy构建新浪微博榜单、博主及微博信息爬虫...

    1. 爬虫项目介绍 爬虫首先基于python scrapy 框架,使用了随机用户代理和IP代理等反爬技巧,将爬取到的微博领域数据,各领域榜单博主信息和博主的微博信息分别存入的mysql数据库对应的表格 ...

  4. python爬取历史天气查询_Python爬取南京历史天气数据(2345天气网)

    最近学习了如何在2345天气网上爬取历史天气数据,并使用pandas库对数据进行清洗和导出.不过,本文方法对其它网站并不一定适用,主要是记录一种思考的方式. 南京的历史天气数据在这个网站上:http: ...

  5. python 图片识别服装_Python爬取某东羽绒服数据,用可视化帮你挑选心仪的衣服...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章附带菜J学Python ,作者J哥 刚接触Python的新手.小白,可以复制下面的链接去免 ...

  6. python猫眼电影分析_Python 爬取猫眼电影《无名之辈》并对其进行数据分析

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 罗昭成 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...

  7. 用python爬取基金网信息数据,保存到表格,并做成四种简单可视化。(爬虫之路,永无止境!)

    用python爬取基金网信息数据,保存到表格,并做成四种简单可视化.(爬虫之路,永无止境!) 上次 2021-07-07写的用python爬取腾讯招聘网岗位信息保存到表格,并做成简单可视化. 有的人留 ...

  8. python基金筛选_Python爬取基金的排名信息,写入excel中方便挑选基金

    原标题:Python爬取基金的排名信息,写入excel中方便挑选基金 基金是一种很好的理财方式,利用pyhton根据以往的跌幅情况进行基金选择,是一种很可靠的选择方式.本文以债券基金(稳定且风险较低) ...

  9. python爬取京东评论分析_Python爬取京东商品评论+制作关键字云+情感分析图

    首先我们要了解一下,我们用requests包爬取的都只是写在HTML页面上的数据,但是呢,现在很多网站的数据都是通过js代码生成的,除非你找到它,不然是爬取不到的. 首先我随意打开一个京东的商品的详情 ...

最新文章

  1. Sci-Hub十岁生日解封,超233万新论文被放出!总数达到近8800万
  2. 安徽关节式焊接机器人_上下料机器人的重要性体现在哪里?它有哪些优势?
  3. shell 命令自动识别系统升级内核、系统索引更新
  4. 推荐JVM的9款编程语言杀手开发利器
  5. MountFlags of reg
  6. C++自己实现一个String类(腾讯阿里面试题目)
  7. 蓝桥杯 算法训练 安慰奶牛
  8. [转]Vue生态系统中的库
  9. 新版网易云课堂视频真实地址分析
  10. postgresql 数据库 Encoding、Collate、Ctype
  11. 大数据查询语句SQL
  12. openwrt设置网络共享
  13. 肉蛋堡记 - 符皓冉
  14. 外文翻译 《How we decide》多巴胺的预言 第二节
  15. Three.js实现跳一跳(在线玩)
  16. 在vue3+vite中引入高德开放平台API实现边界范围多边形的绘制
  17. 如何正确的从UI图中取色
  18. ArcGIS安装2753错误解决办法
  19. 全球名校AI课程库(34)| 辛辛那提大学 · 微积分Ⅰ课程『MATH100 · Calculus I』
  20. 12306网站、抢票插件以及偶写的自动订票小程序

热门文章

  1. 【BBF系列协议】TR157 CWMP的拓展组件对象
  2. 使用arp欺骗进行同一局域网内的抓包
  3. 阿里云使用宝塔面板部署 Hexo 博客
  4. 获取本机外网地址和ip地址所在地查询
  5. MySQL8.0.22的下载安装(Windows)
  6. [PCIE] 1 - PCI Express 简介
  7. 安卓dialog只显示半透明背景
  8. “知天命”的英特尔,过去有些遗憾未来有些迷茫
  9. WIN7 背景设置浅绿色 保护眼睛
  10. 关于 Benchmark 的几个思考