VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > 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 基础知识拓展

  1. Excel进阶:用Power Query优化数据清洗
    如果数据格式混乱(比如日期是“2026/01/05”或“2026-01-05”混合),可以用Power Query自动清洗:
    1.点击数据选项卡 → 从表格/区域,进入Power Query编辑器;
    2.选中日期列 → 转换选项卡 → 数据类型 → 日期,自动统一格式;
    3.点击开始选项卡 → 删除重复项,一键去除重复订单;
    4.点击关闭并上载,清洗后的数据自动导入Excel。
  2. 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) # 每分钟检查一次
  1. 两者联动: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分别怎么处理?

转载请注明出处:


相关教程