mcpField
D
data-analysis

data-analysis

github.com/seb1n数据与数据库236147 次安装12 周前更新
代码仓库

关于 data-analysis

data-analysis 是供 AI Agent 对结构化数据执行统计分析的 Skill,面向需要探索数据、检验假设并汇报发现的分析任务。它涵盖数据概览、趋势、相关性、异常值及结果限制,并使用 pandas、scipy 和 statsmodels。

主要功能

  1. 01读取并检查多种结构化数据
  2. 02计算描述性统计
  3. 03分析趋势与类别模式
  4. 04执行相关性和假设检验
  5. 05检测异常值并整理结论

适用场景

  1. 01汇总 CSV 或 Excel 数据分布
  2. 02分析时间序列中的趋势和季节性
  3. 03检验变量关系及统计假设
  4. 04识别异常值并说明分析限制

安装

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

$npx skills add https://github.com/seb1n/awesome-ai-agent-skills --skill data-analysis

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

详细介绍

数据分析

此技能使 AI Agent 能够对结构化数据集进行严谨的统计分析。Agent 会加载数据、计算描述性统计和推断统计、识别趋势与相关性、检验假设,并得出可执行的洞见。它支持 CSV、Excel、Parquet 和 JSON 输入,并借助 pandas、scipy 和 statsmodels 进行分析。

工作流

  1. 加载数据并分析概况。 将数据集读入 pandas DataFrame,并检查其形状、列类型和内存使用情况。显示首尾几行,确认数据已正确加载。检查是否存在列错位或编码问题等明显的结构问题。

  2. 计算描述性统计。 为所有数值列生成汇总统计,包括均值、中位数、标准差、偏度和峰度。对于分类列,计算值计数和众数。此步骤可帮助初步了解各变量的分布情况。

  3. 识别趋势和模式。 对具有时间索引的数据应用滚动平均、百分比变化和季节性分解。对于非时间数据,使用分组聚合和数据透视表,找出不同类别中的模式。标记任何单调趋势或周期性变化。

  4. 进行相关性分析和假设检验。 计算 Pearson 和 Spearman 相关矩阵,量化变量间的关系。在适当情况下进行假设检验(t 检验、卡方检验、ANOVA),以确定统计显著性。报告 p 值和置信区间,并同时提供效应量。

  5. 检测异常和离群值。 使用 IQR 方法和 z 分数,识别显著偏离常态的数据点。结合领域背景核查离群值,判断它们是错误、罕见事件,还是有意义的信号。

  6. 综合分析结果并撰写报告。 使用通俗易懂的语言总结关键洞见,并以具体数字作为依据。按业务影响或统计显著性对发现进行排序。说明样本量限制、混杂变量等局限和注意事项。

支持的技术

  • pandas — 数据加载、处理和聚合
  • scipy.stats — 假设检验、统计分布
  • statsmodels — 时间序列分解、回归分析
  • numpy — 数值计算

用法

向 Agent 提供数据集的文件路径和分析目标说明。也可以指定重点关注的列、假设检验的显著性水平(默认 alpha=0.05),以及是否应用时间序列方法。

示例

示例 1:使用 pandas 分析销售 CSV
import pandas as pd
from scipy import stats

# Load the dataset
df = pd.read_csv("sales_2024.csv", parse_dates=["order_date"])

# Descriptive statistics
print(df[["revenue", "units_sold", "discount"]].describe())
#          revenue  units_sold  discount
# count   8450.00     8450.00   8450.00
# mean     312.45       4.12      0.08
# std      189.73       2.87      0.05
# min       12.00       1.00      0.00
# max     2450.00      47.00      0.35

# Correlation analysis
corr = df[["revenue", "units_sold", "discount"]].corr(method="pearson")
print(corr)
#             revenue  units_sold  discount
# revenue       1.000       0.847    -0.213
# units_sold    0.847       1.000    -0.089
# discount     -0.213      -0.089     1.000

# Hypothesis test: do discounted orders produce higher revenue?
discounted = df[df["discount"] > 0]["revenue"]
full_price = df[df["discount"] == 0]["revenue"]
t_stat, p_value = stats.ttest_ind(discounted, full_price)
print(f"t={t_stat:.3f}, p={p_value:.4f}")
# t=-3.217, p=0.0013 — discounted orders have significantly lower revenue per order
示例 2:使用季节性分解进行时间序列分析
import pandas as pd
from statsmodels.tsa.seasonal import seasonal_decompose

# Load monthly revenue data
df = pd.read_csv("monthly_revenue.csv", parse_dates=["month"], index_col="month")

# Decompose into trend, seasonal, and residual components
result = seasonal_decompose(df["revenue"], model="additive", period=12)

print("Trend (last 6 months):")
print(result.trend.dropna().tail(6))
# 2024-07    48230.12
# 2024-08    49012.45
# 2024-09    49780.33
# 2024-10    50234.10
# 2024-11    51002.88
# 2024-12    51890.67

print("\nSeasonal peaks:")
seasonal = result.seasonal.groupby(result.seasonal.index.month).mean()
print(seasonal.nlargest(3))
# month
# 11    8923.40   (November — holiday pre-orders)
# 12    7654.20   (December — holiday sales)
# 3     3210.15   (March — spring promotions)

# The upward trend of ~$600/month suggests 14.5% annualized growth.
# Strong Q4 seasonality accounts for roughly 18% of total annual revenue.

最佳实践

  • 计算统计数据前,务必检查原始数据——未被察觉的解析错误(例如分隔符错误、编码问题)可能导致所有后续结果失效。
  • 报告 p 值时同时提供效应量;仅有统计显著性并不意味着具有实际意义。
  • 当数据分布严重偏斜或样本量较小时,使用非参数检验(Mann-Whitney、Kruskal-Wallis)。
  • 按有意义的类别(地区、产品线、客户层级)分组分析,以避免辛普森悖论。
  • 明确记录假设——时间序列的平稳性、参数检验的正态性、观测值的独立性。
  • 在将意外发现作为结论展示之前,使用留出样本或替代方法进行验证。

边界情况

  • 关键列中存在缺失值。 如果目标列中超过 30% 的值为 null,应提醒用户,插补可能会引入显著偏差。建议改为分析完整案例子集。
  • 分布极度偏斜。 当偏度超过 |2.0| 时,进行对数转换或使用基于中位数的统计量,以避免均值产生误导。
  • 多重共线性。 当两个预测变量的相关性超过 0.9 时,应标记这一情况,并建议删除其中一个变量或使用正则化模型,以避免系数膨胀。
  • 样本量较小(n < 30)。 改用精确检验或自助法,并相应扩大置信区间。
  • 单列中包含混合数据类型。 谨慎转换类型,并报告无法转换的值的数量,而不是直接静默删除。

评论

支持 Markdown