8个用于数据清洗的Python代码
作者头像
  • 钟玲莉
  • 2019-11-25 09:34:31 1

数据清洗是在数据分析和利用数据训练模型过程中不可或缺的一个步骤,也是数据科学家和程序员需要投入大量精力的一部分。

这些用于数据清洗的代码具有两个显著的优点:一是通过函数实现,无需调整参数即可直接使用;二是代码非常简洁,即使添加注释,最长的代码也仅有11行。

大家可以将这篇文章保存起来,作为实用的工具箱。

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

这些数据清洗代码涵盖了八个场景,具体包括:

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

删除多列

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

python def drop_multiple_col(col_names_list, df): """ 目标:基于列名删除多个列 输入:列名列表,数据框 输出:更新后的数据框,已删除指定列 """ df.drop(col_names_list, axis=1, inplace=True) return df

更改数据类型

随着数据集的增长,改变数据类型可以节省内存空间。

python def change_dtypes(col_int, col_float, df): """ 目标:改变数据类型以节省内存 输入:整型和浮点型列名列表,数据框 输出:更新后的数据框,占用更少内存 """ df[col_int] = df[col_int].astype('int32') df[col_float] = df[col_float].astype('float32')

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

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

python def convert_cat2num(df): """ 目标:将分类变量转换为数值变量 输入:数据框 输出:更新后的数据框 """ num_encode = { 'col_1': {'YES': 1, 'NO': 0}, 'col_2': {'WON': 1, 'LOSE': 0, 'DRAW': 0} } df.replace(num_encode, inplace=True)

检查缺失数据

如果你想快速了解每列缺失数据的数量,可以使用以下代码。这有助于你更好地掌握哪些列存在较多缺失值,并据此决定下一步的数据清洗和分析工作。

python def check_missing_data(df): """ 目标:检查数据框中的缺失数据(按降序显示) 输入:数据框 输出:缺失数据数量统计(按降序) """ return df.isnull().sum().sort_values(ascending=False)

删除列中的字符串

有时候,新的字符或其他奇怪的符号可能会出现在字符串列中,这时可以使用df['col_1'].replace轻松解决。

python def remove_col_str(df): """ 目标:删除数据框列中的字符串部分 输入:数据框 输出:更新后的数据框 """ df['col_1'].replace(' ', '', regex=True, inplace=True) df['col_1'].replace(' .*', '', regex=True, inplace=True)

删除列中的空格

在数据混乱时,字符串开头可能会出现空格。以下代码可以帮助你删除列中字符串开头的空格。

python def remove_col_white_space(df): """ 目标:删除字符串开头的空格 输入:数据框 输出:更新后的数据框 """ df['col'].str.lstrip()

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

当你希望有条件地将两列通过字符串连接在一起时,这段代码会很有帮助。例如,你可以在第一列的结尾处设置特定字母,然后将它们与第二列连接在一起。根据需要,可以在连接完成后删除这些字母。

python def concat_col_str_condition(df): """ 目标:有条件地将两列用字符串连接在一起 输入:数据框 输出:更新后的数据框 """ 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)

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

在处理时间序列数据时,经常会遇到以字符串形式表示的时间戳列。这意味着你需要将这些字符串转换为日期时间格式(或其他根据需求指定的格式),以便进行有意义的数据分析。

python def convert_str_datetime(df): """ 目标:将字符串格式的时间戳转换为日期时间格式 输入:数据框 输出:更新后的数据框,具有新的日期时间格式 """ df.insert(loc=2, column='timestamp', value=pd.to_datetime(df['transdate'], format='%Y-%m-%d %H:%M:%S.%f'))

希望以上内容能帮助你更好地理解和应用数据清洗技巧。

    本文来源:图灵汇
责任编辑: : 钟玲莉
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
清洗用于代码数据Python
    下一篇