作为大数据专业的学生,最近完成了一项超实用的实验 —— 用四大 AI 工具(文心一言、讯飞星火、智谱清言、通义千问)分析咖啡销售数据并实现可视化。整个过程从踩坑调试到提炼业务价值,收获满满,今天就把完整流程和核心发现分享给大家~

一、实验背景与目标
1. 核心需求
基于coffee_sales_zh.csv数据集,用 Python 实现多维度可视化分析,同时对比四大 AI 工具在数据分析领域的表现,最终提炼咖啡销售的业务规律。
2. 实验目标

  • 掌握 pandas、matplotlib、seaborn 等库的实战应用,解决数据预处理和可视化常见问题;
  • 理解 AI 工具生成代码的逻辑,学会调试优化 AI 生成的代码;
  • 能用折线图、柱状图、热力图等图表解读销售趋势、产品排名、时间交叉关系;
  • 对比四大 AI 工具的优缺点,明确不同场景下的工具选择策略。

二、实验环境准备
1. 编程与库环境

  • 编程平台PyCharm 2023.2
  • 核心库:pandas 1.5+(数据处理)、matplotlib 3.7+(基础可视化)、seaborn 0.12+(高级可视化)、numpy 1.24+(数据计算)
  • 库安装命令:pip install pandas matplotlib seaborn numpy
  • 数据集:咖啡销售记录数据集

2. 数据集说明
数据集coffee_sales_zh.csv包含 3547 条咖啡销售记录,核心字段如下:

  • 时间维度:日期、月份、星期、时段(上午 / 下午 / 晚上)、小时
  • 业务维度:咖啡名称(拿铁、美式、卡布奇诺等 8 类)、金额(单杯价格)、支付方式(全部为卡支付)

3. AI 工具
文心一言网页端、讯飞星火网页端、智谱清言网页端、通义千问网页端(用于生成初始分析代码)

三、实验完整流程
1. 数据准备与理解
先通过 Excel 初步查看数据结构,确认无明显缺失值和格式异常。关键发现:

  • 销售时间跨度:2024 年 3 月 - 2025 年 3 月
  • 咖啡品类:8 种核心产品,涵盖经典美式、拿铁、卡布奇诺等
  • 支付方式:100% 卡支付,无需额外区分支付渠道影响

2. AI 工具代码生成
向四大 AI 工具统一提交需求:
"用 Python 分析 coffee_sales_zh.csv 咖啡销售数据,生成多维度可视化图表(含趋势、产品、时间维度),并输出核心分析结论"

分别获取 4 份 Python 脚本:wenxinyiyan.py、xunfeixinghuo.py、zhipuqingyan.py、tongyiqianwen.py

3. 代码调试与问题解决(关键踩坑环节)
AI 生成的代码不能直接运行,需针对性调试,核心问题及解决方案如下:

(1)中文字体乱码

  • 现象:图表标题、坐标轴标签显示为 "□□"
  • 解决:在所有代码开头添加字体配置
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei']  # 支持中文
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示异常

(2)数据编码错误

  • 现象:通义千问代码提示UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0
  • 解决:数据集实际为 GBK 编码,修改读取参数
# 原代码
df = pd.read_csv(file_path, encoding='utf-8')
# 修改后
df = pd.read_csv(file_path, encoding='gbk')  # 智谱清言需将encoding='ANSI'也改为'gbk'

(3)图表布局重叠

  • 现象:讯飞星火的 2 行 3 列子图中,热力图 x 轴标签(星期)重叠
  • 解决:调整画布大小 + 自动优化间距
# 原代码
fig, axs = plt.subplots(2, 3, figsize=(18, 12))
# 修改后
fig, axs = plt.subplots(2, 3, figsize=(20, 14))
plt.tight_layout()  # 自动优化子图间距
axs[0,1].tick_params(axis='x', rotation=30)  # 旋转x轴标签

(4)数据类型错误

  • 现象:金额字段为字符串类型,无法计算总和
  • 解决:强制转换数据类型
df['金额'] = pd.to_numeric(df['金额'], errors='coerce')  # 转换为数值类型
df.dropna(subset=['金额'], inplace=True)  # 删除转换失败的空值

4. 可视化结果与核心发现
经过调试后,四大 AI 工具均生成了有效图表,以下是关键结果汇总:
(1)文心一言:基础趋势分析能手

  • 核心图表:月度销售额折线图、柱状图、占比饼图
  • 关键结论:12 月销售额最高(14.2% 占比),3 月最低(5.1% 占比),月度销售额呈 "先降后升" 趋势
  • 可视化示例:
    image

image

(2)讯飞星火:高级图表与交叉分析强者

  • 核心图表:时段 × 星期热力图、箱线图、小提琴图、堆叠条形图
  • 关键结论:
  1. 周五下午为销售高峰(热力图红色最深),适合优化排班和库存;
  2. 拿铁咖啡金额中位数最高(箱线图验证),是高端客群首选;
  3. 晚上时段客单价分布最集中(小提琴图显示数据密度最高)
  • 可视化示例:
    image

image

(3)智谱清言:全维度数据汇总专家

  • 核心图表:产品销售排名图、时段销售分布图、星期趋势图、月度趋势图
  • 关键结论:
  1. 加奶美式最受欢迎(销售数量 809 杯),拿铁销售额最高(26875.30 元);
  2. 下午时段销量最高(1205 杯),晚上时段平均客单价最高(32.89 元);
  3. 周二销售数量峰值(526.6 杯),周日最低(419 杯)
  • 可视化示例:
    image

image

image

image

image

image

image

(4)通义千问:数据概览与热力图专长

  • 核心图表:每日销售额趋势图、饮品 TOP5 排名图、每日各饮品销售热力图
  • 关键结论:
  1. 总销售额 112245.58 元,总订单 3547 单,平均客单价 31.65 元;
  2. 最受欢迎饮品 TOP3:加奶美式(809 杯)、拿铁(757 杯)、经典美式(564 杯)
  • 可视化示例:
    image

image

image

image

image

image

四、四大 AI 工具对比分析

对比维度 文心一言 讯飞星火 智谱清言 通义千问
分析维度 单一(以月度为主) 深度交叉(时段 × 星期、品类 × 价格) 全维度(产品 / 时段 / 星期 / 月度) 基础全面(销量 / 销售额 / 单品)
可视化类型 基础图表(折线 / 柱状 / 饼图) 高级图表(热力图 / 箱线图 / 小提琴图) 实用图表(排名图 / 趋势图 / 分布直方图) 趋势 + 热力图
代码简洁度 高(无冗余) 中(参数复杂但注释清晰) 低(预处理与可视化混合编写) 中(结构清晰)
数据预处理能力 弱(需手动处理类型转换) 中(含日期格式转换) 强(自动处理缺失值、统计汇总) 强(自动清洗空值)
结果解读友好度 中(仅给结论无图表关联) 高(结论 + 图表用途说明) 高(详细统计表格 + 结论) 中(核心指标汇总)
适用场景 快速基础趋势分析 深度业务交叉分析 全维度数据汇总报告 数据概览 + 热力图分析

五、实验总结与业务建议
1. 核心业务洞察

  • 时间规律:周五下午是销售黄金时段,12 月为销售旺季,3 月为淡季;
  • 产品策略:加奶美式(销量王)和拿铁(销售额王)应重点备货,经典美式为基础引流款;
  • 价格定位:咖啡均价 30 元左右,晚上时段客单价最高,可针对性推出高端产品;
  • 支付习惯:100% 卡支付,无需额外配置现金收款渠道。

2. AI 工具使用建议

  • 快速出图选文心一言:适合初步数据探索,生成基础图表效率高;
  • 深度分析选讯飞星火:交叉维度分析和高级图表能力突出,适合业务决策支持;
  • 报告汇总选智谱清言:自动生成统计表格和多维度结论,适合快速出分析报告;
  • 数据清洗选通义千问:自动处理空值和数据类型,适合原始数据快速上手。

3. 实验收获与反思

  • 技术层面:掌握了 Python 数据分析核心库的实战应用,学会解决中文字体、编码、布局等常见问题;
  • 思维层面:理解了 "AI 工具是辅助,人工调试和业务解读才是核心",AI 生成的代码需要结合数据实际情况优化;
  • 改进方向:后续使用 AI 工具时,可在需求中明确 "代码模块化、添加注释、使用原始字段名",减少调试成本。

附:核心代码片段(以讯飞星火为例)

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

# 字体配置
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False

# 数据加载与预处理
df = pd.read_csv('coffee_sales_zh.csv', encoding='GB2312')
df['日期'] = pd.to_datetime(df['日期'])
df['时段'] = df['时段'].str.strip()

# 创建2行3列子图
fig, axs = plt.subplots(2, 3, figsize=(20, 14))
fig.suptitle('咖啡销售数据多维度可视化分析', fontsize=16, y=0.98)

# 1. 箱线图(咖啡品类金额分布)
coffee_names = df['咖啡名称'].value_counts().head(6).index
coffee_data = [df[df['咖啡名称'] == name]['金额'] for name in coffee_names]
axs[0, 0].boxplot(coffee_data, labels=coffee_names, patch_artist=True)
axs[0, 0].set_title('销量前6咖啡的金额分布')
axs[0, 0].set_xlabel('咖啡种类')
axs[0, 0].set_ylabel('销售金额(元)')
axs[0, 0].tick_params(axis='x', rotation=45)

# 2. 热力图(时段×星期销售频次)
time_week_cross = pd.crosstab(df['时段'], df['星期'])
week_order = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
time_order = ['上午', '下午', '晚上']
time_week_cross = time_week_cross.reindex(index=time_order, columns=week_order)
im = axs[0, 1].imshow(time_week_cross.values, cmap='YlOrRd', aspect='auto')
for i in range(len(time_order)):
    for j in range(len(week_order)):
        axs[0, 1].text(j, i, time_week_cross.iloc[i, j], ha='center', va='center')
axs[0, 1].set_xticks(range(len(week_order)))
axs[0, 1].set_xticklabels(week_order)
axs[0, 1].set_yticks(range(len(time_order)))
axs[0, 1].set_yticklabels(time_order)
axs[0, 1].set_title('时段×星期销售频次热力图')
plt.colorbar(im, ax=axs[0, 1], shrink=0.8, label='销售次数')

# 其余图表代码省略...

plt.tight_layout()
plt.savefig('coffee_sales_advanced_visualization.png', bbox_inches='tight')
plt.show()

以上就是本次实验的完整分享,如果你需要获取完整 Python 脚本、数据集或高清可视化图表,可以留言交流~ 数据分析的核心是把数据转化为可落地的业务价值,而 AI 工具能让这个过程效率翻倍,推荐大家多动手实践!