代码工具 | 数据清洗,试试这 8套Python代码

原作 Kin Lim Lee
乾明 编译整理
量子位 出品 | 公众号 QbitAI

数据清洗,是进行数据分析和使用数据训练模型的必经之路,也是最耗费数据科学家/程序员精力的地方。

这些用于数据清洗的代码有两个优点:一是由函数编写而成,不用改参数就可以直接使用。二是非常简单,加上注释最长的也不过11行。

在介绍每一段代码时,Lee都给出了用途,也在代码中也给出注释。

大家可以把这篇文章收藏起来,当做工具箱使用。

涵盖8大场景的数据清洗代码

这些数据清洗代码,一共涵盖8个场景,分别是:

删除多列、更改数据类型、将分类变量转换为数字变量、检查缺失数据、删除列中的字符串、删除列中的空格、用字符串连接两列(带条件)、转换时间戳(从字符串到日期时间格式)

删除多列

在进行数据分析时,并非所有的列都有用,用df.drop可以方便地删除你指定的列。

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

转换数据类型

当数据集变大时,需要转换数据类型来节省内存。

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 )

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

一些机器学习模型要求变量采用数值格式。这需要先将分类变量转换为数值变量。同时,你也可以保留分类变量,以便进行数据可视化。

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)  

检查缺失数据

如果你要检查每列缺失数据的数量,使用下列代码是最快的方法。可以让你更好地了解哪些列缺失的数据更多,从而确定怎么进行下一步的数据清洗和分析操作。

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)

删除列中的字符串

有时候,会有新的字符或者其他奇怪的符号出现在字符串列中,这可以使用df[‘col_1’].replace很简单地把它们处理掉。

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

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

删除列中的空格

数据混乱的时候,什么情况都有可能发生。字符串开头经常会有一些空格。在删除列中字符串开头的空格时,下面的代码非常有用。

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

用字符串连接两列(带条件)

当你想要有条件地用字符串将两列连接在一起时,这段代码很有帮助。比如,你可以在第一列结尾处设定某些字母,然后用它们与第二列连接在一起。

根据需要,结尾处的字母也可以在连接完成后删除。

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

转换时间戳(从字符串到日期时间格式)

在处理时间序列数据时,我们很可能会遇到字符串格式的时间戳列。

这意味着要将字符串格式转换为日期时间格式(或者其他根据我们的需求指定的格式) ,以便对数据进行有意义的分析。

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 )) 

原文链接

https://towardsdatascience.com/the-simple-yet-practical-data-cleaning-codes-ad27c4ce0a38

AI学习路线和优质资源,在后台回复"AI"获取

学习Python编程语言是一个循序渐进的过程,尤其对于初学者而言,掌握基础知识和逐步实践是关键。以下是根据学习路径整理的Python学习入门指南: ### 1. 了解Python的基本特性与适用领域 Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法和丰富的库支持而闻名。它广泛应用于数据分析、机器学习、Web开发、自动化脚本、科学计算等多个领域。对于初学者来说,Python 的语法接近自然语言,减少了学习曲线的陡峭程度[^1]。 ### 2. 搭建开发环境 选择一个合适的 Python 版本是学习的第一步。通常推荐使用最新的稳定版本(如 Python 3.x),因为旧版本(如 Python 2.x)已经停止支持。安装 Anaconda 可以简化科学计算和数据处理所需的库安装过程,同时它集成了 Jupyter Notebook,非常适合交互式编程和教学演示。 ### 3. 学习基础语法 掌握 Python 的基本语法是学习的起点。包括变量定义、数据类型(如整数、浮点数、字符串、布尔值)、控制结构(如 if-else 条件判断、for 和 while 循环)、函数定义与调用等。这些内容构成了 Python 编程的基础,是进一步学习更复杂主题的前提[^1]。 ### 4. 数据处理与可视化 Python 提供了多个强大的库来支持数据处理和可视化。例如,NumPy 用于高效的数值计算,Pandas 提供了灵活的数据结构(如 DataFrame),Matplotlib 和 Seaborn 用于数据可视化。通过这些工具,可以轻松地进行数据清洗、转换、分析和展示。 ### 5. 实践项目驱动学习 理论学习之后,通过实践项目加深理解和应用是非常重要的。可以从简单的项目开始,如编写一个计算器、实现一个待办事项列表,逐步过渡到更复杂的项目,如使用 Scikit-learn 构建机器学习模型进行分类或回归任务。实践不仅帮助巩固知识,还能提升解决问题的能力[^1]。 ### 6. 探索进阶主题 随着对 Python 基础的掌握,可以进一步探索更高级的主题,如面向对象编程、异常处理、文件操作、网络请求等。此外,根据兴趣和职业方向,可以选择深入学习特定领域的库和技术,如深度学习(使用 TensorFlow 或 PyTorch)、Web 开发(使用 Django 或 Flask)等。 ### 7. 利用资源与社区支持 Python 拥有庞大的开发者社区,提供了丰富的学习资源和支持。可以通过官方文档、在线课程、书籍、论坛(如 Stack Overflow 和 GitHub)获取帮助和灵感。积极参与社区活动,不仅可以解决学习中遇到的问题,还能拓展视野,了解最新的技术和最佳实践[^1]。 ### 示例代码:简单的 Python 程序 以下是一个简单的 Python 程序示例,展示了如何使用 Pandas 进行基本的数据处理: ```python import pandas as pd # 创建一个简单的数据框 data = { 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago'] } df = pd.DataFrame(data) # 显示数据框 print(df) # 计算平均年龄 average_age = df['Age'].mean() print(f'Average Age: {average_age}') ``` 这段代码演示了如何创建一个包含姓名、年龄和城市的简单数据框,并计算了平均年龄。通过这样的小项目,可以快速上手 Python 的基本操作。 ### 8. 持续学习与反馈 学习编程是一个持续的过程,不断练习和挑战自己是提高技能的关键。遇到问题时,不要害怕寻求帮助,也不要害怕犯错。每一次解决问题的经历都是宝贵的学习机会。随着时间的推移,你会发现自己在编程方面的自信和能力都在不断提升。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值