目录

第一章 任务描述

1.1背景和意义

1.1.1背景:

1.2目标

第二章python开发环境的构建

2.1准备工作

2.1.1所需软件

第三章 用到的网络知识

第四章 源码


第一章 任务描述     

1.1背景和意义

1.1.1背景:

指数型基金和其他类型的基金相比,在以下方面很有优势:1、指数型基金的费用较低。 2、购买指数基金相当于购买一篮子股票,因此风险比较小。3、指数型业绩比较透明。由于指数基金跟踪的是某一指数,所以基金净值的变动,可直接看指数的涨跌幅即可,这样不会有造假的情况发生。4、指数型基金管理风险小。所以结合以上的优点,我从天天基金网的指数型板块中爬取出管理指数型基金的基金经理信息,和自成立以来业绩较好的基金,和其他对比的信息,来帮助我们更好的选取指数型基金。

1.2目标

1.在指数型基金榜单中,通过计算基金经理名字出现的次数将基金经理的名字做成词云。

2.在指数型基金榜单中,把所有基金中日收益前五的基金,通过日收益将其作为折线图。

3.在指数型基金榜单中,把所有出现在榜单中的基金公司作为饼状图,来分析在榜单中出现最多的公司。

4.在指数型基金榜单中,把排名前5的基金规模做成直方图。

5.将基金数据保存为excel

第二章python开发环境的构建

2.1准备工作

2.1.1所需软件

1.Anaconda: Anaconda是⼀个开源的Python发⾏版本,其包含了conda、Python等180多个科学包及其依赖项。Anaconda里有一系列python编程中所需要到的工具包,安装了Anaconda就相当于安装好了python工作环境,就不要再安装python了。

2.Pycharm: PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。

3.软件下载地址:

Anaconda:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
pycharm: http://www.jetbrains.com/pycharm/download/#section=windows

2.1.2软件安装

1.安装anaconda:

(1)打开下载好的软件

(2)next

(3)到了这一步(图1.1)选择all users

图2.1

(4)选择安装位置

(5)选择好安装位置后,把两个对勾都选上(图1.2),上面的对勾意思是把他添加到系统变量,这个如果不勾选,安装完成后需要手动配置环境变量,比较麻烦

图2.2

(6)点击安装,等待几分钟anaconda就安装完成了

2.安装pycharm

Pycharm安装只需要下一步,下一步就行。需要注意的是选择存储空间,不要选择到C盘,安装好pycharm后紧接着要做的是配置anaconda编译环境,环境配置就是安装虚拟环境,让程序可以在这个环境中运行

2.1.3配置anaconda编译环境

1.打开pycharm,选择新建工程,选择已存在的(如图2.3)

图2.3

2.选择好后,将anaconda的安装位置添加到pycharm中

3.前两步做完后将此对勾打上,目的是之后创建工程都不用重新配置环境了(如图2.4)

图2.4

到此anaconda的编译环境配置结束

2.1.4python安装库的方法

首先需要再网络环境下进行安装,安装时确保网络通畅

  1. 第一步:win+r,在输入框中输入cmd,回车后进入命令行(如图2.5)

图2.5

  1. 第二步: 输入命令pip install 模块名字,输入后按下回车开始安装

示例:pip install PyExecJS,打开命令行输入命令(如图2.6)

图2.6、

  1. 指定版本的下载:pip install模块名==版本
  2. 如需导出自己安装的模块将其导出到一个记事本则需要在命令框输入:pip freeze > D:\模块.txt
  3. 安装命令:pip install -r D:\模块.txt

第三章 用到的网络知识

1.用谷歌浏览器来分析本次大作业中所需要的网页知识,爬取的网址:开放式基金排行 _ 天天基金网

(1)首先打开网页,按键盘f12键打开开发者模式。来分析数据来源

(2)打开后选network按f5刷新网页,等待数据全部载入。

Network作用:从发起网页页面请求Request后分析HTTP请求后得到的各个请求资源信息(包括状态、资源类型、大小、所用时间等)。简单来说就是network中会记录网页当里面的所有数据,包括文字,图片,视频,音频只要能在网页上看到的,他都会在network中加载出来都会被记录。打开网站按f12查看network信息,此时信息是没有被记录的。所以要在第一次打开network后刷新页面,等待数据全部载入

(3)刷新以后数据就会重新加载一遍,加载完成以后要在network中找到当前数据所对应的位置在哪里。

在network中有一个搜索功能用于 搜索想要找到的数据,输入后点击回车,如下图,在数据重新加载后在搜索框输入想要找到的数据,输入基金代码008828按下回车,搜索框的下边就会显示搜索结果。点击搜索结果,就会找到数据的json格式的信息,这些信息和网页中的数据相对应(如图3.1)

图3.1

(4)找到这些数据的地址,headers中可以看到请求的详细信息

headers是发送请求时携带的头部信息。如:authentication/cookie、响应的数据格式:content-type,响应状态码,请求方式,请求地址等信息。我们需要的是请求地址,所以找到request url 此路径就是我们需要的地址(如图3.3)

图3.3

(5)引用request库来发送请求

访问地址就是上面headers中获取到的url,使用requests的get方法来模拟浏览器去向服务器请求资源,请求的时候服务器会进行核验身份,当身份校验不通过时就访问不到资源,所以要在前面加一个身份校验,在代码中加入如下信息:

"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",

"Accept-Encoding": "gzip, deflate",

"Accept-Language": "zh-CN,zh-TW;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6",

"Cache-Control": "max-age=0", "Connection": "keep-alive",

"Cookie":"st_si=58946294636267;st_asi=delete;ASP.NET_SessionId=ypqb3d0kofgfdg521nug0dyb;EMFUND1=null;EMFUND2=null;EMFUND3=null;EMFUND4=null;EMFUND5=null;EMFUND6=null;EMFUND7=null;EMFUND8=null;EMFUND0=null;EMFUND9=051015:20:30@#$%u6052%u751F%u524D%u6D77%u4E2D%u8BC1%u8D28%u91CF%u6210%u957FC@%23%24006144; qgqp_b_id=6427a9f78607f4caa31ec9513b0bfb95;

st_pvi=80410761630013;

st_sp=2022-05-10%2014%3A49%3A04; st_inirUrl=http%3A%2F%2Ffund.eastmoney.com%2Fdata%2Ffundranking.html; st_sn=2; st_psi=20220510152029613-112200305282-7583427755",

"Host": "fund.eastmoney.com", "If-Modified-Since": "Tue, 10 May 2022 07:07:51 GMT",

"If-None-Match":"W/\"627a0f47-25ef9\"",

"Referer": "http://fund.eastmoney.com/data/fundranking.html",

"Upgrade-Insecure-Requests": "1",

"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36"}

这些信息来源于request headers(如下图3.4)。把这些数据添加好后再去访问服务器拿数据,就可以拿到了。

图3.4

第四章 源码

import execjsimport matplotlibimport matplotlib.pyplot as pltimport pandas as pdimport requestsfrom bs4 import BeautifulSoupfrom wordcloud import WordClouddef detail(code):headers = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh-TW;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6","Cache-Control": "max-age=0", "Connection": "keep-alive","Cookie": "st_si=58946294636267; st_asi=delete; ASP.NET_SessionId=ypqb3d0kofgfdg521nug0dyb; EMFUND1=null; EMFUND2=null; EMFUND3=null; EMFUND4=null; EMFUND5=null; EMFUND6=null; EMFUND7=null; EMFUND8=null; EMFUND0=null; EMFUND9=05-10 15:20:30@#$%u6052%u751F%u524D%u6D77%u4E2D%u8BC1%u8D28%u91CF%u6210%u957FC@%23%24006144; qgqp_b_id=6427a9f78607f4caa31ec9513b0bfb95; st_pvi=80410761630013; st_sp=2022-05-10%2014%3A49%3A04; st_inirUrl=http%3A%2F%2Ffund.eastmoney.com%2Fdata%2Ffundranking.html; st_sn=2; st_psi=20220510152029613-112200305282-7583427755","Host": "fund.eastmoney.com", "If-Modified-Since": "Tue, 10 May 2022 07:07:51 GMT","If-None-Match": "W/\"627a0f47-25ef9\"", "Referer": "http://fund.eastmoney.com/data/fundranking.html","Upgrade-Insecure-Requests": "1","User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36"}url = f'http://fund.eastmoney.com/{code}.html'rep = requests.get(url, headers=headers)rep.encoding = 'utf-8'soup = BeautifulSoup(rep.text, 'lxml')info = soup.select('.infoOfFund > table > tr > td')dt = {}for item in info:sp = item.text.split(':')# print(sp)line = {sp[0]: ''.join(str(x).replace('\xa0', '') for x in sp[1:])}dt.update(line)# print(dt)# print(dt)return dtdef loop():headers = {"Accept": "*/*", "Accept-Encoding": "gzip, deflate","Accept-Language": "zh-CN,zh-TW;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6","Cookie": "st_si=58946294636267; st_pvi=80410761630013; st_sp=2022-05-10%2014%3A49%3A04; st_inirUrl=; st_sn=1; st_psi=20220510144904564-112200312936-6392067033; st_asi=delete; ASP.NET_SessionId=ypqb3d0kofgfdg521nug0dyb","Host": "fund.eastmoney.com", "Proxy-Connection": "keep-alive","Referer": "http://fund.eastmoney.com/data/fundranking.html","User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36"}data = []for page in range(1, 33):url = f'http://fund.eastmoney.com/data/rankhandler.aspx?op=ph&dt=kf&ft=zs&rs=&gs=0&sc=rzdf&st=desc&sd=2021-05-07&ed=2022-05-07&qdii=|&tabSubtype=,,,,,0&pi={page}&pn=50&dx=1&v=0.18189555619917375'rep = requests.get(url, headers=headers)docjs = execjs.compile(rep.text)res = docjs.eval('rankData')['datas']for item in res:print(item)data.append(str(item).split(','))df = pd.DataFrame(data, dtype=str)df.to_excel('zsjj.xlsx', index=False)def read_excel():df = pd.read_excel('zsjj.xlsx', dtype=str)[0]data = []for code in df:# print(code)res = detail(code)print(res)data.append(res)df = pd.DataFrame(data)df.to_excel('info.xlsx')def word_cloud():content = pd.read_excel('info.xlsx')['基金经理'].tolist()max_content = ' '.join(content)wordcloud = WordCloud(font_path='/System/Library/fonts/PingFang.ttc',background_color="white", width=1000, height=880).generate(max_content)plt.imshow(wordcloud, interpolation="bilinear")plt.axis("off")plt.savefig('基金经理名字词云图.png')plt.show()def bar():df =  pd.read_excel('info.xlsx')df['基金规模'] = df['基金规模'].apply(lambda x: str(x).split('亿元')[0])df.sort_values(by='基金规模', ascending=False).head(5)name = df['管 理 人'].tolist()day = df['基金规模'].tolist()dt = dict(zip(name, day))print(dt)title = '指数型前五的基金中基金规模直方图'counts = dtp_name = '指数型前五的基金中基金规模直方图'num = 5x_aixs = []y_aixs = []c_order = sorted(counts.items(), key=lambda x: x[1], reverse=True)for c in c_order[:num]:x_aixs.append(c[0])y_aixs.append(c[1])plt.rcParams['font.family'] = ['sans-serif']plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题plt.bar(x_aixs, y_aixs)plt.title(title)plt.xticks(rotation=45)plt.savefig(f'{p_name}.png')plt.show()def pie():title = '指数型基金中出现的基金公司'data = pd.read_excel('info.xlsx')['管 理 人'].value_counts()[:10].to_dict()plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']plt.figure(figsize=(6, 6))label = data.keys()explode = [0.01] * len(data) values = data.values()plt.pie(values, explode=explode, labels=label, autopct='%5.1f%%')plt.title(title) plt.savefig(f'{title}.jpg')plt.show()def line():df = pd.read_excel('zsjj.xlsx').sort_values(by=6, ascending=False).head(5)name = df[1].tolist()day = df[6].tolist()dt = dict(zip(name, day))title = '收益前5的基金日收益折线图'x_la = '基金'y_la = '收益'data = dtp_name = '收益前5的基金日收益折线图'plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']x = list(data.keys())[:10]y = list(data.values())[:10]plt.plot(x, y, "r", marker='*', ms=10, label="a")plt.xticks(rotation=45)plt.xlabel(x_la)plt.ylabel(y_la)plt.title(title)plt.legend(loc="upper left")for x1, y1 in zip(x, y):plt.text(x1, y1 + 1, str(y1), ha='center', va='bottom', fontsize=20, rotation=0)plt.savefig("{}.jpg".format(p_name))plt.show()if __name__ == '__main__':# loop()# read_excel()# word_cloud()# line()# pie()bar()

python课程设计,学了python后你可以做的案例(词云,折线图,饼图…)相关推荐

  1. python可视化数据分析开心麻花影视作品分析词云折线图等源码

    wx供重浩:创享日记 对话框发送:python影视 免费获取完整源码源文件+说明文档+可执行文件等 在PyCharm中运行<开心麻花影视作品分析>即可进入如图1所示的系统主界面.在该界面中 ...

  2. python网络爬虫课程设计题目_山东建筑大学计算机网络课程设计《基于Python的网络爬虫设计》...

    山东建筑大学计算机网络课程设计<基于Python的网络爬虫设计> 山东建筑大学 课 程 设 计 成 果 报 告 题 目: 基于Python的网络爬虫设计 课 程: 计算机网络A 院 (部) ...

  3. 北京交通大学Python课程设计大作业(四)——典籍词频统计

    北京交通大学Python课程设计大作业(四)--典籍词频统计 文章目录 北京交通大学Python课程设计大作业(四)--典籍词频统计 一.词频统计任务介绍 二.典籍词频统计python源代码如下 三. ...

  4. Python语言程序设计 第0周第1周 Python课程导学、基本语法元素

    第0周 Python课程导学 线上线下相结合,手机电脑相结合,长短时间相结合 线上线下 线上看视频/做练习.线下读教材/看资料 手机电脑 视频/作业用手机.编程实践用电脑 长短时间 视频/作业用零碎时 ...

  5. 视频教程- 1-1 课程导学和Python简介-Python干货!

    关于「课程导学和Python简介」的相关基础知识百科介绍: Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品. Py ...

  6. Python课程设计大作业:获取比赛数据并进行机器学习智能预测NBA的比赛结果

    前言 该篇是之前遗漏的大三上的Python课程设计.刚好今天有空就补发了一篇文章.全部的代码在最后附录中.爬虫类的代码直接全部放到一起了,读者可以自行研究.百度网盘可以私聊我进行获取. 一.课程设计项 ...

  7. python课程设计 文字游戏 魔塔1

    [python课程设计]魔塔文字游戏分享1 这是我的python课程设计魔塔游戏的DOS版,我觉得我做的还不错( 我太自恋了 .先给大家放个截图看一下效果. 因为代码很多,所以我打算分成几部分来分享给 ...

  8. Python课程设计之俄罗斯方块

    Python课程设计之俄罗斯方块 演示效果 下载地址 运行效果 基础页面 界面动起来 生成.移动.固定.变形 消除与得分 演示效果 点击查看 下载地址 点击下载 Python课程设计之俄罗斯方块 软件 ...

  9. Python课程设计:点餐系统

    开篇 来了来了,又到了准备烦人的期末python课程设计的时候了,我相信你一定是摆烂了好久了吧,哈哈哈哈! 被我猜到了吧!不过不要担心!本初学者为大家奉上一个完全应付大作业的小代码啦! 话不多说!正文 ...

  10. Python课程设计之学生信息管理系统

    Python课程设计之学生信息管理系统 需求分析 系统设计 主函数设计 录入学生信息 删除学生信息 修改学生信息 查找学生信息 统计学生总人数 显示所有学生信息 排序模块 项目所有源码下载地址 需求分 ...

最新文章

  1. 【BZOJ4282】慎二的随机数列 乱搞
  2. 高性能ORM框架XLinq功能详细介绍
  3. ViewPager + TabLayout + Fragment + MediaPlayer的使用
  4. oracle中xml如何存储过程,oracle存储过程生成xml文件
  5. 设计模式_4_原型模式(对象的拷贝)
  6. html排序图标,css实现排序升降图标
  7. shell @ Linux (1)
  8. 前后端分离导出excel_Vue + .NetCore前后端分离的快速发开框架
  9. html空心字体怎么设置,Word或者WPS如何设置阴影空心的特大字体?
  10. cetnos6.4 基础版安装
  11. 电脑正常启动黑屏,安全模式正常启动的解决办法
  12. python安装.egg文件_芳草地-小狍子的空间_百度空间
  13. ctfshow密码easyrsa5
  14. Android百度语音集成——文字转语音
  15. 嵌入式linux ARM 开发板 使用pyqt显示界面
  16. RACI 职责分配矩阵 模型使用详解及案例分析
  17. 滴滴出行技术副总裁赖春波:每天发现几十万异常订单,仅有几起为真!
  18. java输出数学和英语成绩_java 计算班里每个同学3门课(英语、数学、数据库)的平均成绩和总成绩,编写一个成绩类来实现这些功能。...
  19. php-gtk2怎么用,学习php-gtk2之开发环境安装
  20. python 色卡,如何使用opencv创建实验室色卡?

热门文章

  1. 【JavaWeb】客户关系管理系统
  2. 开发者工具绕过前端debuger
  3. 青龙面板JD各大库合集
  4. 汽车VIN编号 有效性检查 PHP 验证算法
  5. python爬取天气预报_分分钟学会用Python爬取天气预报
  6. ipqc的工作流程图_品质部各人员工作流程图
  7. python基本用法_Python基本用法总结
  8. Android 通过外网IP定位城市
  9. java pdf 图片替换_Java 添加、替换、删除PDF中的图片
  10. Java集合框架笔记,足够深,足够全面