IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Python数据分析4-数据清洗与整理 -> 正文阅读

[人工智能]Python数据分析4-数据清洗与整理

? ? ? ?

目录

4.1数据清洗

4.1.1处理缺失值

? ? ? ? 1 侦查缺失值

? ? ? ? ?2 删除缺失值

? ? ? ? ?3 填补缺失值

?4.1.2移除重复数据

?4.1.3替换值

?4.1.4利用函数或映射进行数据转换

?4.1.5检测异常值

?4.1.6虚拟变量

?4.2数据合并和重塑

?4.2.1merge合并

?4.2.2concat链接

?4.2.3combine_first合并

?4.2.4数据重塑

?4.3字符串处理

?4.3.1字符串方法

?4.3.2正则表达式

4.4综合实例--iris数据及?

?4.4.1数据来源

?4.4.2定义问题

?4.4.3数据清洗

?4.4.4数据探索


????????有效的数据是进行数据分析的依据,因此在数据分析中,数据的处理往往需要花费70%的时间,可见数据处理的重要性。本章将讲解在pandas中如何进行多数据清洗和处理并介绍针对多元数据的合并和链接,以及数据的重塑等内容。

4.1数据清洗

? ? ? ? 现实中通过各种方式收集到的数据都是“肮脏”的。本节将着重讲解数据清洗的工作,如缺失值的处理,重复数据的处理以及如何替代值等具体操作。

4.1.1处理缺失值

? ? ? ? 有时由于设备原因(设备故障或无法存入数据等)或人为原因(没有录入或故意隐藏数据等),我们获取的部分数据可能是缺失值。这些缺失值对于数据分析而言是没有任何意义的,需要通过程序处理掉这些缺失值,以便下一步分析。

? ? ? ? 1 侦查缺失值

? ? ? ? 通过人工查看DataFrame数据是否有缺失值的方法是很低效的。尤其当数据量庞大的时候,人工查看很消耗时间。通过isnull和notnull方法,可以返回布尔值对象,如下图

? ? ? ? ?这时通过求和可以获取每列的缺失值数量,再通过裘克就可以获取整个DataFrame的缺失值数量,如下图

? ? ? ? ?通过info方法,也可以看出DataFrame每列数据的确实情况,这个方法也是我们用的最多。

? ? ? ? ?2 删除缺失值

? ? ? ? ?在缺失值的处理方法中,删除缺失值是常用的方法之一。通过dropna方法可以删除具有缺失值的行,如下图

? ? ? ? 传入how='all',则只会删除全为NaN的那些行如下图:

? ? ? ? 如果需要删除列,则指定轴方向即可,?

? ? ? ? ?3 填补缺失值

? ? ? ? 当数据量不够或其他部分信息很重要的时候,就不能删除数据了,这是就需要对缺失值进行填充。通过fillna方法可以将缺失值替换为常数值,如下图

? ? ? ? ?在fillna中传入字典结构数据,可以针对不同列填充不同值,fillna返回的是新对象,不会对元数据进行修改,可通过inplace就地进行修改,如下图

? ? ? ? ?对重新索引(reindex)中填充缺失值的方法同样适用于fillna中,如下图,

????????也可通过平均值等作为填充数,如下图

? ? ? ? ?对于fillna的参数,可以通过“?”进行查询帮助,这也是自我学习的最好方法,如下图

?4.1.2移除重复数据

? ? ? ? 在爬取的数据中往往会出现重复的数据,对于重复数据保留一份即可,其余的可做移除处理。在DaataFrame中,通过duplicated方法判断各行是否有重复数据,如下图

? ? ? ? ?通过drop_duplicates方法,可以删除多余的重复项,如下图

? ? ? ? ?在这种情况下,当每行的每个字段都相同时才会判断为重复项。当然,也可以通过指定部分列作为判断重复项的依据,如下图

? ? ? ? ?通过结果可以看出,保留的数据为第一个出现的组合。传入keep='last'可以保留最后一个出现的组合

4.1.3替换值

? ? ? ? 替换值类似于Excel中的替换功能,是对查询到的数据替换为相应的数据。在pandas中,通过replace可完成替换值的功能

? ? ? ? ?也可以同时针对不同值进行多值替换,参数传入方式可以是列表也可以是字典格式

?4.1.4利用函数或映射进行数据转换

? ? ? ? 在第2章中曾讲过函数应用和映射的内容,本节将通过例子来讲解函数和映射在数据处理中的使用情况 。如下图所示为某个班级学生的数学成绩表,我们定义一个等级情况:90-100--》》优秀,70-89--》》良好,60-69--》》及格,分数低于60为不及格。在Excel中,通过if函数去实现分数等级的划分,在pandas中定义好函数,通过map方法也可以实现同样的效果如下图

注:对于一列数据的转换,也可以通过apply函数来实现

?4.1.5检测异常值

? ? ? ? 设备故障和认为操作失误都会产生异常值,在数据分析中,通常会通过一些可视化的方法去寻找离群点,这些离群点可能就是异常值。但并非所有的离群点都是异常值,需要根据业务常识等辅助经验进行判断。如下图,查找到的离群点可能是因为认为将原因小数点输错了,从而导致的异常点。

?4.1.6虚拟变量

? ? ? ? 在数学建模和机器学习中,只有数值型数据才能供算法使用,对于一些分类变量则需要将其转换为虚拟变量(哑变量)(也就是-,1矩阵),通过get_dumnies函数即可实现改功能

? ? ? ? ?对于多类别的数据而言,需要通过apply函数来实现。

?4.2数据合并和重塑

? ? ? ? ?在实际的数据分析中,可能有不同的数据来源,这是需要通过合并等操作对数据进行处理。

4.2.1merge合并

? ? ? ? merge函数是通过一个或多个键(DataFrame的列)将两个DataFrame按行合并起来,其方式与关系型数据库一样。首先来看一个简单的例子。

? ? ? ? ?由于两个DataFrame都有fruit列名,所以默认按该列进行合并。当然,也可以指定键名,如果两个DataFrame的列名不一样,也可以单独指定。

? ? ? ? merge默认为内连接(inner),也就是返回交集。通过how参数可以选择连接方法:左连接(left)、右连接(right)和外连接(outer)

?

? ? ? ? ?多对多的链接会产生笛卡尔积,amount2有3个apple,price2有两个apple,这样连接就有6个apple。

? ? ? ? ?当然,也可以通过多个键进行合并,即传入一个list即可,如下图

? ? ? ? ?在合并时要考虑到重复列名的问题,如下图

? ? ? ? ?虽然可以认为进行重复列名的修改,但merge函数提供列suffixes用于处理该问题,如下图

? ? ? ? ?DataFrame中有一个join方法,可以快速完成按索引合并

? ? ? ? ?merge常用的参数如下

参数使用说明
left参与合并的左侧DataFrame
right参与和平的右侧DataFrame
how链接方法;inner,left,regiht,outer
on用于链接的列名
left_on左侧DataFrame中用于链接键的列
right_on右侧DataFrame中用于链接键的列
left_index左侧的DataFrame的行索引作为连接键
right_index右侧的DataFrame的行索引作为连接键
sort合并后会对数据排序,默认为True
suffixes修改重复名

?4.2.2concat链接

? ? ? ? 如果需要合并的DataFrame之间没有链接键,就不能用merge方法列,这时可能要通过pandas的concat方法实现。如下图所示为三个没有相同索引的Series,使用concat连接,会按行的方向堆叠数据。

? ? ? ? 默认情况下,concat是在axis=0上工作的,当然通过指定轴方向也可以按列进行链接

注:concat只有外连接和内连接

? ? ? ? ? 参与链接的数据对象在结果中是分不开的,可通过keys参数给链接对象创建一个层次化索引

? ? ? ? ?如果按列链接,keys就成列DataFrame的列索引,如下图

? ? ? ? ?concat链接对于DataFrame是同样适用的。

? ? ? ? ?除了传入列表,通过字典数据也可以完成链接,字典的键就是keys的值,如下图

? ? ? ? ?当行索引类似时,通过默认链接会出现重复行索引。这时可通过ingore_index=True忽略索引,已达到重拍的效果

?4.2.3combine_first合并

? ? ? ? ?如果需要合并的两个DataFrame存在重复的索引,在这种情况下,若使用merge和concat方法都不能准确的解决问题,此时就需要用combine_first方法,该方法类似于“打补丁”

?4.2.4数据重塑

? ? ? ? 数据重塑用于重排DataFrame,有两个常用的方法:stack方法用于将DataFrame的列“旋转”为行:unstack方法用于将DataFrame的行“旋转”为列。stack方法的具体用法如下

? ? ? ? ?将列转换为行后,则生成了一个Series数据,通过unstack又会将其重排为原始数据形式。

? ? ? ? ?默认情况下,数据重塑的操作都是最内层的,也可以通过级别编号或名称来指定其他级别进行重塑操作。

? ? ? ? 不仅数据重塑的操作是最内层的,操作的结果也会使得旋转轴位于最低级别。

?4.3字符串处理

? ? ? ? 在数据分析中常常会处理一些文本数据,pandas提供列处理字符串的矢量化函数。

4.3.1字符串方法

? ? ? ? ?如下图,把数据分成两列,常用的方法是通过函数应用来完成的。

? ? ? ? ?pandas中字段的str属性可以轻松调用字符串的方法,并运用到整个字段中(矢量化运算)

?4.3.2正则表达式

? ? ? ? 字符串的矢量化操作同样适用于正则表达式,如下图

4.4综合实例--iris数据及?

4.4.1数据来源

? ? ? ? ?本例使用的Iris(鸢尾花)数据是经过修改的,以该数据为基础来降级数据清洗操作。sepal_length_cm为花萼长度,sepal_width_cm为花萼宽度,petal_length_cm为花瓣长度,petal_width_cm为花瓣宽度。通过这四个数据可以判断并分类3中鸢尾花的类别。

?4.4.2定义问题

? ? ? ? 本例主要是学习如何对数据进行清洗。本例的目的是通过数据可视化分析,按照鸢尾花特征分出鸢尾花的类别。

4.4.3数据清洗

? ? ? ? 首先对数据进行简单描述,查看是否有异常值

? ? ? ? ?通过结果可以发现,共有150条数据,通过每个字段的平均值和方差,看不出有异常值。查看class的类别,发现不是3种,可能是由于拼写错误造成的这里进行修改

? ? ? ? ?回到异常值的处理中,这里分析肯能是分类的原因,数据都很均衡。下面利用seaborn绘制散点图矩阵

? ? ? ? ?通过第一列可以看出,有几个Iris-versicolor样本中的speal_length_cm值偏移了大部分的点;通过第二行可以看出,一个Iris_setosa样本的sepal_width_cm值偏离列大部分点。

? ? ? ? 通过对Iris_setosa的花萼宽度绘制直方图也能观测出异常,如图

?

? ? ? ? ?这里对异常值产生的原因不够清楚,所以直接对小于2.5cm的数据进行过滤,直方图如下

?

? ? ? ? 这里处理sepal_length_cm的异常值

? ? ? ? ?通过索引选取Iris_versicolor样本中sepal_length_cm值小于0.1的数据,如下图

? ? ? ? ? 图中sepal_length_cm数据很小,有可能是单位错误,这里输入的是以m为单位,通过与其他数据比较,初步认为可能是单位设置问题。通过以下代码,对数据乘以10

? ? ? ? ?再查看是否有缺失值,如图,发现花瓣宽度有5条缺失值,由于3中分类数据样本均衡,因此直接将缺失值进行删除处理

? ? ? ? ?最后对清洗好的数据进行存储,以方便下一步分析。

4.4.4数据探索

? ? ? ? 下面对处理好的数据绘制散点图矩阵。可以看出大部分情况下数据接近正态分布,而且Iris-setosa与其他两种花是线性可分的。其他两种花可能需要其他算法来进行分类

? ? ? ? ?通过绘制箱型图也可以发现该规律,通过petal_lengtn_cm可以轻松区分开Iis-setosa与其他两种花,

?

?

?

?

?

?

?

?

?

?

?

?????????

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:10:08  更:2021-09-26 10:10:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 12:53:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码