数据分析助手 - 数据清洗、统计分析、可视化建议。适合:数据分析师、产品经理、运营。
数据分析助手 Skill是一项面向实际任务的技能,主要用于快速进行数据清洗、统计分析和可视化;去重、填充、格式化;
Python 数据分析模板;时间序列分析;可视化代码;分析报告模板;大数据集注意内存使用;处理前备份数据;结果需要业务验证;可视化要简洁清晰;
创建:2026-03。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
快速进行数据清洗、统计分析和可视化。
| 功能 | 描述 |
|---|---|
| 数据清洗 | 去重、填充、格式化 |
| 统计分析 | 描述统计、相关分析 |
| 可视化 | 图表建议、代码生成 |
| 报告生成 | 自动生成分析报告 |
分析这个 CSV 文件:sales.csv
清洗这个数据集,处理缺失值和异常值
为这些数据生成折线图代码
import pandas as pd
# CSV
df = pd.read_csv('data.csv')
# Excel
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# JSON
df = pd.read_json('data.json')
# 数据库
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql('SELECT * FROM table', conn)
# API
import requests
response = requests.get('https://api.example.com/data')
df = pd.DataFrame(response.json())
# 基本信息 print(df.shape) # 行列数 print(df.columns) # 列名 print(df.dtypes) # 数据类型 print(df.info()) # 详细信息 # 查看数据 print(df.head()) # 前 5 行 print(df.tail()) # 后 5 行 print(df.sample(5)) # 随机 5 行 # 描述统计 print(df.describe()) # 数值列统计 print(df.describe(include='all')) # 所有列
# 处理缺失值
df.isnull().sum() # 统计缺失
df.dropna() # 删除缺失行
df.fillna(0) # 填充 0
df.fillna(df.mean()) # 填充均值
df['col'].fillna(df['col'].mode()[0]) # 填充众数
# 处理重复
df.duplicated().sum() # 统计重复
df.drop_duplicates() # 删除重复
df.drop_duplicates(subset=['col']) # 按列去重
# 数据类型转换
df['date'] = pd.to_datetime(df['date'])
df['price'] = df['price'].astype(float)
df['category'] = df['category'].astype('category')
# 异常值处理
Q1 = df['col'].quantile(0.25)
Q3 = df['col'].quantile(0.75)
IQR = Q3 - Q1
df = df[(df['col'] >= Q1 - 1.5*IQR) & (df['col'] <= Q3 + 1.5*IQR)]
# 字符串处理
df['name'] = df['name'].str.strip()
df['name'] = df['name'].str.lower()
df['name'] = df['name'].str.replace('old', 'new')
# 集中趋势
df['col'].mean() # 均值
df['col'].median() # 中位数
df['col'].mode() # 众数
# 离散程度
df['col'].std() # 标准差
df['col'].var() # 方差
df['col'].max() - df['col'].min() # 极差
# 分布
df['col'].skew() # 偏度
df['col'].kurt() # 峰度
df['col'].quantile([0.25, 0.5, 0.75]) # 分位数
# 相关分析
df.corr() # 相关矩阵
df.corr()['target'] # 与目标的相关性
# 分组统计
df.groupby('category').agg({
'sales': ['sum', 'mean', 'count'],
'profit': 'mean'
})
# 交叉表
pd.crosstab(df['col1'], df['col2'])
# 日期处理
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
# 时间重采样
df.resample('D').sum() # 按天
df.resample('W').mean() # 按周
df.resample('M').sum() # 按月
# 滚动统计
df['rolling_mean'] = df['col'].rolling(window=7).mean()
df['rolling_std'] = df['col'].rolling(window=7).std()
# 时间差
df['diff'] = df['col'].diff()
df['pct_change'] = df['col'].pct_change()
# 季节分解
from statsmodels.tsa.seasonal import seasonal_decompose
result = seasonal_decompose(df['col'], model='additive', period=12)
result.plot()
import matplotlib.pyplot as plt
import seaborn as sns
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 折线图
plt.figure(figsize=(10, 6))
plt.plot(df['date'], df['value'])
plt.title('趋势图')
plt.xlabel('日期')
plt.ylabel('数值')
plt.show()
# 柱状图
plt.bar(df['category'], df['value'])
plt.xticks(rotation=45)
plt.show()
# 散点图
plt.scatter(df['x'], df['y'], alpha=0.5)
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
# 直方图
plt.hist(df['value'], bins=20, edgecolor='black')
plt.xlabel('数值')
plt.ylabel('频数')
plt.show()
# 箱线图
sns.boxplot(data=df, x='category', y='value')
plt.show()
# 热力图
sns.heatmap(df.corr(), annot=True, cmap='coolwarm', center=0)
plt.show()
# 分组柱状图 df_grouped = df.groupby(['category', 'type'])['value'].sum().unstack() df_grouped.plot(kind='bar', figsize=(12, 6)) plt.legend(title='类型') plt.show() # 小提琴图 sns.violinplot(data=df, x='category', y='value') plt.show() # 配对图 sns.pairplot(df[['col1', 'col2', 'col3', 'category']], hue='category') plt.show() # 时间序列 fig, ax = plt.subplots(figsize=(14, 6)) ax.plot(df.index, df['value'], label='实际值') ax.plot(df.index, df['rolling_mean'], label='7日均值', linestyle='--') ax.fill_between(df.index, df['lower'], df['upper'], alpha=0.2) ax.legend() plt.show()
def generate_report(df):
"""生成数据分析报告"""
report = f"""
# 数据分析报告
## 1. 数据概览
- 数据量:{len(df)} 行 × {len(df.columns)} 列
- 时间范围:{df['date'].min()} 至 {df['date'].max()}
- 缺失值:{df.isnull().sum().sum()} 个
## 2. 关键指标
- 总销售额:¥{df['sales'].sum():,.2f}
- 平均订单:¥{df['sales'].mean():,.2f}
- 最高订单:¥{df['sales'].max():,.2f}
- 最低订单:¥{df['sales'].min():,.2f}
## 3. 分布特征
- 偏度:{df['sales'].skew():.2f}
- 峰度:{df['sales'].kurt():.2f}
- 标准差:{df['sales'].std():,.2f}
## 4. Top 5 类别
{df.groupby('category')['sales'].sum().sort_values(ascending=False).head().to_markdown()}
## 5. 趋势分析
- 环比增长:{df['sales'].pct_change().mean()*100:.2f}%
- 月均销售额:¥{df.resample('M', on='date')['sales'].sum().mean():,.2f}
## 6. 建议
1. 重点推广 Top 3 类别
2. 优化低转化品类
3. 关注季节性波动
"""
return report
创建:2026-03-12 版本:1.0
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章