主要内容:缺失值处理
删除重复值,离散化和分箱
函数映射,轴索引重定向
异常值检测,虚拟变量 dummy
常用正则表达式
字符串操作
一,缺失值处理,过滤缺失值和补全缺失值
1, 过滤缺失值
可以使用 pandas.isnull 查看是否是缺失值和使用 pandas.dropna 去除缺失值。
使用dropna 可以删除空值数据。当参数传入 how=’all’ 将删除所有值均为NA 的值,同样的也可以传入 axis 参数来指定对行还是对列操作。
2, 补全缺失值
在多数的情况下,使用fillna 来补全缺失值。以0来填充缺失值。也可以使用数据的平均值等填充,即填充值可以任意的指定。
以下为fillna 函数的参数
二,数据转换
包括, 删除重复值,使用函数映射数据,代替值 重命名轴索引 离散化和分箱操作
1, 删除重复值,使用函数映射数据
使用的是 duplicated 函数其返回是一个布尔值得 Series。
Series 的Map 方法接受一个函数或是一个包含映射关系的字典类型对象,是一种可以便捷执行按元素转换和其他清洗相关操作的方法。
2,代替值,重命名轴索引
使用 pd.replace(),一次性替换多个值可以传入一个列表和替换值。要将不同的值替换不同的值,可以传入替换值列表。也可以通过字典进行传递。
和Series中的值一样可以通过函数或是某种形式的映射对轴标签进行类似的转换,生成新的且带有不同标签的对象。例如可以通过语句:
Data.index = data.index,map(lambda x: x[:4].upper())
3,离散化和分箱
连续值有时需要离散化,或是分离成箱子进行分析。例如将一群人的年龄进行分段化显示。
数据显示的是左开右闭,还可以通过labels 参数对分段的数据进行自定义的命名。
4 ,检测过滤异常值,置换和随机抽样。
通过布尔运算,可以指定数据中的某一列中的值是否大于或是小于某个值。例如
Data[(np.abs(data)>3).any(1)] 选出数据中所有值大于3 或是小于-3 的行。
使用numpy.random.permutation 对 DataFrame 中的Series或是行进行置换,在调用permutation 时根据你想要的轴长度可以产生一个表示新顺序的整数数组。
整数的数组可以用在基于 iloc 的索引或是等价的take 函数中。如 df.take(new).
要生成一个不含代替值的随机子集,可以使用 Series和 DataFrame 的 sample 方法。 如果允许有重复值测传入 replace=True.
5,计算指标/虚拟变量
将分类变量转换为虚拟或是指标矩阵。例如 DataFrame中一列有K个不同的值,则可以衍生一个K列的值为 0 和 1 的矩阵或是 DataFrame。实现的函数为 get_dummies。
使用 join 函数加上前缀
三, 字符串操作
字符串内置方法,正则表达式和向量化字符串函数
1, 字符串内置方法
拆分字符串和去空格。分别使用 split() 和 strip() 函数。
Python内建字符串方法
2, 正则化表达式
正则表达式提供了一种在文本中灵活查找或是匹配字符串的方式。例如实现对多中空白字符隔开的字符串使用 \s+. re.split(‘\s+’,text)。 形成一个可以复用的正则表达式以提高效率。推荐使用 re.complie, 节约资源。
常用的正则化方法。
总结:
本文主要讲述了数据的缺失值处理,数据的转换和字符串的操作。其中缺失值处理包括缺失值的检测,替换和填充。缺失值处理完毕后,就是对数据重复值,坐标轴变换和函数映射等,这一部分统一的称为数据的转换。最后讲了正则表达式,正确的使用会极大的提高数据的处理效率,其中search find match 等几个常用的函数应熟练的掌握。
编者按: 本文主要是学习 Python 数据分析的读书笔记和操作练习,参考书书籍为《利用Python 进行数据分析》作者 Wes Mckinney 许敬一 翻译。
欢迎大家一块学习讨论。