python资本市场财务数据分析_Python对股票财务数据进行可视化分析

2023-11-12

art

对股票财务数据进行分析是非常必要,但因股票数据量很大,单凭浏览网页或在软件客户端查看是非常浪费精力的一件事,通过Python进行网页数据提取,将财务数据图表化会更加直观。以下代码在Python 3.6环境下通过:

注:使用注意,将此代码保存为一个文本文件扩展名为.py,在这个文件同目录下建立二个子目录:数据-分析、数据-下载,也可以更改代码中的路径,否则运行时会报错。

import matplotlib.pyplot as plt

import matplotlib as mpl

from pandas.core.frame import DataFrame

import time

import Chinese as fnt

import pandas as pd

import numpy as np

from matplotlib.ticker import MultipleLocator, FormatStrFormatter

from pylab import *

stock_code = '600366'

# 1、基本面数据下载

tables = pd.read_html("http://quotes.money.163.com/f10/zycwzb_" + stock_code + ",year.html")

i = 0

for table in tables:

if i == 4:

df_tmp = DataFrame(table)

df_tmp.insert(0, '分类',

['报告日期', '基本每股收益(元)', '每股净资产(元)', '每股经营活动产生的现金流量净额(元)', '主营业务收入(万元)', '主营业务利润(万元)', '营业利润(万元)',

'投资收益(万元)', '营业外收支净额(万元)', '利润总额(万元)', '净利润(万元)', '净利润(扣除非经常性损益后)(万元)', '经营活动产生的现金流量净额(万元)',

'现金及现金等价物净增加额(万元)', '总资产(万元)', '流动资产(万元)', '总负债(万元)', '流动负债(万元)', '股东权益不含少数股东权益(万元)',

'净资产收益率加权(%)'])

df_tmp.to_excel('./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-年度.xlsx')

elif i == 5:

DataFrame(table).to_excel(

'./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-盈利能力.xlsx')

elif i == 6:

DataFrame(table).to_excel(

'./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-偿还能力.xlsx')

elif i == 7:

DataFrame(table).to_excel(

'./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-成长能力.xlsx')

elif i == 8:

DataFrame(table).to_excel(

'./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-营运能力.xlsx')

elif i == 1:

DataFrame(table).to_excel(

'./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-基本资料.xlsx')

i += 1

# 2、数据可视化分析

'''

项目及索引值

0 报告日期

1 基本每股收益(元)

2 每股净资产(元)

3 每股经营活动产生的现金流量净额(元)

4 主营业务收入(万元)

5 主营业务利润(万元)

6 营业利润(万元)

7 投资收益(万元)

8 营业外收支净额(万元)

9 利润总额(万元)

10 净利润(万元)

11 净利润(扣除非经常性损益后)(万元)

12 经营活动产生的现金流量净额(万元)

13 现金及现金等价物净增加额(万元)

14 总资产(万元)

15 流动资产(万元)

16 总负债(万元)

17 流动负债(万元)

18 股东权益不含少数股东权益(万元)

19 净资产收益率加权(%)

'''

# 设置绘图全局变量

mpl.rcParams['axes.titlesize'] = 10

mpl.rcParams['xtick.labelsize'] = 9

mpl.rcParams['ytick.labelsize'] = 9

mpl.rcParams['axes.labelsize'] = 9

mpl.rcParams['xtick.major.size'] = 0

mpl.rcParams['ytick.major.size'] = 0

mpl.rcParams['lines.linewidth'] = 0.5

mpl.rcParams['lines.markersize'] = 5

fnt.set_ch('YH', 12)

stock_name = \

pd.read_excel('./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-基本资料.xlsx').ix[

0, 0].replace(' ', '')

df_jbcwzb = pd.read_excel(

'./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-年度.xlsx')

data_reportDate = df_jbcwzb.ix[0, 1:].sort_index(ascending=False)

plt.figure(figsize=(18, 11))

# plt.tight_layout()

plt.subplots_adjust(left=0.1, bottom=0.1, right=0.9, top=0.9, hspace=0.8, wspace=0.6)

# 1、图一:基本每股收益

ax = plt.subplot2grid((3, 1), (0, 0))

data_jbmgsy = df_jbcwzb.ix[1, 1:].replace('--', '0').sort_index(ascending=False)

data_mgjzc = df_jbcwzb.ix[2, 1:].replace('--', '0').sort_index(ascending=False)

data_mgxjl = df_jbcwzb.ix[3, 1:].replace('--', '0').sort_index(ascending=False)

plt.plot(data_reportDate, data_jbmgsy.astype(float), '-+r', label='每股收益')

plt.plot(data_reportDate, data_mgjzc.astype(float), '--om', label='每股净资产')

plt.plot(data_reportDate, data_mgxjl.astype(float), '-.*b', label='每股现金流')

plt.legend()

plt.xticks(data_reportDate, rotation=90)

plt.grid()

# plt.xlabel('年报日期')

plt.ylabel('每 股 指 标')

plt.title(stock_name + '-每股指标')

# 2、图二:扣非净利润

ax2 = plt.subplot2grid((3, 1), (1, 0))

data_kfjlr = df_jbcwzb.ix[11, 1:].replace('--', '0').sort_index(ascending=False)

data_jlr = df_jbcwzb.ix[10, 1:].replace('--', '0').sort_index(ascending=False)

data_zyywsr = df_jbcwzb.ix[4, 1:].replace('--', '0').sort_index(ascending=False)

data_zyywlr = df_jbcwzb.ix[5, 1:].replace('--', '0').sort_index(ascending=False)

plt.plot(data_reportDate, data_zyywsr.astype(float), '-+m', label='主营收入')

plt.plot(data_reportDate, data_zyywlr.astype(float), '--*g', label='主营利润')

plt.plot(data_reportDate, data_jlr.astype(float), '-.+b', label='净利润')

plt.plot(data_reportDate, data_kfjlr.astype(float), ':or', label='扣非净利润')

plt.legend()

plt.xticks(data_reportDate, rotation=90)

# plt.xlabel('年报日期')

plt.ylabel('营 收 利 润')

plt.title(stock_name + '-营收利润')

plt.grid()

# 3、图二:总资产

ax3 = plt.subplot2grid((3, 1), (2, 0))

data_zzc = df_jbcwzb.ix[14, 1:].replace('--', '0').sort_index(ascending=False)

data_zfz = df_jbcwzb.ix[16, 1:].replace('--', '0').sort_index(ascending=False)

plt.plot(data_reportDate, data_zzc.astype(float), '--+r', label='总资产')

plt.plot(data_reportDate, data_zfz.astype(float), '-.ob', label='总负债')

plt.legend()

plt.xticks(data_reportDate, rotation=90)

# plt.xlabel('年报日期')

plt.ylabel('资 产 负 债')

plt.title(stock_name + '-资产负债')

plt.grid()

plt.savefig('./数据-分析/' + stock_name + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-年度.png', dpi=600)

plt.show()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python资本市场财务数据分析_Python对股票财务数据进行可视化分析 的相关文章

  • java反射field.setAccessible()方法作用

    Accessable属性是继承自AccessibleObject 类 功能是启用或禁用安全检查 JDK API中的解释 引用AccessibleObject 类是 Field Method 和 Constructor 对象的基类 它提供了将
  • CSAPP习题思考(位操作)

    CSAPP习题思考 位操作 现在发现写技术方面的文章真是不容易 不像写随感文 随便热血一下两三个小时就出来了 这篇文章至少用了5 6个小时 但依然感觉没写到位 很多想说的却写不出来 想和说 写 是两种境界 所以每次看pongba洋洋散散五六
  • 开发人员的绝佳生产力工具

    介绍 从长远来看 每天工作 8 小时对您没有帮助 但利用这些来最大化产出肯定会让您受益 这就是为什么生产力是最重要的事情之一 今天 我们将学习一些很棒的工具 它们可以提高您的工作效率 除非并且直到您将这些工具集成到您的工作流程中 否则了解这
  • 宋浩线性代数笔记(七)线性空间

    完结撒花 致此该系列数一的内容也全部更完 本帖为宋浩老师基础课笔记的最后一期 后期会出一些课本经典例题 知识串联 抑或宋浩老师考研强化的重点 敬请期待下一些列
  • Java21天打卡Day6-switch

    import java util Scanner public class Day6 switch case语句 题目 输入一个号码 判断该号码 是1就是一等奖 2是二等奖 3是三等奖 其他的阳光普照奖 public static void
  • vue中使用swiper-slide时,循环轮播失效?

    前言 vue 项目中使用时 组件swiper slide 如果用v for循环的话 loop true 就不能无缝轮播 每次轮播到最后一张就停止了 正文 代码如下
  • java 判断用户是否关注了公众号

    1 获取token public String getToken try HttpClient client HttpClients createDefault String tokenUrl MessageFormat format ht
  • 有关NodeBB从低版本1.7.x升级到最新的1.16.x版本

    有关NodeBB升级历险记 公司线上的论坛网站一直都是1 7 4版本 而且有不少地方感觉用起来不是很顺手 就想着应该给它升升级了 从1 7 4升级到最新的1 16 x版本 注 不要直接跨版本升级到最高版本 会有数据错乱的问题 升级实操 备份
  • js中对象数组根据对象id分组并转map

    js中对象数组根据对象id分组并转map 如果要将具有相同 id 属性的对象元素 分成不同的数组 可以先从对象数组中提取相同的 id 属性 再使用 Array reduce 和 Map 来进行对象数组的分类 具体实现 对象数组根据id分组并
  • 计算机停电自行启动,电脑自动断电,详细教您电脑开机自动断电怎么解决

    有时候电脑玩着玩着 突然断电关机了 正玩的很激情 突然电脑断电关机了 都恨不得把电脑砸了 一旦出现电脑开机后断电的情况 让我们习惯从软件下手的同学们来说 有点无从下手 下面 小编跟大伙一同探讨一下电脑开机自动断电的解决方法 说到电脑启动过程
  • 请用C语言写一个15*15的扫雷小游戏

    扫雷是一个非常有趣的游戏 可以使用 C 语言编写 下面是一个简单的扫雷代码示例 include
  • C++ 排序函数 sort(),qsort()的用法

    C库函数qsort C 库函数sort 其中qsort相对较慢 sort实现非常高效 qsort 功 能 使用 快速排序例程进行排序 头文件 include
  • 锐浪报表-实现导入导出

    锐浪报表 实现导入导出 实现思路 代码实现 实现思路 导入导出实现思路 我们使用锐浪报表自带的导出功能导出 XX grf 后 鼠标右键是可以像编辑文本一样编辑内容的 由此联想到 用记事本手写一个模板改一下后缀名是不是也可以当作报表模板 答案
  • 好消息:vue3.3发布了,来看看更新那些功能

    前言 vue3 3发布了 来看看更新那些功能 原英文地址 Announcing Vue 3 3 The Vue PointThe offical blog for the Vue js projecthttps blog vuejs org
  • 2023年完整版Java学习路线图

    目录 第一阶段 Java核心基础 第二阶段 数据库核心技术 第三阶段 Java Web内容 第四阶段 企业级框架讲解 第五阶段 分布式微服务架构 第六阶段 技能深入提升 第七阶段 企业级项目实战 Java学习路线图 以下是我为您提供的原创J
  • NOIP学习之顺序查找:145.找最大数序列

    测试链接 总时间限制 1000ms 内存限制 65536kB 描述 输入n行 每行不超过100个无符号整数 无符号数不超过4位 请输出最大整数以及最大整数所在的行号 行号从1开始 如果该数据在多个行中出现 则按从小到大输出相应行号 行号之间
  • 【计算机视觉

    文章目录 一 MnasNet 二 GhostNet 三 Compact Convolutional Transformers CCT 四 NesT 五 Res2Net 六 EfficientNetV2 七 Capsule Network 八
  • JQuery安装与下载教程

    jQuery安装与下载 JQuery 是一个javaScript库 是一个轻量级的 写的少 做的多 的JavaScript库 jQuery 极大地简化javaScript编程 juery相比js优点 jquery的onload加载事件速度更
  • 方波转为正弦波的简单方案简介

    将方波信号转化为正弦波信号 主要是需要抑制方波信号的谐波信号 主要是抑制三次谐波 经过仿真测试 能够将方波转化为正弦波的滤波器 其衰减必须足够陡峭 将谐波频率尽可能压掉 在实际的滤波器中 经过测试 采用椭圆低通滤波器是能够实现所需要的滤波功

随机推荐