Python数据处理禁忌,我们是如何挖坑与踩坑


Python数据处理禁忌,我们是如何挖坑与踩坑文章插图
前言初学者常见错误是混淆数据与格式的处理 , 本文就看看这种数据与格式问题是如何使你成为挖坑与踩坑者
我是这样子害别人加班【Python数据处理禁忌,我们是如何挖坑与踩坑】数据源是这样子:
Python数据处理禁忌,我们是如何挖坑与踩坑文章插图
需求只是简单求出每个项目每个月的占比:
Python数据处理禁忌,我们是如何挖坑与踩坑文章插图

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