一、数值替换
数值替换就是将数值A替换成数值B,可以用在异常值替换处理、缺失值填充处理中,主要有一对一替换、多对一替换、多对多替换三种替换方法。
1.1 一对一替换
在Python中对某个值进行替换利用的是replace()方法,replace(A,B)表示将A替换成B。
对缺失值进行替换,这个时候replace()方法就相当于fillna()方法了。np.NaN 是Python中对缺失值的一种表示方法。
1.2 多对一替换
在Python中实现多对一的替换比较简单,同样也是利用replace()方法,replace([A,B],C) 表示将A,B,替换成C。
1.3 多对多替换
同样是利用replace() 方法,replace({"A":"a","B":"b","C":"c"})表示用a替换A,用b替换B,用c替换C。
二、数值排序
数值排序是按照具体数值的大小进行排序,有升序和降序两种,升序就是数值由小到大排列,降序就是数值由大到小排列。
2.1 按照一列数值进行排序
按照一列数值进行排序就是整个数据表都以某一列为准,进行升序或者降序排列。
在Python中我们若想按照某列进行排序,需要用到sort_values()方法,在sort_values()中指明要排序的列名,以及升序还是降序。
公式:df.sort_values(by =["coll"],ascending = False)
上面的代码表示df表按照 coll 列进行排序,ascending = False 表示按照 coll 进行降序排列。ascending参数默认值为 True ,表示升序排列。所以,如果要根据coll 列进行升序排序,则可以只指明列名,不需要额外声明排序方式。
df.sort_values(by = ["coll"])
2.2 按照有缺失值的列进行排序
在Python中,当待排序的列中有缺失值时,可以通过设置na_position参数对缺失值的显示位置进行设置,默认参数值为last,可以不写,表示将缺失值显示在最后。
通过设置na_position参数将缺失值显示在最前面。
2.3 按照多列数值进行排序
按照多列数值进行排序是指同时依据多列数据进行升序、降序排列,当第一列出现重复值时按照第二列进行排序,当第二列出现重复值时按照第三列进行排序,以此类推。
在Python中实现按照多列进行排序,用到的方法同样是sort_values(),只要在sort_values后面的括号中以列表的形式指明要排序的多列列名及每列的排序方式即可。
代码:df.sort_values(by = ["col1","col2"],ascending = [True,False])
上面的代码表示df表先按照col1列进行升序排列,当col1列遇到重复时,再按照col2列进行降序排列。对于表df我们先按照地区降序排列,当遇到重复的地区时,再按日期升序排列,代码如下:
三、数值排名
数值排名和数值排序是相对应的,排名会新增一列,这一列用来存放数据的排名情况,排名是从1开始的。
在Python中对数值进行排名,需要用到的方法是rank()方法。rank()方法主要有两个参数,一个是ascending,用来指明升序排列还是降序排列,默认为升序排列,和Excel 中order的意思一致;另一个是method,用来指明待排列值有重复值时的处理情况。下表是参数method可取的不同参数值及说明。
method取值为average时的排名情况,与Excel 中 RANK.AVG函数一致。
四、数值删除
数值删除是对数据表中一些无用的数据进行删除操作。
4.1 删除列
在Python中,要删除某列,用到的是drop()方法,即在drop方法后的括号中指明要删除的列名或者列的位置,即第几列。
在drop方法后的括号中直接传入待删除列的列名,需要加一个参数axis,并让其参数值等于1 ,表示删除列。
还可以在drop()中直接传入待删除列的位置,但也需要用axis参数。
也可以将列名以列表的形式传给columns参数,这个时候就不需要axis参数了。
4.2 删除行
在Python中要删除某些行用到的方法也是drop()方法,与删除列类似的是,删除行也要指明行相关的信息。
在drop()中直接传入待删除行的行名,并让axis参数等于0,表示删除行。
为了与位置区分,所以将行名进行了修改。
除了传入行索引名称,还可以在drop()中直接传入待删除行的行号,也需要用到axis参数,并让其参数值等于0.
也可以将待删除行的行名传给index参数,这个时候就不需要axis参数了。
4.3 删除特定行
删除特定行一般指删除满足条件的行。
在Python中,删除特定行使用的方法有些特殊,我们不直接删除满足条件的值,而是把不满足条件的值筛选出来作为新的数据源,这样就把要删除的行过滤掉了。
在如下的例子中,要删除销量小于100对应的行,我们并不直接删除这一部分,而是把它的相反部分取出来,即把销量大于100的行筛选出来作为新的数据源。