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

最近,大数据工程师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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

完善三个数字对象排序程序。MOOC,Java第四章 面向对象和类 第一次作业

题目内容: 完善以下程序,利用swap函数,完成数字按从小到大的顺序输出。例如输入5 4 3 输出3,4,5。 输入格式: 输入3个数字。 输出格式: 数字从小到大排列 输入样例: 5 4 3 输出样例: 3,4,5 代码…

触发器及其应用实验报告总结_双面喷绘材料的分类及其应用,超全总结!(建议收藏)...

▲ 东川 | 点击图片获取更多信息▲ 东川 | 点击图片获取更多信息双面喷绘材料,有适合水性机器喷的双面摭光画布,有适合弱溶剂和UV喷绘的PVC双喷、PET双喷、双喷网格布、双面牛筋布,它们有个共同的特点就是,即可以单面打画面&#…

java实现程序输出以下5*5数字方格

请实现程序输出以下5*5数字方格。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 需要在main函数的输入参数中设置5,输出5*5的数字方格。如果是输入7,则是7*7的数字方格。 代码如下&#xff1…

java请实现程序输出以下星塔||输出菱形

java请实现程序输出以下星塔||输出菱形 请实现程序输出以下星塔。 * *** ***** *** * 需要在main函数的输入参数中设置5,输出5层星塔。如果是输入7,则是7层星塔。假设输入参数都是奇数,且都大于等于5,小于等于11。 第一种写法&a…

为什么自己编写的页面总是在那里抖动_别克威朗为什么销量不佳?

汽车发展到现在有些车企经历了几十年,而有些车企则是经历了上百年,所以在历史长河的积淀当中,总会有大起大落,混得好的就成为了百年车企,混得不好的就早早退市。而对于车型而言,同样也是如此,有…

java数组的扩容,将两个数组合并成一个数组

java数组的扩容,将两个数组合并成一个数组 //将下列两个数组合成一个数组 public class Test04 {public static void main(String[] args) {int[] a {1,3,4,56,7,8,9,3};int[] b {12,34,56,43,78,74,36};int[] c new int[a.lengthb.length];//将数组a中的元素方…

java开发项目实例_学java开发,项目经验最重要

不想做将军的士兵不是好士兵!相信没有人一开始学java,就是为了将来一直做一名初级java开发工程师。只需掌握一些简单代码技巧,别人告诉想要实现的效果,然后自己能用代码堆砌来实现。更何况,现在企业对java开发工程师的…

java在原数组中追加一个元素

java在原数组中追加一个元素 /* * 在原数组中追加一个元素 * */ public class Test05 {public static void main(String[] args) {//在下面这个数组中追加一个元素9int[] a {1,2,3,4,5,6,7,8};int b 9;int[] c new int[a.length1];//复制旧数组到新数组中去for (int i 0;i…

java组件是什么意思_年前面试京东3面凉经~ 面试过程与真题全分享+备战春招(java)...

1月4号得到通知,京东无望了,哭晕在厕所,现在给大家把这些面试题分享出来,希望给想要进京东的一些程序员点点帮助!接下来开始分享我去面试的时候面试官问我的那些面试题京东java一面记录简单介绍下自己介绍主要用到的技…

java如何在指定索引位置插入新元素

在arr数组中索引为3的位置,插入一个元素 10 /* * 在arr数组中索引为3的位置,插入一个元素 10 * */ public class Test06 {public static void main(String[] args) {int[] arr {2,6,8,4,9,5,1,3};//要插入索引的位置int x 3;//创建新数组int[] newArr…

java从数组中删除元素(数组的缩容)

java从数组中删除元素(数组的缩容) 1,解决方案一 /* * 数组的缩容(删除元素) * 第一种解决方案 * 移动元素,被删除元素后面的元素往前移一位 * 优点:不需要创建新数组,省内存&…

利用代码分别实现jdk动态代理和cglib动态代理_面试之动态代理

大家好!我是CSRobot,从今天开始,我将会发布一些技术文章,内容就是结合春招以来的面试所遇到的问题进行分享,首先会对知识点进行一个探讨和整理,在最后会给出一些面试题并作出解答,希望可以帮助到…

将下列数组中奇数和偶数分别存放于两个不同的两个数组

将下列数组中奇数和偶数分别存放于两个不同的两个数组 /* * 将下列数组中奇数和偶数分别存放于两个不同的两个数组 * */ public class Test09 {public static void main(String[] args) {int[] arr {12,34,23,47,72,84,22,28,45,57,91};//用于统计偶数元素个数int o 0;for (…

python发布_python网站发布

"""/etc/python3File : IO_HTTP.pyTime : 2020/7/18 下午3:26Author : wangyongqiEmail : 92644827qq.comSOftware : PyCharm"""from socket import *from select import *importreclassWebServer:def __init__(self,host0.0.0.0,port8000,htmlN…

数组工具类的使用

数组工具类的使用 package demo02; /* * 数组工具类的使用 * 数组的复制操作 * */ import java.util.*;public class Test10 {public static void main(String[] args) {int[] arr {3,4,2,66,75,4,322,55,33,85,39};System.out.println(Arrays.toString(arr));//排序问题Arra…

输入两个数、用python求他们的和_从键盘上输入俩个实型数,编程求它们的和差积商,要求输出时,保留两位小数C语言编程题:从键盘上输入两个...

从键盘上输入俩个实型数,编程求它们的和差积商,要求输出时,保留两位小数 C语言编程题:从键盘上输入两个www.zhiqu.org 时间: 2020-11-23参考代码:#includevoid main(){ float a,b; printf("请输入两个实数,以空格或者回车分隔&#…

从键盘上录入学生人数和每个学生的分数,按分数降序输出所有的分数,java冒泡排序应用

从键盘上录入学生人数和每个学生的分数,按分数降序输出所有的分数 import java.util.Arrays; import java.util.Scanner;/* * 从键盘上录入学生人数和每个学生的分数,按分数降序输出所有的分数 * java冒泡排序 * */ public class Test12 {public static…

jvm内存结构_JVM系列之内存结构

JVM的内存结构大概分为:堆(Heap):线程共享。所有的对象实例以及数组都要在堆上分配。回收器主要管理的对象。堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Sur…

java从键盘上录入学生人数和每个学生的姓名以及分数,按照分数降序输出,学生名次、学生姓名、学生分数

java从键盘上录入学生人数和每个学生的姓名以及分数,按照分数降序输出,学生名次、学生姓名、学生分数 import java.util.Scanner;/* * 从键盘上录入学生人数和每个学生的姓名以及分数,按照分数降序输出,学生名次、学生姓名、学生…

python label background设置成透明_纯Python绘制满满艺术感的山脊地图

点击上方"蓝字"关注我们Python大数据分析记录 分享 成长添加微信号"CNFeffery"加入技术交流群❝本文示例代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes❞1 简介下面的这幅图可能很多读者朋友们都看到过&#x…