Excel处理10万行数据卡死?Python pandas 3秒搞定实战
【摘要】 Excel处理10万行数据卡死?Python pandas 3秒搞定实战你一定遇到过这样的场景:打开一个10万行的Excel文件,鼠标转圈转了半分钟,好不容易打开了,筛选一下又卡住,想做个数据透视表,Excel直接"未响应"……最后只能无奈地打开任务管理器,结束进程,重新开始。如果你也深受其苦,那么这篇文章就是为你准备的。用Python的pandas库,10万行数据的读取、清洗、分析,全程3...
Excel处理10万行数据卡死?Python pandas 3秒搞定实战
你一定遇到过这样的场景:
打开一个10万行的Excel文件,鼠标转圈转了半分钟,好不容易打开了,筛选一下又卡住,想做个数据透视表,Excel直接"未响应"……
最后只能无奈地打开任务管理器,结束进程,重新开始。
如果你也深受其苦,那么这篇文章就是为你准备的。用Python的pandas库,10万行数据的读取、清洗、分析,全程3秒搞定。不需要你有多深的编程基础,跟着步骤走就行。
为什么Excel会卡死?
先简单说一下原因,你就知道为什么pandas这么快了。
Excel本质上是单线程运行的,所有计算都在一个CPU核心上完成。而且它会把每一行、每一列的格式、公式、条件格式全部加载到内存里。10万行数据,加上各种格式信息,内存占用轻松突破1GB。
pandas则不同:
- 它运行在Python环境中,可以利用多核CPU
- 它只处理纯数据,不加载任何格式信息
- 底层用C语言优化过,向量化运算速度极快
- 数据以DataFrame(二维表格)形式存在内存中,操作效率极高
简单说:Excel是"带着全家老小跑步",pandas是"轻装上阵冲刺"。
环境准备(5分钟搞定)
第一步:安装Python
如果你还没装Python,去官网下载安装包
安装时记得勾选 "Add Python to PATH",否则后面会很麻烦。
第二步:安装pandas
打开命令行(Windows按
Win+R,输入 cmd 回车),输入:pip install pandas openpyxl
openpyxl 是用来读写Excel文件的引擎,必须装。装完之后,在命令行输入
python 回车,然后输入 import pandas as pd,没报错就说明安装成功了。输入 exit() 退出。实战一:3秒读取10万行数据
假设你有一个
sales_data.xlsx 文件,里面有10万行销售记录,包含以下列:|
订单ID
|
日期
|
产品名称
|
销售数量
|
单价
|
地区
|
|---|
用pandas读取它:
import pandas as pd
import time
start = time.time()
# 读取Excel文件
df = pd.read_excel('sales_data.xlsx')
end = time.time()
print(f"读取完成!共 {len(df)} 行数据")
print(f"耗时:{end - start:.2f} 秒")
print(df.head()) # 查看前5行
运行结果大概是这样的:
读取完成!共 100000 行数据
耗时:2.87 秒
订单ID 日期 产品名称 销售数量 单价 地区
0 10001 2024-01-15 产品A 50 29.9 华东
1 10002 2024-01-15 产品B 120 15.5 华南
2 10003 2024-01-16 产品A 30 29.9 华北
3 10004 2024-01-16 产品C 80 45.0 华东
4 10005 2024-01-17 产品B 60 15.5 西南
3秒不到,10万行数据已经在内存里了。 你可以用
df 做任何操作,而且完全不会卡。💡 小技巧:如果你的数据量更大(50万行以上),建议把Excel另存为CSV格式再用pd.read_csv()读取,速度还能再快一倍。
实战二:数据清洗(比Excel快10倍)
场景1:删除重复行
Excel里要删除重复行,得点"数据 → 删除重复项",然后等它慢慢扫。10万行大概要等30秒到1分钟。
pandas只需要一行代码:
df_clean = df.drop_duplicates()
print(f"去重前:{len(df)} 行,去重后:{len(df_clean)} 行")
瞬间完成,连进度条都不用看。
场景2:处理空值
Excel里找空值、填充空值,要么手动筛选,要么写IF公式。10万行数据,公式一拉就是几十秒的卡顿。
pandas:
# 查看哪些列有空值
print(df.isnull().sum())
# 删除包含空值的行
df_clean = df.dropna()
# 或者用指定值填充空值
df_filled = df.fillna({'销售数量': 0, '单价': df['单价'].mean()})
场景3:新增计算列
比如你想加一列"销售总额" = 销售数量 × 单价。
Excel里要写公式,然后双击填充柄,10万行要等好几秒。
pandas:
df['销售总额'] = df['销售数量'] * df['单价']
一行代码,瞬间完成。 因为pandas是向量化运算,直接对整个列做乘法,不需要逐行计算。
实战三:数据分析(告别数据透视表)
场景:按地区统计销售总额
Excel里做这个,要插入数据透视表,拖拽字段,等它刷新……10万行数据,刷新一次可能要等十几秒。
pandas:
region_summary = df.groupby('地区')['销售总额'].agg(['sum', 'mean', 'count'])
print(region_summary)
输出:
sum mean count
地区
华东 1523450 456.2 3340
华南 1389021 389.1 3570
华北 1204532 412.8 2918
西南 987654 378.5 2608
东北 876543 401.2 2185
不到1秒,分组、求和、求平均、计数全部完成。
场景:按产品统计销量Top10
top_products = df.groupby('产品名称')['销售数量'].sum().sort_values(ascending=False).head(10)
print(top_products)
一行链式调用,从分组到排序到取前10,一气呵成。
实战四:多表合并(VLOOKUP的终极替代)
Excel里做VLOOKUP,10万行数据配上几万行的查找表,电脑基本可以去做别的事了。
假设你还有一个
product_info.xlsx,包含产品ID、产品名称、产品类别。你想把类别信息合并到销售数据里:# 读取产品信息表
products = pd.read_excel('product_info.xlsx')
# 合并(类似VLOOKUP)
df_merged = df.merge(products, on='产品名称', how='left')
print(df_merged.head())
pandas的
merge 底层用的是哈希连接算法,速度比Excel的VLOOKUP快几十倍。10万行数据合并,通常1-2秒搞定。实战五:结果导出
分析完了,当然要导出结果。
# 导出为Excel
df_merged.to_excel('分析结果.xlsx', index=False)
# 导出为CSV(更快,文件更小)
df_merged.to_csv('分析结果.csv', index=False, encoding='utf-8-sig')
index=False 是不导出索引列,encoding='utf-8-sig' 是为了让Excel打开CSV时中文不乱码。完整实战脚本
把上面的操作串起来,一个完整的分析脚本长这样:
import pandas as pd
import time
start = time.time()
# 1. 读取数据
print("正在读取数据...")
df = pd.read_excel('sales_data.xlsx')
print(f"读取完成,共 {len(df)} 行")
# 2. 数据清洗
print("正在清洗数据...")
df = df.drop_duplicates() # 去重
df = df.dropna() # 删除空值
df['销售总额'] = df['销售数量'] * df['单价'] # 新增计算列
# 3. 数据分析
print("正在分析数据...")
region_summary = df.groupby('地区')['销售总额'].agg(['sum', 'mean', 'count'])
top_products = df.groupby('产品名称')['销售数量'].sum().sort_values(ascending=False).head(10)
# 4. 导出结果
print("正在导出结果...")
with pd.ExcelWriter('分析结果.xlsx') as writer:
region_summary.to_excel(writer, sheet_name='地区汇总')
top_products.to_excel(writer, sheet_name='产品Top10')
df.to_excel(writer, sheet_name='明细数据', index=False)
end = time.time()
print(f"\n✅ 全部完成!总耗时:{end - start:.2f} 秒")
整个流程:读取 → 清洗 → 分析 → 导出,10万行数据,3-5秒全部搞定。
性能对比
|
操作
|
Excel
|
pandas
|
|---|---|---|
|
读取10万行
|
30-60秒
|
2-3秒
|
|
删除重复项
|
30-60秒
|
瞬间
|
|
新增计算列
|
10-20秒
|
瞬间
|
|
数据透视表
|
15-30秒
|
1秒内
|
|
VLOOKUP合并
|
1-2分钟
|
1-2秒
|
|
内存占用
|
800MB-1.5GB
|
100-200MB
|
常见问题
Q:我不会Python,能学会吗?
A:这篇文章里的代码,你只需要改一下文件名和列名就能用。不需要理解每一行的原理,先跑起来再说。用多了自然就熟了。
Q:pandas能处理多大的数据?
A:取决于你的内存。一般16GB内存的电脑,pandas可以轻松处理500万行以内的数据。如果数据更大,可以用
chunksize 参数分批读取。Q:公司电脑不让装Python怎么办?
A:可以用便携版Python(Python Portable),不需要管理员权限就能运行。或者用在线环境如Google Colab,浏览器打开就能用。
Q:处理完的数据还要给同事用,他们不会Python怎么办?
A:导出为Excel文件给他们就行。pandas是你的"发动机",Excel是"交付物",各司其职。
写在最后
Excel不是不好,它是最伟大的办公软件之一。但工具要分场景:
- 几千行数据,简单分析 → Excel完全够用
- 几万到几十万行,需要频繁处理 → pandas是你的救星
- 百万行以上 → 该考虑数据库了
学会pandas,不是要抛弃Excel,而是给自己多一件趁手的武器。当别人还在对着"未响应"的Excel发呆时,你已经喝完一杯咖啡,分析结果都发到群里了。
如果你觉得这篇文章有用,欢迎收藏转发。有任何问题也可以在评论区留言,我会尽量回复。
是否需要我帮你把这个脚本适配到你的具体数据文件上?你只需要告诉我你的Excel文件里有哪些列、想做什么分析,我可以直接帮你写好代码。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)