利用python进行数据分析~基金分析

利用python进行基金数据分析

  • 背景说明
  • 分析过程
    • 1.获取所有种类基金数据
      • 1.1导入相关包
      • 1.2通过天天基金网接口获取基金数据
        • 1.2.1获取网页信息
        • 1.2.2将数据转化成二维表并写入本地磁盘(dataframe)
      • 1.3数据概览
        • 1.3.1查看前几行数据
        • 1.3.2查看各类型基金分布及可视化展示
    • 2.对某支基金进行分析
      • 2.1定义抓取函数
      • 2.2获取基金净值信息
      • 2.3 查看数据字段和数据内容
      • 2.4历史净值数据可视化分析
      • 2.5查看每年增长率正负的天数
        • 2.5.1增加“年”字段
        • 2.5.2正增长和负增长的数量及年度增长平均值

背景说明

本文主要是利用Python提取并分析相关数据,看下当前基金市场上存在哪些类型的基金,作为新手如何判断一支基金是否值得购买。

分析过程

1.获取所有种类基金数据

1.1导入相关包

import pandas as pd
import re
import numpy as np
from bs4 import BeautifulSoup
import requests
import matplotlib.pyplot as plt
%matplotlib inline # 解决图表在jupyter的显示问题
# 解决中文和‘-’号在jupyter的显示问题
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False

1.2通过天天基金网接口获取基金数据

1.2.1获取网页信息

url='http://fund.eastmoney.com/js/fundcode_search.js'
num=requests.get(url)
# 通过正则表达式获取基金信息
text=re.findall(r'"(\d*?)","(.*?)","(.*?)","(.*?)","(.*?)"',num.text)

1.2.2将数据转化成二维表并写入本地磁盘(dataframe)

# 转化为二维表
基金代码=[]
基金名称=[]
基金类型=[]
for i in text:content=list(i)基金代码.append(content[0])基金名称.append(content[2])基金类型.append(content[3])
基金信息=pd.DataFrame({'代码':基金代码,'名称':基金名称,'类型':基金类型})
# 写入到本地磁盘,想到后续会在excel做一些分析,先把数据下载下来
writer=pd.ExcelWriter(r'D:\工作文档\工作\2020\11月\python\基金数据导出.xlsx')
基金信息.to_excel(writer,sheet_name='基金信息',index=False)
writer.save()
writer.close()

1.3数据概览

1.3.1查看前几行数据

在这里插入图片描述

1.3.2查看各类型基金分布及可视化展示

# 按照类型进行分组
分组数量=基金信息.groupby('类型').agg(基金数量=('类型','count')).\
sort_values(by='基金数量',ascending=False).reset_index('类型')
# 图表展示
plt.style.use('ggplot')
fig=plt.figure(figsize=(20,8))
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.bar(x='类型',height='基金数量',data=分组数量)
for a,b in zip(range(len(分组数量.类型)),分组数量.基金数量):plt.text(a,b,b,ha='center',va='bottom',fontsize=16)
plt.title('各类基金数量',fontdict={'fontsize':20})

在这里插入图片描述

分析:

  • 通过图表看到,目前市面上基金数量前五的类别分别是混合型、债券型、定开债券、货币型和股票指数型。一般来讲,数量越多表明受到投资者喜爱的程度越高。
  • 针对不同类型的基金,可通过了解他们的特点然后结合自己的自身情况选择购买某一种类型的基金。

2.对某支基金进行分析

背景: 通常在购买某支基金前,需要对其历史净值信息、历史涨跌等信息进行充分了解再决定是否购买,以下通过简单的分析看下当下某支基金是否值得购买。

2.1定义抓取函数

# 这里通过天天基金网的数据接口,通过输入基金代码、查询的起始时间获取基金数据
# 抓取网页
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}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=1while 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# 数据整理到dataframenp_records = np.array(records)data= pd.DataFrame()for col,col_name in enumerate(heads):data[col_name] = np_records[:,col]return data

2.2获取基金净值信息

#这里提取招商中证白酒基金作分析
found_code='161725'
start_date='2015-01-01'
end_date='2020-12-22'
增长率基准=0
if __name__ == "__main__":data=get_fund_data(found_code,per=49,sdate=start_date,edate=end_date)

2.3 查看数据字段和数据内容

data.info()

在这里插入图片描述

data.head()

在这里插入图片描述

  • 可以看到主要字段是日期、单位净值、累计净值和日增长率,这些都是后面分析的重要指标
  • 这里我们取了5年多的数据,差不多有一千三百多条数据,扣除节假日,数据量基本是对的,后续可通过查看某年或某月的数据进行验证。同时导出来的数据不存在缺失值,数据质量较好。

2.4历史净值数据可视化分析

# 修改数据类型
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['日增长率'].astype(float) #上面那句出错的情况用这一句转化,格式问题
data['基准值']=增长率基准
# 按照日期升序排序并重建索引
data=data.sort_values(by='净值日期',axis=0,ascending=True).reset_index(drop=True)# 获取净值日期、单位净值、累计净值、日增长率等数据并
net_value_date = data['净值日期']
net_asset_value = data['单位净值']
accumulative_net_value=data['累计净值']
daily_growth_rate = data['日增长率']
daily_jizhun=data['基准值']# 作基金净值图
fig = plt.figure(figsize=(16,10),dpi=240)
#坐标轴1
ax1 = fig.add_subplot(211)
ax1.plot(net_value_date,net_asset_value,label='基金净值')
ax1.plot(net_value_date,accumulative_net_value,label='累计净值')
ax1.set_ylabel('净值数据')
ax1.set_xlabel('日期')
plt.legend(loc='upper left')
#坐标轴2
ax2 = fig.add_subplot(212)
ax2.plot(net_value_date,daily_growth_rate,'r',label='日增长率')
ax2.plot(net_value_date,daily_jizhun,'b',label='增长率基准值')
ax2.set_ylabel('日增长率(%)')
plt.legend(loc='upper right')
plt.title('基金净值数据')
plt.show()

在这里插入图片描述

  • 从整体趋势上看,该基金自成立后累计净值呈现的是向上走的趋势,中间也有过几次分红的情况,因此这是一支盈利水平较为不错的基金,从长期看,该基金有比较大的概率可以盈利。同时目前净值属于历史最高水平,如果进场遇到回调,可能导致资金被套住,应该注意风险把控。
  • 从日增长率上看,该基金增长率整体波动范围不大,较为稳定。

2.5查看每年增长率正负的天数

2.5.1增加“年”字段

data1=data.iloc[:,0:4] # 这里提取后面分析需要用到的字段
data1['年']=data1['净值日期'].dt.year # 增加“年”字段

2.5.2正增长和负增长的数量及年度增长平均值

# 获取正增长年月和负增长年月数据
data1_inc=data1[data1['日增长率']>0]
data1_des=data1[data1['日增长率']<0]
data1_g_inc=data1_inc.groupby('年',as_index=False).agg({'日增长率':'count'}).rename(columns\={'日增长率':'正增长数量'})
data1_g_des=data1_des.groupby('年',as_index=False).agg({'日增长率':'count'}).rename(\columns={'日增长率':'负增长数量'})
data_g=pd.merge(data1_g_inc,data1_g_des,on='年',how='left')
# 转化百分比函数
def baifenbi(x):return ('%.2f%%'%(x*100))
data_g['正增长占比']=(data_g['正增长数量']/(data_g['正增长数量']+data_g['负增长数量']))
data_g['正增长占比']=data_g['正增长占比'].apply(baifenbi)
data_g
计算每一年的平均增长率
data_year_rate=data1.groupby('年',as_index=False).agg({'日增长率':'mean'}).rename(columns={'日增长率':'日增长率均值'})
data_year_rate.head(6)

在这里插入图片描述
在这里插入图片描述

  • 通过分析15年到20年的数据可知,除了18年股市整体大跌之外。其他年份日增长率为正的天数都是比负的多;再通过分析当年日增长率均值可看出,除了15年和18年日增长率均值为负,其他年份的均值均为正且绝对值相对来说比15年和18年的要大。因此如果长期持有的话,该基金还是能够有较大的盈利效应。

说明:这里只是利用python做一个简单的数据分析,具体选择基金的时候还需要注意到其他方面的问题。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tushare+Talib基金指标分析

本文介绍python语言下的两个第三方库&#xff0c;Tushare&#xff08;获取股票和基金数据&#xff09;和Ta-Lib&#xff08;用于数据指标分析&#xff09;&#xff0c;及其相关使用案例。 一、安装 Tushare安装 # 方式1&#xff1a;pip install tushare# 如果安装网络超时可尝…

chatgpt赋能python:Python实现人机对话

Python实现人机对话 人机对话是指人类和机器之间的交互过程&#xff0c;其中人类作为用户&#xff0c;通过语音或文字与机器进行交互。Python作为一门流行的编程语言&#xff0c;可以用来实现人机对话系统。本文介绍如何使用Python实现人机对话。 Python语言的优势 Python是…

爬取链家网房价数据

感觉最近做的东西好菜~~随便了。 import requests from lxml import etree import csvheaders {Referer: https://zs.fang.lianjia.com/loupan/nht1pg1/,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.1…

python爬取全国房价并分析

使用方法程序原理 数据来源数据爬取 mac下mysql安装&使用&创建库和表网站爬取分析网站数据抓取代码基础 数据分析 我相信国内房价一直都是苦逼程序员比较关注的事情&#xff0c;我也非常关注全国部分地区的房价&#xff0c;因此我最原始的需求就是想看看全国都哪些地方…

爬虫 58同城房价信息 高德的接口进行房价地图绘制

爬虫部分 // An highlighted block def main():base_url1 https://hz.58.com/xinfang/loupan/all/pbase_url2 /?PGTID0d0091a8-0004-f055-d9b7-c447c3e1c187&ClickID1date_list []for i in range(1,34):html ask_url(base_url1str(i)base_url2)bs BeautifulSoup(htm…

安居客西安房源爬取 + pyecharts 数据展示

第一步是数据爬取&#xff1a; import xlwt from bs4 import BeautifulSoup from selenium import webdriver import time,random from selenium.webdriver import ChromeOptionsdef main():baseurl "https://xa.fang.anjuke.com/loupan/all/p"datalist getData(b…

看我如何抓取最新房价数据

经过前几年一轮房价大涨&#xff0c;到现在因为国家大力调控等原因&#xff0c;市场已经褪去热度&#xff0c;正在慢慢变得稳定&#xff0c;价格也相较最高时下降了些。那现在房价到底怎样&#xff1f;接下来又会是怎样的发展的趋势&#xff1f;这里我们就可以通过 Python 把最…

python爬取上海链家网二手房数据

1、数据爬取说明 1.1 爬取目的 一个朋友在学习自考&#xff0c;作业是爬取数据进行数据分析&#xff0c;正好最近我在学习python&#xff0c;所以他委托我帮他完成这一工作 1.2使用模块 requests进行网络请求、bs4进行数据解析、xlwt进行excel表格存储 2、网页结构分析 2.…

购房选址分析之上海市

一日不见&#xff0c;如隔三秋。快过年了&#xff0c;凌晨GIS给大家拜个早年&#xff0c;提前祝大家新年快乐&#xff0c;牛气冲天&#xff01; 上期我们用矢量分析中的缓冲区分析和叠加分析的方法对长沙市的购房选址方面的问题进行了探讨&#xff0c;得到了许多小伙伴的回应&a…

链家全国房价数据分析 : 数据分析及可视化

相关文章&#xff1a;链家全国房价数据分析 &#xff1a; 数据获取 上一回我们提到了用爬虫爬取链家的新楼盘和二手房数据信息&#xff0c;这回我们来看看如何对他们进行分析。 新楼盘数据分析 因为我们爬的时候是一个个城市爬的&#xff0c;现在我们要把他们合在一起&#x…

大数据统计租房市场现状(上海篇)

对某方面有统计需求的同学可以留言哟~O(∩_∩)O~&#xff01;&#xff01;&#xff01; 数据下载时间&#xff1a;20170620 房间均价&#xff1a;为了对比1房&#xff0c;2房&#xff0c;3房哪个比较划算引入的概念。一条出租信息中&#xff0c;平均每个房间的价格&#xff0c…

链家全国房价数据分析 : 数据获取

最近一直在看论文&#xff0c;也有很久没有coding了&#xff0c;感觉对爬虫的技术有些生疏&#xff0c;我觉得即使现在手头没有在做这方面的东西&#xff0c;经常爬点对技术保鲜还是很重要的。所以这次我打算爬链家的房价数据&#xff0c;目的主要是对爬虫和Python的东西作一个…

上海二手房网站

文章目录 简介git总体架构开发目录 简介 业务目标&#xff1a;实现上海二手房全量数据动态更新、统计、汇总展示&#xff0c;了解二手房变化趋势。 技术目标&#xff1a;前端到后端技术的demo。前身&#xff1a;租房网站。毕业2年需求变更&#xff1a;租房->买房… git 前…

上海的二手房价有所下跌,现在你们的工资够买间厕所了吗?Python帮你分析上海的二手房价

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者&#xff1a;林小呆 仪表板展示 项目背景 去面试的时候被问上海二手房的一些情况&#xff0c;作为一个土著&#xff0c;我只知道上海这个区…

上海二手房价数据分析

目的:本篇给大家介绍一个数据分析的初级项目,目的是通过项目了解如何使用Python进行简单的数据分析。 数据源:博主通过爬虫采集的安X客上海二手房数据,由于能力问题,只获取了2160条数据。 数据初探 首先导入要使用的科学计算包numpy,pandas,可视化matplotlib,seaborn im…

NBA球员投篮数据可视化

最近看了公众号「Crossin的编程教室」的一篇文章。 是有关于NBA球员出手数据的可视化案例&#xff0c;原文链接如下。 个人感觉比较有趣&#xff0c;所以想着自己也来实现一波。 总体上来说差不多&#xff0c;可能就是美观点吧... / 01 / 篮球场 从网上找的篮球场尺寸图&#x…

利用Python进行NBA比赛数据分析

利用Python进行NBA比赛数据分析 一、实验介绍 1.1 内容简介 不知道你是否朋友圈被刷屏过nba的某场比赛进度或者结果&#xff1f;或者你就是一个nba狂热粉&#xff0c;比赛中的每个进球&#xff0c;抢断或是逆转压哨球都能让你热血沸腾。除去观赏精彩的比赛过程&#xff0c;我们…

2021年常规赛NBA球员数据分析

项目介绍&#xff1a; 1、数据来源&#xff1a; 1&#xff09;数据来源腾讯体育NBA数据&#xff0c;爬虫解析三个JS网页解析获得数据&#xff0c;共有150个球员和22个指标&#xff0c;整理后数据最终如下图格式 2&#xff09;球队队徽来自网络 3&#xff09;球队地理位置的经…

kaggle:NBA球员投篮数据分析与可视化(一)

作为数据科学领域的金字招牌&#xff0c;kaggle已成为世界上最受欢迎的数据科学竞赛平台。在kaggle上&#xff0c;每个竞赛题下都藏匿着大批来自世界各地并且身怀绝技的数据科学家。作为一种众包模式&#xff0c;kaggle通过收取部分佣金将企业的数据挖掘问题发布在平台上并设立…