前言
pandas数据清洗,一般包括对重复值的处理,对缺失值的处理及异常值的处理;下面分别介绍。
对重复值识别及处理
对重复值的处理,一般会涉及到对重复值的判断,及对重复值的删除操作,会使用到df.duplicated()函数及df.drop_duplicates()。
下面重点介绍一下df.duplicated()函数。
df.duplicated()
df.duplicated()是一个用于检测DataFrame中重复行的函数。它返回一个布尔型的Series,表示每一行是否为重复行。如果一行是重复行,则对应的布尔值为True,否则为False。
df.duplicated(subset=None, keep='first')
该函数的常用参数包括:
subset:指定要考虑的列,默认情况下会考虑所有列。可以传入一个列名或者列名的列表来指定特定的列进行重复行检测。
keep:指定保留哪一个重复行。默认值为’first’,表示保留第一次出现的重复行;可以设置为’last’,表示保留最后一次出现的重复行;也可以设置为False,表示所有重复行都标记为True。
df.drop_duplicates函数
df.drop_duplicates(subset=None, keep=‘first’,inplace=False)
实战
import pandas as pd
df = pd.DataFrame({
'brand': ['YumYum','YumYum', 'YumYum', 'Indomie', 'Indomie', 'Indomie'],
'style': ['cup','cup', 'cup', 'cup', 'pack', 'pack'],
'rating': [4, 4, 4, 3.5, 15, 5]})
print(df)
print(any(df.duplicated()))
print(df.drop_duplicates())
##print(df.drop_duplicates(inplace =True))
brand style rating
0 YumYum cup 4.0
1 YumYum cup 4.0
2 YumYum cup 4.0
3 Indomie cup 3.5
4 Indomie pack 15.0
5 Indomie pack 5.0
True
brand style rating
0 YumYum cup 4.0
3 Indomie cup 3.5
4 Indomie pack 15.0
5 Indomie pack 5.0
上述例子中,使用了any(df.duplicated())判断数据集中是否有重复值,删除使用的是df.drop_duplicates(),一切参数都是默认的,需要注意的是如果你重新打印df结果和第一次一样,因为df.drop_duplicates()中inplace默认为False,如果你真的想删除重复值可以设置inplace =True;
对缺失值的识别及处理
对缺失值(python中为NaN)识别一般用df.isnull(),对缺失值的处理一般有删除和填充两种方法,删除的话一般使用df.dropna()函数
填充的话一般使用df.fillna()来填充缺失值。
df.dropna()
df.dropna() 方法可以用来删除DataFrame中包含任何NaN值的行或列。默认情况下,它会删除包含至少一个NaN值的行。
基本用法:
# 删除包