代码工具 | 数据清洗,试试这 8套Python代码
原作 Kin Lim Lee
乾明 编译整理
量子位 出品 | 公众号 QbitAI
数据清洗,是进行数据分析和使用数据训练模型的必经之路,也是最耗费数据科学家/程序员精力的地方。
这些用于数据清洗的代码有两个优点:一是由函数编写而成,不用改参数就可以直接使用。二是非常简单,加上注释最长的也不过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, dfOUTPUT -> 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 memoryINPUT -> List of column names (int, float), dfOUTPUT -> 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 variablenum_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_1df[ col_1 ].replace( , , regex=True, inplace=True)# remove all the characters after &# (including &#) for column - col_1df[ 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 pilmask = 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 -> dfOUTPUT -> 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 ))
原文链接
https://towardsdatascience.com/the-simple-yet-practical-data-cleaning-codes-ad27c4ce0a38
AI学习路线和优质资源,在后台回复"AI"获取
代码工具 | 数据清洗,试试这 8套Python代码相关推荐
- 浪漫的python代码_七夕,最浪漫的Python代码送给陷入爱河的Python男同胞
七夕,最浪漫的Python代码送给陷入爱河的Python男同胞 image.gif 三句话情书,我们听过.如何用python写一段浪漫的代码?可以是简短有韵味的情书式, 也欢迎冗长而效果拔群的万行 ...
- python代码编写工具_编写更好的Python代码的终极指南
python代码编写工具 Despite its 尽管它 downsides, Python remains the king of today's programming world. Its ve ...
- 计算器百分号如何用代码实现_如何用 100 行 Python 代码实现新闻爬虫?这样可算成功?...
每天我都要坐地铁上班,而地铁里信号差.但我希望在坐地铁的时候读些新闻,于是就写了下面这个新闻爬虫.我并没有打算做很漂亮的应用,所以只完成了原型,它可以满足我最基本的需求.其思路很简单: 找到新闻源:用 ...
- 随机森林分类算法python代码_随机森林的原理及Python代码实现
原标题:随机森林的原理及Python代码实现 最近在做kaggle的时候,发现随机森林这个算法在分类问题上效果十分的好,大多数情况下效果远要比svm,log回归,knn等算法效果好.因此想琢磨琢磨这个 ...
- 六行python代码的爱心曲线公式_六行python代码的爱心曲线-Go语言中文社区
前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在Excel上拟合正态分布了,尽管在第二天重新拾起了Excel中那几个常见的函数和图像的做法,还是十分的惭愧.实际上,当时有效偏颇了,忽略了问题 ...
- python在哪写代码-python的代码写在哪里,怎么样运行python代码
1. python的代码写在哪里 你有两种方式写python代码,他们针对不同的应用场景在python交互式解释器里写代码 在编辑器里写代码 在python交互式解释器里,你可以写简单的代码,尽管复杂 ...
- python用一行代码编写一个回声程序_一行python代码实现树结构
树结构是一种抽象数据类型,在计算机科学领域有着非常广泛的应用.一颗树可以简单的表示为根, 左子树, 右子树. 而左子树和右子树又可以有自己的子树.这似乎是一种比较复杂的数据结构,那么真的能像我们在标题 ...
- html代码大全(很全的)_5行Python代码就能爬取 3000+ 上市公司的信息?
前言 入门爬虫很容易,几行代码就可以,可以说是学习 Python 最简单的途径. 刚开始动手写爬虫,你只需要关注最核心的部分,也就是先成功抓到数据,其他的诸如:下载速度.存储方式.代码条理性等先不管, ...
- 决策树原理实例(python代码实现)_决策树原理实例(python代码实现)
决策数(Decision Tree)在机器学习中也是比较常见的一种算法,属于监督学习中的一种.看字面意思应该也比较容易理解,相比其他算法比如支持向量机(SVM)或神经网络,似乎决策树感觉"亲 ...
最新文章
- Ubuntu下Qt配置Opencv
- 阿里云短信发送触发天级流量及解决办法
- 《从零开始学Swift》学习笔记(Day 42)——构造函数调用规则
- Intel Realsense D435 python (Python Wrapper)examples 官方案例汇总
- hihoCoder 1227 2015 北京网络赛 A题
- windows 9X, 2000, xp所有版本注册表设置(1)
- Java区间拆分子集求和,对列表中的数字子集求和
- NLP --- 条件随机场CRF详解
- noip 2010 数字统计
- c#中ToString(yyyyMMdd) 与ToString(yyyymmdd)区别
- 团队作业3 需求分析与系统设计
- 帆软报表决策系统自定义登录界面 使用验证码登录 教程一
- java地图 热力图,Spring Boot+高德地图热力图静态数据展示
- css常见定位、居中方案
- 物联网智能家居系统解决方案
- Spring Cloud Gateway(一)为什么用网关、能做什么、为什么选择Gateway、谓词工厂、过滤器配置
- ARIMA模型的拖尾截尾问题
- SQL DDM和DML
- matlab 环形检测,用matlab模拟环形磁铁的磁场分布详解.doc
- 产品沉思录 #Vol.20200425:所谓常识