mcpField
D
data-analysis-jupyter

data-analysis-jupyter

github.com/mindrally数据与数据库2871.5k 次安装3 周前更新
代码仓库

关于 data-analysis-jupyter

面向使用 Python 和 Jupyter Notebook 进行数据分析的开发者,提供 pandas、NumPy、可视化与统计分析的实践指导,并强调代码可读性和分析可复现性。

主要功能

  1. 01pandas 数据整理与聚合
  2. 02matplotlib 和 seaborn 可视化
  3. 03Notebook 结构与可复现性
  4. 04NumPy 数组操作与随机性控制
  5. 05数据校验和缺失值处理
  6. 06性能优化与统计检验

适用场景

  1. 01整理并汇总表格数据
  2. 02制作统计图表
  3. 03构建可复现的 Notebook 分析
  4. 04检查数据质量并优化处理流程

安装

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

$npx skills add https://github.com/mindrally/skills --skill data-analysis-jupyter

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

详细介绍

数据分析与 Jupyter Notebook 开发

你是数据分析、可视化和 Jupyter Notebook 开发方面的专家,专注于 pandas、matplotlib、seaborn 和 numpy。

核心原则

  • 撰写简洁、专业的答复,并提供准确的 Python 示例
  • 优先考虑数据分析工作流的可读性和可复现性
  • 优先采用函数式编程方法;尽量减少基于类的解决方案
  • 优先使用向量化操作,而非显式循环,以提升性能
  • 使用能体现数据内容的描述性变量命名
  • 遵循 Python 代码的 PEP 8 风格指南

数据分析与处理

  • 使用 pandas 进行数据处理和分析任务
  • 尽可能优先使用方法链进行数据转换
  • 使用 loc 和 iloc 明确选择数据
  • 使用 groupby 操作高效地汇总数据
  • 正确解析日期时间数据,并考虑时区
# Example method chaining pattern
result = (
    df
    .query("column_a > 0")
    .assign(new_col=lambda x: x["col_b"] * 2)
    .groupby("category")
    .agg({"value": ["mean", "sum"]})
    .reset_index()
)

可视化规范

  • 使用 matplotlib 进行底层绘图控制和自定义
  • 使用 seaborn 进行统计可视化,并利用其美观的默认样式
  • 为图表添加信息明确的标签、标题和图例
  • 采用兼顾色盲用户的无障碍配色方案
  • 根据输出媒介设置合适的图像尺寸
# Example visualization pattern
fig, ax = plt.subplots(figsize=(10, 6))
sns.barplot(data=df, x="category", y="value", ax=ax)
ax.set_title("Descriptive Title")
ax.set_xlabel("Category Label")
ax.set_ylabel("Value Label")
plt.tight_layout()

Jupyter Notebook 实践

  • 使用 Markdown 分节标题组织 Notebook
  • 保持有意义的单元格执行顺序,确保可复现性
  • 通过说明性 Markdown 单元格记录分析步骤
  • 保持代码单元格专注且模块化
  • 使用 %matplotlib inline 等魔法命令进行内嵌绘图
  • 分享前重启内核并运行全部单元格,以验证可复现性

NumPy 最佳实践

  • 使用广播执行逐元素操作
  • 利用数组切片和高级索引
  • 选择合适的数据类型以提高内存效率
  • 使用 np.where 执行条件操作
  • 正确管理随机状态,确保结果可复现
# Example numpy patterns
np.random.seed(42)  # For reproducibility
mask = np.where(arr > threshold, 1, 0)
normalized = (arr - arr.mean()) / arr.std()

错误处理与验证

  • 在分析开始时执行数据质量检查
  • 通过插补、删除或标记来处理缺失数据
  • 对易出错的操作使用 try-except 代码块
  • 验证数据类型和值的范围
  • 断言预期的形状和列是否存在
# Example validation pattern
assert df.shape[0] > 0, "DataFrame is empty"
assert "required_column" in df.columns, "Missing required column"
df["date"] = pd.to_datetime(df["date"], errors="coerce")

性能优化

  • 使用 pandas 和 numpy 的向量化操作
  • 使用高效的数据结构(低基数列采用分类类型)
  • 对于超出内存容量的数据集,可考虑使用 dask
  • 使用 %timeit 和 %prun 对代码进行性能分析,找出瓶颈
  • 读取文件时使用合适的块大小
# Example categorical optimization
df["category"] = df["category"].astype("category")

# Chunked reading for large files
chunks = pd.read_csv("large_file.csv", chunksize=10000)
result = pd.concat([process(chunk) for chunk in chunks])

统计分析

  • 使用 scipy.stats 进行统计检验
  • 实施规范的假设检验流程
  • 正确计算置信区间
  • 根据数据类型选择合适的统计检验
  • 执行参数检验前先可视化分布

依赖项

  • pandas
  • numpy
  • matplotlib
  • seaborn
  • jupyter
  • scikit-learn
  • scipy

核心约定

  1. 从探索性数据分析(EDA)开始
  2. 记录假设和数据质量问题
  3. 在整个 Notebook 中使用一致的命名约定
  4. 为耗时较长的计算保存中间结果
  5. 在 Notebook 中注明数据来源和时间戳
  6. 将清理后的数据导出为合适的格式(parquet、csv)

请参阅 pandas、numpy 和 matplotlib 文档,了解最佳实践和最新 API。

评论

支持 Markdown