• 无障碍
  • 长辈版
宣州区统计局
您现在所在的位置: 网站首页> 政府信息公开首页 > 宣州区统计局> 决策部署落实情况
索引号: 11341703003249223T/202407-00011 组配分类: 决策部署落实情况
发布机构: 宣州区统计局 主题分类: 综合政务
名称: Python助力经济普查 迈出数字化新步伐——宣州区统计局数字化转型路径分析与思考 文号:
生成日期: 2024-07-12 发布日期: 2024-07-12
索引号: 11341703003249223T/202407-00011
组配分类: 决策部署落实情况
发布机构: 宣州区统计局
主题分类: 综合政务
名称: Python助力经济普查 迈出数字化新步伐——宣州区统计局数字化转型路径分析与思考
文号:
生成日期: 2024-07-12
发布日期: 2024-07-12
Python助力经济普查 迈出数字化新步伐——宣州区统计局数字化转型路径分析与思考
发布时间:2024-07-12 17:03 来源:宣州区统计局 浏览次数: 字体:[ ]

随着“五经普”工作进入到普查登记阶段后期,区经普办所需处理的数据量日益增长,以往的工作方式和客观条件难以满足各科室、单位、人员对不断提高的统计需求,本文通过区经普办利用Python近期解决的一大工作难点为例,浅析宣州区统计局数字化转型的发展路径。

一、问题概述

当前“五经普”平台数据汇总功能尚不完善,自定义分组功能尚未开放,可使用的分组汇总功能仅支持到乡镇、街道一级。为及时准确掌握我区各抽样层普查小区完成进度、人均营收、户均营收、人均支出、户均支出等重要指标,需对平台导出全部个体户数据进行逐一筛选。我区抽样层个体户数量有3000多家,普查小区共计38个,需分专业、回访情况、样本标识等指标进行38次筛选、计算,工作量繁琐。不仅汇总一次平均用时1小时以上,且容易出错。

为解决上述问题,区经普办利用Python中pandas、openpyxl、pyinstaller等库工具编写代码,打包成数据筛选、整理、汇总程序。根据平台导出数据,一键生成所需汇总表格,极大降低工作时长,并适用于推广使用。

二、设计思路

为将导出数据进行筛选并分抽样小区进行计算,需将个体户抽样底册和每日导出数据进行比对,将计算结果按顺序生成新表格,将结果一键复制到已做成模板的Excel中,为此先将个体底册文件命名为“抽样层底册.xlsx”,导出文件命名为“个体导出.csv”,均保存在指定路径中,具体步骤如下:

(一) 数据清洗、整理

个体导出.csv中需剔除全面层和新增个体户,为方便和抽样层底册.xlsx进行比对,将其专业代码替换成专业名称,并剔除异常专业代码的个体。具体代码和语句说明如下:

import pandas as pd

# 读取个体户.csv文件

df_gt = pd.read_csv('C:\\导出汇总\\个体导出.csv')

# 删除“样本标识”和“受访情况”列中数值不为2的行

df_gt = df_gt[(df_gt.iloc[:, 20] == 2) & (df_gt.iloc[:, 4] == 2)]

# 删除第3列中数值为J的行

df_gt = df_gt[df_gt.iloc[:, 2] != 'J']

# 替换“专业代码”列中的字母

df_gt.iloc[:, 2] = df_gt.iloc[:, 2].replace({'A': '服务业', 'B': '工业', 'C': '建筑业', 'E': '批发和零售业', 'F': '服务业', 'S': '住宿和餐饮业'})

(二) 数据比对、计算

对清洗整理后的个体导出数据,同底册进行比对,将个体导出中普查小区代码和底册普查小区代码相同的个体针对所需指标进行分类计算,pandas库支持强大的遍历循环语句,极大减轻代码编写负担,具体代码和语句说明如下:

# 读取抽样层底册.xlsx文件

df_sample = pd.read_excel('C:\\导出汇总\\抽样层底册.xlsx')

# 遍历抽样层底册.xlsx的每一行

for i in range(len(df_sample)):

if pd.notnull(df_sample.iloc[i, 0]):  # 检查第一列第i行是否非空

# 在个体导出.csv中查找满足条件的行(“小区区划代码=普查小区代码”并且“专业代码=专业”)

matching_rows = df_gt[(df_gt.iloc[:, 19] == df_sample.iloc[i, 0]) & (df_gt.iloc[:, 2] == df_sample.iloc[i, 1])]

# 计算满足条件的行数,并填入抽样层底册.xlsx的第i行第六列

df_sample.at[i, '正常采集数'] = len(matching_rows)

# 对满足条件的行进行求和操作,并填入抽样层底册.xlsx的相应列

df_sample.at[i, '从业人数'] = matching_rows.iloc[:, 10].sum()

df_sample.at[i, '与经营相关总支出(千元)'] = matching_rows.iloc[:, 14].sum()

df_sample.at[i, '与经营相关总营收(千元)'] = matching_rows.iloc[:, 17].sum()

# 计算其他所需的值,并填入抽样层底册.xlsx的相应列

if df_sample.at[i, '正常采集数'] != 0:

df_sample.at[i, '户均人数'] = df_sample.at[i, '从业人数'] / df_sample.at[i, '正常采集数']

df_sample.at[i, '户均支出'] = df_sample.at[i, '与经营相关总支出(千元)'] / df_sample.at[i, '正常采集数']

df_sample.at[i, '户均营收'] = df_sample.at[i, '与经营相关总营收(千元)'] / df_sample.at[i, '正常采集数']

df_sample.at[i, '人均支出'] = df_sample.at[i, '与经营相关总支出(千元)'] / df_sample.at[i, '从业人数']

df_sample.at[i, '人均营收'] = df_sample.at[i, '与经营相关总营收(千元)'] / df_sample.at[i, '从业人数']

else:

# 如果第一列第i行为空,则停止循环

break

(三) 结果生成

将计算好的结果生成新的Excel文件,具体代码和语句说明如下:

# 将结果保存为新的Excel文件

df_sample.to_excel('C:\\导出汇总\\抽样个体户进度.xlsx', index=False)

print("任务完成")

三、运行成果和推广

经调试,只需将平台导出数据放入指定文件路径,运行程序后即可得到所需汇总结果,将原1小时以上工作缩短至不到1分钟,我区部分普查小区汇总结果如下表:


普查小区代码

村、社区

户均支出(千元)

户均营收(千元)

人均支出(千元)

人均营收(千元)

工业

341802004004001

玉山社区居委会

85.0

194.2

40.4

92.4

341802100002003

裘公社区居委会

121.4

291.8

54.7

131.3

341802102201001

丁店村委会

135.9

201.6

79.3

117.6

341802104500001

安徽省麻菇山茶场生活区

202.2

230.8

55.1

63.0

341802113203001

金龙村委会

163.5

365.8

107.6

240.8

341802200002001

朱家桥社区居委会

215.4

371.6

56.0

96.6

341802204200001

柏枧村委会

1212.1

1490.5

180.9

222.5

为进一步推广该程序,利用pyinstaller库将源代码打包成.exe程序,支持在任意64位win操作系统计算机上运行,并编写使用说明,方便任一级经普办使用。

目前,除区经普办外,该程序还已投入宣城市经普办汇总工作中进行使用。市级个体抽样数据在万条以上,普查小区百余个,工作量约为区经普办3倍,每日需耗费约3小时处理,使用该程序后同样将工作时长压缩至几分钟内,简便高效,精准可靠。

四、存在问题

Pandas库、opnenpyxl库以及Excel的使用,足以胜任“五经普”和常规统计工作的绝大多数场景,但在我区实际工作中还存在以下问题:

(一) 算力不足

以上述个体户汇总代码为例,在使用区经普办高性能台式机(CPU型号为12th Gen Intel(R) Core(TM) i7-12700)运算区一级3000多条数据时,平均耗时1秒左右。而使用另一台性能较弱笔记本电脑进行运算耗时超过10秒,使用该笔记本处理市一级个体数据时,耗时超过20秒。而对于性能更弱一些的计算机,该程序运行后容易死机或报错。上述算法对CPU性能有一定要求,经测试区经普办其他计算机普遍耗时超过10秒,当数据超过一定量级时,算力将成为主要限制因素。

而若使用基于transformer算法的通用大语言模型来训练人工智能算法模型的话,对GPU性能则有更高要求,区机关计算机将更加难以胜任。

(二)人员知识储备不足

上述程序使用并非一成不变,当环境变量或数据结构发生改变,需要对代码和程序以及数据结构作微调,而使用者普遍不具备基础编程知识,一旦程序运行报错,不具备调试和改进能力。

(三)开发力量薄弱

懂开发的人不懂专业,懂专业的人不懂开发,是统计程序设计推广的难点之一,如何做到开发设计和需求“心意相通”,就必须要由既懂专业又懂开发的人才能做出专业领域内更加适配的软件。

区局开发力量相对薄弱,要深化数字统计产品应用,提高数据处理、分析、监测预警的准确高效性,还需进一步强化开发力量,为统计信息化,数字化转型奠定基石。

五、意见建议

个体户汇总程序的使用推广,是在零基础的条件下,我区统计数字化进程迈出的坚实一步,虽然我区数字化进程与长三角发达地区统计部门相比存在巨大差距,但仍可努力争先,奋力追赶,具体要做到以下几点:

(一)部署区级算力系统

一是要搭建本地服务器,扩展算力空间,实现算力共享,对于工作量较复杂的程序各专业人员可通过本地服务器进行运算并下载结果;二是部署内网平台,通过可视化操作平台使用,工作人员可以实现信息共享,程序共享,在保证保密性和安全性同时,提高工作效率,减少各专业间交流壁垒。三是建立本级数据库系统,利用服务器和平台建立区级数据库,优化数据存储、提取方式,更为外部单位与区局数据互联畅通渠道。

(二)提高专业人员计算机技能水平

定期开展计算机专业技能培训,从实际应用角度出发,由操作入手,为统计专业各科室人员提供通俗易懂、上手快、见效好的技能培训服务。以python学习为例,可通过培训向专业人员介绍如何从零基础开始使用python,并通过实际案例展示其作用,让专业人员实际感受数字化转型下办公的高效便利。

(三)培养开发后备力量

建立健全人才培育机制,对创新能力人才进行重点培育,给予机会,敢于提拔。以成绩和能力为重点建立人才评价体系,对有一定计算机能力基础的人员让其在各统计专业进行轮岗,确保其在开发过程中能准确把握各统计专业真实需求,了解各项指标含义、来源,确保产品开发和使用需求接轨。