利用Python进行数据分析 第7章 数据清洗和准备

学习时间:2019/10/25 周五晚上22点半开始。

学习目标:Page188-Page217,共30页,目标6天学完,每天5页,预期1029学完。

实际反馈:X集中学习1.5小时,学习6页。实际XXX学完,耗时N天,M小时

数据准备工作:加载、清理、转换以及重塑,通常会占用分析师80%的时间或更多!!!学会高效的数据清洗和准备,将绝对提升生产力!本章将讨论处理缺失数据、重复数据、字符串操作和其他分析数据转换的工具。下一章将关注用多种方法合并、重塑数据集。

7.1 处理缺失数据

缺失数据在pandas中呈现的方式有些不完美,但对于大多数用户可以保证功能正常。

对于数值数据,pandas使用浮点值NaN(Not a Number)表示缺失数据。称其为哨兵值,可以方便地检测出来:

利用Python进行数据分析 第7章 数据清洗和准备

在pandas中,将缺失值表示为NA(R语言地惯用法),表示not available。NA数据可能是不存在地数据或虽然存在但没有观察到。(进行数据清洗时,为便于分析最好直接对缺失数据进行分析,以判断数据采集地问题或缺失胡数据可能导致的偏差。)

Python内置的None值在对象数据中也可以作为NA:

利用Python进行数据分析 第7章 数据清洗和准备

表7-1 一些关于缺失数据处理的函数

利用Python进行数据分析 第7章 数据清洗和准备

 7.1.1 滤除缺失数据

过滤缺失数据,用dropna更为实用(也可通过pandas.isnull或布尔索引的手工方法)

对于Series,dropna返回一个仅含非空数据和索引值的Series:

利用Python进行数据分析 第7章 数据清洗和准备

等价于:

利用Python进行数据分析 第7章 数据清洗和准备

对于DataFrame对象, dropna默认丢弃任何含有缺失值的行:

利用Python进行数据分析 第7章 数据清洗和准备

1)传入 how = ‘all‘ 将只丢弃全为NA的行:

利用Python进行数据分析 第7章 数据清洗和准备

2)传入 axis = 1,将丢弃含有NA的所有列,如果同时传入 how = ‘all‘ 则会丢弃全为NA的列:

利用Python进行数据分析 第7章 数据清洗和准备

3)另一个滤除DataFrame行的问题涉及时间序列数据。假设需要留下一部分观测数据,可用 thresh=N 参数实现此目的(丢弃前N行含有NA的行,对于列如何处理???):

利用Python进行数据分析 第7章 数据清洗和准备

7.1.2 填充缺失数据

如果不想滤除缺失数据,而是希望通过其他方式填补哪些缺失数据,则fillna方法是最主要的函数。通过一个常数调用fillna就会将缺失值替换为该常数:

利用Python进行数据分析 第7章 数据清洗和准备

通过一个字典调用fillna,可实现对不同列填充不同的值:

利用Python进行数据分析 第7章 数据清洗和准备

fillna默认会返回新对象,如果想对现有对象进行就地修改,则可以通过传入 inplace = True实现:

利用Python进行数据分析 第7章 数据清洗和准备

对reindex(书中为reindexing,是否有误?)有效的插值方法,同样适用于fillna:

利用Python进行数据分析 第7章 数据清洗和准备

7.2 数据转换

7.2.1 移除重复数据

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

7.2.3 替换值

7.2.4 重命名轴索引

7.2.5 离散化和面元划分

7.2.6 检测和过滤异常值

7.2.7 排列和随机采样

7.2.8 计算指标和哑变量

7.3 字符串操作

7.3.1 字符串对象方法

7.3.2 正则表达式

7.3.3 pandas的矢量化字符串函数

7.4 总结

高效的数据准备,可以为数据分析留出更多时间。下一章,将学习pandas的聚合与分组。

相关推荐