python的迭代器坑_Python数据处理禁忌,我们是如何挖坑与踩坑

前言

初学者常见错误是混淆数据与格式的处理,本文就看看这种数据与格式问题是如何使你成为挖坑与踩坑者

我是这样子害别人加班

数据源是这样子:

94342c9736f9a09e250eb7c010a4133b.png

需求只是简单求出每个项目每个月的占比:

a0b9801dd32b0d82f55fd4f8c5d16ca0.png

看过我的 pandas 专栏,这些应该是基本操作吧

结果不是那么养眼:

fdc3b5dcbb10b3c0691275a76a8309f4.png

"我要的是2为小数的百分比,这玩意输出 Excel 后,难道还要手工设置格式?"

于是,为求目的,"不择手段":

649f888521771ab6b8ed275148803f9c.png

行6:为每个数据调用 Python 的字符串格式化方法

结果看起来很美好:

19ccd0812e43329a9ce9ade2116b1648.png

但事实上这些都是文本(字符串),而非数值。

你输出了一份 Excel,同事拿到你的数据,希望使用 Excel 的 lookup 函数做一个二分法匹配一下等级:

3a6f1a6292d667f5096f40a4fa56d141.png

结果全是错误。因为右边表格(红色)的范围列是数值,而且数值才能正确使用范围匹配等级

自己挖的坑自己填,我们需要使用 pandas 的格式化功能

pandas 格式化

pandas 本质上只是一个数据处理工具,处理过程中我们不应该考虑最终的输出格式。

但处理后总是要输出到某个地方,比如输出到 Excel,甚至输出到界面看看结果。

为此,pandas 设计了格式属性:

2649114c9a834482c9f3e97d0973c637.png

行6:自定义函数,指定范围的数据表的每一行都会进入这个函数,函数返回每个格子的格式字符串

行7:number-format:0.00% ,表达的就是2位小数百分比

行9:DataFrame.style.apply ,就能执行格式化,参数 subset 是应用格式的列

划重点:

DataFrame.style.apply 之后的结果看似像 DataFrame,实际不是。千万别使用结果做各种日常数据操作

因此,你只能在需要输出数据表之前执行格式化操作

现在打开 Excel:

9ec941c978001fe70bbc66f10e53787d.png

完美,看到的百分比只是单元格格式

现在同事的处理也轻松:

f743933800bd758f1bc1242c10686c2b.png

数字格式化不太常见,更多的是日期格式化,下次再分享吧。

本文收录在"pandas"专辑,公众号回复"数据处理",获取本文相关源码与数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值