PART1:导入数据之后的查看数据情况的一些常用操作:

  • 预览数据前几行
  • 查看数据表尺寸大小
  • 获取数据类型
  • 获取数值分布情况

PART2:数据预处理

  • 缺失值处理-删除或填充
  • 重复值处理
  • 异常值检测和处理
  • 数据类型转换
  • 索引设置

----------------------------------PART1----------------------------------------------------

1.预览数据的前几行-head(),默认前五行,表示自定义看几行




python查看naarry前几条 python查看前五行_python查看naarry前几条


2.查看数据表的大小,即多少行多少列-.shape,注意是.shape不是shape(),行列索引不计数


python查看naarry前几条 python查看前五行_python检查并删掉有空值的表_02


3.获取数据类型-info( )


python查看naarry前几条 python查看前五行_python 查看excel 多少行_03


4.获取数值分布情况-describe( ),所有数值类型字段的分布值


python查看naarry前几条 python查看前五行_python查看naarry前几条_04


此处由于只有年龄列是数值型,所以只显示年龄列的数值分布情况,可以自建一个多数据列的DateFrame,看看describe的结果如何


python查看naarry前几条 python查看前五行_python多级索引变成列_05


python查看naarry前几条 python查看前五行_clistctrl获取选中行数据_06


----------------------------------PART2-------------------------------------

1.缺失值处理-查看缺失值、删除缺失值、填充缺失值

---------查看缺失值---------

excel中查看缺失值的方式有两种:一种是选中列查看右下角的计数值;另一种是利用定位条件(ctrl+G),利用空格进行定位

python中也有两种方式:一种是用.info()获取数据类型时会显示各列非空值个数;另一种是用isnull()来返回boolean类型来显示表数据中数据为空的位置


python查看naarry前几条 python查看前五行_python 查看excel 多少行_07

这里我在原始excel数据表中把性别列的第二个数据删掉为空了

python查看naarry前几条 python查看前五行_clistctrl获取选中行数据_08


---------删除缺失值---------

excel中直接选中缺失值,右键删除即可,但删除的是缺失值所在的整行数据;

python中删除空值有2种情况:一种空白值只出现在某些行的某些地方,并非一整行全是空值,采用的是dropna()方法,默认删除含有缺失值的行,也是直接把缺失值所在的一整行全部删掉了;第二种是删除空白行,方法是传入how=all参数,这样就只会删除全为空值的行,不全为空值的行就不会被删除,因此结果中有些行仍旧会含有空值。


python查看naarry前几条 python查看前五行_clistctrl获取选中行数据_09


python查看naarry前几条 python查看前五行_python 查看excel 多少行_10

新建一个含有空行的DateFrame

python查看naarry前几条 python查看前五行_python查看naarry前几条_11

删除空行之后的结果显示

---------填充缺失值---------

缺失数据不超过30%,则尽量不删除,而采用填充的方式。填充可以是数字0、平均值、众数等

情况一:全部填充一样的数字,假设填充的是数字0

在excel中先使用定位条件定位到所有的缺失值,再在第一个缺失值的单元格填入数字0,再按ctrl+enter键填充0;

python中使用fillna(0);


python查看naarry前几条 python查看前五行_python多级索引变成列_12

就是在上面自建的那个表格的基础上操作的

情况二:不同列填充不一样的值

excel中单独选中某一列中所有的空值,再用类似全填充的方式填充;

python中指定列名,用字典的方式,也可指定多个列名


python查看naarry前几条 python查看前五行_clistctrl获取选中行数据_13


python查看naarry前几条 python查看前五行_python检查并删掉有空值的表_14


2.重复值处理-一般直接做删除处理

这个有点意思,我还花了点时间思考琢磨了一下结果。我以为是只要有重复的就会被删掉。

drop_duplicates()---首先是列全选,其次就是删除两行所有列值相同的,下面这里就是2、3行的编号、客户姓名、唯一识别码和成交时间都一样,所以删除了其中的一行,默认保留的是第一个重复的值;


python查看naarry前几条 python查看前五行_python检查并删掉有空值的表_15


drop_duplicates(subset=["客户姓名","唯一识别码"])---删除所有行中x列和y列对应的行值重复的行。这里就是对比所有行中客户姓名列和唯一识别码列相同的,这里2和3的客户姓名和唯一识别码是一样的,其次就是4和5对应的客户姓名和唯一识别码也是一样的,因此删掉的是索引为3、5的行;同时可传入参数keep="last"或者"first"或者False来设置保留的是第一个重复的值还是最后一个重复的值,还是全部删除;


python查看naarry前几条 python查看前五行_clistctrl获取选中行数据_16


python查看naarry前几条 python查看前五行_python 查看excel 多少行_17

这就是重复的全部删除的情况

3.异常值的检测和处理

---------检测异常值---------

发现异常值的三种方式:

方式1-根据业务经验划定不同指标的正常范围,超过该范围的值就是异常值;

方式2-通过绘制箱线图,把大于(小于)箱型图上边缘(下边缘)的点称为异常值;

方式3-服从正态分布的数据可使用3-sigmoid原则,如果一个数值与平均值之间的偏差超过3倍标准差,则这个值就被认为是异常的;

---------处理异常值---------

处理异常值的几种方式:

方式1-先筛选出异常值,再进行删除;

方式2-对异常值进行填充;

4.数据类型转换

---------Pandas中的常见数据类型---------

int-整型数

float-浮点数,即含有小数点的数

object-对象类型,用O表示

string-字符串类型,用S表示,S10表示长度为10的字符串

unicode-固定长度的unicode类型,跟字符串定义方式一样

datetime64[ns]-时间格式

---------查看数据类型---------

info-查看全部的数据类型

dtype-查看某一列的数据类型


python查看naarry前几条 python查看前五行_python查看naarry前几条_18


python查看naarry前几条 python查看前五行_python多级索引变成列_19


---------转换数据类型---------

astype("新的数据类型")


python查看naarry前几条 python查看前五行_python检查并删掉有空值的表_20


5.索引设置

如果原始数据没有索引,则加载到python之后默认是以数字作为索引,而且是从0开始的;


python查看naarry前几条 python查看前五行_python 查看excel 多少行_21


---------设置行索引---------index=[ ]


python查看naarry前几条 python查看前五行_python查看naarry前几条_22


---------设置列索引---------columns=[ ]


python查看naarry前几条 python查看前五行_python多级索引变成列_23


---------重新设置索引---------

set_index()

当传入多个值时可设置层次化索引,在列中含有多个重复值时比较多使用;


python查看naarry前几条 python查看前五行_clistctrl获取选中行数据_24


---------重命名索引---------

rename(index={},columns={})


python查看naarry前几条 python查看前五行_python查看naarry前几条_25


---------重置索引---------

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

reset_index(level=None,drop=False,inplace=False),如果没有参数,则默认为全部索引,即默认把索引全部转换为columns。

level-指定要将层次化索引的第几级别转化为columns,第一个索引为0级,第二个索引为1级;

drop-指定是否将原索引删掉,即不作为一个新的columns,默认为False,即不删除原索引;

inplace-指定是否修改原数据表;

我自己用了一点方式让它符合书中的样子再继续操作:


python查看naarry前几条 python查看前五行_python多级索引变成列_26

操作了一下使数据是分层索引的形式

python查看naarry前几条 python查看前五行_python查看naarry前几条_27

默认全部恢复成数据列

python查看naarry前几条 python查看前五行_clistctrl获取选中行数据_28

将索引0列恢复成数据列

python查看naarry前几条 python查看前五行_python查看naarry前几条_29

这里直接将原索引Z1和Z2列删掉了