highcharts 显示平均值数值_数据分析实践入门(三):数值操作

   日期:2024-12-26    作者:b1255821 移动:http://3jjewl.riyuangf.com/mobile/quote/54994.html

数值替换就是将数值A替换成B,可以用在异常值替换处理、缺失值填充处理中。主要有一对一替换、多对一替换、多对多替换三种替换方法。

1、一对一替换

一对一替换是将某一块区域中的一个值全部替换成另一个值。已知现在有一个年龄值是240,很明显这是一个异常值,我们要把它替换成一个正常范围内的年龄值(用正常年龄的均值33,怎么实现呢

(1)Excel实现

在Excel中对某个值进行替换,首先要把待替换的区域选中,如果只是替换某一列中的值,只需要选中这一列即可;如果要在一片区域中进行替换,那么拖动鼠标选中这一片区域。然后依次单击编辑菜单栏中的查找和选择>替换选项(如下图所示)即可调出替换界面。使用快捷键Ctrl+H也可以调出替换界面。

在Python中对某个值进行替换利用的是replace ( ) 方法,replace ( A,B )表示将A替换成B。

多对一替换就是把一块区域中的多个值替换成某一个值,已知现在有三个异常年龄(240、260、280,需要把这三个年龄都替换成正常范围年龄的平均值33,该怎么实现呢

(1)Excel实现

在Excel中需要借助if函数来实现多对一替换。已知年龄这一列是D列,要想对多个异常值进行替换,可以通过如下函数实现。

在Python 中实现多对一的替换比较简单,同样也是利用 replace ( ) 方法, replace ( [A,B],C )表示将A、B替换成C。

多对多替换其实就是某个区域中多个一对一的替换。比如将年龄异常值240替换成平均值减一,260替换成平均值,280替换成平均值加一,该怎么实现呢

(1)Excel实现

若想在Excel中实现,需要借助函数,且需要多个if嵌套语句来实现,同样已知年龄列为D列,具体函数如下

在Python中若想实现多对多的替换,同样是借助replace ( ) 方法,将替换值与待替换值用字典的形式表示,replace({"A":"a","B":"b"}表示用a替换A,用b替换B。

1、按照一列数值进行排序

按照一列数值进行排序就是整个数据表都以某一列为准,进行升序或降序排列。

(1)Excel实现

在Excel中想要按照某列进行数值排序,只要选中这一列的字段名,然后单击编辑菜单栏下的排序和筛选按钮,在下拉菜单中选择升序或降序选项即可,操作流程如下图所示。

在 Python 中我们若想按照某列进行排序,需要用到 sort_values ( ) 方法,在sort_values ( )后的括号中指明要排序的列名,以及升序还是降序排列。

(1)Python实现

在Python中,当待排序的列中有缺失值时,可以通过设置na_position参数对缺失值的显示位置进行设置,默认参数值为last,可以不写,表示将缺失值显示在最后。

按照多列数值排序是指同时依据多列数据进行升序、降序排列,当第一列出现重复值时按照第二列进行排序,当第二列出现重复值时按照第三列进行排序,以此类推。

(1)Excel实现

在Excel中实现按照多列排序,选中待排序的所有数据,单击编辑菜单栏下的排序和筛选按钮,在下拉菜单中选择自定义排序选项就会出现如下图所示界面。添加条件就是添加按照排序的列,在次序里面可以单独定义每一列的升序或者降序。

在 Python 中实现按照多列进行排序,用到的方法同样是 sort_values ( ),只要在sort-values后的括号中以列表的形式指明要排序的多列列名及每列的排序方式即可。

1、Excel实现

在Excel中用于排名的函数有RANK.AVG()和RANK.EQ()两个。

当待排名的数值没有重复值时,这两个函数的效果是完全一样的,两个函数的不同在于处理重复值方式的不同。

RANK.AVG(number,ref,order)

number表示待排名的数值,ref表示一整列数值的范围,order用来指明降序还是升序排名。当待排名的数值有重复值时,返回重复值的平均排名。

对销售ID进行平均排名以后的结果如下图所示。图中销售ID为1的值有两个,假设一个排名是1,另一个排名是2,那么二者的均值就是1.5,所以平均排名就是1.5;销售ID为2的值同样有两个,同样假设一个排名为3,另一个排名是4,那么二者的均值是3.5,所以平均排名就是3.5;销售ID为3的值没有重复值,所以排名就是5。

RANK.EQ 的参数值与 RANK.AVG 的意思一样。当待排名的数值有重复值时, RANK.EQ返回重复值的最佳排名。

对销售ID进行最佳排名以后的结果如下图所示。图中销售ID为1的值有两个,第一个重复值的排名为1,所以两个值的最佳排名均为1;销售ID为2的值也有两个,第一个重复值的排名为3,所以两个值的最佳排名均为3;销售ID为3的值没有重复值,最佳排名为5。

在Python中对数值进行排名,需要用到rank ( ) 方法。Rank ( ) 方法主要有两个参数,一个是ascending,用来指明升序排列还是降序排列,默认为升序排列,和Excel中order的意思一致;另一个是method,用来指明待排列值有重复值时的处理情况。下表是参数method可取的不同参数值及说明。

1、删除列

(1)Excel实现

在Excel中,要删除某一列或某几列,只需要选中这些列,然后单击鼠标右键,在弹出的菜单中选择删除选项即可(或者单击鼠标右键以后按D键,如下图所示。

在Python中,要删除某列,用到的是drop ( ) 方法,即在drop方法后的括号中指明要删除的列名或者列的位置,即第几列。

在drop方法后的括号中直接传入待删除列的列名,需要加一个参数axis,并让其参数值等于1,表示删除列。

(1)Excel实现

在 Excel 中,要删除某些行使用的方法与删除列是一致的,先选中要删除的行,然后单击鼠标右键,在弹出的下拉菜单中选择删除选项就可以删除行了。

(2)Python实现

在Python中,要删除某些行用到的方法依然是drop ( ) ,与删除列类似的是,删除行也要指明行相关的信息。

在drop方法后的括号中直接传入待删除行的行名,并让axis参数值等于0,表示删除行。

删除特定行一般指删除满足某个条件的行,我们前面的异常值删除算是删除特定的行。

(1)Excel实现

在Excel中删除特定行分为两步,第一步先将符合条件的行筛选出来,第二步选中这些筛选出来的行然后单击鼠标右键,在弹出的下拉菜单中选择删除选项。

(2)Python实现

在Python中删除特定行使用的方法有些特殊,我们不直接删除满足条件的值,而是把不满足条件的值筛选出来作为新的数据源,这样就把要删除的行过滤掉了。

在如下例子中,要删除年龄值大于等于40对应的行,我们并不直接删除这一部分,而是把它的相反部分取出来,即把年龄小于40的行筛选出来作为新的数据源。

1、Excel实现

在Excel中实现数值计数,我们使用的是COUNTIF ( ) 函数,COUNTIF ( ) 函数用来计算某个区域中满足给定条件的单元格数目。

销售ID的值的计数结果如下图所示。销售ID为1的值在F2:F6这个范围内出现了两次;销售ID为2的值在该范围内也出现了两次;销售ID为3的值出现了1次。

在Python中,要对某些值的出现次数进行计数,我们用到的方法是value_counts ( ) 。

1、Excel实现

在Excel中,我们若想查看某一列数值中的唯一值,可以把这一列数值复制粘贴出来,然后删除重复项,剩下的就是唯一值了。

2、Python实现

在Python中,我们要获取一列值的唯一值,整体思路与Excel的是一致的,先把某一列的值复制粘贴出来,然后用删除重复项的方法实现,关于删除重复项在前面讲过了,本节用另一种获取唯一值的方法unique ( ) 实现。

举个例子,对表df中的销售ID取唯一值,先把销售ID取出来,然后利用unique ( ) 方法获取唯一值,代码如下所示。

1、Excel实现

在Excel中我们要想查看数据表中是否包含某个值可以直接利用查找功能。首先要把待查找区域选中,可以选择一列或者多列,如果不选,则默认在全表中查询,然后单击编辑菜单栏的查找和选择按钮,在下拉菜单中选择查找选项,如下图所示。

在Python中查看数据表中是否包含某个值用到的是 isin ( )方法,而且可以同时查找多个值,只需要在isin ( ) 方法后的括号中指明即可。

可以将某列数据取出来,然后在这一列上调用 isin ( )方法,看这一列中是否包含某个/些值,如果包含则返回True,否则返回False。

1、Excel实现

在Excel中实现区间切分我们借助的是if函数,具体公式如下

在Python中对区间切分利用的是cut ( ) 方法,cut ( )方法有一个参数bins用来指明切分区间。

与cut ( ) 方法类似的还有qcut ( ) 方法,qcut ( ) 方法不需要事先指明切分区间,只需要指明切分个数,即你要把待切分数据切成几份,然后它就会根据待切分数据的情况,将数据切分成事先指定的份数,依据的原则就是每个组里面的数据个数尽可能相等。

在特定的位置插入行或者列也是比较常用的操作。具体的插入操作有两个关键要素,一个是在哪插入,另一个是插入什么。

1、Excel实现

在Excel中要插入行或列首先要确定在哪一行或哪一列前面插入,然后选中这一列或这一行单击鼠标右键,在弹出的下拉菜单中选择插入选项即可。

要在唯一识别码列前面插入一列,选中唯一识别码这一列然后单击鼠标右键,在弹出的下拉菜单中选择插入选项即可,如下图所示。

2、Python实现

在Python中没有专门用来插入行的方法,可以把待插入的行当作一个新的表,然后将两个表在纵轴方向上进行拼接。关于表拼接在后面的章节会讲。

在Python中插入一个新的列用到的方法是insert ( ),在insert方法后的括号中指明要插入的位置、插入后新列的列名,以及要插入的数据。

所谓的行列互换(又称转置)就是将行数据转换到列方向上,将列数据转换到行方向上。

1、Excel实现

在Excel中行列互换(转置)需要先把待转置的内容复制,然后粘贴在新的区域中,粘贴选项选择转置即可,转置选项如下图所示。

在 Python 中,我们直接在源数据表的基础上调用.T 方法即可得到源数据表转置后的结果。对转置后的结果再次转置就会回到原来的结果。

对表df进行转置,代码如下所示。

我们把数据从表格型数据转换到树形数据的过程叫重塑,这种操作在Excel中没有,在Python用到的方法是stack ( ) ,示例代码如下所示。

下表是一个宽表(有很多列)。

1、宽表转换为长表

宽表转化为长表,在Excel中一般都用复制粘贴实现,我们主要看看在Python中如何实现。Python中要实现这种转换有两种方法,一种是 stack ( ) 方法,另一种是melt ( ) 方法。

(1)stack ( ) 方法实现

stack ( ) 在将表格型数据转为树形数据时,是在保持行索引不变的前提下,将列索引也变成行索引。

这里将宽表转化为长表首先要在保持 Company 和 Name 不变的前提下,将Sale2013、Sale2014、Sale2015、Sale2016也变成行索引。所以,需要先将 Company和Nmae先设置成索引,然后调用 stack ( ) 方法,将列索引也转换成行索引,最后利用 reset_index ( ) 方法进行索引重置,示例代码如下所示。

用 melt ( ) 方法实现上述功能,代码如下所示。

注意,这里的“行索引”是有双引号的,它并非实际行索引,只是类似实际的行索引。

2、长表转换为宽表

将长表转化为宽表就是宽表转化为长表的逆过程。常用的方法就是数据透视表,具体实现如下

十三、apply ( ) 与applymap ( ) 函数

我们在Python基础知识部分讲过一个Python的高级特性map ( ) 函数,map ( ) 函数是对一个序列中的所有元素执行相同的函数操作。

在DataFrame中与 map ( ) 函数类似的函数有两个,一个是apply ( ) 函数,另一个是applymap ( ) 函数。函数apply ( ) 和applymap ( ) 都需要与匿名函数lambda结合使用。

apply ( ) 函数主要用于对DataFrame中的某一column或row中的元素执行相同的函数操作。


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号