Skip to content
← 返回项目

案例 · 政府数据分析

EPSB AnalyticsSAPOL · 职业标准报告与工具

我把职业标准相关的数据整理成能够复现、能够核查的季度报告,同时搭建让这些报告可以重复产出的工具。

南澳大利亚警察局 ASO7 高级数据分析师,2026 年 3 月至今

试试概念演示 ↓

这个页面只介绍工作的类型。报告、数据和系统都属于 SAPOL,仅限内部使用,所以页面上没有任何内容取自其中。下方的演示是用合成数据做的概念示意,不是真实系统,也没有用到真实系统的任何数字或接口名称。

要解决的问题

职业道德与专业标准处(EPSB)负责南澳大利亚警察局的投诉处理、廉政和职业标准。处里的数字要交给管理层和监督机构,所以必须准确,每个季度之间要能比较,也要老实交代这些数字到底能说明多少。

这类计数不大,单靠偶然就会上下波动。某个季度看起来比上个季度差,背后可能什么都没变,而真实的变化也可能藏在正常的起伏里。把每一次波动都当成新闻的报告没有用,漏掉真实变化的报告也一样没有用。

这些记录还存放在一个庞大的投诉管理系统里。一屏一屏地手工核对很慢,事后也很难说清某个数字是怎么得出来的。

工作内容

  1. 1

    季度统计报告

    我按季度为 SAPOL 管理层编制警务使用武力与车辆追缉统计报告。每份报告都附有书面方法,每个季度的结果都能复现和核查。

  2. 2

    流程审查

    我主导了处内投诉行政流程的全流程审查,从受理一直看到结案。材料来自团队访谈和团队自己的操作笔记,最后向处领导提交了审查结论和改进建议。

  3. 3

    罚款通知分析

    我为罚款通知处(Expiation Notice Branch)分析了一个完整财年的人工开具罚款通知。Python 与 Power BI 搭建的流程可以复现,分析也只报告数据能够支撑的结论。

  4. 4

    投诉系统 API 客户端

    我为投诉管理系统的 REST API 编写了 Python 客户端和网页控制台,覆盖 1,100 多个接口,记录的查询和核对改由脚本完成,不再依赖手工操作。

带来的变化

交给管理层的报告,每个数字背后都有书面方法
每季度
个投诉系统接口,可以通过同一个 Python 客户端调用
1,100+
的人工罚款通知,用可复现的流程完成分析
1 个财年
投诉行政流程从受理到结案的完整审查
全流程

这些工作有一条共同的线:每个数字都应该能追溯。管理层报告里的数字只要能按方法和数据重新算出来,对它的疑问就只需要核对一下,不必争论半天。记录能用脚本取出来,下个季度就能再跑一遍同样的核对,不用有人再手工做一次。

罚款通知分析也遵循同样的习惯。它只报告数据能够支撑的结论,这样做决定的人知道每条结论能承担多大的分量。流程审查在流程层面也是这个思路。它以团队自己的访谈和操作笔记为基础,所以提出的建议从工作的实际做法出发。

怎么做的

报告
Python、SQL 与 Power BI
工具
Python 客户端,FastAPI 与 Vue 控制台
方法
统计建模,并写成文档
团队
情报与廉政组
  • Python
  • Power BI
  • SQL Server
  • FastAPI
  • Vue
  • Statistical modelling

报告以代码的形式运行,不靠一连串手工步骤。Python 负责清洗数据和统计计算,Power BI 负责管理层看到的图表。每份报告旁边都有一份书面方法,任何一个季度都能重新跑一遍,结果可以核查,而不是只能相信。

API 客户端的出发点很简单。给 1,100 多个接口逐个手写函数,永远也跟不上,所以客户端给它们提供了一套统一的调用方式。用 FastAPI 和 Vue 做的网页控制台,又把同样的能力交给了不写 Python 的同事。

我的角色

我是职业道德与专业标准处情报与廉政组的 ASO7 高级数据分析师,2026 年 3 月入职,负责处里的数据分析。季度报告由我编制,流程审查由我主导,API 客户端和网页控制台也是我做的。

我还负责维护核心数据,管理信息、战略规划和议会报告都以它为准,大家用的是同一个来源。

概念演示

这只是概念示意。下面所有数字都是合成的,由你的浏览器根据随机种子生成。没有任何内容来自 SAPOL、它的报告或系统,API 目录里的接口名称也都是编造的。任何数据都不会发送出去。

演示分两部分。第一部分用合成计数生成一份小型季度报告,内容包括每千次出警的比率及其精确泊松区间、标出异常季度的 u 控制图,以及只说数据能支撑之事的简明结论。第二部分是一个玩具版 API 客户端。它读取一份合成的 OpenAPI 目录,把每个操作变成一个方法,展示一个客户端如何覆盖数百个接口。

合成数据 · 在你的浏览器中生成

概念示意,并非真实系统

合成数据集

第 6 组
植入变化的幅度
置信水平
u 控制图:每千次出警的事件数
u 控制图:每千次出警的事件数十二个合成季度,从第1年 Q1 到第3年 Q4。中心线为每千次 1.92 起。在全部十二个季度中,第3年 Q2 落在控制限之外。下方表格列出了全部数值。01234Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4第1年第2年第3年
  • 中心线
  • 控制限(3 个标准误)
  • 超出控制限
  • 超过 2 个标准误,值得留意
  • 报告季度

合成数据 · 在你的浏览器中生成

季度统计报告(演示)

第3年 Q4 · 每千次出警的合成事件数

事件数
93
出警次数
44,761
每千次比率
2.08
95% 置信区间
1.68–2.55

结论

  • 第3年 Q4 共记录 93 起事件,出警 44,761 次,每千次出警 2.08 起(95% 置信区间 1.68 至 2.55)。
  • 这一比率落在控制限之内,从控制图上看,这是一个普通的季度。
  • 与上一季度(第3年 Q3,每千次 1.98 起)相比,比率之比为 1.05(95% 置信区间 0.78 至 1.41)。 区间包含 1,数据不足以说明发生了变化。
  • 与去年同季度(第2年 Q4,每千次 1.83 起)相比,比率之比为 1.14(95% 置信区间 0.83 至 1.56)。 区间包含 1,数据不足以说明发生了变化。
  • 在全部十二个季度中,第3年 Q2 落在控制限之外。

你在 第3年 Q2 植入了 +50% 的变化。 控制图发现了它。

方法

比率为每千次出警的事件数。区间采用精确泊松(Garwood)区间。u 控制图的中心线是十二个季度合并后的比率,每个季度的控制限位于中心线上下三个标准误处,其中出警 n 千次时的标准误为 √(ū / n)。比率之比采用精确的条件二项区间。所有数据均为合成数据。

全部十二个合成季度
季度出警次数事件数每千次比率95% 区间控制图
第1年 Q141,329791.911.51–2.38限内
第1年 Q242,713721.691.32–2.12限内
第1年 Q344,899761.691.33–2.12限内
第1年 Q442,056741.761.38–2.21限内
第2年 Q141,433751.811.42–2.27限内
第2年 Q242,992791.841.45–2.29限内
第2年 Q346,137841.821.45–2.25限内
第2年 Q441,619761.831.44–2.29限内
第3年 Q141,015711.731.35–2.18限内
第3年 Q2植入44,9981262.802.33–3.33高于上限
第3年 Q347,443941.981.60–2.42限内
第3年 Q444,761932.081.68–2.55限内

第3年 Q4 报告:每千次 2.08 起,限内。

如果你也在处理要拿到管理层面前的小计数,或者面对一个大到没法手工封装的 API,欢迎来交流。