首页 > 编程开发 > python数据分析 >
-
实战:用Excel完成一次简单的销售数据统计(对比Python的优势)
实战:用Excel完成一次简单的销售数据统计(对比Python的优势)
18.12.1 实战任务说明
假设你是公司运营,拿到一份2026年Q1销售数据CSV文件(sales_q1.csv),包含以下字段:
| 字段名 | 说明 | 示例值 |
|---|---|---|
| 日期 | 订单日期 | 2026-01-05 |
| 区域 | 销售区域 | 华东/华南/华北 |
| 产品 | 产品名称 | A产品/B产品/C产品 |
| 销售额 | 单订单销售额(元) | 1200 |
| 数量 | 单订单销售数量 | 2 |
需要完成3项统计任务:
1.统计各区域Q1总销售额并排名;
2.找出Q1销售额Top3的产品;
3.绘制Q1月度销售额趋势图。
18.12.2 用Excel完成统计:操作步骤全解析
步骤1:导入数据到Excel
1.打开Excel,点击数据选项卡 → 自文本/CSV,选择sales_q1.csv文件;
2.在弹出的导入向导中,确认分隔符为逗号(CSV默认),点击加载,数据会自动导入到工作表中。
步骤2:统计各区域总销售额(数据透视表)
1.选中数据区域任意单元格,点击插入选项卡 → 数据透视表;
2.在右侧“字段列表”中:
1.把“区域”拖到行区域;
2.把“销售额”拖到值区域(默认是“求和项:销售额”);
3.点击“销售额”列的下拉箭头 → 排序 → 降序,得到区域销售额排名。
结果示例:
区域 求和项:销售额
华东 125000
华南 98000
华北 76000
步骤3:找出Top3产品
1.新建一个数据透视表,把“产品”拖到行区域,“销售额”拖到值区域;
2.点击“产品”列的下拉箭头 → 值筛选 → 前10项,把“10”改成“3”,点击确定,得到Top3产品。
步骤4:绘制月度销售额趋势图
1.选中“日期”列,点击数据选项卡 → 分组,选择“月”,点击确定,日期会自动按月分组;
2.选中分组后的日期和销售额列,点击插入选项卡 → 折线图,自动生成月度趋势图。
Excel操作的痛点
如果数据量超过10万行,Excel打开和操作会明显卡顿;
每月重复统计时,需要手动重复导入、拖字段、分组,无法自动化;
若数据格式混乱(比如日期是文本格式),需要手动清洗,效率低。
18.12.3 用Python完成同样任务:代码逐行讲解
准备工作
先安装依赖库:
bash
pip install pandas matplotlib
完整代码与逐行讲解
python
# 1. 导入必要的库:Pandas处理数据,Matplotlib做可视化
import pandas as pd
import matplotlib.pyplot as plt
# 2. 读取CSV数据文件:自动识别字段,生成DataFrame(类似Excel表格)
# 注意:如果文件路径有中文,要加encoding='utf-8',避免乱码
df = pd.read_csv('sales_q1.csv', encoding='utf-8')
# 3. 数据清洗:处理缺失值和格式转换(Excel需要手动做,Python一键完成)
# 检查缺失值:isnull()返回布尔值,sum()统计每列缺失数量
print("缺失值统计:\n", df.isnull().sum())
# 删除包含缺失值的行:dropna(),如果是数值列,也可以用fillna(0)填充0
df = df.dropna()
# 把日期字段从字符串转换为日期格式:方便后续按月分组
df['日期'] = pd.to_datetime(df['日期'])
# 4. 任务1:统计各区域总销售额并排名
# groupby('区域'):按区域分组;['销售额'].sum():对每组销售额求和;sort_values降序排序
region_sales = df.groupby('区域')['销售额'].sum().sort_values(ascending=False)
print("\n各区域销售额排名:")
print(region_sales)
# 5. 任务2:找出Top3产品
# nlargest(3):直接取销售额前3的产品,比Excel的筛选更高效
top3_products = df.groupby('产品')['销售额'].sum().nlargest(3)
print("\n销售额Top3产品:")
print(top3_products)
# 6. 任务3:绘制月度销售额趋势图
# 新增月份列:dt.month提取日期中的月份(1-3月)
df['月份'] = df['日期'].dt.month
# 按月分组求和销售额
monthly_sales = df.groupby('月份')['销售额'].sum()
# 绘制折线图
plt.figure(figsize=(10, 6)) # 设置图表大小为10x6英寸
plt.plot(monthly_sales.index, monthly_sales.values, marker='o', color='blue', linewidth=2)
plt.title('2026年Q1月度销售额趋势', fontsize=14) # 设置标题字体大小
plt.xlabel('月份', fontsize=12) # X轴标签
plt.ylabel('总销售额(元)', fontsize=12) # Y轴标签
plt.xticks([1, 2, 3], ['1月', '2月', '3月']) # 把X轴数字换成中文月份
plt.grid(True, linestyle='--', alpha=0.7) # 添加网格线,增强可读性
plt.show() # 显示图表
逐行讲解关键代码:
1.pd.read_csv():自动识别CSV文件的分隔符和字段,无需手动导入;
2.df.dropna():一键删除缺失值,Excel需要手动筛选空行;
3.pd.to_datetime(df['日期']):自动转换日期格式,Excel需要手动设置单元格格式;
4.groupby('区域')['销售额'].sum():一行代码实现数据透视表的分组求和,Excel需要拖字段;
5.nlargest(3):直接取前3名,Excel需要手动设置筛选条件;
6.plt.plot():自定义图表样式(标记点、颜色、网格线),Excel需要多次点击调整。
18.12.4 Excel vs Python:优势对比
Excel的核心优势
操作门槛低:无需写代码,拖拖拽拽就能完成统计,适合非技术人员;
可视化直观:一键生成图表,调整样式方便,适合快速制作报表给老板看;
交互性强:可以直接在表格中修改数据,实时看到结果。
Python的核心优势
优势点 具体说明
处理大数据 轻松处理100万+行数据,不会卡顿;用PySpark甚至能处理亿级数据
自动化重复任务 写好脚本后,每月只需运行一次,自动完成取数、清洗、统计、可视化全流程
复杂分析能力 支持机器学习预测(比如预测4月销售额)、文本分析(比如用户评论情感分析)
可复用性强 脚本可以保存,下次换数据只需修改文件路径,无需重复写代码
数据清洗高效 一键处理缺失值、格式转换、重复值,Excel需要手动操作
18.12.5 基础知识拓展
-
Excel进阶:用Power Query优化数据清洗
如果数据格式混乱(比如日期是“2026/01/05”或“2026-01-05”混合),可以用Power Query自动清洗:
1.点击数据选项卡 → 从表格/区域,进入Power Query编辑器;
2.选中日期列 → 转换选项卡 → 数据类型 → 日期,自动统一格式;
3.点击开始选项卡 → 删除重复项,一键去除重复订单;
4.点击关闭并上载,清洗后的数据自动导入Excel。 -
Python进阶:自动化报表与定时任务
(1)导出结果到Excel
用openpyxl库把统计结果导出到Excel,方便非技术人员查看:
python
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
# 写入区域销售额
ws['A1'] = '区域'
ws['B1'] = '总销售额'
for i, (region, sales) in enumerate(region_sales.items(), start=2):
ws.cell(row=i, column=1, value=region)
ws.cell(row=i, column=2, value=sales)
# 写入Top3产品
ws['D1'] = '产品'
ws['E1'] = '总销售额'
for i, (product, sales) in enumerate(top3_products.items(), start=2):
ws.cell(row=i, column=4, value=product)
ws.cell(row=i, column=5, value=sales)
wb.save('sales_report_q1.xlsx')
(2)定时自动运行脚本
用schedule库设置每月1号自动运行统计脚本:
python
import schedule
import time
def run_sales_report():
# 把前面的统计代码封装成函数
print("开始生成销售报表...")
# 统计代码...
print("销售报表生成完成!")
# 每月1号凌晨1点运行
schedule.every().month.at("01:00").do(run_sales_report)
while True:
schedule.run_pending()
time.sleep(60) # 每分钟检查一次
-
两者联动:Python处理+Excel可视化
实际工作中可以结合两者的优势:
用Python处理大数据、自动化取数;
把结果导出到Excel,用Excel做最终的可视化报表(老板更习惯看Excel格式)。
18.12.6 思考题
1.如果销售数据是100万行,用Excel和Python分别处理会有什么差异?
2.如何用Python实现“每天自动从MySQL数据库取销售数据,生成Excel报表并发送邮件给老板”?
3.Excel的Power Query和Python的Pandas在数据清洗方面,哪个更高效?分别适用于什么场景?
4.用Python绘制的图表,如何导出为高清图片插入到Excel报表中?
5.假设数据中有异常值(比如销售额是负数),Excel和Python分别怎么处理?
转载请注明出处:










