前言
初学者常见错误是混淆数据与格式的处理,本文就看看这种数据与格式问题是如何使你成为挖坑与踩坑者
我是这样子害别人加班
数据源是这样子:
需求只是简单求出每个项目每个月的占比:
看过我的 pandas 专栏,这些应该是基本操作吧
结果不是那么养眼:
"我要的是2为小数的百分比,这玩意输出 Excel 后,难道还要手工设置格式?"
于是,为求目的,"不择手段":
行6:为每个数据调用 Python 的字符串格式化方法
结果看起来很美好:
但事实上这些都是文本(字符串),而非数值。
你输出了一份 Excel,同事拿到你的数据,希望使用 Excel 的 lookup 函数做一个二分法匹配一下等级:
结果全是错误。因为右边表格(红色)的范围列是数值,而且数值才能正确使用范围匹配等级
自己挖的坑自己填,我们需要使用 pandas 的格式化功能
pandas 格式化
pandas 本质上只是一个数据处理工具,处理过程中我们不应该考虑最终的输出格式。
但处理后总是要输出到某个地方,比如输出到 Excel,甚至输出到界面看看结果。
为此,pandas 设计了格式属性:
行6:自定义函数,指定范围的数据表的每一行都会进入这个函数,函数返回每个格子的格式字符串
行7:number-format:0.00% ,表达的就是2位小数百分比
行9:DataFrame.style.apply ,就能执行格式化,参数 subset 是应用格式的列
划重点:
DataFrame.style.apply 之后的结果看似像 DataFrame,实际不是。千万别使用结果做各种日常数据操作
因此,你只能在需要输出数据表之前执行格式化操作
现在打开 Excel:
完美,看到的百分比只是单元格格式
现在同事的处理也轻松:
数字格式化不太常见,更多的是日期格式化,下次再分享吧。
本文收录在"pandas"专辑,公众号回复"数据处理",获取本文相关源码与数据