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

158 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 连接器与变换操作参考
## ConnectorFactory — 3 种数据连接器
ConnectorFactory 通过 `type` 字段自动路由到对应的连接器。
### csv — CSV 文件连接器
从本地 CSV 文件加载 DataFrame。
```json
{"type": "csv", "path": "data/stock.csv", "encoding": "utf-8"}
```
- `path`: 相对于 `data_dir`(默认 `ppt-st/data/`)或绝对路径
- `encoding`: 默认 `utf-8`
### xlsx — Excel 文件连接器
从 Excel 文件加载 DataFrame。
```json
{"type": "xlsx", "path": "data/report.xlsx", "sheet_name": "Sheet1"}
```
- `path`: 同 csv
- `sheet_name`: 工作表名,默认第一个
### tushare — Tushare 金融数据连接器
从 Tushare Pro API 获取 A 股市场数据。
```json
{
"type": "tushare",
"api_name": "pro_bar",
"ts_code": "600519.SH",
"start_date": "20240101",
"end_date": "20241231"
}
```
支持的 `api_name`:
- `index_daily`: 指数日线数据(需 `ts_code``index_code`
- `pro_bar`: 通用日线数据,前复权(需 `ts_code`
返回的 DataFrame 自动按 `trade_date` 升序排列,`trade_date` 列已转为 datetime。
前置条件: `TUSHARE_TOKEN` 环境变量或 `.env` 文件。
## DataFrameTransformer — 7 种变换操作
变换在 `transforms` 中定义,每个变换指定 `from`(数据源)和 `ops`(有序操作列表)。
### 多源合并
`from` 支持字符串(单源)或数组(多源 concat:
```json
{"from": ["stock_data", "index_data"], "ops": [...]}
```
多源使用 `pd.concat(axis=1)` 按列合并。
### groupby — 分组聚合
```json
{"type": "groupby", "by": ["year"], "agg": {"close": "mean", "vol": "sum"}}
```
### pivot — 透视表
```json
{"type": "pivot", "index": "trade_date", "columns": "indicator", "values": "value"}
```
### compute — 计算新列
```json
{"type": "compute", "expr": "close / close.iloc[0] - 1", "output_col": "cumulative_return"}
```
使用 `pandas.DataFrame.eval()`,支持列名引用。
### filter — 条件过滤
```json
{"type": "filter", "condition": "close > 100 and vol > 10000"}
```
使用 `pandas.DataFrame.query()`
### sort — 排序
```json
{"type": "sort", "sort_by": ["trade_date"], "ascending": true}
```
### rename — 重命名列
```json
{"type": "rename", "map": {"trade_date": "日期", "close": "收盘价"}}
```
### merge — 未实现
会抛 `NotImplementedError`。替代方案:
```json
{"from": ["src1", "src2"], "ops": [...]}
```
`from` 数组实现 concat然后用其他 ops 整理。
## 常用组合模式
### 合并两个 Tushare 序列
```json
{
"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"}}
]
}
}
}
```
### 计算累计收益率
```json
{
"ops": [
{"type": "sort", "sort_by": ["trade_date"]},
{"type": "compute", "expr": "close / close.iloc[0] - 1", "output_col": "累计收益率"}
]
}
```
### 过滤后重命名
```json
{
"ops": [
{"type": "filter", "condition": "trade_date >= '2024-01-01'"},
{"type": "rename", "map": {"trade_date": "日期", "close": "收盘价"}},
{"type": "sort", "sort_by": ["日期"]}
]
}
```