1、第4章 Pandas Pandas工具包是在Numpy工具包上的进一步封装,它提供了更丰富的数据处理方法。相较于Numpy,Pandas更适合做数据的预处理。而Numpy则更适合做数据的运算。所以拿到数据后一般都使用Pandas做处理,而实现算法模型则使用Numpy。4.1 序列对象Series Series对象类似于numpy中的一维数组。接下来的章节里主要介绍了在数理统计中的应用,其实series更强大的功能是对字符串以及时间序列的处理,而这些因为和本书的写作目标不符,故没有详细讲解,有兴趣的读者可以参考官方文档学习。4.1.1 创建Series对象 Pandas中最基础的对象是Serie
2、s,可以通过list以及可迭代对象range创建,也可以通过numpy中的array对象创建。4.1.2 Series索引 Series的索引方法有以下三种。第一种,与list和numpy中的一维数组的方法不相同,形式相同。但需要注意的是此时的值不是numpy中对应概念的下标,而是pandas中的索引值,所以不能出现负数。第二种方法,与list和numpy中的一维数组的方法不相同,形式也不同,要使用.loc,同样也不能出现负数。第三种方法,与list和numpy中的一维数组的方法相同,形式不同,要使用.iloc,可以出现负数。4.1.3 查看Series相关属性查看series的相关属性,可以
3、查看或更改该序列元素的类型以及索引。In 1:import pandas as pdIn 2:a=pd.Series(0,1,2,3,4,5).index属性可以查看series对象的索引,同样也可以直接赋值更改。我们使用.loc和.iloc对索引修改前后做同样的处理,体会一下loc和iloc的区别,代码如下:In 3:a.indexOut3:RangeIndex(start=0,stop=6,step=1)In 4:a.loc1Out4:1In 5:a.iloc1Out5:14.1.4 二元运算 series的二元运算和numpy中一元数组的运算相似。4.1.5 统计方法 series中提供
4、了常用的统计方法。除了Numpy中已有的方法外,还增加了一些比较边界的方法,比如describe方法可以一次性返回多个统计值。4.1.6 缺失值处理 在我们遇到的一些数据中会有缺失值的情况,我们会将这些缺失值删除或者插入其他值替代。series对象提供了相应的方法。4.1.7 排序 series提供了若干排序的方法。argsort方法是给出了排序的索引,rank方法直接给出了顺序,而sort_values和sort_index则分别是按值和索引排序。4.1.8 计数与重复 在进行数据处理过程中,我们常常需要对数据中的数字进行计数,查看哪些数字出现的频次比较高。获得对于重复数据进行删减。4.1.
5、9 其他 series还包含了其他一些方法。比如查看部分数据的head和tail,取样方法sample,条件筛选where和mask,以及判断是否在另一个序列中的isin方法。4.2 DataFrame Pangdas中的数据框对象DataFrame可以看作是Series对象的集合,他们共用同一个索引。所以DataFrame具有Series的相应方法,这里不再赘述,可参考4.1小节的内容。本小节主要根据具体的操作对DataFrame对象进行讲解。4.2.1 创建数据框 一般有两种方式创建数据框,一是通过字典,而是通过列表。二者皆可获得相同的结果。4.2.2 行操作 Pandas的数据框可以看成是Numpy中的二维数组。行操作可以利弊Numpy的二维数组的方法,特别要注意的是loc和iloc的区别。4.2.3 列操作 特别要注意的是在列的交换列的方法要使用.values来获取数值,否则会失败。4.3 GroupBy 分组统计是一个比较常见的操作,我们需要对不同类别的数据分别进行观察。比如在一个班级中,我们想要获得男生的最大年龄和女生最大的年龄,这个时候我们就需要先按性别进行分组,然后分别统计最大的年龄。4.3.1 基本函数 基本函数可以用来查看分组的具体信息。4.3.2 统计函数 分组的最主要的作用就是对各个组别进行分组描述。这里返回的是对各个组别的统计的结果。