VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > python数据分析 >
  • 数据分析必备工具:Python vs Excel vs SQL——什么时候用什么工具?

第3章 数据分析必备工具:Python vs Excel vs SQL——什么时候用什么工具?
我刚入行做数据分析时,遇到过一个让我崩溃的场景:运营给了我100万行的销售数据,让我统计每个地区的月度销量。我用Excel打开,直接卡了5分钟,好不容易打开后,做数据透视表又卡了10分钟,最后电脑直接蓝屏了。后来我用SQL从数据库里只取出近3个月的10万行数据,再用Python做分析,总共花了10分钟就搞定了。那时候我才明白:没有“最好”的工具,只有“最适合场景”的工具。
一、Excel:新手入门首选,小数据快速分析的王者
适用场景(我用Excel的真实场景)
数据量小(10万行以内,超过就卡);
快速做报表、画图表给老板看;
非技术人员(运营、市场)自己就能用;
需要交互性强的报表(比如带切片器的动态报表)。
实战案例:用Excel做月度销售动态报表(踩过的坑全告诉你)
步骤1:用Power Query清洗数据(比手动快10倍)
坑点:运营给的Excel里有合并单元格、空值、重复行,手动清洗要1小时,用Power Query10分钟搞定;
操作:数据→从表格/区域→进入Power Query编辑器→删除重复行→填充空值→拆分列→关闭并上载。
拓展知识:Power Query是Excel的隐藏神器,能处理100万行数据,比直接用Excel单元格操作快N倍,新手一定要学!
步骤2:做数据透视表(快速统计多维度数据)
操作:选中数据→插入→数据透视表→把“地区”拖到行,“月份”拖到列,“销量”拖到值;
拓展知识:加切片器(分析→插入切片器→选“商品类别”),点击切片器就能快速切换不同类别的销量,老板看报表时直接点就行,不用改公式。
步骤3:用条件格式高亮异常值(一眼看出问题)
操作:选中销量列→开始→条件格式→数据条/色阶/图标集;
比如用红色图标集标记销量最低的10%,老板一眼就能看到哪个地区销量差。
Excel的优缺点(真实体验)

优点 缺点
上手快,不用写代码 大数据量(>10万行)卡到崩溃
可视化图表美观,交互性强 复杂分析(比如用户分群)做不了
非技术人员也能上手 重复工作不能自动化(比如每月做同样的报表,要手动重复操作)

拓展知识:Excel进阶技巧(新手必学)
Power Pivot:处理多表关联分析,比如把销售数据和用户数据关联起来,分析不同用户群体的消费习惯;
VBA宏:自动化重复工作,比如每月自动生成报表,不用手动复制粘贴;
XLOOKUP函数:比VLOOKUP好用100倍,支持反向查找、多条件查找,Excel 365以上版本才有。
二、SQL:大数据取数神器,数据库里挖数据的必备技能
适用场景(我用SQL的真实场景)
从数据库取数(公司的数据基本都存在MySQL、PostgreSQL、SQL Server里);
大数据量查询(100万行以上,比Excel快100倍);
复杂多表关联分析(比如销售数据+用户数据+商品数据关联);
定期自动取数(比如每天自动取前一天的销售数据)。
实战案例:从MySQL数据库取近3个月销售数据(代码逐行讲解)
代码:
sql

	-- 1. 选择需要的字段:地区、月份、总销量
	SELECT 
	region AS 地区,
	DATE_FORMAT(sale_date, '%Y-%m') AS 月份, -- 把日期格式转成“2024-01”
	SUM(sale_amount) AS 总销量 -- 统计每个地区每个月的总销量
	FROM 
	sales -- 从sales表取数据
	WHERE 
	sale_date >= DATE_SUB(CURDATE(), INTERVAL 3 MONTH) -- 取近3个月的数据
	GROUP BY 
	region, DATE_FORMAT(sale_date, '%Y-%m') -- 按地区和月份分组
	ORDER BY 
	月份 ASC, 总销量 DESC; -- 按月份升序,总销量降序排序

逐行讲解(新手必懂)
SELECT region AS 地区:
SELECT:选择要查询的字段;
AS 地区:给字段起别名,方便后面看结果,中文别名要用双引号或不加(不同数据库规则不同,MySQL可以直接用中文);
拓展知识:SELECT *表示选择所有字段,但是不推荐,因为会取很多没用的数据,慢且占内存。

DATE_FORMAT(sale_date, '%Y-%m') AS 月份:

DATE_FORMAT:MySQL的日期格式化函数,把2024-01-05转成2024-01;
拓展知识:不同数据库的日期函数不同,比如PostgreSQL用TO_CHAR(sale_date, 'YYYY-MM'),SQL Server用FORMAT(sale_date, 'yyyy-MM')。

WHERE sale_date >= DATE_SUB(CURDATE(), INTERVAL 3 MONTH):

WHERE:过滤条件,只取近3个月的数据;
CURDATE():获取当前日期,DATE_SUB(CURDATE(), INTERVAL 3 MONTH):当前日期减去3个月;
踩坑经验:忘记加WHERE条件,会把整个表的数据都取出来,1000万行数据直接把数据库查崩,老板直接找你谈话!

GROUP BY region, DATE_FORMAT(sale_date, '%Y-%m'):

GROUP BY:按字段分组,和SUM、COUNT等聚合函数一起用;
拓展知识:HAVING是分组后的过滤条件,比如HAVING 总销量 > 10000,只显示总销量超过10000的地区。

ORDER BY 月份 ASC, 总销量 DESC:

ORDER BY:排序,ASC升序(默认),DESC降序;
拓展知识:可以按多个字段排序,先按月份升序,再按总销量降序。
SQL的优缺点(真实体验)
优点 缺点
大数据量查询快,1000万行数据秒出结果 可视化差,查询结果要导出到Excel或Python画图
复杂多表关联分析轻松搞定 上手比Excel难,要学语法
可以自动化取数(用定时任务) 不能做复杂的机器学习分析
拓展知识:SQL进阶技巧(新手必学)
窗口函数:做排名、累计求和,比如ROW_NUMBER() OVER(PARTITION BY region ORDER BY 总销量 DESC),给每个地区的销量排名;
LIMIT:限制查询结果的行数,比如LIMIT 10,只取前10行,避免取太多数据卡崩;
JOIN:多表关联,比如SELECT * FROM sales JOIN users ON sales.user_id = users.user_id,把销售数据和用户数据关联起来。
三、Python:复杂分析与自动化的终极工具
适用场景(我用Python的真实场景)
批量处理文件(比如处理100个Excel文件,手动要1天,Python10分钟搞定);
复杂分析(比如用户分群、销量预测、机器学习);
自动化报表(比如每天自动生成报表,发送邮件给老板);
数据可视化(比Excel更灵活,画复杂图表)。
实战案例:批量处理100个Excel销售文件(代码逐行讲解)
场景:运营给了100个Excel文件,每个文件是一个地区的销售数据,要合并成一个总表,统计每个地区的总销量。
代码:
python

	# 1. 导入需要的库
	import pandas as pd
	import os
	
	# 2. 获取当前目录下所有Excel文件的路径
	# 列表推导式:遍历当前目录下的所有文件,只取.xlsx结尾的
	file_paths = [f for f in os.listdir('.') if f.endswith('.xlsx')]
	
	# 3. 批量读取Excel文件,存到列表里
	dfs = []
	for file in file_paths:
	# 读取Excel文件,sheet_name='Sheet1'
	df = pd.read_excel(file, sheet_name='Sheet1')
	# 从文件名里提取地区(比如“北京销售数据.xlsx”提取“北京”)
	region = file.split('销售数据')[0]
	# 给数据加一列“地区”
	df['地区'] = region
	# 把当前文件的数据加到列表里
	dfs.append(df)
	
	# 4. 合并所有DataFrame成一个总表
	total_df = pd.concat(dfs, ignore_index=True)
	
	# 5. 统计每个地区的总销量
	region_sales = total_df.groupby('地区')['销量'].sum().reset_index()
	
	# 6. 保存结果到Excel
	region_sales.to_excel('各地区总销量.xlsx', index=False)
	
	print('批量处理完成!结果已保存到“各地区总销量.xlsx”')

逐行讲解(新手必懂)

import pandas as pd:

导入Pandas库,数据分析的核心库,专门处理表格数据;
拓展知识:import os是操作系统库,用来获取文件路径、创建文件夹等。

file_paths = [f for f in os.listdir('.') if f.endswith('.xlsx')]:

列表推导式,Python的语法糖,比for循环简洁;
os.listdir('.'):获取当前目录下的所有文件和文件夹;
f.endswith('.xlsx'):只取.xlsx结尾的Excel文件;
踩坑经验:如果文件在子目录里,用os.walk('.')遍历所有子目录。

region = file.split('销售数据')[0]:

split('销售数据'):把文件名按“销售数据”拆分,比如“北京销售数据.xlsx”拆成['北京', '.xlsx'],取第一个元素就是“北京”;
拓展知识:如果文件名格式不统一,用正则表达式提取,比如import re; region = re.findall('(.*?)销售数据', file)[0]。

total_df = pd.concat(dfs, ignore_index=True):

pd.concat:把多个DataFrame合并成一个,相当于Excel的合并工作表;
ignore_index=True:重置索引,避免合并后索引重复;
拓展知识:如果要按列合并,用pd.merge,相当于SQL的JOIN。

region_sales = total_df.groupby('地区')['销量'].sum().reset_index():

groupby('地区'):按地区分组;
['销量'].sum():统计每个地区的总销量;
reset_index():把分组后的索引变成列,方便保存到Excel;
拓展知识:可以同时统计多个指标,比如total_df.groupby('地区').agg(总销量=('销量','sum'), 平均销量=('销量','mean')).reset_index()。
Python的优缺点(真实体验)
优点 缺点
批量处理文件、自动化,节省大量时间 上手难,要学代码,非技术人员用不了
复杂分析、机器学习轻松搞定 写代码要调试,容易出错
可视化灵活,画复杂图表(比如热力图、树图) 运行慢?不,用Pandas矢量化操作比Excel快100倍
拓展知识:Python数据分析常用库(新手必装)
Pandas:处理表格数据,相当于Python版的Excel+SQL;
Matplotlib/Seaborn:画图表,相当于Python版的Excel图表;
Scikit-learn:机器学习,做预测、分类、聚类;
SQLAlchemy:Python连接数据库,不用写SQL就能取数。
四、总结:什么时候用什么工具?一张表给你讲明白

工具 适用场景 数据量 上手难度 核心优势
Excel 小数据快速分析、可视化报表、非技术人员 <10万行 易 上手快,交互性强
SQL 数据库取数、大数据查询、复杂多表关联 >10万行 中 大数据查询快,取数灵活
Python 批量处理、复杂分析、自动化、机器学习 无限制 难 功能强大,能做Excel和SQL做不了的事

新手学习路径(我就是这么学的)
1.先学Excel:掌握Power Query、数据透视表、条件格式,能快速做报表,满足日常工作需求;
2.再学SQL:掌握基本查询、多表关联、窗口函数,能从数据库取数,处理大数据;
3.最后学Python:掌握Pandas、Matplotlib,能做复杂分析和自动化,进阶成高级分析师。
终极原则:用最少的时间解决问题
如果用Excel能10分钟搞定,就别用Python;
如果用SQL能快速取数,就别导出到Excel处理;
工具是为了解决问题,不是为了炫技——我见过很多分析师只会用Python,处理小数据时比用Excel慢10倍,完全没必要。
下一节,我们就开始学习Python的核心语法,为后面的数据分析打下基础!

转载请注明出处:https://www.xin3721.com/pythonNew/python49604.html


相关教程