进一步python分析财务报表

前言

前面某篇博客已经有了初步分析A股财务报表,这里作为我们工作室答辩作业进一步分析了数据。废话不多说上图。
代码已上传到github上:https://github.com/1qweasdzxc/python

  1. 搜索页面

这里写图片描述
2. 主页面

这里写图片描述
3. 公司评分排名

这里写图片描述
4.公司筛选页面
这里写图片描述
虽然页面有点简陋,但是功能还算完整,也算是画了将近5天的成果,帮助自己对于PyQt5库有个简单的了解。

实验过程

  • 系统开发环境
    1) 集成开发环境:Anaconda
    2) 编程语言:python3.6.2
    3) 数据库:sqlite3
    4) UI图形库:pyqt5
    5) 其他库:matplotlib,numpy
  • 相关技术介绍
    本系统后台数据库采用轻量型数据库sqlite,前端UI采用pyqt5图像库,首先通过qtdesigner工具设计初步UI界面,后根据需要精细设计。
  • 建立数据库
    数据库我们使用sqlite,轻量,方便,无需安装。这里我们使用前面计算好的各个公司的财务比例csv表导入数据库中。
import os
import csv
import sqlite3
import redef load_data():all_companies = []all_stack_name = []path_root = r'C:\\Users\\user\\Desktop\\finally'dirs = os.listdir(path_root)conn = sqlite3.connect(r'C:\Users\user\Desktop\A股数据预测\database.db3')#连接数据库c = conn.cursor()i=0for dir in dirs:i+=1file_name = dir.split('.')file_path =os.path.join(path_root,dir)input_filename=file_pathfile = open(input_filename,encoding="utf-8",errors="ignore")file.readline() #读入第一行,后面的读取将从第二行开始reader=csv.reader(file)#打开每一张表for row in reader:str = re.sub("[A-Za-z0-9\!\%\[\]\,\。\_\ ]", "",file_name[0])#去掉表名中不符合规范的字符sql_1="create table if not exists %s"%(str)+"(id varchar(128), \Yeas_2017 varchar(128),Yeas_2016 varchar(128),Yeas_2015 varchar(128),\Yeas_2014 varchar(128),Yeas_2013 varchar(128))"sql_2="INSERT INTO %s"%(str)+" (id,Yeas_2013,Yeas_2014,Yeas_2015,\Yeas_2016,Yeas_2017) VALUES (:d1,:d2,:d3,:d4,:d5,:d6)"c.execute(sql_1)c.execute(sql_2,{'d1':row[0],'d2':row[1],'d3':row[2],'d4':row[3],'d5':row[4],'d6':row[5]})conn.commit()if (i%10==0):print(i)c.close()
def main():load_data()
main()

这里写图片描述

后用qtdesigner初步设计搜索页面,再进一步细化页面后得到start.py
这里写图片描述

start.py

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtCore import QCoreApplication
from main import Ui_MainWindow1
import startphoto
import os
path_root = r'./finally'
dirs = os.listdir(path_root)
name=[]
firmname=""class Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.setFixedSize(500, 277)
#        Form.resize(500, 277)font = QtGui.QFont()font.setFamily("微软雅黑")Form.setFont(font)Form.setStyleSheet("")self.lineEdit = QtWidgets.QLineEdit(Form)self.lineEdit.setGeometry(QtCore.QRect(80, 190, 231, 31))sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)sizePolicy.setHorizontalStretch(0)sizePolicy.setVerticalStretch(0)sizePolicy.setHeightForWidth(self.lineEdit.sizePolicy().hasHeightForWidth())self.lineEdit.setSizePolicy(sizePolicy)font = QtGui.QFont()font.setFamily("微软雅黑")self.lineEdit.setFont(font)self.lineEdit.setText("")self.lineEdit.setReadOnly(False)self.lineEdit.setObjectName("lineEdit")self.pushButton = QtWidgets.QPushButton(Form)self.pushButton.setGeometry(QtCore.QRect(310, 190, 61, 31))font = QtGui.QFont()font.setFamily("微软雅黑")self.pushButton.setFont(font)self.pushButton.setStyleSheet("background-color: rgb(125, 125, 125);\n"
"border-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));\n"
"border-radius: 4px;")self.pushButton.setObjectName("pushButton")self.label = QtWidgets.QLabel(Form)self.label.setGeometry(QtCore.QRect(80, 110, 281, 21))font = QtGui.QFont()font.setFamily("微软雅黑")font.setPointSize(12)self.label.setFont(font)self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(Form)self.label_2.setGeometry(QtCore.QRect(130, 60, 211, 31))font = QtGui.QFont()font.setFamily("微软雅黑")font.setPointSize(18)font.setBold(True)font.setWeight(75)self.label_2.setFont(font)self.label_2.setObjectName("label_2")self.graphicsView = QtWidgets.QGraphicsView(Form)self.graphicsView.setGeometry(QtCore.QRect(0, 0, 500, 277))self.graphicsView.setStyleSheet("background-image: url(:/1/start.jpg);")self.graphicsView.setObjectName("graphicsView")self.label_3 = QtWidgets.QLabel(Form)self.label_3.setGeometry(QtCore.QRect(90, 190, 121, 31))self.label_3.setStyleSheet("color: rgb(202, 202, 202);")self.label_3.setObjectName("label_3")self.pushButton_2 = QtWidgets.QPushButton(Form)self.pushButton_2.setGeometry(QtCore.QRect(470, 0, 31, 20))self.pushButton_2.setStyleSheet("background-image: url(:/2/exit.png);")self.pushButton_2.setText("")self.pushButton_2.setObjectName("pushButton_2")self.pushButton_2.clicked.connect(QCoreApplication.instance().quit)self.pushButton.clicked.connect(self.searchButton)self.graphicsView.raise_()self.pushButton.raise_()self.lineEdit.raise_()self.lineEdit.textChanged.connect(self.masklabel3)self.label.raise_()self.label_2.raise_()self.label_3.raise_()self.pushButton_2.raise_()self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowFlags(Qt.FramelessWindowHint)Form.setWindowTitle(_translate("Form", "小财报"))self.pushButton.setText(_translate("Form", "搜索"))self.label.setText(_translate("Form", "快速锁定财富洼地, 你的价值投资军火库"))self.label_2.setText(_translate("Form", "一眼看懂公司财报"))self.label_3.setText(_translate("Form", "输入公司名/股票代码"))def masklabel3(self,Form):self.label_3.setText(None)def searchButton(self):   global firmnameif(self.lineEdit.text!=""):firmname=self.lineEdit.text()for dir in dirs:file_name = dir.split('.')file_name=file_name[0].split('_')name.append(file_name)namebool=Falsefor i in range(len(name)):if firmname in name[i]:name1=name[i][1]namebool=Trueif namebool==False:name1=name[0][1]self.mainpage = QtWidgets.QMainWindow()self.ui = Ui_MainWindow1(name1)self.ui.setupUi(self.mainpage)self.mainpage.show()if __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv) Dialog = QtWidgets.QDialog()ui=Ui_Form()ui.setupUi(Dialog)Dialog.show()sys.exit(app.exec_())

其他文件main.py,rank.py,selectfirm.py等分别对应着各个页面,里面各项数据参考《财报说》这个网站。
比如这家公司状况功能:
这里写图片描述
是由各项数据机器自动判断生成的评价(这个功能判断写的我累死了0.0)
又如如何在表格中插入数据变化趋势图例呢?
这里写图片描述
这些在我的main.py里面有,大概是用matplotlib生成图片,然后做成控件插入到表格中。
其他的细节我就不讲了,大家有兴趣可以去看看代码。

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

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

相关文章

适合财务人员的财务报表分析软件有哪些?

随着中国软件行业不断推进,中小企业蓬勃发展,目前市场上财务报表分析软件公司也随之越来越多。财务报表用哪个软件做最高效?无论哪个行业多大规模的公司,财务都是不可或缺的岗位。可能在很多人的眼里,财务是一份比较琐…

财务报表分析是在分析什么?如何选择财务报表分析工具

​如果要盘点有什么东西是任何企业都很重视的,那么财务报表一定是其中之一。企业为什么会对财务报表寄予如此高的重视呢?这是因为财务报表是我们了解一家企业的有效途径,财务报表不仅可以反映一家企业的财务状况、日常经营活动,还…

识别图片有什么软件?这几个实用的图片识别软件请收好

随着现代社会的发展,图片已经成为了人们日常生活中的重要组成部分。同时,由于图片的制作与传播越来越容易,人们也越来越需要一些能够帮助他们识别图片的软件。在这篇文章中,我将给大家介绍识别图片有什么软件,继续看下…

AI智能办公提效工具

AI工具介绍 AI工具的确可以极大地解放生产力,提高工作效率和创造力。以下是几个常见的AI工具,涵盖了PPT设计、图像处理和聊天交互等方面: (1).PPT设计工具:AI驱动的PPT设计工具可以帮助用户快速创建精美的…

AI 绘画整体认知

体验 ChatGPT 之后,深刻感觉到 “了解 AI 绘画” 这件事必须得安排上了。 于是用了两三个日夜,了解如下: (文末附完整脑图链接) 一、发展时间线 二、使用已有的AI绘画云平台(目前国内外有很多&#xff09…

推荐一个文字生成图片的网站

有的时候写文章需要把文字做成图片,简单的办法是用win自带的画图工具自己手绘一个;今天介绍一个在线的把文字生成带艺术风格图片的网站 艺术字体转换器 艺术字体在线生成器 http://www.akuziti.com/ 两个步骤 输入文字做好配置后点击“开始转换”即可…

根据文字生成图片插件

根据文字生成图片插件 根据文字生成图片插件,我之前在csdn上有公开分享过一次源码以及开发流程(本站也有相关文章),有一定开发基础的可以看这里。使用php,根据输入的文字自动生成图片,并把文字在图片上展示出来_繁华pk落幕的博客…

怎么将文字生成图片?试试这几个方法制作图片

如果你有做过宣传工作,你就会明白一张好看的海报吸引力会有多大,当我们需要制作一份宣传材料来吸引更多的潜在客户,但本人没有设计经验的时候,我们就可以借助AI文字生成图片软件来创建一个漂亮的宣传海报,然后将这个海…

文字生成图片

文章目录 摘要PaddleHub能力简介文心ERNIE-ViLG介绍配置环境模型加载推理Prompt 设计原则 摘要 根据文字生成图像,是近几年大模型领域比较热门的研究。我这篇文章主要记录如何使用百度的文心大模型实现文字生成图像。 PaddleHub能力简介 PaddleHub旨在为开发者提…

在Android市场基于初级开发饱和的情况下,有两年经验的Android开发,还能活下去吗?

前言 前段时间,一位才参加工作两年的Android开发,问了我一系列的问题,表达出他对未来的迷茫: 我是二本科班毕业,想知道需要掌握什么样的安卓技能才能稳住工作? 我在b站上看了很多安卓的教学视频&#xff0…

linux 添加快捷命令,linux 添加快捷指令

vim ~/.bashrc 文件 alias sitcd /usr/local/ 是我加的,在执行 source ~/.bashrc ,使变动的文件生效, 下一次我直接输入 sit 系统自动执行cd /usr/local/命令 2.第二种方法 在sbin 目录下vim tt 创建tt文件 编写自己的shell脚本 例如&#x…

快速开发申请加班工资审批流程系统(1)

二次开发:快速开发申请加班工资审批流程系统(1) 很多时候在公司内部,都要手动填写一些表格,久了之后,也没能去数字化流程化,将一些流程简化和自动化。网上有很多自动化OA的开源流程快速搭建和实…

查询各部门总工资最高的部门中工资最高的员工姓名,工资,所在区域,部门

sql 表 1. staff表(.sql文件) SET FOREIGN_KEY_CHECKS0; – Table structure for staff DROP TABLE IF EXISTS staff; CREATE TABLE staff ( staffId int(11) NOT NULL, deptId int(11) DEFAULT NULL, staffName varchar(255) COLLATE utf8mb4_unicode…

Problem Q: 计算公司员工的工资

Problem Description 某公司有老板Boss、雇员Employee、小时工HourlyWorker和营销人员CommWorker,他们的薪金计算方法如下: 老板实行年薪制,如一年15万;雇员按月计酬,方法是基本工资奖金;小时工按工作时间计…

OpenAi最简洁的Java流式返回接入方式,没有第三方依赖,只需要使用Spring Boot即可!轻松构建你的带有聊天记忆、画图功能的chatgpt!

OpenAi最简洁的Java流式返回接入方式,没有第三方依赖,只需要使用Spring Boot即可!轻松构建你的带有聊天记忆、画图功能的chatgpt! GitHub - NiuXiangQian/chatgpt-stream: OpenAi最简洁的Java流式返回接入方式,没有第…

ChatGPT使用的SSE技术是什么?

在现代web应用程序中,实时通信变得越来越重要。HTTP协议的传统请求/响应模式总是需要定期进行轮询以获得最新的数据,这种方式效率低下并且浪费资源。因此,出现了一些新的通信技术,如WebSocket和SSE。但是,GPT为什么选择…

用Python对自己的文章做文本分析

新型冠状病毒疫情加剧,让人闲的不行。重新打开我的简书之后,发现我在简书上也写了72篇文章了…… 想“温故而知新”一下,但是在家总是慵懒,就算是自己写的文章也不想看。但是又十分好奇自己在过去的一年多的时间里到底写了啥&…

考研复试高频问题集锦!

今天给大家带来的是考研复试中的高频问题,感兴趣的同学可以想想如果是自己被问到这些问题会怎么回答,以及可以思考老师问这些问题的原因。基本回答公式: 公式:感谢提问我认为以上是我对此问题的回答 技巧:扬长避短 另外…

计算机考研初试/复试——软件工程

一、软件 软件定义 计算机程序、文档、运行程序所必须的方法、数据、规则。方法和规则在文档中说明,在程序中实现。(文档程序数据) 软件分类 基于软件功能的划分 系统软件:与计算机硬件紧密配合使计算机各个部件与相关软件和…

电子信息工程保研复试|考研复试——通信原理复试问题集锦

电子信息工程保研/考研复试——通信原理问题集锦 保研/考研复试——通信原理问题集锦(复习重点以及面试真题!!良心整理) 面向考研/保研同学,时间紧任务重,归纳了去年保研面试中复习以及被问到的通信原理相关…