数据清洗是对一些没有用的数据进行处理的过程。
很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要使数据分析更加准确,就需要对这些没有用的数据进行处理。
在这个教程中,我们将利用Pandas包来进行数据清洗。
上表包含了四种空数据:
如果我们要删除包含空字段的行,可以使用dropna()方法,语法格式如下:
DataFrame.dropna(axis=0,how='any',thresh=None,subset=None,inplace=False)参数说明:
我们可以通过isnull()判断各个单元格是否为空。
以上实例输出结果如下:
以上例子中我们看到Pandas把n/a和NA当作空数据,na不是空数据,不符合我们要求,我们可以指定空数据类型:
接下来的实例演示了删除包含空数据的行。
注意:默认情况下,dropna()方法返回一个新的DataFrame,不会修改源数据。
如果你要修改源数据DataFrame,可以使用inplace=True参数:
我们也可以移除指定列有空值的行:
移除ST_NUM列中字段值为空的行:
我们也可以fillna()方法来替换一些空字段:
使用12345替换空字段:
我们也可以指定某一个列来替换数据:
使用12345替换PID为空数据:
替换空单元格的常用方法是计算列的均值、中位数值或众数。
Pandas使用mean()、median()和mode()方法计算列的均值(所有值加起来的平均值)、中位数值(排序后排在中间的数)和众数(出现频率最高的数)。
使用mean()方法计算列的均值并替换空单元格:
以上实例输出结果如下,红框为计算的均值替换来空单元格:
使用median()方法计算列的中位数并替换空单元格:
以上实例输出结果如下,红框为计算的中位数替换来空单元格:
使用mode()方法计算列的众数并替换空单元格:
以上实例输出结果如下,红框为计算的众数替换来空单元格:
数据格式错误的单元格会使数据分析变得困难,甚至不可能。
我们可以通过包含空单元格的行,或者将列中的所有单元格转换为相同格式的数据。
以下实例会格式化日期:
Datedurationday12020-12-0150day22020-12-0240day32020-12-2645Pandas清洗错误数据数据错误也是很常见的情况,我们可以对错误的数据进行替换或移除。
以下实例会替换错误年龄的数据:
nameage0Google501Runoob402Taobao30也可以设置条件语句:
将age大于120的设置为120:
nameage0Google501Runoob1202Taobao120也可以将错误数据的行删除:
将age大于120的删除:
nameage0Google501Runoob40Pandas清洗重复数据如果我们要清洗重复数据,可以使用duplicated()和drop_duplicates()方法。
如果对应的数据是重复的,duplicated()会返回True,否则返回False。