讨论用于缺失值、重复值、字符串操作和其他分析数据转换的工具
1.缺失值
1.1. 处理缺失值
pandas对象的所有描述性统计信息默认情况下是排除缺失值的
对于数值型数据,pandas使用浮点数NaN(Not a Number来表示缺失值)
在统计学应用中,NA数据可以是不存在的数据或者是存在但不可观察的数据(例如在数据收集过程中出现了问题)
当清洗数据用于分析时,对缺失数据本身进行分析以确定数据收集问题或数据丢失导致的数据偏差通常很重要。
Python内建的None值在对象数组中也被当作NaN处理
1.2 过滤缺失值
可以使用pandas.isnull和布尔值索引手动地过滤缺失值
也可以用dropna过滤缺失值(在Series上使用dropna会返回Series中所有的非空数据及其索引值)
处理DataFrame对象时,dropna默认情况下会删除包含缺失值的行,所以要用how选项来选择。
传入how='all'时,将删除所有值均为NAN的行
如果要用同样的方式删除列,传入参数axis=1
只想保留包含一定数量的观察值的行,可以用thresh参数来表示
这一行除去NA值,剩余数值的数量大于等于n,便显示这一行
1. 3. 补全缺失值
大多数情况下,用fillna()方法来补全缺失值。调用fillna()时,可以使用一个常数来替代缺失值。
调用fillna时使用字典,可以为不同列设定不同的填充值
fillna()返回的是一个新的对象,但也可以修改已经存在的对象。
使用fillna可以将Series的平均值或者中位数用于填充缺失值。
1.4 数据转换
1.4.1 删除重复值
由于各种原因,DataFrame会出现重复行,例如:
DataFrame的duplicated()方法:返回一个布尔值Series,反映的是每一行是否存在重复(与之前出现过的行相同)情况。
drop_duplicates()返回的是DataFrame,内容是duplicated返回数组中为False的部分。
这些方法默认都是对列进行操作,可以指定数据的任何子集来检测是否有重复。
我们有一个额外的列,并想基