数据分析:Pandas数据预处理

常见不规整数据主要有:

  1. 缺失数据
  2. 重复数据
  3. 异常数据

1. 缺失值处理

1.1 缺失值查看

Python缺失值一般用NaN表示。

  • info():可返回每一列的缺失情况。
  • isnull():判断哪个值是缺失值。如果是缺失值,则返回True。

1.2 缺失值删除

  • dropna():默认删除有缺失值的行。 只要一行有缺失值,就把整行的值删掉。
    dropna(how = “all”):删除空白行,只会删除全为空值的行。

1.3 缺失值填充

一般情况下,只要缺失数据比例不过高,即不超过30%,尽量不删除,而是选择填充。

  • df.fillna({“列1”:“填充值1”, “列2”:“填充值2”}):对数据表中的所有缺失值进行填充。

2. 重复值处理

  • drop_duplicates():默认删除重复值, 且保留第一个(行)的值。
    drop_duplicates(subset = “列1”):只删除列1的重复值。
    drop_duplicates(subset = [“列1”, “列2”,“列3”],keep = first):删除多列重复值, 列名以列表的形式传给参数subset。
    keep:自定义删除重复项时保留哪个。
    • first:默认值,保留第一个。
    • last:保留最后一个。
    • False:把重复值全部删除。

3. 异常值的检测与处理

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

3.1 异常值检测(p82)

  1. 根据业务经验,划定不同指标的正常范围,超过该范围的值,算作异常值。
  2. 通过绘制箱型图,把大于箱型图的上边缘,以及小于箱型图下边缘的点,称为异常值。
  3. 如果数据服从正态分布,则可以利用3δ原则;如果一个值与平均值之间的偏差超过3倍的标准差,那么我们就认为这个值为异常值。

3.2 异常值处理

  1. 最常用的处理方式:删除。
  2. 把异常值当缺失值填充。
    先把异常值筛选出来, 然后用replace()替换。
  3. 把异常值当特殊情况, 研究出异常值出现的原因。

4. 数据类型转换

4.1 数据类型

Python主要有6种数据类型。

类型说明
int整型数,即整数
float浮点数,即含有小数点的数
objectPython对象类型,用O表示
string_字符串类型,经常用S表示。 S10,表示长度为10的字符串。
unicode_固定长度的unicode类型,跟字符串定义方式一样。
datetime64[ns]表示时间格式

查看数据类型的方式:

  • info():获取每一列的数据类型。
  • dtype():获取某一列数据类。
    Sample: df["A"].dtype,查看A列的类型

4.2 类型转换

  • astype():对数据类型进行转换。
    Sample: df["A"].astype("float64"),将A列的数据类型准换成float。

5. 索引设置

索引是查找数据的依据,设置索引的目的,是便于我们查找数据。

5.1 为无索引表添加索引

  • df.columns = ["A","B","C","D"]:为df表添加索引
  • df.index = [0,1,2,3,4]:为df表添加索引

5.2 重新设置索引

  • df.set_index(“A”):用A列作为索引列。
    层次化索引:给set_index()传入多个列名,一个表中用多列做索引的方式称为层次化索引。

5.3 重命名索引

  • df.rename(columns = {“旧名1”:“新名1”, “旧名2”:“新名2”},index = {“旧名1”:“新名1”, “旧名2”:“新名2”}):新旧名用键值对表示。

5.4 重置索引

重置索引,主要用在层次化索引表中,是将索引当作一个columns进行返回,变成常规列。
df.rest_index(level =None,drop = False, inplace = False)

  • level:指定要将层次化索引的第几级别转化为columns。第一个索引为0级。
  • drop:指定是否将原索引删掉,即不作为新的columns。默认是False,即不删除原索引。
  • inplace:用来指定是否修改原数据表。

Sample:

  • df.reset_index():默认将所有index转化成columns。
  • df.reset_index(level= 0):将第0级索引转化为columns。
  • df.reset_index(drop = True):将原索引删除, 不加入columns。
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值