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

原文地址:https://www.cnblogs.com/ElonJiang/p/11741216.html

时间: 2024-10-23 08:21:14

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

利用Python进行数据分析 第5章 pandas入门(2)

5.2 基本功能 (1)重新索引 - 方法reindex 方法reindex是pandas对象地一个重要方法,其作用是:创建一个新对象,它地数据符合新地索引. 如,对下面的Series数据按新索引进行重排: 根据新索引重排后的结果如下,当某个索引值不存在,就会在原来的基础上引入缺失值NaN: 利用reindex的method选项,实现插值处理.尤其对于时间序列这样的有序数据,会经常用到该选项. 如,使用 ffill 实现 前向值 填充: 利用DataFrame,reindex修改(行)索引和列.

利用Python进行数据分析 第6章 数据加载、存储与文件格式

学习时间:2019/10/20 周日下午17点开始.共23页,目标3天学完,每天8页,预期1021学完. 6.1 读写文本格式的数据 6.1.1 逐块读取文本文件 6.1.2 将数据写出到文本格式 6.1.3 处理分隔符格式 6.1.4 JSON数据 6.1.5 XML和HTML:Web信息收集 6.1.6 利用lxml.objectify解析XML 6.2 二进制数据格式 6.2.1 使用HDF5格式 6.2.2 读取Microsoft Excel文件 6.3 Web APIs交互 6.4 数

利用Python进行数据分析 第4章 NumPy基础-数组与向量化计算(2)

2.3 NumPy数组的运算 数组,不需要编写循环即可对数据执行批量运算!NumPy用户称此特性为矢量化(vectorization). (1)大小相等的数组之间的任何算术运算都会将运算应用到元素级 (2)数组与标量的算术运算将标量值传播到各个元素 PS:**在python中表示幂运算,如,2**3表示2的3次方 (3)大小相同的数组之间的比较会生成布尔值数组 (不同大小的数组之间的运算叫广播,本书不需要多广播机制深入理解) 2.4 基本的索引和切片 数组与列表的重要区别在于:数组切片是原始数组

利用Python进行数据分析 第5章 pandas入门

pandas库,含有使数据清洗和分析工作变得更快更简单的数据结构和操作工具.pandas是基于NumPy数组构建. pandas常结合数值计算工具NumPy和SciPy.分析库statsmodels和scikitlearn,和可视化库matplotlib等工具一同使用. 5.1 pandas数据结构介绍 pandas的主要数据结构:Series和DataFrame (1)Series Series是一种类似于一维数组的对象,由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)

利用python进行数据分析-08-第六章 数据加载、存储与文件格式

1.读写文本格式的数据 pandas提供了一些用于将表格型数据读取为DataFrame对象的函数. 文件导入,使用read_csv将数据导入一个DataFrame df= pd.read_csv('B:/test/ch06/ex1.csv') df Out[142]: a b c d message 0 1 2 3 4 hello 1 5 6 7 8 world 2 9 10 11 12 foo read_table,只不过需要制定分隔符 df = pd.read_table('B:/test/

《利用python进行数据分析》读书笔记 --第一、二章 准备与例子

http://www.cnblogs.com/batteryhp/p/4868348.html 第一章 准备工作 今天开始码这本书--<利用python进行数据分析>.R和python都得会用才行,这是码这本书的原因.首先按照书上说的进行安装,google下载了epd_free-7.3-1-win-x86.msi,译者建议按照作者的版本安装,EPDFree包括了Numpy,Scipy,matplotlib,Chaco,IPython.这里的pandas需要自己安装,对应版本为pandas-0.

《利用Python进行数据分析&#183;第2版》第四章 Numpy基础:数组和矢量计算

<利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对象.其C语言编写的算法库可以操作内存而不必进行其他工作.比起内置序列,使用的内存更少(即时间更快,空间更少) numpy可以在整个数组上执行复杂的计算,而不需要借助python的for循环 4.0 前提知识 数据:结构化的数据代指所有的通用数据,如表格型,多维数组,关键列,时间序列等 相关包:numpy pa

利用python进行数据分析--(阅读笔记一)

以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频表可以用于情感分析. 2.大多数软件是由两部分代码组成:少量需要占用大部分执行时间的代码,以及大量不经常执行的“粘合剂代码”. cython已经成为python领域中创建编译型扩展以及对接c/c++代码的一大途径. 3.在那些要求延迟性非常小的应用程序中(例如高频交易系统),为了尽最大可能地优化性能,耗费时间使用诸如C++这样更低级.更低生产率的语言进行

《利用Python进行数据分析》之pandas的时间序列基础

本章以<利用python进行数据分析>的第10章:时间序列 为基础,整理了pandas 库中时间序列相关用法. 时间序列数据的意义取决于具体的应用场景,主要有以下几种: 时间戳(timestamp) 固定时期(period) 时间间隔(interval) 实验或过程时间 pandas提供了一组标准的时间序列处理工具和算法,可以轻松的对时间序列进行切片.聚合,对定期/不定期的时间序列进行重采样等. 这些工具大部分对金融和经济数据尤为有用,同时也可以用来分析服务器和日志数据. 1.日期和时间数据类