欢迎来到审计法治网!

审计法治网

当前位置: 首页 > 审计研究 > 正文

【技术方法】从SQL到Python在区县财政预算执行审计中的应用

发布时间:2024-06-06     来源: 山东省审计厅     作者:佚名    

  在当今数字化的时代,审计工作也越来越依赖于技术手段。2001年审计署开始计算机审计中级培训,最早开设的课程包括VB、ACCESS和SQL等语言的学习,SQL语言也是最早一批在审计工作中进行应用的计算机编程语言,也是包括区县级审计机关最早接触的计算机语言。Python虽然诞生于1989年,到中国的时间可以追溯到1997年,正值中国计算机科学教育和研究领域刚刚开始蓬勃发展的时期,但一直到2017年末才开始真正在中国流行。而计算机审计也在经历革新,计算机审计阶段、信息系统审计阶段以及智慧审计阶段,三个阶段的形成标志着计算机审计飞速向前发展。近年来审计计算机中级培训中开设了Python高级编程语言的学习,也是基于Python在数据分析、机器学习和自动化领域的广泛应用,Python的重要性在审计领域逐渐得到认可。目前,区县级财政预算执行审计中普遍应用SQL关系型数据库语言对数据库表单进行分析处理。随着智慧审计应用技术的深入发掘,新应用场景的开发,需要更多的计算机技术进行支撑。SQL、Python等数据库编程语言的学习,同样是基于越来越复杂的智慧审计应用环境,便于让审计人员更好的适应未来信息技术的发展。

  一、SQL和Python在财政审计应用场景中的结合

  为了更加高效的完成数据分析工作,完成从数据分析到疑点表“一键式”操作,提高审计效率,审计组利用“SQL+Python”在财政审计应用场景中的进行结合应用。如开展对本级财政一体化数据分析,相关的数据表单在SQL数据库中进行查询分析,利用Python链接SQL数据库中的“zqczsj”(区级财政一体化数据)数据库中的“zfmx”(国库集中支付明细)数据库表单,查询预算单位名称为“某单位”的支付数据情况,并将疑点自动生成“疑点表.xlsx”,步骤简述如下:

  1.导入pymssql和pandas库,并设置数据库连接信息。

  2.使用pymssql.connect()方法建立与数据库的连接,并创建一个数据库游标对象(cursor)。

  3.定义查询语句(query),该语句从SQL数据库中选择所有列,但只包括“预算单位名称”字段包含特定字符串(这里是某单位)的记录,使用游标对象的execute()方法执行查询。

  4.获取查询结果:从游标的描述信息中提取查询结果的列名称,用fetchall()方法获取所有查询结果,将查询结果转换为DataFrame,同时使用pandas库的DataFrame方法,将查询结果转换为DataFrame对象,列名为之前提取的列名称,保存查询结果到Excel文件,指定要保存的Excel文件名为“疑点表.xlsx”。

  运行后显示结果如下:

  

  

  疑点表内容:

  

  

  二、Python相对SQL在对于非结构化数据处理优势

  SQL和Python都可以用于处理数据,但对于非结构化数据的处理,它们的优势有所不同。SQL主要用于关系型数据库管理系统(RDBMS),擅长处理结构化数据,如表格形式的数据。它提供了强大的查询和操作功能,能够高效地对结构化数据进行筛选、排序、聚合等操作。SQL的优势在于其简洁性和效率,特别适用于大规模数据的处理和分析。然而,对于非结构化数据,如文本、图像、音频、视频等,SQL的处理能力相对有限。非结构化数据通常需要更复杂的处理方法,例如文本识别、音频分析等。Python具有丰富的库和工具,可用于处理各种类型的数据,包括非结构化数据。Python的优势在于其灵活性和可扩展性,可以通过编写自定义的代码和使用相关的库来处理非结构化数据。因此,如果是处理结构化数据,SQL可能是更合适的选择,因为它提供了高效的查询和数据管理功能,但对于非结构化数据处理,Python可能更具优势,因为它提供了更灵活的编程接口和丰富的工具库。以下是在财政审计中利用Python处理常用的文本资料,查找出高频词,锁定审计重点事项的实例,代码简要说明如下:

  1、导入os、win32com.client、jieba、pandas、matplotlib、PIL、wordcloud、numpy库。

  2.定义process_file函数,接收输入和输出文件夹的路径作为参数,使用win32com.client打开Word应用程序,并遍历输入文件夹中的所有Word文档,对每个文档读取其内容,并提取文本段落,将提取的文本段落保存到一个列表中。

  3.定义jieba_text函数,该函数接收一个包含文本的列表作为参数,对列表中的每个文本进行分词处理。

  4、定义data_stu函数,接收分词后的文本列表作为参数,将所有分词结果合并,并按空格分割成单词列表,使用collections.Counter统计每个单词的频率,创建一个pandas DataFrame,包含单词及其频率。

  综上所述,从读取Word文档、文本提取、分词处理、频率统计到生成词云图像,都包含在内,通过输入文件夹路径来指定要处理的文档,最终生成可视化图像。如查询“区2022年预算执行情况和2023年预算草案的报告”,找出高频词,运行后显示结果如下:

  

  三、Python相对SQL在结构化数据可视化的图形方面优势

  SQL和Python在数据分析和可视化方面各有优势,SQL在数据查询和管理方面非常强大,而Python在数据处理和可视化方面更具灵活性,python拥有丰富的可视化库,如Matplotlib、Seaborn、Plotly等,这些库提供了丰富的图形类型和高度可定制的样式。相比之下,虽然SQL Server等工具也提供了一定的数据可视化功能,但其种类和灵活性通常不如Python。其次,python的数据处理与可视化的整合方面也具有优势,Python可以方便地与其他数据处理和分析库(如Pandas、NumPy等)集成,使得数据处理和可视化过程更加顺畅,而SQL主要用于数据查询和管理,虽然也可以生成一些基本的图表,但在数据处理的复杂性和灵活性上通常不如Python。区县审计机关在财政审计中通常会关注被审计单位资产、负债等变动情况,笔者通过“pandas”和“matplotlib”库对资产类部分科目2021年至2023年末数据进行图形化分析,代码简要说明如下:

  1.导入pandas、matplotlib.pyplot库。

  2.使用pd.read_excel函数读取Excel文件,将数据存储在df这个DataFrame对象中。

  3.设置图形大小,并绘制柱状图,使用plt.bar函数绘制柱状图,分别展示2021年末、2022年末和2023年末的资产情况,并通过调整position参数来控制每个柱状图的位置,使它们并排显示,同时设置不同的颜色来区分不同的年份。

  4.使用plt.legend()添加图例,以区分不同年份的数据,并使用plt.xlabel、plt.ylabel和plt.title分别设置x轴标签、y轴标签和图形标题,使用plt.show()输出图像。

  通过对Excel表单中资产类科目金额分析,用柱状可视化图形查看各科目近三年的变动趋势,结果如图:

  

  

  审计大数据分析从SQL过渡到Python是技术进步和审计需求变化的必然结果,这一转变的背后有几个关键驱动力,包括数据复杂性的增加、分析需求的深化以及Python社区的繁荣,此外,Python的易读性和易学性也使得它在审计领域得到更广泛的应用,这种转变将提高审计工作的效率和准确性,有助于审计机关更好地履行职责,维护财经纪律和市场秩序。

  


原文链接:http://audit.shandong.gov.cn/art/2024/6/6/art_89388_10376960.html
[免责声明] 本文来源于网络转载,仅供学习交流使用,不构成商业目的。版权归原作者所有,如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间处理。
  • 法制项目简介 本网招聘 本网概况 联系我们 会员服务 免责声明 网站地图 投稿服务