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

简介: 【8个Python数据清洗代码,拿来即用】

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


数据清洗小工具箱

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


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」格式,以便使用这些数据进行有意义的分析和展示。

相关文章
|
3天前
|
Python
Python代码扫描目录下的文件并获取路径
【5月更文挑战第12天】Python代码扫描目录下的文件并获取路径
20 1
|
3天前
|
数据处理 Python
Python 代码中使用。
Python 代码中使用。 z
12 3
|
3天前
|
C++ 开发者 Python
实现Python日志点击跳转到代码位置的方法
本文介绍了如何在Python日志中实现点击跳转到代码位置的功能,以提升调试效率。通过结合`logging`模块的`findCaller()`方法记录代码位置信息,并使用支持点击跳转的日志查看工具(如VS Code、PyCharm),开发者可以从日志直接点击链接定位到出错代码,加快问题排查。
12 2
|
22小时前
|
缓存 开发者 Python
Python中的装饰器:提升代码灵活性和可维护性
Python中的装饰器是一种强大的工具,它可以帮助开发者提升代码的可维护性和灵活性。本文将深入探讨Python装饰器的原理、用法以及实际应用场景,帮助读者更好地理解并运用装饰器来优化自己的代码。
|
1天前
|
Python
10个Python绘画表白代码【内附源码,再不收藏你只能单身了】_有趣的python代码表白
10个Python绘画表白代码【内附源码,再不收藏你只能单身了】_有趣的python代码表白
|
1天前
|
存储 程序员 C#
100行python代码,轻松完成贪吃蛇小游戏_c#游戏100行代码
100行python代码,轻松完成贪吃蛇小游戏_c#游戏100行代码
|
1天前
|
程序员 C# Python
100行python代码,轻松完成贪吃蛇小游戏_c#游戏100行代码(2)
100行python代码,轻松完成贪吃蛇小游戏_c#游戏100行代码(2)
|
1天前
|
Python
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
|
3天前
|
网络协议 Unix Python
Python编程-----网络通信
Python编程-----网络通信
8 1
|
3天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
【5月更文挑战第9天】`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
32 5