夜雨聆风学习资料网

ARTICLE · 1025425

Excel 卡死?pandas 3 秒干完 10 万行

Excel 卡死?pandas 3 秒干完 10 万行
Python 实战 · 数据处理
Excel 卡死?pandas 3 秒干完 10 万行
读取 / 清洗 / 分析 / 合并 一气呵成
     📌 导语:打开 10 万行的 Excel,鼠标转圈半分钟,筛选卡住、透视表直接「未响应」——最后只能去任务管理器结束进程。如果你也深受其苦,这篇就是为你写的:用 Python 的 pandas,读取 + 清洗 + 分析全程 3 秒搞定,不需要多深的编程基础,跟着步骤走就行。   

一、为什么 Excel 会卡死,pandas 却飞快

Excel 本质是单线程运行,所有计算挤在一个 CPU 核心上,还会把每行的格式、公式、条件格式全加载进内存——10 万行轻松突破 1GB。

pandas 则不同:能利用多核 CPU、只处理纯数据不加载格式、底层 C 语言优化、向量化运算极快,数据以 DataFrame 形式在内存中高效操作。一句话:Excel 是「带全家老小跑步」,pandas 是「轻装上阵冲刺」。

二、环境准备:5 分钟装好

装好 Python(记得勾选 Add Python to PATH),再装读写 Excel 的引擎:

pip install pandas openpyxl

openpyxl 是读写 Excel 的引擎,必须装。命令行输入 import pandas as pd 不报错即成功。

三、实战一:3 秒读取 10 万行

假设有个 sales_data.xlsx,含订单ID、日期、产品名称、销售数量、单价、地区。pandas 读取它:

import pandas as pd import time  start = time.time() df = pd.read_excel('sales_data.xlsx') end = time.time()  print(f"读取完成!共 {len(df)} 行数据") print(f"耗时:{end - start:.2f} 秒") print(df.head())

实测 2.87 秒读完全部 10 万行。💡 小技巧:数据超 50 万行,建议存成 CSV 再用 pd.read_csv(),速度还能再快一倍。

四、实战二:数据清洗(比 Excel 快 10 倍)

去重、填空值、加计算列——Excel 里每步都要等几十秒,pandas 一行搞定:

# 1. 删除重复行(一行搞定) df_clean = df.drop_duplicates()  # 2. 处理空值 print(df.isnull().sum())                     # 查看空值分布 df_clean = df.dropna()                       # 删除含空值行 df_filled = df.fillna({'销售数量': 0, '单价': df['单价'].mean()})  # 3. 新增计算列(向量化,瞬间完成) df['销售总额'] = df['销售数量'] * df['单价']

因为 pandas 是向量化运算,直接对整个列做乘法,不需要逐行循环,所以「一行代码、瞬间完成」。

五、实战三:数据分析(告别数据透视表)

按地区统计销售总额,Excel 要插透视表、拖字段、等刷新十几秒;pandas 不到 1 秒,分组 + 求和 + 均值 + 计数全完成:

# 按地区:求和 / 均值 / 计数 一步到位 region_summary = df.groupby('地区')['销售总额'].agg(['sum', 'mean', 'count']) print(region_summary)  # 按产品统计销量 Top10(链式调用一气呵成) top_products = df.groupby('产品名称')['销售数量'].sum().sort_values(ascending=False).head(10) print(top_products)

六、实战四:多表合并(VLOOKUP 终极替代)

Excel 里 VLOOKUP 配上几万行查找表,电脑基本可以歇着了。pandas 的 merge 底层用哈希连接,比 VLOOKUP 快几十倍,10 万行合并通常 1~2 秒:

# 读取产品信息表,按产品名称合并(类似 VLOOKUP) products = pd.read_excel('product_info.xlsx') df_merged = df.merge(products, on='产品名称', how='left')  # 导出结果(utf-8-sig 防中文乱码) df_merged.to_excel('分析结果.xlsx', index=False) df_merged.to_csv('分析结果.csv', index=False, encoding='utf-8-sig')

七、完整脚本 + 性能对比

把上面串起来,一套流程搞定读取→清洗→分析→导出:

import pandas as pd import time  start = time.time()  df = pd.read_excel('sales_data.xlsx')        # 1. 读取 df = df.drop_duplicates().dropna()           # 2. 清洗 df['销售总额'] = df['销售数量'] * df['单价']   # 2. 计算列 region_summary = df.groupby('地区')['销售总额'].agg(['sum','mean','count'])  with pd.ExcelWriter('分析结果.xlsx') as writer:  # 3. 导出     region_summary.to_excel(writer, sheet_name='地区汇总')     df.to_excel(writer, sheet_name='明细数据', index=False)  print(f"✅ 完成!总耗时:{time.time() - start:.2f} 秒")

性能对比(10 万行):读取 30~60 秒→2~3 秒;删除重复项 30~60 秒→瞬间;新增计算列 10~20 秒→瞬间;数据透视表 15~30 秒→1 秒内;VLOOKUP 合并 1~2 分钟→1~2 秒;内存占用从 800MB~1.5GB 降到 100~200MB。

     💡 小结     工具要分场景:几千行、简单分析 → Excel 够用几万到几十万行、频繁处理 → pandas 是救星百万行以上 → 该上数据库了。学会 pandas 不是抛弃 Excel,而是多一件趁手武器——当别人对着「未响应」的 Excel 发呆,你已经喝完咖啡、把分析结果发到群里了。   
📌 如果这篇对你有帮助
👉 点个 「在看」 + 转发 给需要的朋友
🔔 关注 Python库半功倍,每天一篇干货不迷路

相关学习资料

返回首页浏览学习资料