运用Python技术构建分析模型揭示政府采购项目围标串标问题
运用Python技术构建分析模型揭示政府采购项目围标串标问题 政府采购,是指各级国家机关、事业单位和团体组织,使用财政性资金采购依法制定的集中采购目录以内的或者采购限额标准以上的货物、工程和服务的行为。公开招标是政府采购的主要采购方式。近年来,随着政府采购规模的扩大与市场主体的多元,以围标串标为代表的违规违法行为呈现隐蔽化、智能化趋势,严重破坏了市场竞争秩序。本文以某市信息化建设情况、水资源保护利用及相关资金管理使用情况专项审计调查项目为例,介绍基于Python技术构建的成交价格分析法、图形化分析法、关联规则分析法三种分析模型,为破解海量招标投标数据中复杂关联关系这一难题提供思路,助力规范政府采购行为,营造公平公正的营商环境。 在某市信息化建设情况、水资源保护利用及相关资金管理使用专项审计调查项目中,涉及大量的工程项目,招标投标又是工程项目政府采购中的重要环节,引起审计人员重点关注。审计人员抽查发现,某工程项目的中标价格与本市其他县(市、区)同类型的项目价格差距较大、两家投标企业电子标书上传IP地址归属地为同一办公地点且文件编制信息高度雷同、两家企业机器制作码相同。为对所有招标投标项目进行全覆盖核查,审计人员通过运用Python爬虫、图形化及关联规则分析等方法,快速锁定投标企业相互串标的疑点线索。 selenium是一个基于浏览器自动化的开源工具,在爬虫领域主要用于解决动态网页数据抓取难题,支持模拟点击、表单填写、页面滚动等交互操作,以突破登录验证或反爬限制,同时结合无头模式、随机User-Agent等配置,降低被封锁风险。其广泛应用于复杂交互的小规模数据采集场景。 由于该市部分信息化项目是自上而下建设,且建设的系统需求基本相同,周边地区的人工、材料等物价基本一致,若某个地区的中标金额比其他地区偏高,那么该地区可能存在招标程序不合规或围标串标等情况。审计人员采用Python的selenium库模拟浏览器行为,抓取周边地区公开招标投标数据,比对分析同类型项目成交价格存在异常的情况。具体操作方法如下。 步骤1:安装Python的selenium、time等库。 步骤2:模拟浏览器行为,抓取该市公共资源交易平台发布的政府采购信息化项目成交信息。由于数据是分页显示,需要遍历不同页面,这时可通过修改URL参数来实现翻页。需要注意的是,网站可能有反爬虫的封禁机制,这种情况下使用time.sleep设置合理的延迟时间,应避免请求过快被封锁。 步骤3:公共资源交易平台的页面结构较为复杂,包括表格、链接等元素,审计人员需仔细分析页面结构,使用合适的CSS选择器或XPath来定位元素,并处理好日期格式、金额等特定字段。在对数据完成清洗后,将项目名称、网址、来源、业务类型、采购项目编号、公告日期、中标供应商、中标价格等信息生成到数据表。 步骤4:通过对比分析同类型项目的成交价格,找出成交价格存在异常情况的项目,再调取该项目招标投标资料,进一步核实投标企业之间是否存在串标行为。通过比对分析,审计人员筛出该市企业排污智能管控等两个项目成交价格明显高于其他县(市、区)的疑点。进一步核实投标企业资料,发现上述项目的中标企业与其他企业存在串标行为。 pyecharts是一个基于ECharts的Python数据可视化库,能够帮助用户通过简洁的API快速生成交互式的动态图表。它支持包括折线图、柱状图等超过40种常见及高阶图表类型,并提供丰富的数据格式兼容性,可轻松处理列表、DataFrame等多种数据结构,是连接Python数据处理与前端可视化展示的高效工具。 在分析数据时,审计人员发现虽然同一采购项目不同投标企业的机器制作码不一致,但是存在同一机器制作码对应多个不同企业的情况,这些企业之间存在较大串标嫌疑。审计人员利用Python的pyecharts库,通过图形化技术生成同一机器制作码对应企业关系图及参与相关采购项目投标分析图,直观发现疑点线索。 步骤1:安装Python的pyecharts、pandas、pyodbc等相关库。 步骤2:在SQL Server环境中,从交易数据中筛选出同一机器制作码对应多个不同投标企业的信息,生成“同一机器制作码对应企业信息数据表”;关联交易数据及“同一机器制作码对应企业信息数据表”,筛选出同一机器制作码对应企业参与投标项目的标段名称、投标企业名称及中标企业名称,生成“同一项目投标企业信息数据表”。 步骤3:在Python环境中,设置节点nodes参数,如节点大小symbol_size、分类颜色category,以及边链接参数,如源source、目标target,根据“同一机器制作码对应企业信息表”,以机器制作码、投标企业名称作为节点,以二者的对应关系为边链接,设置关系图的配置选项,利用Graph函数生成“同一机器制作码对应企业关系图”;同理,根据“同一项目投标企业信息表”,分别以标段名称、投标企业名称及标段名称、中标企业名称作为节点,以二者的对应关系为边链接,生成“同一机器制作码对应企业投标项目及中标情况分析图”。 步骤4:分析“同一机器制作码对应企业关系图”和“同一机器制作码对应企业投标项目及中标情况分析图”,重点审查同一机器制作码对应企业共同参与投标的项目。通过比对分析,审计人员发现该市6家企业通过同一机器制作码与多个企业存在关联关系,且共同参与同一项目投标并中标,存在“组团”串标行为。 (三)基于mlxtend库的Apriori关联规则分析法 Apriori关联规则算法是数据挖掘中用于揭示事务数据间隐藏关联性的重要工具。其核心思想是基于逐层搜索与剪枝策略,通过扫描数据集统计单个项的出现频率,筛选出满足最小支持度阈值的频繁项集;再通过连接操作生成更高阶候选集,并利用先验原理剔除包含非频繁子集的候选,大幅压缩计算规模。重复此过程,直至无法生成新频繁项集为止。 由于每年政府采购项目数量较大,若出现两家甚至多家企业同时频繁参与同一个项目的招标投标,那么这些企业大概率存在潜在联系。为分析该问题,审计人员运用Python的mlxtend库,基于Apriori关联分析算法分析企业间的潜在关系,再根据支持度分析企业在共同参与投标的项目中是否存在串标行为。 步骤1:安装Python的mlxtend、numpy、pandas等相关库。 步骤2:在SQL Server环境中,从交易数据中筛选出标段ID、建设单位、中标单位、投标企业等信息,生成“分析表_参与投标企业数据表”;利用SQL语句,将以列存放的“投标企业”字段转换成以行存放并生成“分析表_参与投标企业_转换数据表”。步骤3:在Python环境中,对数据进行预处理,使用TransactionEncoder函数将数据进行离散化处理,调用fit_transform方法转换数据,生成适合Apriori关联规则算法使用的布尔型数据集,再通过Apriori函数计算频繁项集,使用association_rules函数计算关联规则,依次分析在全市投标活动中,任意两家企业同时参与同一项目的所有情况,得到不同企业之间“两两组队”参与投标的次数。 步骤4:根据分析结果,审计人员重点关注相关性极高且注册地址不在一个区域的两家企业共同参与的投标项目,进一步核实投标企业是否存在“组团”串标行为。通过比对分析,筛出“两两组队”参与投标的数据,并按次数降序排列,重点核实排名靠前且中标方为其中一家企业的疑点数据,发现6家投标企业存在“组团”串标行为。 基于上述三种审计思路与方法,审计组进一步调查核实取证,发现在6个项目的招标投标过程中,中标企业与其他投标企业存在串标行为。审计机关将该问题线索移送主管部门调查处理后,相关企业被列入不良行为记录名单,两年内禁止参加政府采购活动。根据审计机关提出的建立政府采购领域联合执法机制、严肃查处投标企业围标串标行为等审计建议,该市印发《政府采购领域联动执法协作工作机制(暂行)》,加强财政、公安、市场监管等部门联动协作、协同监管,在各自职责范围内依法查处相关责任主体违反政府采购规定的行为,加大政府采购领域执法协作力度,推动全市营商环境进一步优化。(作者单位:山东省龙口市审计局)来源:中国审计2025-8