0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个简单实用的清洗代码集

电子工程师 来源:lq 2019-01-23 11:42 次阅读

数据清洗是数据科学家逃不掉的一份苦差事。为了让这项工作不那么痛苦,本文作者分享了自己的数据清洗代码集。

现实世界中的数据通常质量不高,作为一名数据科学家,有时也需要承担一部分数据清洗的工作,这要求数据科学家们应该能够在进行数据分析或建模工作之前执行数据清洗步骤,从而确保数据的质量最佳。

不过长话短说,在数据科学领域工作了很长一段时间后,我切实感受到了在进行数据分析、可视化和建模工作之前,进行数据清洗工作是多么痛苦。

不管你承不承认,数据清洗着实不是一件简单的任务,大多数情况下这项工作是十分耗时而乏味的,但它又是十分重要的。

如果你经历过数据清洗的过程,你就会明白我的意思。而这正是撰写这篇文章的目的——让读者更轻松地进行数据清洗工作。

事实上,我在不久前意识到,在进行数据清洗时,有一些数据具有相似的模式。也正是从那时起,我开始整理并编译了一些数据清洗代码(见下文),我认为这些代码也适用于其它的常见场景。

由于这些常见的场景涉及到不同类型的数据集,因此本文更加侧重于展示和解释这些代码可以用于完成哪些工作,以便读者更加方便地使用它们。

我的数据清洗小工具箱

在下面的代码片段中,数据清洗代码被封装在了一些函数中,代码的目的十分直观。你可以直接使用这些代码,无需将它们嵌入到需要进行少量参数修改的函数中。

1. 删除多列数据

defdrop_multiple_col(col_names_list,df):'''AIM->DropmultiplecolumnsbasedontheircolumnnamesINPUT->Listofcolumnnames,dfOUTPUT->updateddfwithdroppedcolumns------'''df.drop(col_names_list,axis=1,inplace=True)returndf

有时,并不是所有列的数据都对我们的数据分析工作有用。因此,「df.drop」可以方便地删掉你选定的列。

2. 转换 Dtypes

defchange_dtypes(col_int,col_float,df):'''AIM->ChangingdtypestosavememoryINPUT->Listofcolumnnames(int,float),dfOUTPUT->updateddfwithsmallermemory------'''df[col_int]=df[col_int].astype('int32')df[col_float]=df[col_float].astype('float32')

当我们面对更大的数据集时,我们需要对「dtypes」进行转换,从而节省内存。如果你有兴趣学习如何使用「Pandas」来处理大数据,我强烈推荐你阅读「Why and How to Use Pandas with Large Data」这篇文章(https://towardsdatascience.com/why-and-how-to-use-pandas-with-large-data-9594dda2ea4c)。

3. 将分类变量转换为数值变量

defconvert_cat2num(df):#Convertcategoricalvariabletonumericalvariablenum_encode={'col_1':{'YES':1,'NO':0},'col_2':{'WON':1,'LOSE':0,'DRAW':0}}df.replace(num_encode,inplace=True)

有一些机器学习模型要求变量是以数值形式存在的。这时,我们就需要将分类变量转换成数值变量然后再将它们作为模型的输入。对于数据可视化任务来说,我建议大家保留分类变量,从而让可视化结果有更明确的解释,便于理解。

4. 检查缺失的数据

defcheck_missing_data(df):#checkforanymissingdatainthedf(displayindescendingorder)returndf.isnull().sum().sort_values(ascending=False)

如果你想要检查每一列中有多少缺失的数据,这可能是最快的方法。这种方法可以让你更清楚地知道哪些列有更多的缺失数据,帮助你决定接下来在数据清洗和数据分析工作中应该采取怎样的行动。

5. 删除列中的字符串

defremove_col_str(df):#removeaportionofstringinadataframecolumn-col_1df['col_1'].replace(' ','',regex=True,inplace=True)#removeallthecharactersafter&#(including&#)forcolumn-col_1df['col_1'].replace('&#.*','',regex=True,inplace=True)

有时你可能会看到一行新的字符,或在字符串列中看到一些奇怪的符号。你可以很容易地使用 df['col_1'].replace 来处理该问题,其中「col_1」是数据帧 df 中的一列。

6. 删除列中的空格

defremove_col_white_space(df):#removewhitespaceatthebeginningofstringdf[col]=df[col].str.lstrip()

当数据十分混乱时,很多意想不到的情况都会发生。在字符串的开头有一些空格是很常见的。因此,当你想要删除列中字符串开头的空格时,这种方法很实用。

7. 将两列字符串数据(在一定条件下)拼接起来

defconcat_col_str_condition(df):#concat2columnswithstringsifthelast3lettersofthefirstcolumnare'pil'mask=df['col_1'].str.endswith('pil',na=False)col_new=df[mask]['col_1']+df[mask]['col_2']col_new.replace('pil','',regex=True,inplace=True)#replacethe'pil'withemtpyspace

当你希望在一定条件下将两列字符串数据组合在一起时,这种方法很有用。例如,你希望当第一列以某些特定的字母结尾时,将第一列和第二列数据拼接在一起。根据你的需要,还可以在拼接工作完成后将结尾的字母删除掉。

8. 转换时间戳(从字符串类型转换为日期「DateTime」格式)

defconvert_str_datetime(df):'''AIM->Convertdatetime(String)todatetime(formatwewant)INPUT->dfOUTPUT->updateddfwithnewdatetimeformat------'''df.insert(loc=2,column='timestamp',value=pd.to_datetime(df.transdate,format='%Y-%m-%d%H:%M:%S.%f'))

在处理时间序列数据时,你可能会遇到字符串格式的时间戳列。这意味着我们可能不得不将字符串格式的数据转换为根据我们的需求指定的日期「datetime」格式,以便使用这些数据进行有意义的分析和展示。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    3911

    浏览量

    61313
  • 数据集
    +关注

    关注

    4

    文章

    1179

    浏览量

    24364
  • 数据科学
    +关注

    关注

    0

    文章

    163

    浏览量

    9983

原文标题:还在为数据清洗抓狂?这里有一个简单实用的清洗代码集

文章出处:【微信号:aicapital,微信公众号:全球人工智能】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何清洗中央空调,清洗中央空调的方法

    应该包括三部分,第空调机体外壳和裸露部分,容易受污染的部件;第二过滤网清洗,是核心最重要部位;第三冷凝器和蒸发器部分,比较少见,与维修结合在块,相当于小系统的
    发表于 12-21 16:22

    pcb清洗技术。绝对有用

    清洗和漂洗使用两种不同性质的介质,漂洗般采用纯水;  3) 漂洗后要进行干燥。  该技术不足之处在于废液和废水处理是较为复杂和尚待彻底解决的题目。  4、溶剂
    发表于 07-23 20:41

    晶圆清洗、酸洗、腐蚀机

    苏州晶淼半导体公司 是半导体、LED、太阳能电池、MEMS、硅片硅料、集成电路于体的非标化生产相关清洗腐蚀设备的公司 目前与多家合作过 现正在找合作伙伴 !如果有意者 请联系我们。
    发表于 08-17 16:08

    清洗腐蚀设备 每一个制作商的需要

    苏州晶淼半导体公司 是半导体、LED、太阳能电池、MEMS、硅片硅料、集成电路于体的非标化生产相关清洗腐蚀设备的公司 目前与多家合作过 现正在找合作伙伴 !如果有意者 请联系我们。
    发表于 08-17 16:23

    清洗腐蚀机 LED芯片

    苏州晶淼半导体公司 是半导体、LED、太阳能电池、MEMS、硅片硅料、集成电路于体的非标化生产相关清洗腐蚀设备的公司 目前与多家合作过 现正在找合作伙伴 !如果有意者 请联系我们。
    发表于 08-17 16:31

    使用函数计算对表格存储中数据做简单清洗

    Compute) 是事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际
    发表于 05-16 23:03

    PCB为什么要进行清洗

    挫败或困惑。我也曾经经历过这种痛苦。为避免钻进类似的死胡同,我向大家介绍简单而又非常重要的小技巧:为其保持清洁!我这么说是什么意思呢?就是说如果PCB 没有保持适当的清洁,在 PCB 装配或修改
    发表于 09-20 15:08

    清洗误标注的开发和测试样本

    ,需要修正开发集中的标签吗?回忆下当初设立开发的目标——帮助你快速评估算法性能,从而判断算法 A 和 B 哪一个更好。如果开发集中误标注的部分的确影响了你的判断,那么花时间去修正这些标签就是值得
    发表于 12-19 09:48

    简单介绍ARM的指令

    处理器架构是处理器厂商为同一个系列的处理器规定的规范。ARM架构是种精简指令(RISC)架构,具有以下RISC架构特点:较大的通用寄
    发表于 08-18 10:58

    机房带电清洗养护技术的应用

    随着社会的发展和科技的进步,各行业精密设备管理及维护技术向高科技发展是社会的必然,带电清洗养护技术是将原来的事后停电“抢修”转为不受时空限制的带电作业;将表面简单的“擦、吹”转变为深度、彻底、全面
    发表于 09-10 08:45

    PCBA的清洗工艺介绍

    多品种PCBA清洗,通过人工的搬运进行可设置在产线的任何地方,离线在腔体内完成化学清洗(或者水基清洗)、水基漂洗、烘干全部工序。  
    发表于 02-05 15:27

    通过简单的Simulink模型生成代码

    本文首先通过简单的Simulink模型生成代码,然后将代码copy到
    发表于 08-18 06:22

    超声波清洗机拆解

    超声波清洗机 - 拆机与逆向工程这几天拆解了超声波清洗机,跟大家分享下。这个外接12V电源适配器来给充电电池充电,可以不带电源适配器工
    发表于 09-14 06:47

    分享简单的RTOS代码

    如何去编写简单的RTOS代码呢?
    发表于 11-29 06:13

    简单说明PCBA板清洗规则

    PCBA板不能随便清洗,需要有严格的要求和注意事项,以下是根据PCBA板清洗规则,对PCBA板清洗的目的、必要性以及过程中的一些注意事项做简单的说明。
    的头像 发表于 09-16 10:39 1655次阅读