最近,大数据工程师Kin Lim Lee在Medium上发表了一篇文章,介绍了8个用于数据清洗的Python代码。

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python数据清洗代码_8段用于数据清洗Python代码(小结)相关推荐

  1. python3.7扩展库是什么_Python3.4以后的版本中,____________库用于安装管理Python扩展包,________________库用于发布Python包。_学小易找答案...

    [填空题]Python3.4以后的版本中,____________库用于安装管理Python扩展包,________________库用于发布Python包. [判断题]Directions: The ...

  2. python正确读音_8个正确使用Python的迹象

    python正确读音 通常很容易分辨出何时做错了开发. 到处冒出的错误,像糖蜜一样运行的代码以及无用的项目结构只是说明问题的三个征兆. 但是有时候,告诉您何时正确执行起来并非易事. 良好的编程习惯就像 ...

  3. Python 标准库 - Pprint 模块 - 用于打印 Python 数据结构

    使用 pprint 模块 pprint 模块( pretty printer ) 用于打印 Python 数据结构. 当你在命令行下打印特定数据结构时你会发现它很有用(输出格式比较整齐, 便于阅读). ...

  4. python列表代码_8种高级的Python列表使用技巧,都给你整理好啦(附实操代码)...

    Python中的列表是我们很常见的数据结构之一,也是很强大的数据结构之一!Python列表功能非常丰富,并且具有很多隐藏的技巧没有被发现. 一.使用Python过滤列表 1.使用Filter()函数 ...

  5. python end用法_8种高级的Python列表使用技巧,都给你整理好啦(附实操代码)

    Python中的列表是我们很常见的数据结构之一,也是很强大的数据结构之一!Python列表功能非常丰富,并且具有很多隐藏的技巧没有被发现. 一.使用Python过滤列表 1.使用Filter()函数 ...

  6. python管理技巧_8个经典的Python列表技巧,让你数据处理更简单!

    列表(List)是你使用Python过程中接触最为频繁的数据结构,也是功能最为强大的几种数据结构之一.Python列表非常的万能且蕴含着许多隐藏技巧,下面我们就来探索一些常用的列表技巧. 1 列表元素 ...

  7. php常用功能代码,10段PHP常用功能代码(1)_PHP教程

    1.使用PHP Mail函数发送Email$to = "viralpatel.net@gmail.com"; $subject = "VIRALPATEL.net&quo ...

  8. 【Python】整理了上千个Python类库,简直太酷啦!

    Python 生态,向来以各种类库齐全而闻名,这也是这门语言如此受欢迎的重要原因.今天就给大家分享一下这几天的战果,宵衣旰食,不眠不休的整理了近千个 Python 库,收藏的同时,给个在看不为过吧! ...

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

    原作 Kin Lim Lee 乾明 编译整理 量子位 出品 | 公众号 QbitAI 数据清洗,是进行数据分析和使用数据训练模型的必经之路,也是最耗费数据科学家/程序员精力的地方. 这些用于数据清洗的 ...

最新文章

  1. 12位黄金技术大佬发出警告:一大波必读好书向你袭来!
  2. 利用DB Link两步搞定Oracle两个数据库间的表同步
  3. 深度学习中Attention机制的“前世今生”
  4. 数字倒序Java_怎么用Java编写一个程序,将输入的数字重新倒叙排列?
  5. nyoj-78-圈水池(Graham算法求凸包)
  6. 使用 spring-boot 的 RabbitMQ 范例测试我的 RabbitMQ 服务器
  7. 神经网络入门之DNN(一)
  8. winform 实现qq代理_「设计模式」代理模式:神奇的代理模式,节省了我80%开发时间...
  9. apk注册机加密_apk软件添加注册机方法 安卓apk添加授权教程
  10. 03单点登录CAS5.3.4集成客户端
  11. 还想打马赛克掩盖身份?人工智能让你告别打码时代
  12. 瞬时功率与有功功率计算公式
  13. 百度tts语音合成使用
  14. c r 语言教程,R语言初级教程
  15. js字符串时间格式与中国标准时间格式相互转换
  16. 示波器基本原理之一:带宽
  17. 如何自定义 conventional-changelog
  18. 港科夜闻|香港科大彭倩教授分析疫情下企业如何减低投资损失
  19. Gantt(甘特图)与PERT(项目计划评审技术)图
  20. GetDC是什么意思 GetWindowDC(hWnd)

热门文章

  1. 推挽输出和开漏输出_关于51单片机IO口的输出模式结构
  2. go get如何删除_Go 每日一库之 xorm
  3. android点击事件的优先级,Android事件体系全面总结+实践分析,系列篇
  4. 火狐浏览器如何禁止网站发消息 火狐浏览器禁止网站发消息的方法
  5. windows7电脑删除文件特别慢怎么回事
  6. MySql 清空、删除、截断表时1701错误
  7. java8中的map与flatmap区别
  8. java对象的序列化和反序列化详细解释
  9. unity 多台 显示器 控制_飞利浦292E2E评测丨宽屏显示器中的多面手
  10. 二级c语言基础题库100题,二级C语言上题库100题.doc