Excel处理10万行数据卡死?Python pandas 3秒搞定实战

举报
yd_249398798 发表于 2026/08/31 11:34:04 2026/08/31
【摘要】 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。