目录
一、数值替换
1、一对一替换
(1)Excel实现
(2)Python实现
2、多对一替换
(1)Excel实现
(2)Python实现
3、多对多替换
(1)Excel实现
(2)python实现
二、数值排序
1、按照一列数值进行排序
(1)Excel实现
(2)Python实现
2、按照有缺失值的列进行排序
Python实现
3、按照多列数值进行排序
(1)Excel实现
(2)Python实现
三、数值排名
1、Excel实现
2、Python实现
四、数值删除
1、删除列
(1)Excel实现
(2)Python实现
2、删除行
(1)Excel实现
(2)Python实现
3、删除特定行
(1)Excel实现
(2)Python实现
五、数值计数
1、Excel实现
2、Python实现
六、唯一值获取
1、Excel实现
2、Python实现
一、数值替换
数值替换就是将数值A替换成B,可以用在异常值替换处理、缺失值填充处理中。主要有一对一替换、多对一替换、多对多替换三种替换方法。
1、一对一替换
一对一替换是将某一块区域中的一个值全部替换成另一个值。
(1)Excel实现
在Excel中对某个值进行替换,首先要把待替换的区域选中,如果只是替换某一列中的值,只需要选中这一列即可,如果要在一片区域中进行替换,那么拖动鼠标选中这一片区域。然后依次单击编辑菜单栏中的查找和选择>替换选项即可调出替换界面。使用快捷键Ctrl+H也可以调出替换界面。
(2)Python实现
在Python中对某个值进行替换利用的是replace()方法,replace(A,B)表示将A替换成B。
np.NaN是Python中对缺失值的一种表示方法。
2、多对一替换
多对一替换就是把一块区域中的对给替换成某一个值,已知现在有三个异常年龄(240、260、280),需要把这三个年龄都替换成正常范围年龄平均值33,实现方法:
(1)Excel实现
在Excel中需要借助if函数来实现多对一替换。已知年龄这一列是D列,要想对多个异常值进行替换,可以通过如下的函数实现
=if(or(D:D=240,D:D=260,D:D=280),33,D:D)
上面的公式借助了Excel中的or()函数,表示如果D列等于240、260或者280时,该单元格的值为33,否则为D列的值。
(2)Python实现
在Python中实现多对一的替换比较简单,同样是利用replace()方法,replace([A,B],C)表示将A,B替换成C。
3、多对多替换
多对多替换其实就是某个区域中多个一对一的替换。比如将年龄异常值240替换成平均值减1,260替换成平均值,280替换成平均值加1,实现方法:
(1)Excel实现
若想在Excel中实现,需要借助函数,且需要多个if嵌套语句来实现,同样已知年龄列为D列,具体函数如下:
=if(D:D=240,32,if(D:D=260,33,if(D:D=280,34,D:D)))
(2)python实现
在Python中若想实现多对多的替换,同样是借助replace()方法,将替换数值与待替换值用字典的形式表示,replace({"A":a","B":"b"})表示用a替换A,用b替换B。
二、数值排序
数值排序是按照具体数值的大小进行排序,有升序和降序两种,升序就是数值由小到大排列,降序是数值由大到小排列。
1、按照一列数值进行排序
按照一列数值进行排序就是整个数据表都以某一列为准,进行升序或降序排列。
(1)Excel实现
在Excel中想要按照某列进行数值排序,只要选中这一列的字段名,然后单击编辑菜单栏下的排序和筛选按钮,在下拉菜单中选择升序或降序选项即可。
(2)Python实现
在Python中若想按照某列进行排序,需要用到sort_values()方法,在sort_values后的括号中指明要排序的列名,以及升序还是降序排列。
2、按照有缺失值的列进行排序
Python实现
在Python中,当待排序的列中有缺失值时,可以通过设置na_position参数对缺失值的显示位置进行设置,默认参数值为last,可以不写,表示将缺失值显示在最后。
3、按照多列数值进行排序
按照多列数值排序是指同时依据多列数据进行升序、降序排列,当第一列出现重复值时按照第二列进行排序,当第二列出现重复值时第三列进行排序,以此类推。
(1)Excel实现
在Excel中实现按照多列排序,选中待排序的所有数据,单击编辑菜单栏下的排序和筛选按钮,在下拉菜单栏中选择自定义排序选项就有添加条件的按钮,添加条件就是添加按照排序的列,在次序里面可以单独定义每一列的升序或降序。
(2)Python实现
在Python中实现按照多列进行排序,用到的方法同样是sort_values(),只要在sort_values()后的括号中以列表的形式指明要拍讯的多列列名及每列的排序方式即可。
三、数值排名
数值排名和数值排序是相对应的,排名会新增一列,这一列用来存放数据的排名情况,排名是从1开始的。
1、Excel实现
在Excel中用于排名的函数在rank.avg()和rank.eq()两个。
当待排名的数值没有重复值时,这两个函数的效果是完全一样的,两个函数的不同在于处理重复值方式的不同。
rank.avg(number,ref,order)
number表示待排名的数值,ref表示一整列数值的范围,order用来指明降序还是升序排名。当待排名的数值有重复值时,返回重复值的平均排名。
rank.eq(number,ref,order)
rank.eq的参数值与rank.avg的意思一样。当待排名的数值由重复值时,rank.eq返回重复值的最佳排名。
2、Python实现
在Python中对数值进行排名,需要用到rank()方法。rank()方法主要有两个参数,一个是ascending,用来指明升序排列还是降序排列,默认为升序排列,和Excel中order的意思一致;另一个是method,用来指明待排列值有重复值时的处理情况。下表是参数method可取的不同参数值及说明。
method | 说明 |
average | 与Excel中rank.avg函数的功能一样 |
first | 按值在所有的待排列数据中出现的先后顺序排名 |
min | 与Excel中rank.eq函数的功能一样 |
max | 与min相反,取重复值对应的最大排名 |
method取值为average时的排名情况,与Excel中rank.avg函数的一致。
method取值为min时的排名情况,与Excel中rank.eq()函数的一致。
method取值为max时的排名情况,与method取值min时相反。
四、数值删除
数值删除是对数据表中一些无用的数据进行删除操作。
1、删除列
(1)Excel实现
在Excel中,要删除某一列或某几列,只需要选中这些列,然后单击鼠标右键,在弹出的菜单中选择删除选项即可(或者单击鼠标右键以后按D键)。
(2)Python实现
在Python中,要删除某列,用到的是drop()方法,即在drop方法后的括号中指明要删除的列名或者列的位置,即第几列。
在drop方法后的括号中直接传入待删除列的列名,需要加一个参数axis,并让其参数等于1,表示删除列。
还可以在drop方法后的括号中直接传入待删除列的位置,但也需要用axis参数,也可以将列名以列表的形式传给columns参数,这个时候就不需要axis参数了。
2、删除行
(1)Excel实现
在Excel中,要删除某些行使用的方法与删除列是一致的,先选中要删除的行,然后单击鼠标右键,在弹出的下拉菜单中选择删除选项就可以删除行了。
(2)Python实现
在Python中,要删除某些行用到的方法依然是drop(),与删除列类似的是,删除行也要指明行相关的信息。
在drop方法后的括号中直接传入待删除行的行名,并让axis参数值等于0,表示删除行。
除了传入行索引名称,还可以在drop方法后的括号中直接传入待删除行的行号,也需要用axis参数,并让其参数值等于0.
也可以将待删除行的行名传给index参数,这个时候就不需要axis参数了。
3、删除特定行
删除特定行一般指删除满足某个条件的行,我们前面的异常值删除算是删除特定的行。
(1)Excel实现
在Excel中删除特定行分为两步,第一步先将符合条件的行筛选出来,第二步选中这些筛选出来的行然后单击鼠标右键,在弹出的下拉菜单中选择删除选项。
(2)Python实现
在Python中删除特定行使用的方法有些特殊,我们不直接删除满足条件的值,而是把不满足条件的值筛选出来作为新的数据源,这样就把要删除的行过滤掉了。
五、数值计数
数值计数就是计算某个值在一系列数值中出现的次数。
1、Excel实现
在Excel中实现数值计数,我们使用的是countif()函数,countif()函数用来计算某个区域中满足给定条件的单元格数目。
=countif(range,croteria)
range表示一系列值的范围,criteria表示某一个值或者某一个条件。
2、Python实现
在Python中,要对某些值的出现次数进行计数,我们用到的方法是value_counts()。
六、唯一值获取
唯一值获取就是把某一系列删除重复项以后的结果,一般可以将表中某一列认为是一系列值。
1、Excel实现
在Excel中,我们若想查看某一列数值中的唯一值,可以把这一列数值复制粘贴出来,然后删除重复项,剩下的就是唯一值了。
2、Python实现
在Python中,我们要获取一列值的唯一值,整体思路与Excel的是一致的,先把某一列的值复制粘贴出来,然后用删除重复项的方法实现,关于删除重复项在前面讲过了,本次用另一种获取唯一值的方法unique()实现。