搜索
写经验 领红包
 > 电器

数据清洗如何做(数据清洗需要清洗哪些数据应使用哪些方法)

导语:干货分享 | 推荐一个更高效的数据清洗方法,建议收藏

作者:俊欣

来源:关于数据分析与可视化

今天来分享一个高效率的数据清洗的方法,毕竟我们平常在工作和生活当中经常会遇到需要去处理杂七杂八的数据集,有一些数据集中有缺失值、有些数据集中有极值、重复值等等。这次用到的数据集样本在文末有获取的办法。

01、导入库和读取数据

我们首先导入所需要用到的库,并且读取数据

import pandas as pdimport numpy as npdf = pd.read_csv()

我们先来大致地看一下数据集中各个特征值的情况,通过info()这个方法

df.info()

02、去除掉缺失值和重复值

我们看到上面的“History”这一列,只有697条数据不是空值,那就意味着还有另外3条数据是空值,与之对应的方式有将含有缺失值的数据删掉,或者将缺失值的部分替换为是中位数或者是平均数,

34;箱型图来检测异常值SimHei&39;样本数据SimHei& Driver code

而对待异常值的方式,首先最直接的就是将异常值给去掉,我们检测到异常值所在的行数,然后删掉该行,当然当数据集当中的异常值数量很多的时候,移除掉必然会影响数据集的完整性,从而影响建模最后的效果

def remove_outliers1(df, col_name):    low = np.quantile(df[col_name], 0.05)    high = np.quantile(df[col_name], 0.95)    return df[df[col_name].between(low, high, inclusive=True)]

其次我们可以将异常值替换成其他的值,例如上面箱型图提到的上四分位数或者是下四分位数

def remove_outliers2(df, col_name):    low_num = np.quantile(df[col_name], 0.05)    high_num = np.quantile(df[col_name], 0.95)    df.loc[df[col_name] > high_num, col_name] = high_num     df.loc[df[col_name] < low_num , col_name] = low_num    return df

因此回到上面用到的样本数据集,我们将之前数据清洗的函数统统整合起来,用pipe()的方法来串联起来,形成一个数据清洗的标准模板

def fill_missing_values_and_drop_duplicates(df, col_name):    val = df[col_name].value_counts().index.tolist()[0]    df[col_name].fillna(val, inplace = True)    return df.drop_duplicates()     def remove_outliers2(df, col_name):    low_num = np.quantile(df[col_name], 0.05)    high_num = np.quantile(df[col_name], 0.95)    df.loc[df[col_name] > float(high_num), col_name] = high_num     return df    def convert_dtypes(df):    print(df.dtypes)    return df.convert_dtypes()  df_cleaned = (df.pipe(fill_missing_values_and_drop_duplicates, &39;).                pipe(remove_outliers2, &39;).                pipe(convert_dtypes))

06、写在最后

所以我们之后再数据清洗的过程当中,可以将这种程序化的清洗步骤封装成一个个函数,然后用pipe()串联起来,用在每一个数据分析的项目当中,更快地提高我们工作和分析的效率。

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小樊创作整理编辑!