mcpField
P
Pandas Data Analysis

Pandas Data Analysis

github.com/midudev数据与数据库7.0k60 次安装1 周前更新
代码仓库

关于 Pandas Data Analysis

面向学习 Pandas 数据分析的人群,涵盖数据加载、清洗、探索、聚合与可视化。内容还包括客户分析、时间序列和数据质量评估练习。

主要功能

  1. 01加载并操作多种来源的数据
  2. 02清理和转换数据集
  3. 03执行探索性数据分析
  4. 04分组聚合并生成透视表
  5. 05使用绘图库呈现数据

适用场景

  1. 01分析客户购买行为并进行细分
  2. 02检查销售趋势和季节性
  3. 03构建数据质量评估报告

安装

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

$npx skills add https://github.com/midudev/autoskills --skill pandas-data-analysis

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
config.yaml
references/
GUIDE.md
scripts/
helper.py

详细介绍

Pandas 数据分析

概述

掌握使用功能强大的 Python 数据处理与分析库 Pandas 进行数据分析。学习如何高效地清理、转换、分析和可视化数据。

学习目标

  • 从各种来源(CSV、Excel、SQL、API)加载和处理数据
  • 清理和转换杂乱的数据集
  • 执行探索性数据分析(EDA)
  • 聚合和分组数据以获取洞察
  • 创建引人注目的可视化图表
  • 优化大型数据集的性能

核心主题

1. Pandas DataFrame 和 Series
  • 从各种来源创建 DataFrame
  • 索引和选择数据(loc、iloc、at、iat)
  • 筛选和布尔索引
  • 添加或删除列和行
  • 数据类型和转换

代码示例:

import pandas as pd
import numpy as np

# Create DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 28],
    'salary': [50000, 60000, 75000, 55000],
    'department': ['IT', 'HR', 'IT', 'Sales']
}
df = pd.DataFrame(data)

# Indexing and filtering
it_employees = df[df['department'] == 'IT']
high_earners = df.loc[df['salary'] > 55000, ['name', 'salary']]

# Adding calculated columns
df['annual_bonus'] = df['salary'] * 0.10
df['age_group'] = pd.cut(df['age'], bins=[0, 30, 40, 100], labels=['Young', 'Mid', 'Senior'])

print(df)
2. 数据清理与转换
  • 处理缺失数据(dropna、fillna、interpolate)
  • 删除重复项
  • 字符串操作和文本清理
  • 日期/时间解析与处理
  • 类型转换和强制类型转换
  • 应用自定义函数(apply、map、applymap)

代码示例:

import pandas as pd

# Load data with missing values
df = pd.read_csv('sales_data.csv')

# Handle missing values
df['price'].fillna(df['price'].median(), inplace=True)
df['category'].fillna('Unknown', inplace=True)
df.dropna(subset=['customer_id'], inplace=True)

# Clean text data
df['product_name'] = df['product_name'].str.strip().str.lower()
df['product_name'] = df['product_name'].str.replace('[^a-zA-Z0-9 ]', '', regex=True)

# Convert dates
df['order_date'] = pd.to_datetime(df['order_date'])
df['year'] = df['order_date'].dt.year
df['month'] = df['order_date'].dt.month

# Remove duplicates
df.drop_duplicates(subset=['order_id'], keep='first', inplace=True)

# Apply custom function
def categorize_price(price):
    if price < 50:
        return 'Low'
    elif price < 100:
        return 'Medium'
    else:
        return 'High'

df['price_category'] = df['price'].apply(categorize_price)
3. 聚合与分组
  • GroupBy 操作
  • 聚合函数(sum、mean、count 等)
  • 透视表和交叉表
  • 多层索引
  • 窗口函数(rolling、expanding)

代码示例:

import pandas as pd

# Sample sales data
df = pd.read_csv('sales.csv')

# GroupBy aggregation
dept_stats = df.groupby('department').agg({
    'salary': ['mean', 'min', 'max'],
    'employee_id': 'count'
})

# Multiple groupby
sales_by_region_product = df.groupby(['region', 'product_category'])['sales'].sum()

# Pivot table
pivot = df.pivot_table(
    values='sales',
    index='product_category',
    columns='quarter',
    aggfunc='sum',
    fill_value=0
)

# Rolling window (moving average)
df['sales_ma_7d'] = df.groupby('product_id')['sales'].transform(
    lambda x: x.rolling(window=7, min_periods=1).mean()
)

# Cumulative sum
df['cumulative_sales'] = df.groupby('product_id')['sales'].cumsum()
4. 数据可视化
  • Matplotlib 基础知识
  • 使用 Seaborn 绘制统计图表
  • Pandas 内置绘图功能
  • 自定义图表
  • 创建仪表板

代码示例:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Set style
sns.set_style('whitegrid')

# Load data
df = pd.read_csv('sales_data.csv')

# 1. Line plot - Sales trend over time
df.groupby('month')['sales'].sum().plot(kind='line', figsize=(10, 6))
plt.title('Monthly Sales Trend')
plt.xlabel('Month')
plt.ylabel('Total Sales ($)')
plt.show()

# 2. Bar plot - Sales by category
category_sales = df.groupby('category')['sales'].sum().sort_values(ascending=False)
category_sales.plot(kind='bar', figsize=(10, 6))
plt.title('Sales by Category')
plt.xlabel('Category')
plt.ylabel('Total Sales ($)')
plt.xticks(rotation=45)
plt.show()

# 3. Histogram - Price distribution
df['price'].hist(bins=30, figsize=(10, 6))
plt.title('Price Distribution')
plt.xlabel('Price ($)')
plt.ylabel('Frequency')
plt.show()

# 4. Box plot - Salary by department
df.boxplot(column='salary', by='department', figsize=(10, 6))
plt.title('Salary Distribution by Department')
plt.suptitle('')
plt.show()

# 5. Heatmap - Correlation matrix
corr = df[['age', 'salary', 'years_experience']].corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', center=0)
plt.title('Correlation Matrix')
plt.show()

动手实践

项目 1:客户分析

分析客户的购买行为和细分情况。

要求:

  • 加载客户交易数据
  • 清理并准备数据集
  • 计算 RFM(最近购买时间、购买频率、消费金额)指标
  • 客户细分
  • 可视化洞察
  • 生成高管摘要

关键技能: 数据清理、聚合、可视化

项目 2:时间序列分析

分析销售趋势并预测未来表现。

要求:

  • 加载时间序列数据
  • 处理缺失日期
  • 计算移动平均值
  • 识别趋势和季节性
  • 检测异常
  • 创建交互式可视化图表

关键技能: 时间序列操作、滚动窗口、绘图

项目 3:数据质量报告

构建自动化数据质量评估工具。

要求:

  • 检查缺失值
  • 识别重复项
  • 检测离群值
  • 验证数据类型
  • 生成质量指标
  • 导出 HTML 报告

关键技能: 数据验证、统计分析、报告生成

评估标准

  • 高效加载和清理真实世界的数据集
  • 执行复杂的数据转换
  • 使用 GroupBy 进行聚合
  • 创建有洞察力的可视化图表
  • 处理缺失和不一致的数据
  • 优化大型数据集的性能
  • 通过清晰的说明记录分析过程

资源

官方文档
学习平台
工具

后续步骤

掌握 Pandas 后,可以进一步学习:

  • Scikit-learn - 机器学习
  • SQL - 数据库查询
  • Apache Spark - 大数据处理
  • Tableau/Power BI - 商业智能工具

评论

支持 Markdown