mcpField
D
data-python

data-python

github.com/alexanderstephenthompson数据与数据库48 次安装
代码仓库

关于 data-python

data-python 是面向 Python 数据处理的技能,涵盖 pandas、polars 和 pyspark。它通过向量化、模式校验和内存优化等 DataFrame 做法,帮助代码适应更大规模的数据。

主要功能

  1. 01向量化 DataFrame 操作
  2. 02模式校验
  3. 03显式处理数据类型
  4. 04降低处理内存占用
  5. 05链式转换
  6. 06数据管道错误处理

适用场景

  1. 01用 DataFrame 操作替代逐行循环
  2. 02校验输入数据模式
  3. 03减少大型数据集的内存占用
  4. 04构建清晰的转换流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alexanderstephenthompson/claude-hub --skill data-python

安装后在 Claude Code 中输入/data-python确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
pandas-cheatsheet.md
references/
memory-optimization.md
vectorization.md

详细介绍

Data Python 技能

版本: 1.0 技术栈: Python(pandas、polars、pyspark)

Python 很容易让你写出能处理样例数据、却无法处理真实数据的数据处理代码。iterrows() 处理 1 万行要花 30 秒,处理 1000 万行则要花 30 分钟。未显式指定数据类型的 DataFrame 会占用所需内存的 8 倍。链式索引会生成不易察觉的副本,导致更改丢失。这些并非边缘情况,而是按常规 Python 的写法使用 pandas 时的默认行为。

向量化操作、显式模式和恰当的数据类型能让代码从原型扩展到生产环境,无需重写。


适用范围与边界

此技能涵盖:

  • DataFrame 模式(pandas、polars、pyspark)
  • 数据类型处理与验证
  • 内存高效处理
  • 使用向量化操作代替循环
  • 方法链模式
  • 数据管道的错误处理

由其他技能负责:

  • code-quality:通用代码结构、测试、命名
  • data-sql:使用 SQL 接口时的查询模式
  • data-pipelines:编排与 ETL 架构

适用场景: 编写处理数据的 Python 代码。


核心原则

  1. 向量化,不要循环 — 使用 DataFrame 操作,而不是逐行迭代。
  2. 发现坏数据时立即失败 — 尽早验证,在边界处拒绝无效数据。
  3. 关注内存 — 了解数据规模,使用恰当的数据类型。
  4. 不可变转换 — 链式调用操作,不要原地修改。
  5. 显式模式 — 提前定义预期的列和类型。

模式

方法链
# Good - readable pipeline
result = (
    df
    .query("status == 'active'")
    .assign(total=lambda x: x["quantity"] * x["price"])
    .groupby("category")
    .agg({"total": "sum"})
    .sort_values("total", ascending=False)
)

# Bad - intermediate variables obscure flow
filtered = df[df["status"] == "active"]
filtered["total"] = filtered["quantity"] * filtered["price"]
grouped = filtered.groupby("category")
result = grouped.agg({"total": "sum"})
result = result.sort_values("total", ascending=False)
模式验证
EXPECTED_COLUMNS = {"id", "name", "value", "timestamp"}
REQUIRED_COLUMNS = {"id", "value"}

def validate_schema(df: pd.DataFrame) -> pd.DataFrame:
    missing = REQUIRED_COLUMNS - set(df.columns)
    if missing:
        raise ValueError(f"Missing required columns: {missing}")
    return df[list(EXPECTED_COLUMNS & set(df.columns))]
类型优化
def optimize_dtypes(df: pd.DataFrame) -> pd.DataFrame:
    """Downcast numeric types to reduce memory."""
    for col in df.select_dtypes(include=["int"]).columns:
        df[col] = pd.to_numeric(df[col], downcast="integer")
    for col in df.select_dtypes(include=["float"]).columns:
        df[col] = pd.to_numeric(df[col], downcast="float")
    return df

反模式

反模式问题修正方法
for row in df.iterrows()速度慢,有违向量化原则使用向量化操作
df["col"] = df.apply(...)通常比向量化操作慢使用 np.where 或 df.assign
链式索引 df["a"]["b"]SettingWithCopyWarning使用 df.loc[:, "a"]
为检查模式而加载整个文件浪费内存使用 nrows=100 或分块读取
读取时忽略数据类型内存膨胀指定 dtype= 参数

检查清单

  • 不使用 iterrows() 或 itertuples() 进行计算
  • 读取文件时显式指定数据类型
  • 在边界处验证模式
  • 使用方法链进行转换
  • 对大型数据集进行内存分析

参考资料

  • references/vectorization.md — 向量化操作与性能
  • references/memory-optimization.md — 内存优化技巧

资源

  • assets/pandas-cheatsheet.md — pandas 操作速查表

评论

支持 Markdown