8个Python数据清洗代码,拿来即用

系统测
• 阅读 974

大家好!

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

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

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

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

数据清洗小工具箱

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

1. 删除多列数据

def drop_multiple_col(col_names_list, df): 
    '''
    AIM    -> Drop multiple columns based on their column names 

    INPUT  -> List of column names, df

    OUTPUT -> updated df with dropped columns 
    ------
    '''
    df.drop(col_names_list, axis=1, inplace=True)
    return df

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

2. 转换 Dtypes

def change_dtypes(col_int, col_float, df): 
    '''
    AIM    -> Changing dtypes to save memory

    INPUT  -> List of column names (int, float), df

    OUTPUT -> updated df with smaller memory  
    ------
    '''
    df[col_int] = df[col_int].astype('int32')
    df[col_float] = df[col_float].astype('float32')

当我们面对更大的数据集时,我们需要对「dtypes」进行转换,从而节省内存。

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

def convert_cat2num(df):
    # Convert categorical variable to numerical variable
    num_encode = {'col_1' : {'YES':1, 'NO':0},
                  'col_2'  : {'WON':1, 'LOSE':0, 'DRAW':0}}  
    df.replace(num_encode, inplace=True)  

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

4. 检查缺失的数据

def check_missing_data(df):
    # check for any missing data in the df (display in descending order)
    return df.isnull().sum().sort_values(ascending=False)

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

5. 删除列中的字符串

def remove_col_str(df):
    # remove a portion of string in a dataframe column - col_1
    df['col_1'].replace('\n', '', regex=True, inplace=True)

    # remove all the characters after &# (including &#) for column - col_1
    df['col_1'].replace(' &#.*', '', regex=True, inplace=True)

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

6. 删除列中的空格

def remove_col_white_space(df):
    # remove white space at the beginning of string 
    df[col] = df[col].str.lstrip()

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

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

def concat_col_str_condition(df):
    # concat 2 columns with strings if the last 3 letters of the first column are '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)  # replace the 'pil' with emtpy space

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

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

def convert_str_datetime(df): 
    '''
    AIM    -> Convert datetime(String) to datetime(format we want)

    INPUT  -> df

    OUTPUT -> updated df with new datetime format 
    ------
    '''
    df.insert(loc=2, column='timestamp', value=pd.to_datetime(df.transdate, format='%Y-%m-%d %H:%M:%S.%f'))

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

点赞
收藏
评论区
推荐文章
手把手教程 | 5分钟用轻量云主机搭建一个JupyterLab
JupyterLab作为一种基于web的集成开发环境,被称为下一代的JupyterNotebook,你可以使用它编写notebook、操作终端、编辑markdown文本、打开交互模式、查看csv文件及图片等功能,支持Python等多种语言,十分适合做数据分析及可视化工作。随着GPT大模型算法的盛行,数据分析已经从过去传统的人为打标、清洗的运营流程转向更智能、高效、复合的机器学习分析。
Karen110 Karen110
3年前
实战|手把手教你用Python爬取存储数据,还能自动在Excel中可视化!
大家好,在之前我们讲过如何用Python构建一个带有GUI的爬虫小程序,很多本文将迎合热点,延续上次的NBA爬虫GUI,探讨如何爬取虎扑NBA官网数据。 并且将数据写入Excel中同时自动生成折线图,主要有以下几个步骤。本文将分为以下两个部分进行讲解在虎扑NBA官网球员页面中进行爬虫,获取球员数据。清洗整理爬取的球员数据,对其进行可视化。
Karen110 Karen110
3年前
总结了pandas提取数据的15种方法,统统只需1行代码,真香!
pandas是python数据分析必备工具,它有强大的数据清洗能力,往往能用非常少的代码实现较复杂的数据处理今天,鸟哥总结了pandas筛选数据的15个常用技巧,主要包括5个知识点:1.比较运算:、<、、、<、!2.范围运算:between(left,right)3.字符筛选:str.contains(pattern或字符串,naFalse)4.逻辑运算:&
Aidan075 Aidan075
4年前
数据可视化 | 数据可视化的基本流程总结
↑关注星标  有趣的不像个技术号每晚九点,我们准时相约  我们要的不是数据,而是数据告诉我们的事实。大多数人面临这样一个挑战:我们认识到数据可视化的必要性,但缺乏数据可视化方面的专业技能。部分原因可以归结于,数据可视化只是数据分析过程中的一个环节,数据分析师可能将精力花在获取数据、清洗整理数据、分析数据、建立模型,但在最终的展示沟通
Aidan075 Aidan075
4年前
1年前的小五都用 Python 来做什么?
↑点击上方“凹凸数据” 关注星标 每天更新,干货不断  (多图预警)注:这是小五一年前在知乎的回答,当时还只有凹凸数读一个公众号,所以很多图片都会带有数读或者知乎的水印。作为一个菜鸟数据分析师,只会sqlpython业余时间写写文章:用python爬取数据→数据清洗→数据分析→数据可视化词云镇楼20190730回来看,前面
可莉 可莉
3年前
060 Python必备库
\TOC\一、概述1.1从数据处理到人工智能数据表示数据清洗数据统计数据可视化数据挖掘人工智能数据表示:采用合适方式用程序表达数据数据清理:数据归一化、数据转换、异常值处理数据统计:数据的概要理解,数量、分布、中位数等
Stella981 Stella981
3年前
060 Python必备库
\TOC\一、概述1.1从数据处理到人工智能数据表示数据清洗数据统计数据可视化数据挖掘人工智能数据表示:采用合适方式用程序表达数据数据清理:数据归一化、数据转换、异常值处理数据统计:数据的概要理解,数量、分布、中位数等
Python进阶者 Python进阶者
2年前
盘点一个Pandas数据清洗题目
大家好,我是皮皮。一、前言前几天在Python白银交流群有个叫【冻豺】的粉丝问了一道Python清洗数据的问题,这里拿出来给大家分享下,一起学习下。如何才能把pandasserise里乱七八糟的字符清理干净呢?二、解决过程【dcpeng】解答这里给出了一个示例的代码,使用了apply和lambda和正则表达式,一气呵成,只需要稍微修改下,匹配自己的数
数据质量和数据治理的关系 | 京东云技术团队
很多不太了解的人会认为:数据治理就是干数据清洗的。近两年,在我们公司,数据治理团队在数据降本方面做的比较多,效果还不错,我们很多人可能以为:数据治理就是做数据清理的。在京东科技集团数据治理工作组第一次全体会议上,我就讲过数据治理和数据清洗之间的关系:数据清
实例解读:Python量化分析在投资中的应用
Python作为一种多用途的编程语言,在量化分析领域也展现出了强大的应用能力。通过Python,我们可以对金融市场数据进行获取、清洗、分析和可视化,从而进行量化交易、风险管理和投资决策。本文将从入门到精通,带领读者深入探索Python在量化分析中的实战应用