乐于分享
好东西不私藏

【从零开始学excel办公自动化】告别 Excel 公式地狱!用 Pandas 终极挑战公式嵌套

【从零开始学excel办公自动化】告别 Excel 公式地狱!用 Pandas 终极挑战公式嵌套

#办公自动化 #从零开始学 #pandas #excel #if

10年青少年编程教育经验 | 资深Python专家

前大厂技术总监 | 现编程教育创业者

专注青少年编程教育技能提升

大家好,我是浩浩学编程的方老师,这是excel办公自动化系列的第21课。

今日技能

📱 一文给大家快速掌握python处理excel的复杂公式问题-终极挑战

你是否写过长达 3 行的 Excel 公式?

你是否因为 VLOOKUP 找不到值而抓狂?

你是否在 50 万行数据面前看着 Excel 卡成PPT?

今天这篇文章,方老师带你用 Python 的 pandas 库,优雅地解决这些痛点,这是这个内容的最后一篇。

不需要你是编程大神,跟着例子一步步来,你也能学会!

一、先说句大实话:Excel 公式不是不好,是”复杂场景”扛不住

Excel 是伟大的工具,日常处理几百行数据,写个 =SUM(A1:A10) 完美解决求和问题。

但现实往往是这样的(根据不同阈值显示不同名称):

=IF(AND(A2>100B2="VIP"),     C2*0.8IF(      OR(A2>50D2="促销"),       C2*0.9C2    ))

再比如,你要根据多个条件做汇总:

=SUMIFS(C:C, A:A, "北京"   B:B, "手机"   D:D, ">2024-01-01")

公式本身没问题,但——

而 pandas,恰好是来解决这些问题的。

二、Pandas 是什么?一句话解释(有朋友提问答疑)

pandas = Python 版的超级 Excel

它把表格叫做 DataFrame(数据框),每一列叫做 Series(序列)。

你可以把它想象成一个”可以用代码操控的 Excel 表格“。

安装只需一行:

pip install pandas

使用只需两行:

import pandas as pd# 读取 Excel 文件,就像打开一个工作簿df = pd.read_excel("销售数据.xlsx")

就这么简单,你的 Excel 数据已经变成了一个可以编程操作的对象。

三、先建关联:Excel 函数 → Pandas 写法对照表

别急着写代码,先看这张对照表,建立”翻译”的感觉:

发现规律了吗?

Excel 是”对单元格操作“,pandas 是”对整列操作“。

一次写好,整列搞定,不用拖拽填充柄。

四、终极挑战 —— 复杂嵌套公式的链式拆解

下面我们用一个虚拟的销售数据表来演示。

假设数据长这样:

用代码创建这个表:

import pandas as pddf = pd.DataFrame({    '订单号':   [10011002100310041005],    '城市':     ['北京''上海''北京''广州''上海'],    '商品':     ['手机''电脑''手机''平板''手机'],    '销售额':   [59998999459932995999],    '日期':     pd.to_datetime(['2024-03-15''2024-03-16',         '2024-03-17''2024-03-18''2024-03-19']),    '客户等级': ['VIP''普通''VIP''普通''VIP']})

场景 1:终极挑战-复杂公式

需求:找出”北京和上海的 VIP 客户中,销售额超过平均值”的订单,并按销售额降序排列,最终导出为新的 Excel 文件。

如果用 Excel,你可能需要:

先用 AVERAGEIFS 算出平均值

再用 IF + AND 做筛选

手动排序

手动复制到新表

Pandas 写法

# 第一步:算出 VIP 客户的平均销售额vip_avg = df[df['客户等级'] == 'VIP']['销售额'].mean()print(f"VIP 平均销售额:{vip_avg}")# 第二步:链式筛选 + 排序result = (    df[(df['城市'].isin(['北京''上海']))            # 城市是北京或上海       & (df['客户等级'] == 'VIP')                        # 且是 VIP       & (df['销售额'] > vip_avg)]                        # 且销售额高于 VIP 平均    .sort_values('销售额', ascending=False)            # 按销售额降序)print(result[['订单号''城市''商品'      '销售额''客户等级']])# 第三步:导出为 Excelresult.to_excel("筛选结果.xlsx", index=False)print("已导出到 筛选结果.xlsx")

划重点

注意那个”链式写法“——每个条件用括号包起来,像搭积木一样一层层叠加。

代码即注释,读起来就像在读一句中文:”筛选城市是北京上海的、客户等级是VIP的、销售额大于平均值的,然后按销售额降序排列“。

五、总结

一句话总结:Excel 是”手动挡”,pandas 是”自动挡”

日常小数据用 Excel 没问题,但当你发现自己在反复写复杂公式、反复做相同操作时,就是时候升级了。

有问题欢迎留言讨论,我会一一解答 👇

🎉 同学们,看到这里,你学会了吗!

方老师说:

🚀 现在屏幕前的你已经比90%的同龄人领先一步了!

接下来可以:

  • 介绍一下用pandas批量格式转换(Excel转PDF)

(下期教程教!)

  • ⚠️ 遇到问题?评论区甩截图,方老师尽量在24小时内回复

#python #Pandas #数据分析 #浩浩学编程 #职场技能 #excel #pdf