Data Analysis Plus

提供Python/R代码模板与可视化图表,支持统计分析与报告生成。

已扫描
适合谁
数据分析师、科研人员
不适合谁
无编程基础的纯业务人员、需直接操作数据库或生产环境的运维人员
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @534422530/data-analysis-plus

Skill 说明

命令、参数、文件名以原文为准

Data Analysis Plus

通过代码模板、可视化图库和统计方法增强数据分析能力。

特性

  • 代码模板:即用型 Python/R 模板
  • 可视化图库:适用于每种分析类型的图表
  • 统计方法:假设检验、回归分析、聚类分析
  • 自动化报告:可直接决策的输出格式
  • 数据验证:分析前的质量检查

快速参考

分析类型Python 模板R 模板
描述性分析df.describe()summary(df)
假设检验scipy.stats.ttest_ind()t.test()
回归分析sklearn.linear_modellm()
聚类分析sklearn.cluster.KMeanskmeans()
时间序列分析statsmodels.tsaforecast::auto.arima()

Python 代码模板

数据加载

import pandas as pd
import numpy as np

# CSV 文件
df = pd.read_csv("data.csv")

# Excel 文件
df = pd.read_excel("data.xlsx")

# JSON 文件
df = pd.read_json("data.json")

# 数据库连接
import sqlalchemy
engine = sqlalchemy.create_engine("sqlite:///data.db")
df = pd.read_sql("SELECT * FROM table", engine)

描述性统计

# 基础统计信息
df.describe()

# 按分组汇总
df.groupby("category").agg({
    "value": ["mean", "median", "std", "count"]
})

# 相关性分析
df.corr()

数据清洗

# 缺失值处理
df.isnull().sum()
df.fillna(df.mean())
df.dropna()

# 重复值处理
df.duplicated().sum()
df.drop_duplicates()

# 异常值处理
Q1 = df["value"].quantile(0.25)
Q3 = df["value"].quantile(0.75)
IQR = Q3 - Q1
df = df[(df["value"] >= Q1 - 1.5*IQR) & (df["value"] <= Q3 + 1.5*IQR)]

假设检验

from scipy import stats

# 独立样本 t 检验
group1 = df[df["group"] == "A"]["value"]
group2 = df[df["group"] == "B"]["value"]
stat, p_value = stats.ttest_ind(group1, group2)

# 卡方检验
contingency = pd.crosstab(df["cat1"], df["cat2"])
chi2, p_value, dof, expected = stats.chi2_contingency(contingency)

# 单因素方差分析(ANOVA)
f_stat, p_value = stats.f_oneway(group1, group2, group3)

回归分析

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

X = df[["feature1", "feature2"]]
y = df["target"]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

model = LinearRegression()
model.fit(X_train, y_train)

print(f"R²: {model.score(X_test, y_test)}")
print(f"系数: {model.coef_}")

聚类分析

from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(df[["feature1", "feature2"]])

kmeans = KMeans(n_clusters=3, random_state=42)
df["cluster"] = kmeans.fit_predict(X_scaled)

时间序列分析

import pandas as pd
from statsmodels.tsa.seasonal import seasonal_decompose

# 日期解析
df["date"] = pd.to_datetime(df["date"])
df = df.set_index("date")

# 分解
decomposition = seasonal_decompose(df["value"], model="additive", period=12)
decomposition.plot()

R 代码模板

数据加载

library(readr)
library(readxl)

# CSV 文件
df <- read_csv("data.csv")

# Excel 文件
df <- read_excel("data.xlsx")

# JSON 文件
library(jsonlite)
df <- fromJSON("data.json")

描述性统计

# 基础统计信息
summary(df)

# 按分组汇总
library(dplyr)
df %>%
  group_by(category) %>%
  summarise(
    mean = mean(value, na.rm = TRUE),
    median = median(value, na.rm = TRUE),
    sd = sd(value, na.rm = TRUE),
    n = n()
  )

# 相关性分析
cor(df[, sapply(df, is.numeric)], use = "complete.obs")

假设检验

# t 检验
t.test(value ~ group, data = df)

# 卡方检验
chisq.test(table(df$cat1, df$cat2))

# 方差分析(ANOVA)
aov_result <- aov(value ~ group, data = df)
summary(aov_result)

回归分析

# 线性回归
model <- lm(target ~ feature1 + feature2, data = df)
summary(model)

# 逻辑回归
model <- glm(binary_target ~ feature1 + feature2, data = df, family = "binomial")
summary(model)

聚类分析

# K-means 聚类
library(cluster)
df_scaled <- scale(df[, c("feature1", "feature2")])
kmeans_result <- kmeans(df_scaled, centers = 3)
df$cluster <- kmeans_result$cluster

可视化图库

图表选择指南

问题类型图表类型PythonR
时间趋势折线图matplotlibggplot2
对比分析条形图seaborn.barplotggplot2::geom_bar
分布形态直方图seaborn.histplotggplot2::geom_histogram
关系探索散点图seaborn.scatterplotggplot2::geom_point
构成分析饼图/堆叠条形图matplotlib.pyplot.pieggplot2::geom_bar(position="fill")
相关性展示热力图seaborn.heatmappheatmap

Python 可视化示例

import matplotlib.pyplot as plt
import seaborn as sns

# 折线图
plt.figure(figsize=(10, 6))
sns.lineplot(data=df, x="date", y="value", hue="category")
plt.title("时间趋势")
plt.savefig("trend.png", dpi=300, bbox_inches="tight")

# 散点图
plt.figure(figsize=(10, 6))
sns.scatterplot(data=df, x="feature1", y="feature2", hue="target")
plt.title("特征关系")
plt.savefig("scatter.png", dpi=300, bbox_inches="tight")

# 热力图
plt.figure(figsize=(10, 8))
sns.heatmap(df.corr(), annot=True, cmap="coolwarm", center=0)
plt.title("相关性矩阵")
plt.savefig("heatmap.png", dpi=300, bbox_inches="tight")

R 可视化示例

library(ggplot2)

# 折线图
ggplot(df, aes(x = date, y = value, color = category)) +
  geom_line() +
  labs(title = "时间趋势") +
  theme_minimal()

# 散点图
ggplot(df, aes(x = feature1, y = feature2, color = target)) +
  geom_point() +
  labs(title = "特征关系") +
  theme_minimal()

# 条形图
ggplot(df, aes(x = category, fill = category)) +
  geom_bar() +
  labs(title = "类别分布") +
  theme_minimal()

统计方法

假设检验决策树

数据是分类的吗?
├── 是 → 卡方检验
└── 否 → 数据是否正态分布?
    ├── 是 → t检验(2组) / 方差分析(3组及以上)
    └── 否 → 曼-惠特尼U检验(2组) / 克鲁斯卡尔-沃利斯检验(3组及以上)

样本量计算器

def sample_size计算器(effect_size, alpha=0.05, power=0.8):
    from statsmodels.stats.power import TTestIndPower
    analysis = TTestIndPower()
    n = analysis.solve_power(effect_size=effect_size, alpha=alpha, power=power)
    return int(np.ceil(n * 2))  # 总样本量

报告模板

执行摘要

# [分析标题]

## 关键发现
1. [带证据的发现1]
2. [带证据的发现2]
3. [带证据的发现3]

## 方法论
- 数据:[来源、时间范围、样本量]
- 方法:[使用的统计检验]
- 局限性:[注意事项]

## 建议
1. [行动1]
2. [行动2]
3. [行动3]

## 附录
- 图表:[可视化列表]
- 统计表格:[p值、置信区间]

技术报告

# [分析标题] - 技术报告

## 数据
- 来源:[数据库/文件]
- 记录数:[数量]
- 变量:[列表及类型]
- 缺失值:[汇总信息]

## 方法
- [方法1]:[理由说明]
- [方法2]:[理由说明]

## 结果
### [检验1]
- 统计量:[数值]
- p值:[数值]
- 效应量:[数值]
- 置信区间:[范围]

## 代码
[可复现的代码]

最佳实践

  1. 从探索性数据分析开始 - 在分析前理解数据
  2. 验证数据质量 - 检查数据完整性、缺失值、异常值
  3. 记录假设 - 明确说明方法选择依据
  4. 报告不确定性 - 使用置信区间、p值
  5. 可视化结果 - 图表比文字更易理解
  6. 确保可复现性 - 保存代码,设置随机种子
  7. 进行同行评审 - 让他人检查你的工作

常见陷阱

陷阱解决方案
p值操纵(P-hacking)提前注册研究假设
相关性不等于因果性尽可能使用实验设计
选择偏差采用随机抽样
存活者偏差包含失败案例

| 辛普森悖论 | 分层分析

5
@534422530

已收录 7 个 Skill

相关推荐