数据公共访问客户端Skill datacommons-client

该技能提供对Data Commons平台的Python API访问,用于程序化查询全球公共统计数据,包括人口、经济、健康、环境等领域的数据。它支持数据检索、趋势分析、实体解析和知识图谱探索,适用于数据分析、量化金融、研究项目和SEO优化。关键词:数据访问、统计查询、公共数据、Data Commons、Python API、数据分析、量化交易、SEO。

数据分析 1 次安装 6 次浏览 更新于 3/20/2026

名称: datacommons-client 描述: 使用Data Commons,一个提供程序化访问全球公共统计数据的平台。此技能适用于处理人口数据、经济指标、健康统计、环境数据或任何通过Data Commons可用的公共数据集。适用于查询人口统计、GDP数据、失业率、疾病流行率、地理实体解析以及探索统计实体之间的关系。

Data Commons 客户端

概述

提供对Data Commons Python API v2的全面访问,用于查询统计观察、探索知识图谱和解析实体标识符。Data Commons将从人口普查局、健康组织、环境机构等权威来源的数据聚合到一个统一的知识图谱中。

安装

安装带Pandas支持的Data Commons Python客户端:

uv pip install "datacommons-client[Pandas]"

对于不使用Pandas的基本用法:

uv pip install datacommons-client

核心能力

Data Commons API包括三个主要端点,每个在专用参考文件中有详细说明:

1. 观察端点 - 统计数据查询

查询实体的时间序列统计数据。参见references/observation.md获取全面文档。

主要用例:

  • 检索人口、经济、健康或环境统计
  • 访问历史时间序列数据进行趋势分析
  • 查询层次结构数据(一个州的所有县,一个地区的所有国家)
  • 比较多个实体的统计
  • 按数据源过滤以确保一致性

常见模式:

from datacommons_client import DataCommonsClient

client = DataCommonsClient()

# 获取最新人口数据
response = client.observation.fetch(
    variable_dcids=["Count_Person"],
    entity_dcids=["geoId/06"],  # 加利福尼亚
    date="latest"
)

# 获取时间序列
response = client.observation.fetch(
    variable_dcids=["UnemploymentRate_Person"],
    entity_dcids=["country/USA"],
    date="all"
)

# 按层次查询
response = client.observation.fetch(
    variable_dcids=["MedianIncome_Household"],
    entity_expression="geoId/06<-containedInPlace+{typeOf:County}",
    date="2020"
)

2. 节点端点 - 知识图谱探索

探索知识图谱中的实体关系和属性。参见references/node.md获取全面文档。

主要用例:

  • 发现实体的可用属性
  • 导航地理层次结构(父子关系)
  • 检索实体名称和元数据
  • 探索实体之间的连接
  • 列出图谱中的所有实体类型

常见模式:

# 发现属性
labels = client.node.fetch_property_labels(
    node_dcids=["geoId/06"],
    out=True
)

# 导航层次结构
children = client.node.fetch_place_children(
    node_dcids=["country/USA"]
)

# 获取实体名称
names = client.node.fetch_entity_names(
    node_dcids=["geoId/06", "geoId/48"]
)

3. 解析端点 - 实体识别

将实体名称、坐标或外部ID转换为Data Commons ID(DCID)。参见references/resolve.md获取全面文档。

主要用例:

  • 将地名转换为DCID以进行查询
  • 解析坐标到地点
  • 将Wikidata ID映射到Data Commons实体
  • 处理模糊的实体名称

常见模式:

# 通过名称解析
response = client.resolve.fetch_dcids_by_name(
    names=["California", "Texas"],
    entity_type="State"
)

# 通过坐标解析
dcid = client.resolve.fetch_dcid_by_coordinates(
    latitude=37.7749,
    longitude=-122.4194
)

# 解析Wikidata ID
response = client.resolve.fetch_dcids_by_wikidata_id(
    wikidata_ids=["Q30", "Q99"]
)

典型工作流

大多数Data Commons查询遵循此模式:

  1. 解析实体(如果以名称开始):

    resolve_response = client.resolve.fetch_dcids_by_name(
        names=["California", "Texas"]
    )
    dcids = [r["candidates"][0]["dcid"]
             for r in resolve_response.to_dict().values()
             if r["candidates"]]
    
  2. 发现可用变量(可选):

    variables = client.observation.fetch_available_statistical_variables(
        entity_dcids=dcids
    )
    
  3. 查询统计数据

    response = client.observation.fetch(
        variable_dcids=["Count_Person", "UnemploymentRate_Person"],
        entity_dcids=dcids,
        date="latest"
    )
    
  4. 处理结果

    # 作为字典
    data = response.to_dict()
    
    # 作为Pandas DataFrame
    df = response.to_observations_as_records()
    

查找统计变量

统计变量在Data Commons中使用特定的命名模式:

常见变量模式:

  • Count_Person - 总人口
  • Count_Person_Female - 女性人口
  • UnemploymentRate_Person - 失业率
  • Median_Income_Household - 中位家庭收入
  • Count_Death - 死亡计数
  • Median_Age_Person - 中位年龄

发现方法:

# 检查实体可用的变量
available = client.observation.fetch_available_statistical_variables(
    entity_dcids=["geoId/06"]
)

# 或通过网页界面探索
# https://datacommons.org/tools/statvar

使用Pandas

所有观察响应都与Pandas集成:

response = client.observation.fetch(
    variable_dcids=["Count_Person"],
    entity_dcids=["geoId/06", "geoId/48"],
    date="all"
)

# 转换为DataFrame
df = response.to_observations_as_records()
# 列:date, entity, variable, value

# 重塑以进行分析
pivot = df.pivot_table(
    values='value',
    index='date',
    columns='entity'
)

API认证

对于datacommons.org(默认):

  • 需要API密钥
  • 通过环境变量设置:export DC_API_KEY="your_key"
  • 或在初始化时传递:client = DataCommonsClient(api_key="your_key")
  • 请求密钥在:https://apikeys.datacommons.org/

对于自定义Data Commons实例:

  • 无需API密钥
  • 指定自定义端点:client = DataCommonsClient(url="https://custom.datacommons.org")

参考文档

每个端点的全面文档可在references/目录中找到:

  • references/observation.md:完整的观察API文档,包含所有方法、参数、响应格式和常见用例
  • references/node.md:完整的节点API文档,用于图谱探索、属性查询和层次导航
  • references/resolve.md:完整的解析API文档,用于实体识别和DCID解析
  • references/getting_started.md:快速入门指南,包含端到端示例和常见模式

额外资源

有效使用提示

  1. 始终从解析开始:在查询数据前将名称转换为DCID
  2. 使用关系表达式处理层次结构:一次性查询所有子节点,而非单独查询
  3. 先检查数据可用性:使用fetch_available_statistical_variables()查看可查询内容
  4. 利用Pandas集成:将响应转换为DataFrame以进行分析
  5. 缓存解析:如果重复查询相同实体,存储名称→DCID映射
  6. 按方面过滤以确保一致性:使用filter_facet_domains确保来自同一源的数据
  7. 阅读参考文档:每个端点在references/目录中有详细文档