Python数据处理,用pandas解决

经常听别人说Python在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死。后来才发现,原来不是Python数据处理厉害,而是他有数据分析神器——pandas

前言

本系列已经有一篇文章介绍pandas中实现Excel的vlookup函数的方式,但是vlookup中还有一个模糊匹配的功能,主要用于分段匹配,今天就来看看pandas中是如何做到同等效果。

案例1

今天,你接到一份紧急的临时需求,数据表格如下:

百万行的记录需要按照分数列,按规则计算出评级规则表如下:

这是特意为Vlookup而设计的规则表若按pandas来设计规则表,那么Vlookup的解决方式就会很麻烦。

怎么办?数据多到Excel也打不开,管你是Vlookup还是Xlookup也没用。

多功能的Vlookup

由于这次数据太多,用Excel已经不能打开此文件,因此我用少量数据简单演示一下如何用Vlookup解决此问题:

其实就是最后一个参数输入1(True),即可很重要一点,规则表的值列,记得要排好序,否则结果错乱你也不知道pandas中的分段匹配

这种需求在数据处理一般称为分箱,pandas中使用cut方法做到:

我们从csv读取数据,从Excel中读取规则表注意这是pandas的顶层方法,因此是pd.cut()第1参数传入判断数据列第2参数传入规则表的值,但是cut方法必需给定所有区间的边界。像本例子的规则表,没有高于分的结束边界,我们需要添加一个很大的值作为结束边界参数right,设置为False,只是为了与vlookup效果一致而已,表示:右区间边界开放,比如:分,被划分到A+评级参数labels,就是返回的结果可以看到pandas可以轻松从任意数据源中读取数据,本例中即使你的数据源在各种数据库也是没问题注意,bins没有升序排序时,会报错。这是非常好的设计

看文字很难理解,看看这个示意图,应该清晰很多:

案例2:自动划分

在实际分析工作中,你可能一开始并不清楚到底规则表的各个节点怎么定义才合理。

比如你现在希望划分3个段,但你不知道各个段之间的边界怎么定义才合理。那么可以这样子调用cut方法:

cut方法的第2参数,我们指定3,表示划分3段不指定参数labels,这可以看到划分的区间。你也可以指定labels:

最后的划分结果尽可能每个区间数量平衡,来看看各区间的数量:

总结

pd.cut(),对数据做分箱处理参数bins可以指定自己的规则表,也可以直接指定划分段数目指定划分段数目时,会自动定义各个划分区间当指定的bins规则表没有升序排序时,会报错

如果希望从零开始学习pandas,那么可以看看我的pandas专栏。




转载请注明:http://www.aierlanlan.com/rzgz/2714.html