Install
openclaw skills install @thcjp/py-data-analyzer-freeopenclaw skills install @thcjp/py-data-analyzer-free数据分析是业务决策与科研探索的核心环节,但很多初学者在面对一份新数据时不知从何下手:是先看分布还是先看缺失?该用柱状图还是饼图?相关系数多少才算强相关?本助手将数据分析流程标准化为"理解-清洗-分析-可视化-结论"五个阶段,帮助用户系统性地完成分析任务。
本免费版聚焦于日常业务与科研最高频的分析场景:数据清洗、描述性统计、分组聚合、基础可视化。每个阶段均提供可运行的 pandas 代码片段与设计要点。
拿到数据后的第一件事不是急着分析,而是理解数据的整体情况。本助手提供数据概览模板,包括行列数、数据类型、缺失率、唯一值数等。
| 评估维度 | 检查方法 | 关注点 |
|---|---|---|
| 数据规模 | df.shape | 行数是否足够支持统计 |
| 数据类型 | df.dtypes | 数值型是否被识别为字符串 |
| 缺失情况 | df.isnull().mean() | 缺失率是否影响分析 |
| 重复数据 | df.duplicated().sum() | 是否存在完全重复行 |
| 分布概览 | df.describe() | 数值范围是否合理 |
输入: 用户提供能力一:数据理解与质量评估所需的指令和必要参数。 处理: 解析能力一:数据理解与质量评估的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回能力一:数据理解与质量评估的响应数据,包含状态码、结果和日志。
真实数据往往存在缺失值、异常值、类型错误等问题。本助手提供常用的清洗模式与决策建议。
输入: 用户提供能力二:数据清洗与预处理所需的指令和必要参数。 处理: 解析能力二:数据清洗与预处理的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回能力二:数据清洗与预处理的响应数据,包含状态码、结果和日志。
input_params参数,支持创建/查询/导出操作提供均值、中位数、分位数、方差等统计量计算,以及分组聚合、交叉表等分析模式。
输入: 用户提供能力三:描述性统计分析所需的指令和必要参数。 处理: 解析能力三:描述性统计分析的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回能力三:描述性统计分析的响应数据,包含状态码、结果和日志。
input_params参数,支持创建/查询/导出操作根据数据类型与分析目的,推荐合适的图表类型并提供 matplotlib/seaborn 代码示例。
输入: 用户提供能力四:基础可视化建议所需的指令和必要参数。 处理: 解析能力四:基础可视化建议的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回能力四:基础可视化建议的响应数据,包含状态码、结果和日志。
input_params参数,支持创建/查询/导出操作
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:Python、统计分析与可视化、覆盖业务报表与科、研数据的快速处理、数据分析免费版是、一套面向独立开发、者与初级数据分析、数据处理知识库、帮助用户在日常工、作中快速完成数据、核心能力、提供缺失值处理、异常值识别、数据类型转换等清、相关性分析、分组聚合等分析方、折线图、柱状图、散点图、热力图等可视化建等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。每月初汇总上月销售数据,生成销售额、订单量、客单价等核心指标的趋势图与同比环比对比。
新上线的功能用户使用情况如何?通过分组聚合与可视化,发现用户行为模式与潜在问题。
实验数据需要进行清洗、归一化、异常值剔除后才能进入统计建模阶段。本助手提供标准化的预处理流程。
对比两个 variant 的核心指标差异,计算显著性,给出结论建议。
以下场景Python数据分析(免费版)不适合处理:
需要数据分析、报表生成、统计洞察、数据可视化时使用。不适用于非本工具能力范围的需求。
本助手为知识库型 Skill,无需安装额外依赖(假设已安装 Python 与 pandas)。直接在 Agent 对话中描述你的分析需求即可获取代码与建议。
典型提问模板:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | Python数据分析(免费版)处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
我有一份销售数据 CSV,包含日期、商品、金额、用户ID,帮我分析月度销售趋势
我的数据有 20% 的缺失值,该怎么处理?
我想对比两个用户群体的行为差异,用什么图表比较合适?
Agent 会根据需求匹配对应的分析模式,输出"数据理解 → 清洗建议 → 分析代码 → 可视化方案 → 结论模板"五段式回答。
import pandas as pd
# ...
def overview_data(df):
"""数据概览:规模、类型、缺失、分布"""
print(f"数据规模: {df.shape[0]} 行, {df.shape[1]} 列")
print(f"\n数据类型:\n{df.dtypes}")
print(f"\n缺失率:\n{(df.isnull().mean() * 100).round(2)}")
print(f"\n重复行: {df.duplicated().sum()}")
print(f"\n数值字段统计:\n{df.describe()}")
print(f"\n分类字段统计:\n{df.describe(include='object')}")
# ...
# 使用示例
df = pd.read_csv('sales.csv')
overview_data(df)
def handle_missing(df, col, strategy='auto'):
"""根据缺失率选择处理策略"""
missing_rate = df[col].isnull().mean()
# ...
if missing_rate == 0:
return df
elif missing_rate < 0.05:
# 低缺失率:中位数填充(数值)或众数填充(分类)
if df[col].dtype in ['int64', 'float64']:
df[col].fillna(df[col].median(), inplace=True)
else:
df[col].fillna(df[col].mode()[0], inplace=True)
elif missing_rate < 0.30:
# 中等缺失率:标记 + 填充
df[col + '_is_missing'] = df[col].isnull()
df[col].fillna(df[col].median(), inplace=True)
else:
# 高缺失率:考虑删除列
print(f"警告: {col} 缺失率 {missing_rate:.0%},建议删除该列")
# ...
return df
# 月度销售趋势
df['date'] = pd.to_datetime(df['date'])
df['month'] = df['date'].dt.to_period('M')
# ...
monthly = df.groupby('month').agg(
revenue=('amount', 'sum'),
orders=('order_id', 'count'),
avg_order_value=('amount', 'mean')
).round(2)
# ...
print(monthly)
| 分析目的 | 数据类型 | 推荐图表 | seaborn 函数 |
|---|---|---|---|
| 趋势变化 | 时间序列 | 折线图 | sns.lineplot |
| 对比差异 | 分类×数值 | 柱状图 | sns.barplot |
| 关系探索 | 数值×数值 | 散点图 | sns.scatterplot |
| 分布形态 | 单数值 | 直方图 | sns.histplot |
| 占比构成 | 分类 | 饼图 | plt.pie |
| 多维相关 | 多数值 | 热力图 | sns.heatmap |
不要一上来就填充缺失值。先理解数据来源与含义,某些缺失本身可能有业务含义(如"用户未填写"可能代表新用户)。
清洗时建议新建列或新 DataFrame,保留原始数据。一旦发现清洗逻辑有误,可以快速回退。
异常值不一定是错误数据,可能是真实业务现象(如大客户订单)。处理前先与业务方确认,避免误删有价值的信息。
先用直方图、箱线图看整体分布,再用分组对比看细节。避免一上来就钻进细节而忽略全局模式。
分析结论不应只描述"销售额下降了 20%",而应给出"XX 类商品销售额下降是主因,建议关注 XX 环节"的可执行建议。
使用函数封装常用分析逻辑,固定随机种子,确保他人能复现你的分析结果。
| 错误场景(症状) | 可能原因 | 排查方法 | 对策 | 处理方式 |
|---|---|---|---|---|
| 读取 CSV 报错 | 编码问题 | 尝试 encoding='gbk' | 指定正确编码 | 对照依赖说明章节逐项验证配置项,确认环境变量已正确设置后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令 |
| 数值列被识别为字符串 | 千分位逗号或特殊符号 | 查看 dtype | 用 astype 转换 | 对照依赖说明章节逐项验证配置项,确认环境变量已正确设置后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令 |
| 分组聚合结果异常 | 分组键存在空值 | 检查分组列缺失 | dropna 或填充 | 对照依赖说明章节逐项验证配置项,确认环境变量已正确设置后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令 |
| 图表中文乱码 | 字体不支持中文 | 设置中文字体 | plt.rcParams 设置 | 对照依赖说明章节逐项验证配置项,确认环境变量已正确设置后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令 |
| 内存不足 | 数据量过大 | 查看 df.memory_usage | 分块读取或降精度 | 对照依赖说明章节逐项验证配置项,确认环境变量已正确设置后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令 |
取决于缺失率与业务含义。缺失率 <5% 可填充;5%-30% 建议标记+填充;>30% 建议删除列。业务上有含义的缺失应保留为独立类别。
常用方法:3σ 原则(正态分布)、IQR 法(箱线图)、业务规则(如金额为负)。识别后需人工判断是错误数据还是真实业务现象。
|相关系数|>0.7 为强相关,0.3-0.7 为中等相关,<0.3 为弱相关。但相关性不等于因果性,需结合业务逻辑判断。
时间序列用折线图,分类对比用柱状图,关系探索用散点图,分布形态用直方图,占比构成用饼图。避免用饼图展示超过 5 个类别。
考虑使用 dtype 优化(int64 降为 int32)、分类类型(category)、分块读取(chunksize)、或换用 polars / DuckDB 等更高效的库。
使用 seaborn 默认主题、统一配色方案、添加标题与轴标签、移除顶部右侧边框、合理设置图表尺寸。避免使用默认的 matplotlib 样式。
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent平台内置LLM提供 |
| pandas | 库 | 必需 | pip install pandas |
| numpy | 库 | 必需 | pip install numpy |
| matplotlib | 库 | 推荐 | pip install matplotlib |
| seaborn | 库 | 推荐 | pip install seaborn |
本免费体验版限制以下高级功能:
解锁全部功能请使用专业版:py-data-analyzer-pro
{
"success": true,
"data": {
"result": "Python数据分析(免费版)处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "py data analyzer"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}