skills/ppt-station-skill/reference/connectors-transforms.md
wangyitong a65adcc2e5 Initial commit: merged, deduplicated, and vetted skill collection
Sources: extracted from two upstream archives (skill-repo, skills-main),
merged with the following policy:

- 15 broken symlinks (pointing to /Users/jameslee/.cc-switch/skills or
  ../../.agents/skills on a foreign machine) discarded
- 3 real name collisions with identical content (ai-pair, ifind-http-api,
  zhipu-websearch) kept as one copy
- Functional overlaps deduped keeping the strongest variant:
  - docx family: kept docx (official, full toolchain) + docx-cn
    (GB/T 9704 Chinese official-document constants),
    dropped docx_writer (no scripts, name collided with docx)
  - humanizer family: kept humanizer-zh (6 zh reference docs),
    dropped humanizer (en, redundant for CN workflow)
- Skills that only ran in a foreign environment removed:
  ablemind-ops, app-publish, hlb-design-system, openclaw-adj-skill,
  claude-driver
- alphapai excluded from this public repo because its SKILL.md hard-coded
  live credentials

Result: 25 skills, 572 files, ~7.5 MB.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-13 14:47:12 +08:00

3.3 KiB
Raw Blame History

连接器与变换操作参考

ConnectorFactory — 3 种数据连接器

ConnectorFactory 通过 type 字段自动路由到对应的连接器。

csv — CSV 文件连接器

从本地 CSV 文件加载 DataFrame。

{"type": "csv", "path": "data/stock.csv", "encoding": "utf-8"}
  • path: 相对于 data_dir(默认 ppt-st/data/)或绝对路径
  • encoding: 默认 utf-8

xlsx — Excel 文件连接器

从 Excel 文件加载 DataFrame。

{"type": "xlsx", "path": "data/report.xlsx", "sheet_name": "Sheet1"}
  • path: 同 csv
  • sheet_name: 工作表名,默认第一个

tushare — Tushare 金融数据连接器

从 Tushare Pro API 获取 A 股市场数据。

{
  "type": "tushare",
  "api_name": "pro_bar",
  "ts_code": "600519.SH",
  "start_date": "20240101",
  "end_date": "20241231"
}

支持的 api_name:

  • index_daily: 指数日线数据(需 ts_codeindex_code
  • pro_bar: 通用日线数据,前复权(需 ts_code

返回的 DataFrame 自动按 trade_date 升序排列,trade_date 列已转为 datetime。

前置条件: TUSHARE_TOKEN 环境变量或 .env 文件。

DataFrameTransformer — 7 种变换操作

变换在 transforms 中定义,每个变换指定 from(数据源)和 ops(有序操作列表)。

多源合并

from 支持字符串(单源)或数组(多源 concat:

{"from": ["stock_data", "index_data"], "ops": [...]}

多源使用 pd.concat(axis=1) 按列合并。

groupby — 分组聚合

{"type": "groupby", "by": ["year"], "agg": {"close": "mean", "vol": "sum"}}

pivot — 透视表

{"type": "pivot", "index": "trade_date", "columns": "indicator", "values": "value"}

compute — 计算新列

{"type": "compute", "expr": "close / close.iloc[0] - 1", "output_col": "cumulative_return"}

使用 pandas.DataFrame.eval(),支持列名引用。

filter — 条件过滤

{"type": "filter", "condition": "close > 100 and vol > 10000"}

使用 pandas.DataFrame.query()

sort — 排序

{"type": "sort", "sort_by": ["trade_date"], "ascending": true}

rename — 重命名列

{"type": "rename", "map": {"trade_date": "日期", "close": "收盘价"}}

merge — 未实现

会抛 NotImplementedError。替代方案:

{"from": ["src1", "src2"], "ops": [...]}

from 数组实现 concat然后用其他 ops 整理。

常用组合模式

合并两个 Tushare 序列

{
  "datasources": {
    "stock": {"type": "tushare", "api_name": "pro_bar", "ts_code": "600519.SH"},
    "index": {"type": "tushare", "api_name": "pro_bar", "ts_code": "000300.SH"}
  },
  "transforms": {
    "combined": {
      "from": ["stock", "index"],
      "ops": [
        {"type": "rename", "map": {"close": "stock_close"}}
      ]
    }
  }
}

计算累计收益率

{
  "ops": [
    {"type": "sort", "sort_by": ["trade_date"]},
    {"type": "compute", "expr": "close / close.iloc[0] - 1", "output_col": "累计收益率"}
  ]
}

过滤后重命名

{
  "ops": [
    {"type": "filter", "condition": "trade_date >= '2024-01-01'"},
    {"type": "rename", "map": {"trade_date": "日期", "close": "收盘价"}},
    {"type": "sort", "sort_by": ["日期"]}
  ]
}