Python 八个数据清洗实例代码详解

作者:Python学习与数据挖掘 时间:2022-12-08 23:50:36 

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

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

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

数据清洗小工具箱

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

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」进行转换,从而节省内存。如果你有兴趣学习如何使用「Pandas」来处理大数据,我强烈推荐你阅读「Why and How to Use Pandas with Large Data」这篇文章(https://towardsdatascience.com/why-and-how-to-use-pandas-with-large-data-9594dda2ea4c)。

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

来源:https://blog.csdn.net/weixin_38037405/article/details/122533318

标签:Python,数据清洗,数据集
0
投稿

猜你喜欢

  • window.location的重写及判断location是否被重写

    2024-04-28 10:18:17
  • Mysql中的concat函数(拼接函数)详解

    2024-01-27 21:01:37
  • pygame实现贪吃蛇游戏(上)

    2022-07-10 20:48:10
  • 简单了解python中的与或非运算

    2021-03-20 01:45:02
  • python下读取公私钥做加解密实例详解

    2022-04-17 03:39:00
  • 如何实现My SQL中的用户的管理问题

    2008-12-03 13:56:00
  • js鼠标滑过图片震动特效的方法

    2023-08-23 21:38:50
  • 也谈javascript程序优化问题

    2008-10-29 11:30:00
  • macOS下mysql 8.0.16 安装配置图文教程

    2024-01-28 19:26:13
  • 浅谈JavaScript中的“!!”作用

    2024-05-05 09:04:53
  • vue中对虚拟dom的理解知识点总结

    2024-05-05 09:23:54
  • Go语言HTTPServer开发的六种方式小结

    2023-06-22 21:48:21
  • 制作一个更漂亮一些的多选列表框

    2007-10-16 13:04:00
  • ASP.NET教程第二讲:安装ASP.NET

    2007-08-07 11:59:00
  • 基于Python记录一场2023的烟花

    2022-01-08 19:57:07
  • 详解如何用Python写个听小说的爬虫

    2021-09-04 09:56:09
  • Python scrapy爬取小说代码案例详解

    2021-09-18 17:03:52
  • 全面解析JavaScript中“&&”和“||”操作符(总结篇)

    2024-04-10 16:16:28
  • 如何在Python中隐藏和加密密码示例详解

    2023-07-19 00:00:09
  • Go 高效截取字符串的一些思考

    2024-04-30 10:04:43
  • asp之家 网络编程 m.aspxhome.com