作者:俞翔
如果有人问人工智能、数据挖掘的核心是什么呢?这个答案毋庸置疑是模型的选择,也就是算法。那如果有人问良好的模型的基石又是什么呢?那一定是一份优质的源数据。
在实际生产中,工程师们拿到的数据往往是一些“脏数据”,我们可以通俗的将“脏数据”理解为不能直接被使用的数据。这些数据通常有如下特点:
不完整:缺少某些对业务相关的属性值
不一致:数据的名称、单位、属性、大小等不一致
噪声点:存在一些影响后续分析的异常值,或者错误值
基于上述数据特点,我们需要对数据进行“数据预处理”,如果将数据预处理比做红烧鲫鱼,在做鱼之前呢我们需要对鱼进行去鳞,去腥,否则将会影响最终的鱼的味道。
数据预处理基本流程如图所示:
数据清洗:处理缺失值、光滑噪声数据、识别或删除离群点、解决不一致性来清理数据;
数据集成:使用多个数据源、数据立方体或数据文件;
数据规约:用替代的较小的数据表示形式替换元数据,得到信息内容的损失最小化,方法包括维规约、数量规约和数据压缩;
数据变化:将数据变换成使用挖掘的形式;
接下来我们使用pandas库进行数据清洗操作。
pandas是一个开发源码、BSD许可的库,提供高性能、易于编程的数据结构和数据分析工具。pandas可以对各种数据进行运算操作,比如归并、在形成、选择、还有数据清洗和数据加工等操作。
数据准备(采用jupyter进行编程)
数据集效果展示如下:
接下来开始使用pandas常用函数对数据集进行预处理。
duplicated函数验证是否存在重复值,该方法返回的是数据集每一行的检验结果,为布尔类型,若返回True,则存在重复值,示例如下:
drop_duplicates函数用于删除重复值,inplace=True参数,表示直接在源数据集上进行删除操作
删除后查验重复行已被删除,如下结果:
isnull函数用于检测数据集中是否包含缺失值。
dropna函数用于删除存在缺失值的行
效果图:
drop函数也可以删除缺失值,只是用于删除拥有缺失值的行或者列
效果图:
当然,针对与缺失值我们不仅仅只有粗暴的删除,亦可以使用fillna函数进行填充,方法参数method的值可以有ffill(替换法之前向替换)、bfill(替换法之后向替换),也可以使用value参数使用常数、列的均值、众数等填充。
cat函数用于字符串的拼接
get函数用于获取指定位置的字符串
效果图:
slice_replace函数用于使用给定的字符串,替换指定的位置的字符
效果图
split函数用于将一列扩展为好几列。
效果图
pad、center方法用于在字符串的左边、右边或者左右俩边添加指定字符;
效果图
findall函数利用正则表达式,在字符串中,返回查找结果的列表,与extract、extractall函数有区别;
效果图
至于pandas数据预处理方法还有很多很多,各位读者可借鉴https://pandas.pydata.org/ 官网学习。
对HCIE有任何的疑问
领取专属 10元无门槛券
私享最新 技术干货