全国免费咨询:

13245491521

VR图标白色 VR图标黑色
X

中高端软件定制开发服务商

与我们取得联系

13245491521     13245491521

2019-01-22_还在为数据清洗抓狂?这里有一个简单实用的清洗代码集

您的位置:首页 >> 新闻 >> 行业资讯

还在为数据清洗抓狂?这里有一个简单实用的清洗代码集 选自towardsdatascience 作者:Admond Lee 机器之心编译 参与:Geek AI、张倩 数据清洗是数据科学家逃不掉的一份苦差事。为了让这项工作不那么痛苦,本文作者分享了自己的数据清洗代码集。 现实世界中的数据通常质量不高,作为一名数据科学家,有时也需要承担一部分数据清洗的工作,这要求数据科学家们应该能够在进行数据分析或建模工作之前执行数据清洗步骤,从而确保数据的质量最佳。 不过长话短说,在数据科学领域工作了很长一段时间后,我切实感受到了在进行数据分析、可视化和建模工作之前,进行数据清洗工作是多么痛苦。 不管你承不承认,数据清洗着实不是一件简单的任务,大多数情况下这项工作是十分耗时而乏味的,但它又是十分重要的。 如果你经历过数据清洗的过程,你就会明白我的意思。而这正是撰写这篇文章的目的——让读者更轻松地进行数据清洗工作。 事实上,我在不久前意识到,在进行数据清洗时,有一些数据具有相似的模式。也正是从那时起,我开始整理并编译了一些数据清洗代码(见下文),我认为这些代码也适用于其它的常见场景。 由于这些常见的场景涉及到不同类型的数据集,因此本文更加侧重于展示和解释这些代码可以用于完成哪些工作,以便读者更加方便地使用它们。 我的数据清洗小工具箱 在下面的代码片段中,数据清洗代码被封装在了一些函数中,代码的目的十分直观。你可以直接使用这些代码,无需将它们嵌入到需要进行少量参数修改的函数中。 1. 删除多列数据 defdrop_multiple_col(col_names_list,df): ''' AIM-Dropmultiplecolumnsbasedontheircolumnnames INPUT-Listofcolumnnames,df OUTPUT-updateddfwithdroppedcolumns ------ ''' df.drop(col_names_list,axis=1,inplace=True) returndf 有时,并不是所有列的数据都对我们的数据分析工作有用。因此,「df.drop」可以方便地删掉你选定的列。 2. 转换 Dtypes defchange_dtypes(col_int,col_float,df): ''' AIM-Changingdtypestosavememory INPUT-Listofcolumnnames(int,float),df OUTPUT-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): #Convertcategoricalvariabletonumericalvariable num_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_1 df['col_1'].replace('\n','',regex=True,inplace=True) #removeallthecharactersafter(includingforcolumn-col_1 df['col_1'].replace('&#.*','',regex=True,inplace=True) 有时你可能会看到一行新的字符,或在字符串列中看到一些奇怪的符号。你可以很容易地使用 df['col_1'].replace 来处理该问题,其中「col_1」是数据帧 df 中的一列。 6. 删除列中的空格 defremove_col_white_space(df): #removewhitespaceatthebeginningofstring df[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-df OUTPUT-updateddfwithnewdatetimeformat ------ ''' df.insert(loc=2,column='timestamp',value=pd.to_datetime(df.transdate,format='%Y-%m-%d%H:%M:%S.%f')) 在处理时间序列数据时,你可能会遇到字符串格式的时间戳列。这意味着我们可能不得不将字符串格式的数据转换为根据我们的需求指定的日期「datetime」格式,以便使用这些数据进行有意义的分析和展示。 原文链接:https://towardsdatascience.com/the-simple-yet-practical-data-cleaning-codes-ad27c4ce0a38 本文为机器之心编译,转载请联系本公众号获得授权。 ?------------------------------------------------ 加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com 投稿或寻求报道:content@jiqizhixin.com 广告 & 商务合作:bd@jiqizhixin.com

上一篇:2020-07-20_从ACL 2020看知识图谱研究进展 下一篇:2021-05-06_「转」一双烧掉的假鞋送往耐克总部

TAG标签:

21
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版域名注册主机空间手机网站建设网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。
项目经理在线

相关阅读 更多>>

猜您喜欢更多>>

我们已经准备好了,你呢?
2022我们与您携手共赢,为您的企业营销保驾护航!

不达标就退款

高性价比建站

免费网站代备案

1对1原创设计服务

7×24小时售后支持

 

全国免费咨询:

13245491521

业务咨询:13245491521 / 13245491521

节假值班:13245491521()

联系地址:

Copyright © 2019-2025      ICP备案:沪ICP备19027192号-6 法律顾问:律师XXX支持

在线
客服

技术在线服务时间:9:00-20:00

在网站开发,您对接的直接是技术员,而非客服传话!

电话
咨询

13245491521
7*24小时客服热线

13245491521
项目经理手机

微信
咨询

加微信获取报价