专栏首页ATYUN订阅号数据清理的简要介绍

数据清理的简要介绍

编译:yxy

出品:ATYUN订阅号

清理数据应该是数据科学(DS)或者机器学习(ML)工作流程的第一步。如果数据没有清理干净,你将很难在探索中的看到实际重要的部分。一旦你去训练你的ML模型,他们也将更难以训练。也就是说,如果你想充分利用你的数据,它应该是干净的。

在数据科学和机器学习的环境中,数据清理意味着过滤和修改数据,使数据更容易探索,理解和建模。过滤掉你不想要或不需要的部分,这样你就不需要查看或处理它们。修改你虽然需要但不是你需要的格式的部分,以便你可以正确使用它们。

在本文中,我们将讲解一些常见的数据清理,以及可以用来执行它的pandas代码!

缺失数据

大型数据集几乎不可能毫无瑕疵。也就是说,不是所有的数据点都具有其所有特征变量的值。通常会有一些缺失值,当我们在pandas中使用pd.read_csv()等方式加载数据时,缺失数据往往被标记为NaN或None。有许原因可能导致数据的缺失。比如,收集数据的人忘记了或者他们在数据收集过程进行到一半才开始收集特征变量。

在使用数据集之前,必须处理缺失的数据。例如,假设你正处于数据探索过程的中间,并且你发现关于数据的一些关键信息来自某个特征变量,比如变量“F”。但稍后你会发现数据集中95%的变量F值都是NaN。你不可能从一个仅代表数据集5%的变量中得出关于数据集的任何具体结论!当你开始训练你的ML模型时,NaN也可能被你的程序视为0或者无穷大,这种训练完全没有意义!

在pandas中,有几种方法可以处理中缺失的数据:

  • 检查NAN: pd.isnull(object)检测数据中的缺失值,命令会检测“NaN”和“None”
  • 删除缺失的数据: df.dropna(axis=0, how=’any’)返回已删除包含NaN的任何数据点的数据帧。
  • 替换缺失的数据:df.replace(to_replace=None, value=None)将“to_replace”中给出的值替换为“value”给出的值。如果你知道你想要使用的特征变量的值,这种操作就很有用。
  • 删除一个特征: df.drop(‘feature_variable_name’, axis=1)如果你发现某个特征变量在数据集中具有90%以上都是NaN值,那就有理由将其从数据集中全部删除。

离群值

数据集中的离群值(或者说异常值)是一个杂集。一方面,它们可能包含关键信息,因为它们与主体部分有很大区别。另一方面,由于我们必须看得更远才能看到离群值,所以他们抛弃了我们对主体部分的观察。在ML方面,包含离群值的训练可能会使你的模型得到很好的概括性,但也会远离从大多数数据所在的主体部分。

一般来说,我推荐有无离群值的情况都要考虑。无论是否有离群值,都可以研究你的数据。如果你认为ML模型需要它们,那么选择一个足够稳健的方法来处理它们。如果你发现那些异常值对于获取数据信息和数据建模没有用处,那么最好删除它们,如上一节所示。

此外,如果想要过滤掉这些异常值,可以使用以下方法:

# Get the 98th and 2nd percentile as the limits of our outliers
upper_limit= np.percentile(train_df.logerror.values,98)
lower_limit= np.percentile(train_df.logerror.values,2)
# Filter the outliers from the dataframe
data[‘target’].loc[train_df[‘target’]>upper_limit]= upper_limit data[‘target’].loc[train_df[‘target’]<lower_limit]= lower_limit

包含异常值的图(左)和删除了异常值的直方图(右)

错误和重复的数据

错误的数据的意思是不应存在或者完全错误的数据点或值。例如,假设你的一个特征变量称为“性别”,其中大多数值是“男性”或“女性”。但是当你浏览数据集时,你会注意到有几个数据点的“性别”的值为67.3。显然67.3在这个变量的环境中没有任何意义。此外,如果你尝试将“性别”特征变量转换为分类浮点数:male = 0.0且female = 1.0,那么,你需要额外做一个:67.3 = 2.0!

重复的数据是数据集中完全重复的数据点。如果有太多这种数据,它会影响ML模型的训练。如前所述,可以简单地从你的数据中删除重复数据。

可以通过删除或使用某些智能替换来处理错误数据。比如,我们可能会查看所有具有67.3性别的数据点,然后发现这些数据点,正确的值应为“女性”。因此,我们只需将所有67.3转换为“女性”即可。这样做的好处是我们已经有效地获得了用于ML训练的的数据点,而不必直接删除。pandas中的转换如下:

value_map= {'male':'male','female':'female','67.3':'female'}
pd_dataframe['gender'].map(value_map)

不相关的特征

并非所有特征的价值都相同。有些特征可能根本不需要!例如,你查看过去一年从亚马逊购买的书籍数据集,其中一个特征变量称为“font-type”,表示书中使用的字体类型。这与预测图书的销售情况是无关的!你可以放心的删除它,如下所示:

df.drop(‘feature_variable_name’, axis=1)

这样做会减少你查看的内容,从而使你更容易探索数据集。它还有助于更快、更简单的训练你的ML模型,因为你不需要处理那么多数据。如果你不确定变量是否重要,你可以研究完数据集之后再决定。计算特征变量和目标输出之间的相关性矩阵可以帮助确定变量的重要性。

当你的特征变量无用时

标准化

每个特征变量中的所有数据都应采用相同的标准化格式。这会让你的数据探索和建模的变得更加容易。例如,让我们仍然以“男性”或“女性”的值来举例说明“性别”变量。如果数据是由人类收集的,那么你可能会得到不同的值:

  • male, female (正常的)
  • MALE, FEMALE (大写的)
  • Male, Female (首字母大写的)
  • Make, Femall (写错的)

如果我们要继续将特征变量转换为分类浮点数,我们比如有很多个值!也就是说,实际上我们会像下面这样做:

{
    'male':0,
    'female':1,
    'MALE':2,
    'FEMALE':3,
    'Male':4,
    'Female':5,
    'Make':6,
    'Femall':7
}

有几种方法可以处理这种情况。比如,让所有字母小写或者让首字母大写,如下:

# Make the whole string lower case
s.lower()
# Make the first letter capitalised
s.capitalize()

如果有拼写错误,那么你需要使用映射函数:

view source

value_map= {'Make':'male','Femall':'female'}
pd_dataframe['gender'].map(value_map)

本文分享自微信公众号 - ATYUN订阅号(atyun_com)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据科学中的强大思维

    人类擅长在所有的事物中寻找对应的模式。真模式,假模式,命名的模式。我们是那种能在薯片上找到猫王的脸的生物。如果你倾向于将模式与洞察力等同起来,请记住有三种数据模...

    AiTechYun
  • 2020年数据科学的四大最热门趋势

    全世界各行各业的公司都在经历着人们所说的数字化转型。也就是说,企业正在采用传统的业务流程,例如招聘、营销、定价和策略,并使用数字技术使其质量提高10倍。

    AiTechYun
  • 研究人员开发拖放数据分析工具:北极星

    在《钢铁侠》的电影中,托尼·斯塔克使用全息电脑将三维数据投射到稀薄的空气中,用手操纵这些数据,并找到解决超级英雄问题的方法。同样,麻省理工学院和布朗大学的研究人...

    AiTechYun
  • 【钱塘号专栏】“数据化”是未来企业生死的课题

      作为传统工业的代表,通用电气都想通了,和人家说,我已经拥有千万级的数据点,传统企业还有什么可犹豫的?

    钱塘数据
  • 想靠大数据创业,你需要了解什么?

    大数据存在的价值是毋庸置疑的,但是能不能赚钱就是和很多因素都相关,例如电子商务行业,大数据的价值体现就通过用户价值体现出来,大数据的价值有的时候和用户的数量是息...

    华章科技
  • 凯哥讲数据中台[006]企业数据利用的四大陷进

    数据的重要性在当今已经无需在多言,所有的企业都意识到数据的重要性,都希望利用数据来驱动业务的发展。

    凯哥
  • 【职业】现在学习大数据晚吗?

    ? PPV课网站上经常有人问这个问题,在回答这个问题之前,先看一段对话: Q:你好老师,我想问下现在从事大数据相关的行业是不是有点晚了, 现在大数据这块就业就...

    小莹莹
  • 【我读《Big Data》】序言部分--拥抱“大数据时代”

    正文之前 Big Data! A Revolution That Will Transform How We Live, Work, And Think! 大数...

    用户1687088
  • 十张图看懂未来大数据世界

    随着互联网云时代的来临,大数据与云计算就像一个硬币的正反两面,势必会影响到社会生活的方方面面,改变我们现有的规则和秩序。伴随着大数据与云计算产业的不断发展,未来...

    华章科技
  • SODA理事会理事、苏打数据CEO高丰:只有数据流通,数据才能创造价值

    12月1日下午,由上海大数据联盟、数据猿主办的第20期魔方大数据在上海宝华万豪酒店成功举办。本期魔方大数据以“政务大数据”为主题,邀请了技术方和产业方大咖共聚一...

    数据猿

扫码关注云+社区

领取腾讯云代金券