大数跨境
0
0

别再做表哥表姐了!10行Python代码,自动搞定Excel最繁琐的5件事

别再做表哥表姐了!10行Python代码,自动搞定Excel最繁琐的5件事 Python数智工坊
2025-11-24
0
导读:在数据驱动的职场中,Excel 无疑是每位“表哥表姐”最熟悉的战友。


在数据驱动的职场中,Excel 无疑是每位“表哥表姐”最熟悉的战友。然而,面对成百上千个文件、繁琐的重复操作和随时可能崩溃的“转圈圈”,这位战友有时也会变成“猪队友”。

你是否经历过以下场景:

  • 月底汇总,打开几十个分公司的报表,一个个复制粘贴到总表?
  • 为了给不同部门发数据,手动筛选、复制、另存为,手酸眼花?
  • 面对脏乱差的数据,还在用 VLOOKUP 和 IF 函数嵌套修修补补?

如果说 Excel 是处理数据的冷兵器,那么 Python 的 Pandas 库就是现代化的重型火炮。

今天,我们将抛弃鼠标点点点,用 Python 解决 Excel 中最耗时、最繁琐的 5 大痛点。代码简练,逻辑清晰,建议收藏备用!

准备工作

在开始之前,请确保你已经安装了 pandas 和 openpyxl 库。如果尚未安装,请在终端运行:

pip install pandas openpyxl

场景一:秒级合并!将 100 个 Excel 文件汇总成一张表

传统做法:打开文件 -> 复制内容 -> 切换窗口 -> 粘贴 -> 关闭文件 -> 重复 100 次。耗时:1 小时+,且容易漏数据。

Python 做法:利用 glob 模块批量读取文件路径,再用 Pandas 的 concat 函数一键合并。

import pandas as pd
import glob

# 1. 获取所有需要合并的 Excel 文件路径
file_paths = glob.glob('data/分公司报表/*.xlsx')

# 2. 读取所有文件并存入列表(列表推导式,Pythonic 写法)
# 这里的 ignore_index=True 类似于 Excel 中的“重新编号”
all_data = [pd.read_excel(fp) for fp in file_paths]

# 3. 一键合并
combined_df = pd.concat(all_data, ignore_index=True)

# 4. 导出结果
combined_df.to_excel('data/总表_合并结果.xlsx', index=False)

print(f"成功合并 {len(file_paths)} 个文件!")

核心逻辑pd.concat 是 Pandas 中用于纵向拼接数据的高效函数,其速度通常是 Excel 手动操作的几十倍。

场景二:智能拆分!按“部门”将总表拆分为独立文件

传统做法:筛选“销售部” -> 复制 -> 新建工作簿 -> 粘贴 -> 保存。筛选“财务部”... 重复 N 次。

Python 做法:利用 groupby 进行分组,然后遍历输出。

import pandas as pd

# 1. 读取总表
df = pd.read_excel('data/总表_合并结果.xlsx')

# 2. 按 '部门' 列进行分组
# groupby 就像 Excel 中的透视表分组,但更灵活
for department, group_data in df.groupby('部门'):
    # department 是组名(如'销售部'),group_data 是该组对应的数据
    
    # 3. 动态生成文件名并保存
    file_name = f'data/拆分结果/{department}_数据.xlsx'
    group_data.to_excel(file_name, index=False)
    
    print(f"{department} 数据已导出。")

核心逻辑groupby 是数据分析的神器,它将数据按逻辑切分,配合循环,可以瞬间完成成百上千个文件的拆分工作。

场景三:数据清洗!自动去重、填充缺失值

传统做法:使用“删除重复项”功能,用 Ctrl+G 定位空值后手动输入 0 或 。操作繁琐,且无法处理复杂逻辑(如按条件填充)。

Python 做法:链式调用(Chain of Responsibility),一行代码搞定清洗。

import pandas as pd

df = pd.read_excel('data/原始数据_脏乱差.xlsx')

# 链式操作:
# 1. drop_duplicates: 按 '订单号' 去重,保留最后一条记录(keep='last')
# 2. fillna: 将 '销售额' 列的空值填充为 0,'备注' 列填充为 '无'
# 3. strip: 去除 '客户姓名' 列两端的空格(解决 Excel 中肉眼看不见的空格坑)

clean_df = (
    df.drop_duplicates(subset=['订单号'], keep='last')
      .fillna({'销售额'0'备注''无'})
)

# 单独处理字符串空格
clean_df['客户姓名'] = clean_df['客户姓名'].str.strip()

clean_df.to_excel('data/清洗后数据.xlsx', index=False)

核心逻辑:Pandas 的清洗功能是批量化的。str 访问器可以对整列文本进行操作,效率极高。

场景四:自动化透视!生成数据透视表

传统做法:插入 -> 数据透视表 -> 拖拽字段 -> 设置汇总方式 -> 调整格式。每次数据更新都要刷新或重做。

Python 做法:使用 pivot_table 函数,逻辑与 Excel 透视表完全一致,但可复用。

import pandas as pd

df = pd.read_excel('data/销售明细.xlsx')

# 创建透视表
# index: 行标签
# values: 汇总数值
# columns: 列标签
# aggfunc: 汇总方式(求和、平均、计数等)
pivot_df = pd.pivot_table(
    df, 
    index='产品类别'
    values='销售额'
    columns='销售区域'
    aggfunc='sum'
    fill_value=0# 空值填充为 0
)

# 增加合计行(Pandas 小技巧)
pivot_df['总计'] = pivot_df.sum(axis=1)

pivot_df.to_excel('data/销售透视表.xlsx')

核心逻辑pivot_table 是 Pandas 中最强大的汇总工具。一旦写好脚本,无论源数据更新多少次,运行脚本即可得到最新的透视结果。

场景五:批量美化!修改格式与样式

传统做法:全选单元格 -> 设置字体 -> 设置边框 -> 调整列宽 -> 设置千分位。如果你有 50 个 Sheet 都要这样调,心态会崩。

Python 做法:结合pandasStyle功能或ExcelWriter引擎进行格式设置。

import pandas as pd

df = pd.read_excel('data/财务报表.xlsx')

# 创建 ExcelWriter 对象,指定引擎为 xlsxwriter(需 pip install xlsxwriter)
# xlsxwriter 提供了丰富的格式控制能力
with pd.ExcelWriter('data/美化报表.xlsx', engine='xlsxwriter'as writer:
    df.to_excel(writer, sheet_name='Sheet1', index=False)
    
    workbook = writer.book
    worksheet = writer.sheets['Sheet1']
    
    # 定义格式
    money_fmt = workbook.add_format({'num_format''¥#,##0.00''align''center'})
    header_fmt = workbook.add_format({'bold'True'bg_color''#D7E4BC''border'1})
    
    # 设置列宽 (A列到C列宽度为20)
    worksheet.set_column('A:C'20)
    
    # 设置特定列的格式 (假设 D 列是金额列)
    # set_column(first_col, last_col, width, cell_format)
    worksheet.set_column('D:D'15, money_fmt)
    
    # 重新写入表头以应用格式
    for col_num, value in enumerate(df.columns.values):
        worksheet.write(0, col_num, value, header_fmt)

print("报表美化完成!")

核心逻辑:虽然 Pandas 主要用于数据处理,但配合 xlsxwriter 或 openpyxl,它可以精确控制 Excel 的每一个像素,包括条件格式、图表生成等。

总结

从简单的数据合并到复杂的格式调整,Python 展示了其作为“办公自动化霸主”的实力。

  • Excel 擅长“所见即所得”的小规模数据展示与轻量计算。
  • Python 擅长逻辑固定的、重复性的、大规模的数据批处理。

作为一名追求高效的职场人,并不需要完全抛弃 Excel,而是要学会“让 Python 替你做苦力,你负责决策和分析”


【声明】内容源于网络
0
0
Python数智工坊
从上海回归二线城市深耕多年,央企算法工程师。专注数据分析、机器学习、运筹优化、可视化、AI实战! 公众号回复 :数据分析,免费领取 价值满满的 20G 数据科学与AI学习资料包!用数据思维,优化你的技术人生。
内容 605
粉丝 0
Python数智工坊 从上海回归二线城市深耕多年,央企算法工程师。专注数据分析、机器学习、运筹优化、可视化、AI实战! 公众号回复 :数据分析,免费领取 价值满满的 20G 数据科学与AI学习资料包!用数据思维,优化你的技术人生。
总阅读62
粉丝0
内容605