当前位置: 首页 > 后端技术 > Python

8个Python数据清洗代码,随时可用

时间:2023-03-26 16:38:03 Python

大家好!不管你承认与否,数据清洗并不是一件容易的事,很多时候这项工作是非常耗时和繁琐的,但却是非常重要的。如果您曾经经历过数据清理过程,您就会明白我的意思。而这也正是写这篇文章的目的——让读者更容易进行数据清洗。其实我前段时间就意识到,在做数据清洗的时候,有一些数据是有相似模式的。也是从那时起,我整理并编译了一些我认为也适用于其他常见场景的数据清理代码(见下文)。由于这些常见的场景涉及不同类型的数据集,本文更侧重于展示和解释这些代码可以用来做什么,以便读者更方便地使用它们。数据清洗工具箱在下面的代码片段中,将数据清洗代码封装在一些函数中,代码的用途非常直观。您可以直接使用这些代码,而无需将它们嵌入需要少量参数修改的函数中。1.删除多列数据defdrop_multiple_col(col_names_list,df):'''AIM->根据列名删除多列INPUT->列名列表-dfOUTPUTcothwupdateddrof-----'''df.drop(col_names_list,axis=1,inplace=True)returndf有时候,并不是所有的列数据都对我们的数据分析工作有用。因此,“df.drop”可以方便地删除您选择的列。2.ConvertDtypesdefchange_dtypes(col_int,col_float,df):'''AIM->ChangingdtypestosavememoryINPUT->列名列表(int,float),dfmeOUTPUTwithmo->updatedsmallder------'''df[col_int]=df[col_int].astype('int32')df[col_float]=df[col_float].astype('float32')当我们面对更大的数据集时,我们需要转换'dtypes'以节省内存。3.将分类变量转换为数值变量defconvert_cat2num(df):#将分类变量转换为数值变量num_encode={'col_1':{'YES':1,'NO':0},'col_2':{'WON':1,'LOSE':0,'DRAW':0}}df.replace(num_encode,inplace=True)一些机器学习模型要求变量以数字形式存在。这时候我们就需要将分类变量转化为数值变量,然后作为模型的输入。对于数据可视化任务,我建议大家保留分类变量,这样可视化结果的解释更清晰,更容易理解。4.Checkformissingdatadefcheck_missing_data(df):#检查df中是否有缺失数据(按降序显示)returndf.isnull().sum().sort_values(ascending=False)如果要检查anymissingdatainthedf(displayindescendingorder)一列中有多少缺失数据,这可能是最快的方法。这种方法可以让您更清楚地了解哪些列有更多的缺失数据,并帮助您决定在数据清理和数据分析工作中下一步要采取什么行动。5.删除列中的字符串defremove_col_str(df):#删除数据框列中的一部分字符串-col_1df['col_1'].replace('\n','',regex=True,inplace=True)#删除列-col_1中&#之后的所有字符(包括&#)df['col_1'].replace('&#.*','',regex=True,inplace=True)有时你可能会看到一行中的新字符,或在字符串列中看到一些奇怪的符号。您可以使用df['col_1'].replace轻松处理此问题,其中“col_1”是数据框df中的一列。6.删除列中的空格defremove_col_white_space(df):#删除字符串开头的空格df[col]=df[col].str.lstrip()当数据很乱时,会出现很多意想不到的情况.在字符串的开头有一些空格是很常见的。因此,当您要删除列中字符串开头的空格时,此方法很有用。7.连接两列字符串数据(在特定条件下)defconcat_col_str_condition(df):#concat2columnswithstringsifthelast3lettersofthefirstcolumnis'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)#将'pil'替换为空空格当你想在特定条件下合并两列字符串数据时,此方法很有用。例如,当第一列以某些特定字母结尾时,您想连接第一列和第二列数据。根据您的需要,您也可以在拼接工作完成后删除结束字母。8.转换时间戳(从字符串类型到日期“DateTime”格式)defconvert_str_datetime(df):'''AIM->Convertdatetime(String)todatetime(formatwewant)INPUT->dfOUTPUT->updateddfwithnew日期时间格式------'''df.insert(loc=2,column='timestamp',value=pd.to_datetime(df.transdate,format='%Y-%m-%d%H:%M:%S.%f'))在处理时间序列数据时,您可能会遇到字符串格式的时间戳列。这意味着我们可能必须将字符串格式的数据转换为我们需要指定的“日期时间”格式,以便使用这些数据进行有意义的分析和展示。