python的三方库pandas有一些能根据指定面元或样本分位数将数据拆分成多块的工具(比如cut或qcut)。将这些函数跟groupby结合起来,就能非常轻松地实现对数据集的桶(bucket)或分位数(quantile)分析了。下面通过三步法来讲解如何使用完成数据拆分,具体如下:
第一步:使用cut方法进行数据切分
在第一步中,我们首先需要先导入pandas以及pandas中的两种数据结构,分别为Series和DataFrame。然后创建一个frame对象,里面包含两个键值对。然后对frame对象进行数据切分。具体代码如下所示:
第二步:基于cut结果进行统计计算
由cut返回的Factor对象可直接用于groupby。因此,可以像下面这样对data2做一些统计计算:
我们首先定义了一个get_stats函数,然后针对frame对象的‘data2’值依据factor进行分组,赋予一个新的对象grouped。然后对grouped对象应用get_stats函数,获得结果如上图所示。然后进行了轴向转换,使用unstack方法。
这些都是长度相等的桶。要根据样本分位数得到大小相等的桶,使用qcut即可。传入labels=False即可只获取分位数的编号。
第三步:返回分位数编号
如上图所示,首先使用panda的qcut方法,对frame对象对data1键进行数据切分,获得一个新的对象grouping。然后对frame对象对data2依据grouping结果进行分组,获得grouped对象。最后将get_stats函数应用导grouped对象上,并使用unstack方法进行轴向转换。从这里我们可以看到,使用groupby进行分组的过程中,如果不对分组结果进行下一步操作,则获得是一个中间状态,只有对其进行下一步操作后才会生成一个结果集,并且可以将这个结果集赋予一个对象进行存储等。
总结
综上所述,我们在本文讲解了python数据拆分3步法,分别是“使用cut方法进行数据切分”、“基于cut结果进行统计计算”、“返回分位数编号”。三个步骤的灵活应用可以充分掌握数据拆分的不同的应用场景的解决方案。有些人可能认为数据拆分在实际的应用过程中使用的并不频繁,其实则不然,数据拆分与合并是一类操作对,经常如影随形,它们的有效结合,能够提供完美的数据处理解决方案。
所以,使用python三方库pandas对数据进行拆分的方法,灵活且易用。在实际的使用过程中可以对其具体的使用场景和相应的处理方法进行不断的沉淀,这样会更便于以后的系统化学习。