利用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)表示缺失数据。称其为哨兵值,可以方便地检测出来:

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

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

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

 7.1.1 滤除缺失数据

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

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

等价于:

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

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

  

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

  

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

  

7.1.2 填充缺失数据

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

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

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

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

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的聚合与分组。

猜你喜欢

转载自www.cnblogs.com/ElonJiang/p/11741216.html