【从零开始学excel办公自动化】第十八课:这个pandas输出Excel 怎么能高亮显示数据呢?方老师给这个例子你就会了

10年青少年编程教育经验 | 资深Python专家
前大厂技术总监 | 现编程教育创业者
专注青少年编程教育技能提升

大家好,我是浩浩学编程的方老师,这是excel办公自动化系列的第18课。
今日技能
📱 一文给大家快速掌握pandas数据处理后,导出的excel列高亮显示
前面,我们学习了通过pandas来处理输出excel的格式的基本用法,今天主要通过实例来加深一下如何使用这个style能力。
让excel中的数据高亮显示
需求:在费用报表中,将超支的金额标红,节约的金额标绿,正常的金额不变,同时也设置不同颜色来处理比例。
也不多说,直接先上代码,我们先准备下基础数据。
一、准备基础数据
import pandas as pdimport numpy as np# 创建示例数据data = {'部门': ['研发部', '市场部', '财务部', '人事部', '运营部'],'预算': [50000, 30000, 20000, 15000, 25000],'实际支出': [55000, 28000, 22000, 14000, 30000],'差额': [5000, -2000, 2000, -1000, 5000],'超支比例': [0.10, -0.07, 0.10, -0.07, 0.20]}df = pd.DataFrame(data)
如果用excel先做一个模拟数据,然后再通过read_excel读取也一样。
这样我们就得到一个pandas的数据集: df。
二、准备样式方法
这里我们定义了两个方法
1、差额的体现
# 定义差额颜色样式def highlight_diff(val):if val > 0:return 'background-color: #ffcccc;color: red; font-weight: bold'elif val < 0:return 'background-color: #ccffcc;color: green; font-weight: bold'return ''
判断逻辑:计算差额大于0,显示红色,小于0的绿色。
2、比例的体现
# 定义超支比例样式def highlight_ratio(val):if val > 0.1:return 'color: red; font-weight: bold'elif val > 0:return 'color: orange'else:return 'color: green'
这个大家能看懂吧,不太清楚的,可以留言。
三、实际应用
# 应用样式styled_df = df.style \.applymap(highlight_diff, subset=['差额']) \.applymap(highlight_ratio, subset=['超支比例']) \.format({'预算': '¥{:,.0f}','实际支出': '¥{:,.0f}','差额': '¥{:,.0f}','超支比例': '{:.2%}'}) \.set_table_styles([{'selector': 'th', 'props': [('background-color', '#4a90e2'),('color', 'white'),('font-weight', 'bold'),('padding', '8px'),('text-align', 'center')]},{'selector': 'td', 'props': [('padding', '6px'),('border', '1px solid #ddd')]}]) \.set_caption('部门费用报表 - 超支分析')# 保存为Excelstyled_df.to_excel('费用报表_格式化.xlsx',engine='openpyxl', index=False)print("格式化完成!文件已保存为:费用报表_格式化.xlsx")
效果:
-
超支的差额显示为红色背景
-
节约的差额显示为绿色背景
-
超支比例超过 10% 显示为红色粗体
-
0-10% 的超支显示为橙色
-
节约的显示为绿色
写在最后
这是pandas的style组件的第一个实用场景:高亮显示需要标注的数据。
记住这个格式转换三步走:
- 定义格式函数
—— 用if + css 代码 - 调用格式函数
—— 用df.style.applymap()来应用函数到每一列 - 最后再美化一下表格(可省略)
—— 用.set_table_styles 来处理
试试效果怎么样?评论区聊聊~
🎉 同学们,看到这里,你学会了吗!
方老师说: 🚀 现在屏幕前的你已经比90%的同龄人领先一步了!
接下来可以:
介绍一下pandas输出excel中怎么带进度条(下期教程教!)
⚠️ 遇到问题?评论区甩截图,方老师尽量在24小时内回复!
如果这篇文章对你有帮助,记得点个「推荐」,转发给还在用Excel加班的同事!
夜雨聆风
