Pandas 模块数据处理全解析
数据处理是数据分析的基础,而 Pandas 作为 Python 中强大的数据处理库,掌握它的使用方法能让我们的数据分析工作事半功倍。今天我们主要从数据抽取、增删改查以及排序排名这几个核心维度展开讲解。
一、数据抽取:精准获取所需数据
数据抽取是我们处理数据的第一步,就像在海量信息中精准定位到我们需要的内容。Pandas 为我们提供了两种非常实用的属性:loc 和 iloc。
loc 属性以列名和行名作为参数,当只有一个参数时,默认是行名,能帮我们抽取整行数据。比如 df.loc ['A'],就是抽取行名为 'A' 的整行数据。
iloc 属性则以行和列的位置索引(也就是 0,1,2……)作为参数,0 表示第一行,1 表示第二行,以此类推。同样,当只有一个参数时,默认是行索引,比如 df.iloc [0],就是抽取第一行的整行数据。
具体来说,数据抽取可以分为几种情况:
- 抽取指定行数据:既可以用 loc 属性根据行名抽取,也可以用 iloc 属性根据行索引抽取。比如我们要抽取一行名为 “甲” 的学生成绩数据,就可以利用 loc 属性来实现。
- 抽取多行数据:通过 loc 和 iloc 属性,结合列表或切片的方式,我们可以抽取任意多行或连续多行数据。比如抽取行名为 “甲” 和 “丙” 的数据,用列表传入行名即可;要抽取连续多行,合理使用冒号就能实现。
- 抽取指定列数据:可以直接使用列名,也可以用 loc 和 iloc 属性。需要注意的是,使用这两个属性时,行参数不能省略。比如要抽取 “语文” 和 “数学” 成绩,就可以指定相应的列名。
- 抽取指定的行、列数据:同样借助 loc 和 iloc 属性,同时指定行和列的信息,就能精准获取我们需要的特定行和列的数据。
二、数据的增、删、改、查:打造干净可用的数据集
(一)增加数据
增加数据主要有按列和按行两种方式。
按列增加数据时,我们可以直接为 DataFrame 对象赋值,也可以使用 loc 属性在最后增加一列,还能通过 insert () 方法在指定位置插入一列。比如我们要增加一列 “物理” 成绩,就可以用这些方法来实现。
按行增加数据则可以使用 loc 属性增加一行数据,或者用 append () 方法增加多行数据。比如在成绩表中增加 “戊” 同学的成绩,或者同时增加 “戊”“己”“庚” 三名同学的成绩。
(二)删除数据
删除数据我们主要使用 drop () 方法,它的参数很丰富,能满足不同的删除需求。
- labels 表示行标签或列标签;
- axis=0 表示按行删除,axis=1 表示按列删除;
- index 用于删除行,columns 用于删除列;
- inplace 如果为 True,就会直接修改原数组;
- errors 设为 ignore 可以忽略错误。
比如我们要删除 “数学” 这一列,就可以用 df.drop ([' 数学 '],axis=1,inplace=True);要删除 “甲”“乙” 这两行,就可以用 df.drop ([' 甲 ',' 乙 '],inplace=True)。我们还能删除符合特定条件的行,比如删除 “数学” 中包含 88 的行,或者 “语文” 小于 110 的行。
(三)修改数据
修改数据包括修改列标题、行标题和具体数据。
修改列标题可以用 columns 属性,也可以用 rename () 方法。比如把 “数学” 修改为 “数学(上)”,或者同时修改多个学科的列名。
修改行标题可以用 index 属性,也能用 rename () 方法。比如将行标题统一修改为数字编号。
修改具体数据则可以用 loc 和 iloc 属性。既可以修改整行数据、整列数据,也能修改某一个具体的数据。比如修改 “甲” 同学的各科成绩,或者给 “甲” 同学的各科成绩均加 10 分,还能修改 “甲” 同学的 “语文” 成绩等。
(四)查询数据
查询数据需要用到逻辑运算符、复合逻辑运算符以及相关的逻辑运算方法。
逻辑运算符有 >、>=、<、<=、==、!=;复合逻辑运算符有 &(并且)、|(或者);逻辑运算方法包括 query () 方法、isin () 方法、between () 方法。
比如我们可以用逻辑运算符查询满足条件的学生成绩;用复合运算符查询 “语文” 大于 105 并且 “数学” 大于 88 的学生成绩,或者 “语文” 大于 105 或者数学大于 88 的学生成绩;用 query () 方法可以简化查询代码,像 df.query (' 语文 > 105') 就能查询出语文大于 105 的学生成绩;isin () 方法可以查询包含某些特定值的数据;between () 方法则能查询在某个范围内的数据,比如查询 “语文” 在 100 分至 120 分之间的数据。
三、数据的排序和排名:让数据更有规律
(一)数据的排序
数据排序我们使用 sort_values () 方法,它的参数很多,by 是要排序的名称列表,axis=0 按行排序,axis=1 按列排序,ascending=True 表示升序,False 表示降序等。
我们可以按一列数据排序,比如按 “销量” 降序排序;也可以按多列数据排序,比如先按 “图书名称” 降序排序,再按 “销量” 降序排序;还能对分组统计的数据进行排序,以及按行数据排序,不过按行排序时数据类型要一致,否则会出错。
(二)数据排名
数据排名主要用 rank () 方法,它的参数也不少,axis 默认按行排序,method 用于设置相同值的排序方法,有 average、min、max、first、dense 等。
- average 是默认值,为平均排名;
- min 是最小值排名,即相同值按顺序排名取最小值作为排名;
- max 是最大值排名,相同值按顺序排名取最大值作为排名;
- first 是按值在原始数据中出现的顺序分配排名;
- dense 是密集排名,排名相同的数据只占一个名次。
比如我们可以对产品销量按顺序进行排名,或者进行平均排名、最小值排名、最大值排名等。