使用Pandas进行数据清洗

举报
Python新视野 发表于 2021/09/09 23:16:46 2021/09/09
【摘要】 数据清洗的目的是修正异常值,以更好地进行运算和观察结果。通过Pandas对序列或数据帧的清洗分为两个步骤:异常检测和数据修正。 1.异常检测 Pandas中的空值用‘NaN’表示,可以通过调用isnul...

数据清洗的目的是修正异常值,以更好地进行运算和观察结果。通过Pandas对序列或数据帧的清洗分为两个步骤:异常检测和数据修正。

1.异常检测
Pandas中的空值用‘NaN’表示,可以通过调用isnullnotnull来检测序列对象和数据帧对象是否为异常值。

import pandas as pd

dic = {'name': ['Tom', 'Tony', 'Jack'], 'age': [16, 17, 18], 'class': [1, None, None]}
df = pd.DataFrame(dic)
df.isnull()

  
 

在这里插入图片描述

2.数据修正
数据检测完毕之后,需要对数据进行修正。

(1)填充值:将序列或者数据帧中的异常值“NaN”使用其他数据进行填充。

import pandas as pd

dic = {'name': ['Tom', 'Tony', 'Jack'], 'age': [16, 17, 18], 'class': [1, None, None]}
df = pd.DataFrame(dic)
df.fillna(0)

  
 

在这里插入图片描述

(2)替换值:对于一些明显出错的信息,如下列age列中的‘117’,‘118’就可以使用replace进行替换。

import pandas as pd

dic = {'name': ['Tom', 'Tony', 'Jack'], 'age': [16, 117, 118], 'class': [1, 1, 1]}
df = pd.DataFrame(dic)
df.replace({117:17, 118:18})

  
 

在这里插入图片描述

(3)删除值:删除异常值的同时会删除对应的数据行,可以使用dropna方法进行清除异常数据。
dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)
参数

  • axis:默认为0,删除包含缺失值的行。若设置为1,删除包含缺失值的列(不建议这样做,因为可能删除一个特征)。
  • how:默认值any,如果存在NaN值,就删除该行或该列。若设置为all,当所有值都是NaN值,才删除该行或该列。
  • thresh:表示有效数据量的最小要求,如thresh=1,该行或该列至少有一个不是NaN值时会将其保留。
  • subset:在特定的字集中寻找NaN值。
  • inplace:表示是否在原数据上操作,如果设为True,则表示直接修改原数据;如果设为False,则表示修改原数据的副本,返回新数据。
import pandas as pd

dic = {'name': ['Tom', 'Tony', 'Jack'], 'age': [16, 17, 18], 'class': [1, None, None]}
df = pd.DataFrame(dic)

# 当thresh设置为2时,将不会修改任何数据
df.dropna(axis=0, thresh=3)

  
 

在这里插入图片描述

文章来源: blog.csdn.net,作者:Dream丶Killer,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_43965708/article/details/114452300

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。