一、数据清洗

现实中通过各种方式收集到的数据都是“肮脏”的。本节将着重讲解 数据清洗的工作,如缺失值的处理、重复数据的处理及如何替代值等 具体操作。 1、处理缺失值 1.1、侦查缺失值 通过人工查看DataFrame数据是否有缺失值的方法是很低效的 。尤其当数据量大时,人工查看很耗时。通过isnull和notnull方法 ,可以返回布尔值的对象。 这时通过求和可以获取每列的缺失值数量,再通过求和就可以获取 整个DataFrame的缺失值数量。 通过info方法,也可以看出DataFrame每列数据的缺失值情况。 1.2、删除缺失值 在缺失值的处理方法中,删除缺失值是常用的方法之一。通过 dropna方法可以删除具有缺失值的行 传入how='all',则只会删除全为NaN的那些行。如果需要删除列,则指定轴方向即可。 1.3、填充缺失值 当数据量不够或许其他 部分信息很重要的时候, 就不能删除数据了,这时 就需要对缺失值进行填充 。通过fillna方法可以将缺 失值替换为常数值。 在fillna中传入字典结构数据,可 以针对不同列填充不同的值, fillna返回的是新对象,不会对原 数据进行修改,可通过inplace 就地进行修改。 对重新索引(reindex)中填充缺失值的方法同样适用于fillna中。 处理缺失值 也可以通过平均值等作为填充数 对于fillna的参数,可以通过“?”进行帮助查询 2、移除重复数据 在爬取的数据中往往会出现重复数据,对于重复数据保留一份即可 ,其余的可做移除处理。在DataFrame中,通过duplicated方法判 断各行是否有重复数据。 通过drop_duplicates方法,可以删除多余的重复项。在这种情况下,当每行的每个字段都相同时才会判断为重复项。当 然也可以通过指定部分列作为判断重复项的依据。 通 过 结 果 可 看 出 , 保 留 的 数 据 为 第 一 个 出 现 的 组 合 。 传 入 keep='last'可以保留最后一个出现的组合。 3、替换值 替换值类似于Excel中的替换功能,是 对查询到的数据替换为相应的数据。在 pandas中,通过replace可完成替换值 的功能。 4、利用函数或映射进行数据转换 • map函数:将函数套用在Series的每个元素中 • apply函数:将函数套用到DataFrame的行与列上 • applymap函数:将函数套用到DataFrame的每个元素上 在pandas中定义好函数,通过map方法实现分数等级的划分。 5、检测异常值 设备故障和人为操作失误都会产生异常 值,在数据分析中,通常会通过一些可 视化的方法去找离群点,这些离群点可 能就是异常值。但初学者一定要注意: 并非所有的离群点都是异常值,需要根 据业务常识等辅助经验进行判断。比如 右侧的例子,查找的离群点可能是因为 人为原因将小数点输错了,从而导致的 异常点。 举例: 6、虚拟变量 在数学建模和机器学习中,只有数值型 数据才能供算法使用,对于一些分类变 量则需要将其转换为虚拟变量(哑变量 ) ( 也 就 是 0,1 矩 阵 ) , 通 过 get_dummies函数即可实现该功能。

二、数据合并和重塑

1、merge合并 merge函数是通过一个或多个键 ( DataFrame 的 列 ) 将两个 DataFrame按行合并起来,其方 式与关系型数据库一样,这是多对一的合并情况。默认按照内连接合并 由于两个DataFrame都有fruit列名,所以默认按该列进行合并 可 以 指 定 键 名 , 如 果 两 个DataFrame的列名不一样,也可以单独指定 merge默认为内连接(inner),也就是返回交集。 通过how参数可以选择连接方法:左连接(left)、右连接(right)和外连接(outer)

总结merge使用的常用参数如下:

• merge函数是通过一个或多个键( DataFrame 的 列 ) 将两个DataFrame按行合并起来,其方式与关系型数据库一样 • merge使用的常用参数如下: • left:参与合并的左侧DataFrame • right:参与合并的右侧DataFrame • how:连接方法: inner、 left、 right、 outer • on:用于连接的列名 • left on:左侧DataFrame中用于连接键的列 • right_ on:右侧DataFrame中用于连接键的列 • left index:左侧DataFrame的行索引作为连接键 • right_ index:右侧DataFrame的行索引作为连接键 • sort:合并后会对数据排序,默认为True • suffixes:修改重复名. 2、concat连接 如果需要合并的DataFrame之间没有连接键,就不能使用merge方 法了,这时可通过pandas的concat方法实现。定义3个没有相同索 引的Series,使用concat连接,会按行的方向堆叠数据。 3 、combine_first合并 如果需要合并的两个DataFrame 存在重复的索引,在这种情况下 若使用merge和concat方法都不 能准确地解决问题,此时就需要 使用combine_first方法,该方 法类似于“打补丁” 。 4、数据重塑 数据重塑用于重排DataFrame,有 两个常用的方法:stack方法用于将 DataFrame 的 列 “ 旋 转 ” 为 行 ; unstack方法用于将DataFrame的行 “旋转”为列。 将列转换为行后,则生成了一个Series数据,通过unstack又会将其 重排为原始数据的形式。 默认情况下,数据重塑的操作都是最内 层的,也可以通过级别编号或名称来指 定其他级别进行重塑操作。 不仅数据重塑的操作是最内层的,操作的结果也 会使旋转轴位于最低级别。

三、字符串处理

在数据分析中,常常会处理一些文本数据,pandas提供了处理字 符串的矢量化函数。本节将讲解字符串矢量化函数的使用方法 1、字符串方法。 把数据分成两列,常用的方法是通过函数应用来完成 举例: pandas中字段的str属性可以轻松调用字符串的方法,并运用到整 个字段中(矢量化运算)。 2、正则表达式 字符串的矢量化操作同样适 用于正则表达式。