券商研报股价趋势图绘制

首先先要导入各种包和数据,定好画图的时间区间:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import statsimport warnings
warnings.filterwarnings("ignore")import tushare as ts
ts.set_token('587c7ae5acfd0f08717963e1b4d6eff0c2dc33c5954f15e4074dd122')
pro = ts.pro_api()start_time = '20200101'
end_time = '20220501'
raw_data_path = r'' #这里填写文件路径
ts_code = '' # 这里填写股票代码

从tushare获取数据

因为用的是MacOS,不能从Wind导出数据,所以使用Tushare代替。
地址:https://tushare.pro/
注意需要注册,获得一个token。

下载沪深300股票数据

csi300 = pro.index_daily(ts_code = '000300.SH', start_date=start_time, end_date=end_time)
csi300.to_csv(raw_data_path + '沪深300股票数据.csv')

下载前复权数据

ts_code = '' #这里填写需要的股票代码
df = ts.pro_bar(ts_code=ts_code, adj='qfq', start_date=start_time, end_date=end_time)

下载结果如下:

画图部分

import matplotlib.pyplot as plt
import seaborn as sns
# plt.style.use('seaborn-darkgrid') close_price = df[['trade_date', 'close']]
import datetime
close_price['trade_date'] = pd.to_datetime(close_price['trade_date'])
close_price.set_index("trade_date", inplace=True) # 加时间索引
close_price

股价频率分布直方图

sns.set_style('whitegrid') # 图要贴在报告中,所以改成白底的主题
color_zt = '#BE002E'
plt.figure(figsize=(24,15))
p = sns.distplot(close_price['close'], color=color_zt)
p.set_xlabel("Close_Price", fontsize = 30)
p.set_ylabel("Density", fontsize = 30)
plt.xticks(fontsize=50)
plt.yticks(fontsize=50)

股票累计收益与指数累计收益对比图

  • 样例股票是2019年上市的,所以以计算2020年以来的股票累计收益为例,与沪深300进行比较。

处理数据:

df['whole'] = df['close']/36.9781 - 1
df['CSI300_whole'] = csi300['close']/4152.2408 - 1accumulated = df[['whole', 'CSI300_whole']]
accumulated['close'] = df['close']
accumulated['pct_chg'] = df['pct_chg']
accumulated

数据长这样:

这样就得到了画图所需的数据。四列分别是股票的累计收益,沪深300的累计收益,

color_zt = '#BE002E' # zt红
color_zt1 = '#C0C0C0' # 灰色
color_zt2 = '#DC3400' # zt橙
color_zt3 = '#FFAA96' # 灰色x = accumulated.index
y1 = accumulated.close.values # 股票收盘价
y2 = accumulated.whole.values # 股票累计收益
y3 = accumulated.CSI300_whole.values # CSI300累计收益fig, ax1 = plt.subplots(figsize=(20, 4), dpi=300)
# plt.xticks(rotation=60) 如想旋转横轴标签可以加上这句
ax2 = ax1.twinx() # 复制一份坐标轴# ===================== 这里只画了目标公司和沪深300的累计股票收益 ===================== ## lns1 = ax2.plot(x, y1, color=color_zt, ms=10, label='Close_Price') # 股价
lns2 = ax1.plot(x, y2, color=color_zt, ms=10, label='Stock_Accumulated_Return') # 累计收益
lns3 = ax2.plot(x, y3, color=color_zt1, ms=10, label='CSI300_Return') # CSI300累计收益ax1.legend(loc='upper left')
ax2.legend(loc='upper right')ax1.grid(False)
ax2.grid(False)
plt.grid(axis="y")

近一年股票累计收益图

# 2021.5.1数据 股票价格是34.8458,指数是5123.489
accumulated['one_year_whole'] = df['close']/34.8458 -1
accumulated['one_year_csi300'] = csi300['close']/5123.489 -1
accumulated['excess'] = accumulated['one_year_whole'] - accumulated['one_year_csi300']accumulated1 = accumulated.truncate(before='2021-05-01 16:00:00') # 这里去掉了2021.5.1以前的数据
accumulated1

增加后三列数据,分别是股票1年累计收益,沪深300一年累计收益,超额收益

x = accumulated1.index
y2 = accumulated1.excess.valuesfig, ax1 = plt.subplots(figsize=(10.5, 4), dpi=300)
# plt.xticks(rotation=60)  lns = ax1.plot(x, y2, color=color_zt, ms=10, label='Stock_Excess_Return') # 累计收益ax1.legend(loc='upper left')
ax2.legend(loc='upper right')ax1.fill_between(x, y2, 0, where=(y1>0), facecolor=color_zt, alpha=0.2)
ax1.fill_between(x, y2, 0, where=(y1<0), facecolor=color_zt1, alpha=0.5)
# 填充色块:累计收益大于0填红色,小于0填灰色ax1.grid(False)
ax2.grid(False)
plt.grid(axis="y")

画行业指数趋势图

这里以计算机行业为例,原数据来自Wind的申万行业指数和中信行业指数。数据长这样

【Python做研究报告】股价趋势图绘制相关推荐

  1. 通过VBA在excel中实现股票历史数据查询和K线趋势图绘制(完整的excel原件可以在我的资源中下载)

    原始文件下载地址:股票历史数据和K线图趋势线的绘制-VB文档类资源-CSDN下载 文章目录 前言 一.目标 二.方法 三.界面和使用说明 四.代码说明 1.查询历史数据 2.绘制K线图和趋势线 3.清 ...

  2. python做房源饼状图_python使用matplotlib画饼状图

    %matplotlib inlineimport matplotlib.pyplot as plt# 121 > 1行2列第1个fig1 = plt.subplot(121)plt.pie([1 ...

  3. 使用Python读取Mysql数据库中股票信息并生成6日涨幅趋势图,绘制出规范的Excal表格

    一.数据库导入股票数据 爬虫或其他工具获取数据,并转换为Excel表,然后导入数据库中. 我的如下: 二.创建函数,编写存储过程 1.mysql存储过程 CREATE DEFINER=`root`@` ...

  4. 棕榈学院Python课程回顾——K线图绘制

    棕榈学院Python课程回顾(Day 1-2) 文章目录 棕榈学院Python课程回顾(Day 1-2) 环境配置 Sublime text 3 jupyter notebook Day 1 文件读取 ...

  5. python做饼图出现重影_Matplotlib 绘制饼图解决文字重叠的方法

    在使用Matplotlib 绘制饼图的时候有些时候一些数据的比列太小在饼图呈现的效果不明显 很容易被覆盖,为理解决这个问题以下就是我个人的心得. [未解决之前呈现的效果] 可以看到这个饼状图其他和硕士 ...

  6. 我用Python做了个动图生成器,把一千个MM生成了GIF设置桌面,只为每天愉悦心情

    文章目录 序言 代码实战 序言 现在的年轻人都开始每天保温杯里泡枸杞,这怎么能行呢? 想要每天过的好,美女必然少不了,每天看美女,只为了愉悦心情,心情好了,才长寿. 于是怀揣着愉悦心情的想法,我开始制 ...

  7. python做视频抽帧图_Python提取视频中图片的示例(按帧、按秒)

    一.按帧提取 #coding=utf-8 import os import cv2 def save_img(): #提取视频中图片 按照每帧提取 video_path = r'd:\\test\\' ...

  8. python做视频抽帧图_利用Python和ffmpeg从视频中抽帧,此方法比opencv抽帧法快。

    原博文 2020-03-26 09:34 − import subprocess import os import subprocess import shutil #目录文件不存在则自动创建,存在则 ...

  9. python做视频抽帧图_python-opencv-视频截取帧图片

    import cv2 #file_list = ['{}'.format(os.path.join(file_dir, dir, file_name)) for dir in os.listdir(f ...

最新文章

  1. UVa 10051 Tower of Cubes(类似LIS)
  2. 传递类型为参数的方法
  3. 第5章-Vue.js交互及生命周期练习
  4. 日期getUTCMonth()方法以及JavaScript中的示例
  5. java 字符串 内存_java – 字符串文字和永久生成内存区域
  6. Win7小工具“概念时钟”,v2.1.8.6
  7. java 匿名函数_国外程序员用的火热的Vavr是什么鬼?让函数式编程更简单!
  8. python实现时间戳和时间格式转换以及当前时间,特定时间的前后偏移
  9. 检测本计算机的IP地址,告诉您如何使用命令检查本地IP地址
  10. 多元时间序列因果关系分析
  11. 显示当前数据库服务器的ip,怎么查看服务器数据库的ip地址
  12. Odoo Excel报表的设计及实现
  13. Jmeter读取CSV文件
  14. 七夕界的浪漫之光,向你安利程序员的表白方式
  15. 如何高效制作数据可视化大屏,大屏高效制作攻略分享,总有一款适合你
  16. 网站黑白色调之filter属性
  17. 范式球(norm ball),范式锥,欧式球,椭球
  18. 创业公司的软件研发规范
  19. 即食燕窝怎么吃?即食燕窝一天吃多少?即食燕窝是直接吃吗?
  20. 美通企业日报 | IMAX中国票房纪录创年度新高;上海迪士尼将迎来黄色小狗可琦安...

热门文章

  1. plt.imshow()无法显示两站图片?
  2. 单臂路由之2,多网口软路由实现单臂路由功能,且其剩余网口及光猫剩余网口均实现上网功能
  3. 1.C语言变量类型、全局变量、局部变量
  4. Java实现将中文转成拼音和ASCII码
  5. 什么是开源网络情报(OSINT)及其使用方式
  6. 基于B/S模式的学生选课系
  7. 2022-09-17青少年软件编程(C语言)等级考试试卷(四级)解析
  8. 【appium】appium自动化入门之基本参数完整版(67个appium基本参数和关键字)
  9. mysql表id的数据类型是_MySQL表中的数据类型
  10. dp在约会上是什么意思_饭圈用语dp是什么梗