楼主: CDA网校
4487 20

[数据挖掘新闻] 数据分析实践入门 [推广有奖]

管理员

已卖:189份资源

泰斗

3%

还不是VIP/贵宾

-

威望
3
论坛币
116127 个
通用积分
10032.8829
学术水平
278 点
热心指数
286 点
信用等级
253 点
经验
227885 点
帖子
6884
精华
19
在线时间
4370 小时
注册时间
2019-9-13
最后登录
2025-12-26

初级热心勋章

楼主
CDA网校 学生认证  发表于 2020-1-9 11:18:55 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

作者 | CDA数据分析

常见的不规则数据主要有缺失数据、重复数据、异常数据几种,在开始正式的数据分析之前,我们需要先把这些不太规整的数据处理掉,做数据预处理。

AIU人工智能学院

缺失值就是由某些原因导致部分数据是空的,对于为空的这部分数据我们一般是有两种处理方式的,一种是做删除处理,即把含有缺失值的数据删除;另一种是做填充处理,即把缺失的那部分数据用某个值代替。

对缺失值进行处理,首先要把数据中的缺失值找出来,也就是查看数据中有哪些列有缺失值。

在Excel中我们选中一列没有缺失值的数据,看一下这一列数据共有多少个,然后把其他列的计数与这一列进行做对比,小于这一列数据个数的就代表该列数据有缺失值,差值就是缺失个数。

下图中非缺失值列的数据计数为5,性别这一列计数为4,这就表示性别这一列是有一个缺失值的。

如果数据不是特别多,你想看数据中具体是哪个单元格的缺失,则可以利用定位条件(按快捷键Ctrl+G可弹出对话框)查找。在定位条件对话框中选择空值,单击确定就会把所有的空值选中,如下图所示:


通过定位条件把数据中缺失值选出来的结果,如下图所示:

在Python中直接调用info ( ) 函数的方法就会返回每一列的缺失情况。关于info ( ) 函数方法我们在之前就用过,但是没有说明这个方法可以判断数据的缺失情况。


我们在python中还可以用isnull ( ) 方法来判断哪个值是缺失值,如果是缺失值则返回True,一行中如果不是缺失值则返回False。


缺失值分为两种,第一种是一行中某个字段是缺失值;另一种是一行中的字段全部为缺失值,即为一个空白行。

在Excel中,这两种缺失值都可以通过定位条件(按快捷键Ctrl+G可弹出该对话框),对话框中选择空值就可以找到。

这样含有缺失值的部分数据就会被选中,包括某个具体的单元格及一整行,然后单击鼠标右键在弹出的删除对话框中选择删除整行选项,并单击确定按钮即可实现整行的删除。

在Python中,我们利用的是函数dropna ( ) 方法,函数dropna ( ) 方法默认删除含有缺失值的行,也就是只要某一行有缺失值就把这一行删除。


如果想删除空白行,只要给函数dropna ( ) 方法传入一个参数 how = all 即可,这样就会只删除那些全为空值的行,不全为空值的行就不会被删除。




3、缺失值的填充

(1)Excel实现

缺失值填充前后的对比如下图所示:


在数据中年龄用数字填充合适,但是性别用数字填充就不太合适,那么可不可以分开填充呢?答案是可以的,选中想要被填充的那一列,按照填充全部数据的方式进行填充就可以了,只不过如果想要要填充几列,则需要执行几次这样的操作。

除了用0填充、平均值填充、众数(大多数)填充,还有向前填充(即用缺失值的前一个非缺失值填充,比如上个例子中编号A3 对应的缺失年龄的前一个非缺失值就是16)、向后填充(与向前填充对应)等方式。

在Python中,我们利用的 fillna ( ) 方法对数据表中的所有缺失值进行填充,在fillna ( )后面的括号中输入要填充的值即可。


在Python中我们也可以按不同列进行填充,只要在函数fillna ( ) 方法的括号中指明列名即可。

也可以同时对多个列填充不同的值:


重复数据就是同样的记录有多条,对于这样的数据我们一般做删除处理。

(1)Excel实现

在Excel中依次单击菜单栏中的数据>数据工具>删除重复值,就可以删除重复数据了,如下图所示:
数据删除前后的对比图如下:

你知道了公司2018年8月份成交明细以后,你想看一下2018年8月份总共有多少成交客户,且每个客户在2018年8月份首次成交的日期。

查看客户数量只需要按客户的唯一识别码进行去重就可以了。Excel默认是全选,我们可以取消全选,选择唯一识别码进行去重,这样只要唯一识别码重复就会被删除,如下图所示:

删除前后的对比如下图所示:


在Python中我们利用drop_duplicates ( ) 方法,该方法默认对所有值进行重复值判断,且默认保留第一个值(或第一行值)。


也可以利用多列去重,只需要把多个列名以列表的形式传给参数subset即可。比如按姓名和唯一识别码去重。


还可以定义删除重复项时要保留哪个,默认是保留第一个,也可以默认保留最后一个,或者全部不保留。通过传入参数keep进行设置,参数keep默认值是first,即保留第一个值;也可以是last,保留最后一个值;还可以是False,即把重复值全部去掉。

异常值就是相比正常数据而言过高或者过低的数据,比如一个人的年龄是0岁或者100岁都算是一个异常值,因为这和实际情况差距过大。

要处理异常值首先要检测,也就是发现异常值,发现异常值的方式主要有以下三种:

■通过绘制箱型图,把大于(小于)箱型图上边缘(下边缘)的点称为异常值

箱形图如下图所示:


下图是正态分布图,我们把大于μ+3σ的值称为异常值。

对于异常值一般有以下几种处理方式:

■把异常值当做缺失值来填充

(1)Excel实现

对异常值进行填充,其实就是对异常值进行替换,同样通过筛选的功能把异常值先找出来,然后把这些异常值替换成要填充的值即可。

在Python中,删除异常值用到的方法和Excel中的方法原理类似,Python中是通过过滤的方法对异常值进行删除。比如 df 表中有年龄这个指标,要把年龄大于200的值删掉,你可以通过筛选把年龄不大于200的筛出来,筛出来的部分就是删除大于200的值以后的新表。

CDA网校

四、数据类型转换

(1)Excel实现

在Excel中常用的数据类型就是在菜单栏中数字选项下面的几种,你也可以选择其他数据格式,如下图所示。

当选中成交时间这一列时,菜单栏中就会显示日期,表示成交时间这一列的数据类型是日期格式,如下图所示。


Pandas不像Excel分得那么详细,它主要有6种数据类型,如下表所示。


在 Python 中,不仅可以用 info ( ) 方法获取每一列的数据类型,还可以通过 dtype方法来获取某一列的数据类型。

我们在前面说过,不同数据类型的数据可以做的事情是不一样的,所以我们需要对数据进行类型转化,把数据转换为我们需要的类型。

在Excel中如果想更改某一列的数据类型,只要选中这一列,然后在数字菜单栏中通过下拉菜单选择你要转换的目标类型即可实现。

下图就是将文本类型的数据转换成数值类型的数据,数值类型数据默认为两位小数,也可以设置成其他位数。CDA网校

在Python中 ,我们利用astype ( ) 方法对数据类型进行转换,astype ( ) 后面的括号里指明要转换的目标类型即可。




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:CDA网校

沙发
CDA网校 学生认证  发表于 2020-1-9 11:19:18

索引是查找数据的依据,设置索引的目的是便于我们查找数据。举个例子,你逛超市买了很多食材,回到家以后你要把这些食材全部放在冰箱里,放置在冰箱的过程其实就是一个建立索引的过程,比如蔬菜放在冷藏室,肉类放在冷冻室,进行完这样的分类存放之后,这样再找的时候就可以很快的找到。

有的表没有索引,这时要给这类表加一个索引。

在Excel中,一般都是有索引的,如果没索引数据看起来会很乱,当然也会有例外,数据表就是没有索引的。这个时候插入一行一列就是为表添加索引。

CDA网校

添加索引前后的对比如下图所示,序号列为行索引,字段名称为列索引。

在Python中,如果表没有索引,会默认用从0开始的自然数做索引,比如下面这样:


2、重新设置索引

(1)Excel实现

(2)Python实现

在Python中可以利用set_index ( ) 方法重新设置索引列,在 set_index ( ) 里指明要用作行索引的列的名称即可。
在重新设置索引时,还可以给 set_index ( ) 方法传入两个或多个列名,我们把这种一个表中用多列来做索引的方式称为层次化索引,层次化索引一般用在某一列中含有多个重复值的情况下。层次化索引的例子,如下所示,其中 a、b、c、d 分别有多个重复值。

重命名索引是针对现有索引名进行修改的,就是改字段名。

在Excel中重命名索引比较简单,就是直接修改字段名。

在Python中重命名索引,我们利用的是rename ( ) 方法,在rename ( ) 后的括号里指明要修改的行索引及列索引名。




重置索引主要用在层次化索引表中,重置索引是将索引列当作一个columns进行返回。

在下图左侧的表中,Z1、Z2是一个层次化索引,经过重置索引以后,Z1、Z2这两个索引以columns的形式返回,变为常规的两列。

在Python利用的是reset_index ( ) 方法,reset_index ( ) 方法常用的参数如下:


drop参数用来指定是否将原索引删掉,即不作为一个新的columns,默认为False,即不删除原索引。

inplace参数用来指定是否修改原数据表。
reset_index ( ) 方法常用于数据分组、数据透视表中。
已有 1 人评分经验 收起 理由
zl89 + 60 精彩帖子

总评分: 经验 + 60   查看全部评分

藤椅
CDA网校 学生认证  发表于 2020-1-9 11:29:27

之前是把所有的菜品都洗好并放在不同的盛放的容器里。现在要进行切配了,需要把这些菜品挑选出来,比如想要做一盘凉拌黄瓜,需要先把黄瓜在他所在的容器中找出来;要做一盘可乐鸡翅,需要先从容器中把鸡翅找出来。

数据分析也是同样的道理,你要分析什么,首先要把对应的数据筛选出来。

常规的数据选择主要有列选择、行选择、行列同时选择三种方式。

CDA网校

一、列选择

1、选择某一列/某几列

(1)Excel实现

在Excel中选择某一列直接用鼠标选中这一列即可;如果要同时选择多列,且待选择的列不是相邻的,这个时候就可以先选中其中一列,然后按住Ctrl键不放,再选择其他列。举个例子,同时选择客户姓名和成交时间这两列,如下图所示。


(2)Python实现

在Python中我们要想获取某列只需要在表df后面的方括号中指明要选择的列名即可。如果是一列,则只需要传入一个列名;如果是同时选择多列,则传入多个列名即可,多个列名用一个list存起来。



在Python中我们把这种通过传入列名选择数据的方式称为普通索引。

除了传入具体的列名,我们还可以传入具体列的位置,即第几列,对数据进行选取,通过传入位置来获取数据时需要用到iloc方法。


在上面的代码中,iloc 后的方括号中逗号之前的部分表示要获取的行的位置,只输入一个冒号,不输入任何数值表示获取所有的行;逗号之后的方括号表示要获取的列的位置,列的位置同样是也是从0开始计数。

我们把这种通过传入具体位置来选择数据的方式称为位置索引。


CDA网校

2、选择连续的某几列

(1)Excel实现

在Excel中,要选择连续的几列时,直接用鼠标选中这几列即可操作。当然了,你也可以先选择一列,然后按住 Ctrl 键再去选择其他列,由于要选取的列是连续的,因此没必要这么麻烦。

(2)Python实现

在Python中可以通过前面介绍的普通索引和位置索引获取某一列或多列的数据。当你要获取的是连续的某几列,用普通索引和位置索引也是可以做到的,但是因为你要获取的列是连续的,所以只要传入这些连续列的位置区间即可,同样需要用到 iloc方法。


在上面的代码中,iloc 后的方括号中逗号之前的表示选择的行,当只传入一个冒号时,表示选择所有行;逗号后面表示要选择列的位置区间,0:3表示选择第1列到第4列之间的值(包含第1列但不包含第4列),我们把这种通过传入一个位置区间来获取数据的方式称为切片索引。

二、行选择

1、选择某一行/某几行

(1)Excel实现

在Excel中选择行与选择列的方式是一样的,先选择一行,按住Ctrl键再选择其他行。

(2)Python实现

在Python中,获取行的方式主要有两种,一种是普通索引,即传入具体行索引的名称,需要用到loc方法;另一种是位置索引,即传入具体的行数,需要用到iloc方法。

为了让大家看得更清楚,我们对行索引进行自定义。



2、选择连续的某几行

(1)Excel实现

在Excel中选择连续的某几行与选择连续的某几列方法一致,不再赘述。

(2)Python实现

在Python中,选择连续的某几行时,你同样可以把要选择的每一个行索引名字或者行索引的位置输进去。很显然这是没有必要的,只要把连续行的位置用一个区间表示,然后传给iloc即可。




板凳
CDA网校 学生认证  发表于 2020-1-9 11:29:52

3、选择满足条件的行

前两节获取某一列时,获取的是这一列的所有行,我们还可以只筛选出这一列中满足条件的值。

比如年龄这一列,需要把非异常值(大于200的属于异常值),即小于200岁的年龄筛选出来,该怎么实现呢?

CDA网校

(1)Excel实现

在Excel中我们直接使用筛选功能,将满足条件的值筛选出来,筛选方法如下图所示。


筛选年龄小于200的数据前后的对比如下图所示。


(2)Python实现

在Python中,我们直接在表名后面指明哪列要满足什么条件,就可以把满足条件的数据筛选出来。


我们把上面这种通过传入一个判断条件来选择数据的方式称为布尔索引。

传入的条件还可以是多个,如下为选择的年龄小于200且唯一识别码小于102的数据。



三、行列同时选择

上面的数据选择都是针对单一的行或列进行选择,实际业务中我们也会用到行、列同时选择,所谓的行、列同时选择就是选择出行和列的相交部分。

例如,我们要选择第二、三行和第二、三列相交部分的数据,下图中的阴影部分就是最终的选择结果。


行列同时选择在Excel中主要是通过鼠标拖曳实现的,与前面的单一行/列选择方法一致,此处不再赘述,接下来主要讲讲在Python中如何实现。

CDA网校

1、普通索引+普通索引选择指定的行和列

普通索引+普通索引就是通过同时传入行和列的索引名称进行数据选择,需要用到loc方法。


loc方法中的第一对方括号表示行索引的选择,传入行索引名称;loc方法中的第二对方括号表示列索引的选择,传入列索引名称。

2、位置索引+位置索引选择指定的行和列

位置索引+位置索引是通过同时传入行、列索引的位置来获取数据,需要用到iloc方法。


在 iloc 方法中的第一对方括号表示行索引的选择,传入要选择行索引的位置;第二对方括号表示列索引的选择,传入要选择列索引的位置。行和列索引的位置都是从0开始计数。


CDA网校

3、布尔索引+普通索引选择指定的行和列

布尔索引+普通索引是先对表进行布尔索引选择行,然后通过普通索引选择列。


上面的代码表示选择年龄小于200的订单编号和年龄,先通过布尔索引选择出年龄小于200的所有行,然后通过普通索引选择订单编号和年龄这两列。

4、切片索引 + 切片索引选择指定的行和列

切片索引 + 切片索引是通过同时传入行、列索引的位置区间进行数据选择。


5、切片索引 + 普通索引选择指定的行和列

前面我们说过,如果是普通索引,就直接传入行或列名,用 loc 方法即可;如果是切片索引,也就是传入行或者列的位置区间,要用 iloc 方法。如果是切片索引+普通索引,也就是行(列)用切片索引,列(行)用普通索引,这种交叉索引要用ix方法。



报纸
CDA网校 学生认证  发表于 2020-1-10 09:54:18

我们把菜品挑选出来以后,就可以开始切菜了。比如要做凉拌黄瓜丝,吧黄瓜找出来以后,你就可以把黄瓜切成丝了。

一、数值替换

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

1、一对一替换

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

(1)Excel实现

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



下图为替换界面,分别输入查找内容和替换内容,然后根据需要单击全部替换或者替换即可。



(2)Python实现

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



上面的代码是对年龄这一列进行替换,所以把年龄这一列选中,然后调用replace ( ) 方法。有时候要对整个表进行替换,比如对全表中的缺失值进行替换,这个时候replace ( ) 方法就相当于fillna ( ) 方法了。





np.NaN是Python中对缺失值的一种表示方法。




2、多对一替换

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

(1)Excel实现

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



上面的公式借助了Excel中的 OR ( ) 函数,表示如果D列等于240、260或者280时,该单元格的值为33,否则为D列的值。替换后的结果如下图所示。



(2)Python实现

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



3、多对多替换

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

(1)Excel实现

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



下图为该函数执行的流程。



替换后的结果如下图所示。



(2)Python实现

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








地板
CDA网校 学生认证  发表于 2020-1-10 09:55:25

二、数值排序

数值排序是按照具体数值的大小进行排序,有升序和降序两种,升序就是数值由小到大排列,降序是数值由大到小排列。

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

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

(1)Excel实现

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



按照销售ID进行升序排列前后的结果如下图所示。



(2)Python实现

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



上面代码表示df表按照col1列进行排序,ascending = False表示按照col1列进行降序排列。ascending 参数默认值为 True,表示升序排列。所以,如果是要根据 col1列进行升序排序,则可以只指明列名,不需要额外声明排序方式。





2、按照有缺失值的列进行排序

(1)Python实现

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



通过设置na_position参数将缺失值显示在最前面。






3、按照多列数值进行排序

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

(1)Excel实现

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



举个例子,对下图左侧的Before表先按照销售ID升序排列,当遇到重复的销售ID时,再按成交时间降序排列,得出下图右侧的After表。



(2)Python实现

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



上面代码表示df表先按照col1列进行升序排列,当col1列遇到重复时,再按照col2列进行降序排列。对于表df我们依旧先按照销售ID升序排列,当遇到重复的销售ID时,再按成交时间降序排列,代码如下所示。





7
CDA网校 学生认证  发表于 2020-1-10 09:55:55

三、数值排名

数值排名和数值排序是相对应的,排名会新增一列,这一列用来存放数据的排名情况,排名是从1开始的。

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( number,ref,order )

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

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



2、Python实现

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



method取值为average时的排名情况,与Excel中RANK.AVG函数的一致。



method取值为first时的排名情况,销售ID为1的值有两个,第一个出现的排名为1,第二个出现的排名为2;销售ID为2的以此类推。



method取值为min时的排名情况,与Excel中RANK.EQ函数的一致。



method取值为max时的排名情况,与method取值min时相反,销售ID为1的值有两个,第二个重复值的排名为2,所以两个值的排名均为2;销售ID为2 的值有两个,第二个重复值的排名为4,所以两个值的排名均为4。






四、数值删除

数值删除是对数据表中一些无用的数据进行删除操作。

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

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








8
CDA网校 学生认证  发表于 2020-1-10 09:56:23

五、数值计数

数值计数就是计算某个值在一系列数值中出现的次数。

1、Excel实现

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



range表示一系列值的范围,criteria表示某一个值或者某一个条件。

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



2、Python实现

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





上面代码运行的结果表示销售ID为2的值出现了两次,销售ID为1的值出现了两次,销售ID为3的值出现了1次。这些是值出现的绝对次数,还可以看一下不同值出现的占比, 只需要给 value_ counts ( )方法传入参数normalize = True即可。



上面代码的运行结果表示销售ID为2的值的占比为0.4,销售ID为1的值的占比为0.4,销售ID为3的值的占比为0.2。上面销售ID的排序是2、1、3,这是按照计数值降序排列的(0.4、0.4、0.2),通过设置sort = False可以实现不按计数值降序排列。



六、唯一值获取

唯一值获取就是把某一系列值删除重复项以后的结果,一般可以将表中某一列认为是一系列值。

1、Excel实现

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

2、Python实现

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

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






七、数值查找

数值查找就是查看数据表中的数据是否包含某个值或者某些值。

1、Excel实现

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



下图为选择查找选项后弹出的查找和替换对话框(也可以使用快捷键Ctrl + F打开查找和替换对话框),在查找内容框输入要查找的内容即可,可以选择查找全部,这样就会把所有查找到的内容显示出来;也可以选择查找下一个,这样会把查找结果一个一个显示出来。



2、Python实现

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

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



也可以针对全表查找是否包含某个值。



八、区间切分

区间切分就是将一系列数值分成若干份,比如现在有10个人,你要根据这10个人的年龄将他们分为三组,这个切分过程就称为区间切分。

1、Excel实现

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



if函数的实现流程如下图所示。



下图为利用if嵌套函数实现的结果。



2、Python实现

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



cut ( ) 方法的切分结果是几个左开右闭的区间,(0,3]就表示大于0小于等于3,(3,6]表示大于3小于等于6,(6,10]表示大于6小于等于10。

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





在数据分布比较均匀的情况下,cut ( ) 方法和 qcut ( ) 方法得到的区间基本一致,当数据分布不均匀,即方差比较大时,两者得到的区间的偏差就会比较大。






9
CDA网校 学生认证  发表于 2020-1-10 09:56:39

九、插入新的行或列

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

1、Excel实现

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

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



完成上面的操作后,就会有一个新的空行或空列,在空行或空列里面输入要插入的数据即可。

2、Python实现

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

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





还可以直接以索引的方式进行列的插入,直接让新的一列等于某列值即可。



上面的代码表示新插入一列名为商品类别的值,这一列的值就是后面列表中的值。

十、行列互换

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

1、Excel实现

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



转置前后的效果对比如下图所示。



2、Python实现

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

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



对转后的表再次进行转置,代码如下所示。



十一、索引重塑

所谓的索引重塑就是将原来的索引进行重新构造。典型的DataFrame结构的表如下表所示。



上面这种表是典型的DataFrame结构,它用一个行索引和一个列索引来确定一个唯一值,比如S1-C1唯一值为1,S2-C3唯一值为6。这种通过两个位置确定一个唯一值的方法不仅可以用上述这种表格型结构表示,而且可以用一种树形结构来表示,如下图所示。



树形结构其实就是在维持表格型行索引不变的前提下,把列索引也变成行索引,其实就是给表格型数据建立层次化索引。

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


10
小瓶九阳丹 发表于 2020-1-10 13:12:15

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 05:06