人工智能之数据分析 Matplotlib:第七章 项目实践

人工智能之数据分析 Matplotlib

第七章 项目实践


文章目录

  • [人工智能之数据分析 Matplotlib](#人工智能之数据分析 Matplotlib)
  • 前言
  • [🎯 项目目标:分析某电商用户月度销售数据](#🎯 项目目标:分析某电商用户月度销售数据)
  • 第一步:环境准备与数据生成
  • 第二步:数据预处理
  • [第三步:Matplotlib 可视化分析](#第三步:Matplotlib 可视化分析)
    • [1️⃣ 月度销售额趋势(折线图)](#1️⃣ 月度销售额趋势(折线图))
    • [2️⃣ 各商品类别销售额占比(饼图)](#2️⃣ 各商品类别销售额占比(饼图))
    • [3️⃣ 各地区月度销售对比(分组柱状图)](#3️⃣ 各地区月度销售对比(分组柱状图))
    • [4️⃣ 销售额分布(直方图 + 箱线图组合)](#4️⃣ 销售额分布(直方图 + 箱线图组合))
  • 第四步:保存所有图表(可选)
  • [✅ 项目收获](#✅ 项目收获)
    • [🔧 扩展建议(进阶练习)](#🔧 扩展建议(进阶练习))
  • 后续
  • 资料关注

前言

Matplotlib 项目实践是巩固数据可视化技能的最佳方式。下面通过一个 完整的端到端小项目,带你从数据准备、清洗、分析到可视化,全面使用 Matplotlib(结合 NumPy/Pandas)完成一个实用的数据探索任务。


🎯 项目目标:分析某电商用户月度销售数据

数据内容(模拟)

  • 日期(date
  • 销售额(sales
  • 商品类别(category):如 "Electronics", "Clothing", "Books"
  • 用户地区(region):如 "North", "South", "East", "West"

第一步:环境准备与数据生成

python 复制代码
# 导入必要库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 设置中文字体(Windows)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号

# 生成模拟数据(实际项目中可从 CSV/数据库读取)
np.random.seed(42)
dates = pd.date_range(start='2024-01-01', end='2024-12-31', freq='D')
data = []
categories = ['Electronics', 'Clothing', 'Books']
regions = ['North', 'South', 'East', 'West']

for date in dates:
    for _ in range(np.random.randint(5, 15)):  # 每天随机订单数
        data.append({
            'date': date,
            'sales': np.round(np.random.uniform(20, 500), 2),
            'category': np.random.choice(categories),
            'region': np.random.choice(regions)
        })

df = pd.DataFrame(data)
print(df.head())

第二步:数据预处理

python 复制代码
# 添加月份列
df['month'] = df['date'].dt.to_period('M')

# 按月汇总总销售额
monthly_sales = df.groupby('month')['sales'].sum().reset_index()
monthly_sales['month'] = monthly_sales['month'].astype(str)  # 转为字符串便于绘图

第三步:Matplotlib 可视化分析

1️⃣ 月度销售额趋势(折线图)

python 复制代码
plt.figure(figsize=(12, 6))
plt.plot(monthly_sales['month'], monthly_sales['sales'], marker='o', linewidth=2, color='steelblue')
plt.title('2024年月度销售额趋势', fontsize=16)
plt.xlabel('月份')
plt.ylabel('销售额(元)')
plt.xticks(rotation=45)
plt.grid(True, linestyle='--', alpha=0.6)
plt.tight_layout()
plt.show()

2️⃣ 各商品类别销售额占比(饼图)

python 复制代码
category_sales = df.groupby('category')['sales'].sum()

plt.figure(figsize=(8, 8))
plt.pie(category_sales, labels=category_sales.index, autopct='%1.1f%%', startangle=140, colors=plt.cm.Set3.colors)
plt.title('商品类别销售额占比', fontsize=16)
plt.axis('equal')
plt.show()

3️⃣ 各地区月度销售对比(分组柱状图)

python 复制代码
region_monthly = df.groupby(['region', 'month'])['sales'].sum().unstack(fill_value=0)

# 转换月份为字符串并排序
region_monthly.columns = region_monthly.columns.astype(str)
region_monthly = region_monthly.reindex(columns=sorted(region_monthly.columns))

x = np.arange(len(region_monthly.columns))  # 月份位置
width = 0.2  # 柱宽

fig, ax = plt.subplots(figsize=(14, 7))
ax.bar(x - 1.5*width, region_monthly.loc['North'], width, label='North')
ax.bar(x - 0.5*width, region_monthly.loc['South'], width, label='South')
ax.bar(x + 0.5*width, region_monthly.loc['East'],  width, label='East')
ax.bar(x + 1.5*width, region_monthly.loc['West'], width, label='West')

ax.set_xlabel('月份')
ax.set_ylabel('销售额(元)')
ax.set_title('各地区月度销售额对比')
ax.set_xticks(x)
ax.set_xticklabels(region_monthly.columns, rotation=45)
ax.legend()
ax.grid(axis='y', linestyle='--', alpha=0.6)
plt.tight_layout()
plt.show()

4️⃣ 销售额分布(直方图 + 箱线图组合)

python 复制代码
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))

# 直方图
ax1.hist(df['sales'], bins=30, color='lightcoral', edgecolor='black', alpha=0.7)
ax1.set_title('订单金额分布(直方图)')
ax1.set_xlabel('订单金额(元)')
ax1.set_ylabel('频次')

# 箱线图
ax2.boxplot(df['sales'], vert=True, patch_artist=True, boxprops=dict(facecolor='lightgreen'))
ax2.set_title('订单金额分布(箱线图)')
ax2.set_ylabel('订单金额(元)')
ax2.set_xticks([1], ['All Orders'])

plt.tight_layout()
plt.show()

第四步:保存所有图表(可选)

python 复制代码
# 在每个 plt.show() 前加入:
plt.savefig('monthly_trend.png', dpi=300, bbox_inches='tight')

✅ 项目收获

技能 应用
数据分组聚合 groupby() + sum()
时间序列处理 pd.date_range, .dt.to_period
多类型图表绘制 折线图、饼图、分组柱状图、直方图、箱线图
图表美化 标题、标签、网格、颜色、旋转、布局调整
子图与多图管理 subplots(), tight_layout()
中文支持与导出 rcParams, savefig()

🔧 扩展建议(进阶练习)

  1. 添加交互性 :用 Plotlymplcursors 实现悬停显示数值。
  2. 动态更新 :用 FuncAnimation 制作销售增长动画。
  3. 仪表盘 :结合 DashStreamlit 构建 Web 可视化界面。
  4. 真实数据 :替换为 Kaggle 上的 E-commerce Sales Data

后续

python过渡项目部分代码已经上传至gitee,后续会逐步更新。

资料关注

公众号:咚咚王

《Python编程:从入门到实践》

《利用Python进行数据分析》

《算法导论中文第三版》

《概率论与数理统计(第四版) (盛骤) 》

《程序员的数学》

《线性代数应该这样学第3版》

《微积分和数学分析引论》

《(西瓜书)周志华-机器学习》

《TensorFlow机器学习实战指南》

《Sklearn与TensorFlow机器学习实用指南》

《模式识别(第四版)》

《深度学习 deep learning》伊恩·古德费洛著 花书

《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》

《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》

《自然语言处理综论 第2版》

《Natural-Language-Processing-with-PyTorch》

《计算机视觉-算法与应用(中文版)》

《Learning OpenCV 4》

《AIGC:智能创作时代》杜雨+&+张孜铭

《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》

《从零构建大语言模型(中文版)》

《实战AI大模型》

《AI 3.0》

相关推荐
初学大模型1 小时前
使用卷积神经网络(CNN)提取文字特征来辅助大语言模型生成文字
人工智能·机器人
科研面壁者1 小时前
Origin科研绘图——将“普通饼图”升级为“半环形饼图”
数据分析·origin·数据处理·科研绘图
爱看科技1 小时前
微美全息(NASDAQ:WIMI)双判别器架构:量子生成对抗网络训练的革命性跨越
人工智能·生成对抗网络·量子计算
ziwu1 小时前
【花朵识别系统】Python+TensorFlow+Django+人工智能+深度学习+卷积神经网络算法
人工智能·深度学习·图像识别
Wise玩转AI1 小时前
医院智能体系统实战:基于 autogen 0.7 + DeepSeek 的多阶段工程落地(一)项目总览
人工智能·chatgpt·ai智能体·autogen
杭州泽沃电子科技有限公司1 小时前
煤化工合成环节的监测:智能系统如何保障核心装置安全稳定运行?
运维·人工智能·科技·智能监测·煤化工
努力进修1 小时前
视界重塑:基于Rokid AI眼镜的沉浸式视力康复训练系统设计与实现
人工智能·医疗健康·rokidsdk·ar开发·视力康复
科普瑞传感仪器1 小时前
从“盲插”到“智插”:六维力控制技术如何革新PCBA自动化装配?
运维·人工智能·科技·ai·机器人·自动化·无人机
世岩清上1 小时前
世岩清上:人工智能+园林,科技赋能下的园林新生态
人工智能·科技