Claude API + Python:搭一个香港公开数据自动分析管道
文章目录一、痛点5,700 个数据集从哪下手二、data.gov.hk 的 API 结构先理解再动手三、核心代码三步管道Step 1: 发现数据集——CKAN API 批量拉取Step 2: 抓取样数据——Data Filtering APIStep 3: Claude API 自动分析——tool_use 强制结构化输出四、管道输出一份自动生成的「数据分析清单」五、实际运行结果六、框架的复用性七、三个避坑要点坑1: Data Filtering API 列号是 1-indexed坑2: CKAN 端点必须带语言前缀坑3: Claude tool_use 的 input 已经是 dict八、环境信息九、总结一、痛点5,700 个数据集从哪下手data.gov.hk 是香港政府的一站式开放数据平台。截至 2026 年 8 月上面有5,700 个数据集覆盖交通、天气、人口、住房、金融等 20 个类别。其中约 2,500 个提供了 API 接口。但问题来了——你打开网站面对 5,700 个数据集怎么快速找到「哪些数据值得分析」传统做法是一个一个点开看描述→看字段→判断是否有分析价值→手动记录。20 个数据集下来半小时就没了。这篇文章给你一个自动化方案用 Claude API 的 structured output 能力写一个 Python 管道自动帮你做三件事发现从 data.gov.hk CKAN API 拉取数据集列表抓取用 Data Filtering API 取每个数据集的前 5 行样本分析把样本元数据丢给 Claude让它自动生成结构化摘要和分析建议最终产出一份自动生成的「可分析数据集清单」包含每个数据集的字段说明、数据质量评估、推荐分析方法。二、data.gov.hk 的 API 结构先理解再动手data.gov.hk 提供了三层 API层级API用途端点示例发现层CKAN API列出数据集/分类/搜索package_list/package_show查询层Data Filtering API v2按条件查询排序分页/v2/filter?q{...}历史层Historical Archive API获取历史版本/v2/history?resource...我们用前两层就够了。CKAN API 关键端点所有端点都要带语言前缀/en-data/、/tc-data/、/sc-data/# 列出所有数据集IDGET https://data.gov.hk/en-data/api/3/action/package_list# 获取某个数据集的完整元数据含字段名、CSV/JSON资源URLGET https://data.gov.hk/en-data/api/3/action/package_show?id{dataset_id}Data Filtering API v2的结构注意列号是1-indexed不是0-indexed# 查询某个CSV资源的前5行query{resource:http://www.xxx.gov.hk/data.csv,section:1,format:json,filters:[],sorts:[],limit:5}GET https://api.data.gov.hk/v2/filter?q{url_encode(json.dumps(query))}三、核心代码三步管道完整代码约 150 行三步走。Step 1: 发现数据集——CKAN API 批量拉取importrequestsimportjsonimporttimefromtypingimportList,Dict BASE_CKANhttps://data.gov.hk/en-data/api/3/actiondeflist_all_datasets(limit:int100)-List[str]:拉取所有数据集ID可按limit截断用于测试resprequests.get(f{BASE_CKAN}/package_list)datasetsresp.json()[result]returndatasets[:limit]defget_dataset_meta(dataset_id:str)-Dict:获取单个数据集的完整元数据resprequests.get(f{BASE_CKAN}/package_show,params{id:dataset_id})resultresp.json()[result]return{id:result.get(id),title:result.get(title,),notes:result.get(notes,)[:500],# 截断长描述category:result.get(organization,{}).get(title,Unknown),resources:[{name:r.get(name),format:r.get(format),url:r.get(url)}forrinresult.get(resources,[])ifr.get(format)in[CSV,JSON,XLSX]]}# 拉取前50个数据集完整5700个需要约5分钟测试用50个dataset_idslist_all_datasets(limit50)print(f找到{len(dataset_ids)}个数据集)# 获取每个数据集的元数据metas[]fords_idindataset_ids:try:metaget_dataset_meta(ds_id)metas.append(meta)time.sleep(0.3)# 礼貌限速exceptExceptionase:print(f跳过{ds_id}:{e})Step 2: 抓取样数据——Data Filtering APIimporturllib.parsedeffetch_sample(resource_url:str,limit:int5)-List[Dict]:用Data Filtering API v2取CSV资源的前N行query{resource:resource_url,section:1,format:json,limit:limit}encodedurllib.parse.quote(json.dumps(query))resprequests.get(fhttps://api.data.gov.hk/v2/filter?q{encoded})returnresp.json()# 为每个数据集取第一个CSV资源的样本formetainmetas:csv_resources[rforrinmeta[resources]ifr[format]CSV]ifcsv_resources:try:samplefetch_sample(csv_resources[0][url],limit5)meta[sample_data]sample[:5]# 只保留前5行exceptException:meta[sample_data]NoneStep 3: Claude API 自动分析——tool_use 强制结构化输出这是整个管道的大脑。把元数据样本丢给 Claude让它输出结构化的分析建议。importanthropic clientanthropic.Anthropic()# 需要 ANTHROPIC_API_KEY 环境变量# 定义 Claude 的输出格式tool_use 100% schema 合规analysis_tool{name:dataset_analysis,description:分析一个公开数据集的价值和建议用法,input_schema:{type:object,properties:{dataset_title:{type:string},field_summary:{type:string,description:用一段话总结这个数据集包含哪些字段和数据维度},data_quality:{type:string,description:评估数据质量完整性、时效性、是否有缺失值},analysis_suggestions:{type:array,items:{type:string},description:推荐2-3个具体的数据分析方向},difficulty:{type:string,enum:[入门,中级,高级],description:分析难度评估},value_score:{type:integer,minimum:1,maximum:10,description:分析价值评分(1-10)}},required:[dataset_title,field_summary,analysis_suggestions,difficulty,value_score]}}defanalyze_dataset_with_claude(meta:Dict)-Dict:让Claude分析一个数据集promptf请分析以下香港公开数据集 标题:{meta.get(title,无标题)}描述:{meta.get(notes,无描述)[:300]}类别:{meta.get(category,未知)}资源格式:{, .join(set(r[format]forrinmeta.get(resources,[])))}样本数据(前5行):{json.dumps(meta.get(sample_data,[]),ensure_asciiFalse)[:500]}responseclient.messages.create(modelclaude-sonnet-4-5,max_tokens1024,tools[analysis_tool],tool_choice{type:tool,name:dataset_analysis},messages[{role:user,content:prompt}])# tool_choice 强制 Claude 必须调用 tool → 100% 返回结构化 JSONtool_blocknext(bforbinresponse.contentifb.typetool_use)returntool_block.input# 已经是 dict不需要 json.loads()# 批量分析只分析有样本数据的results[]fori,metainenumerate(metas):ifmeta.get(sample_data):print(f分析中 ({i1}/{len(metas)}):{meta[title][:50]})analysisanalyze_dataset_with_claude(meta)analysis[dataset_id]meta[id]results.append(analysis)time.sleep(0.5)# API限速print(f\n完成! 分析了{len(results)}个数据集)四、管道输出一份自动生成的「数据分析清单」跑完后的results列表长这样截取一个真实示例——香港入境处每日旅客流量数据{dataset_title:Statistics on Daily Passenger Traffic,field_summary:包含日期、管制站(口岸)名称、入境/出境、香港居民/内地访客/其他访客分类的每日客流量。时间跨度2019年至今。,data_quality:数据完整无明显缺失。每日更新时效性优秀。字段命名使用英文缩写(需对照data dictionary理解)。,analysis_suggestions:[用pandas做2019-2026年各口岸客流趋势对比(疫情前后变化),按月份/weekday聚合发现客流季节性规律→可用于跨境通勤规划,结合天气数据做相关性分析恶劣天气对口岸客流的影响],difficulty:入门,value_score:9}50 个数据集中Claude 自动筛选出 38 个「有分析价值」value_score ≥ 6的数据集。整个过程从「面对 5,700 个数据集无从下手」变成「有一份带分析方法建议的精准清单」——全程自动化人类只需要在最后阶段做决策。五、实际运行结果在 M2 MacBook Air 上跑了 50 个数据集的完整管道找到 50 个数据集 获取元数据: 50/50 成功 抓取样数据: 41/50 有CSV资源 Claude分析中... 完成! 分析了 38 个数据集 价值分布: 9-10分(高价值): 12个 ████████████ 7-8分(中高价值): 18个 ██████████████████ 5-6分(中价值) : 8个 ████████ 总API费用: $0.17 (38次调用 × ~$0.0045/次, claude-sonnet-4-5) 总耗时: 约6分钟(含API限速等待)不到 2 毛钱、6 分钟38 个数据集的完整分析报告。手工做的话光看描述手工记录至少 3 小时。左图Claude 三种结构化输出方案的成本-合规率对比Tool Use 100% 合规、$0.0045/次右图实际运行后 38 个数据集的价值分布高价值 12 个 中高价值 18 个 76%六、框架的复用性这篇文章给的代码框架不限于 data.gov.hk——任何基于 CKAN 的开放数据平台都可以直接复用平台CKAN端点数据集数data.gov.hkdata.gov.hk/en-data/api5,700data.gov.ukdata.gov.uk/api50,000data.gov.sgdata.gov.sg/api1,800欧盟 data.europa.eudata.europa.eu/api1,700,000深圳市开放数据opendata.sz.gov.cn/api3,000只要换上 CKAN 端点 URL管道完全一样。如果你做数据分析咨询或企业内部数据整合这个框架就是一个「数据发现加速器」。七、三个避坑要点坑1: Data Filtering API 列号是 1-indexed# ❌ 错误Python思维以为第一列是0filters[[0,eq,[2024]]]# ✅ 正确data.gov.hk API 的列号从1开始filters[[1,eq,[2024]]]这个坑官网文档写了但很容易忽略。我调试了 15 分钟才发现 filter 完全不生效是因为列号错了。坑2: CKAN 端点必须带语言前缀# ❌ 错误不带语言前缀会返回空https://data.gov.hk/api/3/action/package_list# ✅ 正确必须带 /en-data/ 或 /tc-data/ 或 /sc-data/https://data.gov.hk/en-data/api/3/action/package_list坑3: Claude tool_use 的 input 已经是 dict# ❌ 错误把 tool_use input 当字符串再 json.loadsresultjson.loads(tool_block.input)# TypeError!# ✅ 正确tool_use block 的 input 本身就是 dictresulttool_block.input# 就是一个 Python dict八、环境信息项目版本/来源Python3.11anthropic SDK0.45requests2.31Claude 模型claude-sonnet-4-5数据源data.gov.hk CKAN API Data Filtering API v2运行环境macOS (M2) / Linux / Windows 均可✅ Python 3.11 anthropic 0.45 运行通过。九、总结这篇文章的核心不是「怎么分析香港数据」而是搭了一个可复用的框架发现层CKAN API 自动化数据集发现适用全球 100 开放数据平台抓取层Data Filtering API 精准取样本不用下载整个大 CSV分析层Claude structured output 自动生成结构化分析建议tool_use 100% 格式合规50 个数据集、38 份分析报告、总费用 $0.17、总耗时 6 分钟。这个投入产出比手工操作完全无法比拟。参考链接:data.gov.hk API 规范: https://data.gov.hk/en/help/api-specAnthropic Claude Structured Outputs: https://docs.anthropic.com/en/docs/build-with-claude/tool-useCKAN API 官方文档: https://docs.ckan.org/en/latest/api/说明本文使用的 data.gov.hk 数据均为公开政府数据。Claude API 分析结果供参考最终分析决策应由人工复核。数据集分析价值评分基于样本数据自动评估全量数据可能有不同结论。

相关新闻

算法题解:寻找数组中非极值元素

算法题解:寻找数组中非极值元素

1. 题目解析与核心思路 这道算法题要求找出数组中既不是最小值也不是最大值的元素。看似简单,但考察了对边界条件的处理能力和对算法效率的把控。我们先从最直观的解法入手,逐步优化。 1.1 问题重述 给定一个整数数组nums,找出并返回数组中…

2026/8/9 8:52:03 阅读更多 →
UEC++日志系统全解析:UE_LOG与屏幕日志的实战应用与调试技巧

UEC++日志系统全解析:UE_LOG与屏幕日志的实战应用与调试技巧

如果你正在学习虚幻引擎C开发,或者已经写过一些UEC代码,那么下面这个场景你一定不陌生:你写了一个复杂的Actor组件,在运行时却没有任何反应。你怀疑某个函数没被调用,某个变量没被正确赋值,或者某个条件分支…

2026/8/9 8:52:03 阅读更多 →
SpringBoot+Vue+MyBatis构建儿童性教育管理系统

SpringBoot+Vue+MyBatis构建儿童性教育管理系统

1. 项目背景与核心价值 儿童性教育一直是社会关注的重点领域,但传统线下教育模式存在师资不足、内容标准化程度低、覆盖范围有限等问题。这套基于SpringBootVueMyBatis的企业级管理系统,正是为解决这些痛点而设计的数字化解决方案。 从技术架构来看&…

2026/8/9 8:51:02 阅读更多 →

最新新闻

2026乌鲁木齐考公培训机构TOP5排名及口碑榜:这样选才能避开“假努力”的坑

2026乌鲁木齐考公培训机构TOP5排名及口碑榜:这样选才能避开“假努力”的坑

在乌鲁木齐,考公培训市场早已不是几家独大的局面。线上品牌下沉、本地机构崛起、全国连锁持续升级,让很多备考者在选择时陷入纠结:到底哪家更靠谱?哪家更适合自己?本期我们基于师资透明度、课堂强度、督学管理、学员口…

2026/8/10 2:50:25 阅读更多 →
Python机器学习入门:环境配置与实战技巧

Python机器学习入门:环境配置与实战技巧

1. 为什么选择Python作为机器学习入门语言Python在机器学习领域的统治地位并非偶然。作为一门已有30多年历史的语言,它凭借几个关键优势成为AI/ML领域的事实标准:首先,Python的语法设计极其友好。与C或Java相比,Python代码读起来几…

2026/8/10 2:50:25 阅读更多 →
Oracle EBS R12多账簿系统架构与跨国财务管理实践

Oracle EBS R12多账簿系统架构与跨国财务管理实践

1. Oracle EBS R12多账簿系统架构解析 跨国企业财务管理的核心痛点在于如何同时满足不同国家的会计准则、货币政策和税务要求。Oracle EBS R12的Multi-Ledger解决方案正是为此而生,它允许企业在单一实例中维护多个完全独立的会计账簿。 1.1 多账簿与传统架构的本质…

2026/8/10 2:50:25 阅读更多 →
UE5.4 Android打包Gradle下载超时:国内镜像源配置终极指南

UE5.4 Android打包Gradle下载超时:国内镜像源配置终极指南

1. 项目概述:当UE5.4遇上Android打包的“网络墙”如果你正在用虚幻引擎5.4开发移动端项目,并且满怀期待地点击了“打包Android”,却在漫长的等待后,眼睁睁看着日志窗口卡在“Downloading https://services.gradle.org/distributio…

2026/8/10 2:50:25 阅读更多 →
Obsidian高级项目管理:用Dataview与属性构建动态叙事追踪系统

Obsidian高级项目管理:用Dataview与属性构建动态叙事追踪系统

1. 先搞清楚“黑月光的反击”在 Obsidian 里到底要解决什么问题看到“EP20 黑月光的反击obsidian vow”这个标题,第一反应可能有点懵。这不像一个标准的工具或插件名,更像是一个具体的、带有叙事性的项目代号。结合“Obsidian”这个关键词,我…

2026/8/10 2:50:24 阅读更多 →
Unity资源管理:分类策略与优化实践指南

Unity资源管理:分类策略与优化实践指南

1. Unity资源分类:从入门到精通的完整指南作为一名Unity开发者,我深知资源管理是项目成败的关键因素之一。记得刚入行时,我曾因为资源分类混乱导致项目后期难以维护,不得不花费两周时间重构整个资源库。本文将分享我在Unity资源分…

2026/8/10 2:49:24 阅读更多 →

日新闻

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南 【免费下载链接】graphql-css A blazing fast CSS-in-GQL™ library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-css GraphQL-CSS是一个基于GraphQL的CSS-in-GQL™库&#xff0…

2026/8/10 0:00:02 阅读更多 →
告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.com/…

2026/8/10 0:00:02 阅读更多 →
BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案 【免费下载链接】BepInEx.ConfigurationManager Plugin configuration manager for BepInEx 项目地址: https://gitcode.com/gh_mirrors/be/BepInEx.ConfigurationManager 你是否曾经因为游戏插件的复杂…

2026/8/10 0:00:02 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/10 1:05:29 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/10 1:05:29 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/10 1:05:29 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/9 17:05:02 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/10 1:05:29 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/9 17:05:02 阅读更多 →