05.24 「干货教程」Pandas处理异常数据「推荐」

01

系列回顾

以上4篇总结了Pandas主要的两个数据结构:

Series(一维)和DataFrame(二维),系统地介绍了创建,索引,增删改查Series, DataFrame等常用操作接口,总结了Series如何装载到DataFrame中,以及一个实际应用多个DataFrame的实战项目例子。总结了多层索引,Pivot操作,sort操作等值得推荐的是,Pandas广泛应用在金融,统计,社会科学,和许多工程领域。Pandas和R语言直接无缝衔接。Pandas是基于Numpy(Numpy基于Python)基础开发,因此能和带有第三方库的科学计算环境很好地进行集成。

02

处理Missing data

missing data,缺失数据,在数据系统中是比较常见的一个问题,而pandas的设计目标就是让missing data的处理工作尽量轻松。

pandas使用浮点NaN表示浮点和非浮点数组中的缺失数据,它没有什么具体意义,只是一个便于被检测出来的标记而已,pandas对象上的所有描述统计都排除了缺失数据。

下面看下关于missing data处理常用的几个API。

isnull 返回一个含有布尔的对象,这些布尔表示哪些是缺失

notnull isnull 的否定式

dropna 根据各标签中是否存在缺失数据对轴标签进行过滤,返回不为NaN的值,具体里面的参数包括:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

fillna 用指定值填充NaN值, DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)

其中,method : {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None

axis : {0 or ‘index’, 1 or ‘columns’}

举例说明如何使用,假如有如下一张表 pd_data

「干货教程」Pandas处理异常数据「推荐」

调用pd_data.isnull(),返回所有元素是否为null的布尔结果:

「干货教程」Pandas处理异常数据「推荐」

调用 pd_data.dropna(),默认值下,axis=0 , how=any,也就是只要每行中有一个元素为NaN,则直接过滤掉此行,返回的结果如下所示:

「干货教程」Pandas处理异常数据「推荐」

调用pd_data.fillna(),采用标量值填充,则所有的NaN值都取为1.0,

pd_data4.fillna(1)

采用字典值填充,对应的列取对应字典中的填充值:

pd_data4.fillna({'name':'none','score':60,'rank':'none'})

再说method关键词填充效果,当method设置为 ffill时,填充效果如下所示,取上一个有效值填充到下面行,

原有NaN的表格:

「干货教程」Pandas处理异常数据「推荐」

执行如下:

pd_data.fillna(method='ffill')

执行如下:

pd_data.fillna(method='backfill')

04

concatenate操作

concatenate是连接两个及以上的DataFrame的操作,一个简单的concatenate例子,给定两个DataFrame,concatenate它们,

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3'], 'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']}, index=[0, 1, 2, 3])df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'], 'B': ['B4', 'B5', 'B6', 'B7'], 'C': ['C4', 'C5', 'C6', 'C7'], 'D': ['D4', 'D5', 'D6', 'D7']}, index=[4, 5, 6, 7])result = pd.concat( [df1,df2] )df1:

「干货教程」Pandas处理异常数据「推荐」

df2:

「干货教程」Pandas处理异常数据「推荐」

合并后:

「干货教程」Pandas处理异常数据「推荐」

默认axis=0,即沿着行方面连接,如果axis设置为1,会沿列方向扩展,行数为两者间行数的较大者,较小的用NaN填充。

「干货教程」Pandas处理异常数据「推荐」

concatenate还可以创建带层级的索引,关于这部分暂不展开介绍。

以上总结了DataFrame在处理空缺值的常用操作,及连接多个DataFrame的concat操作。

「干货教程」Pandas处理异常数据「推荐」

「干货教程」Pandas处理异常数据「推荐」

「干货教程」Pandas处理异常数据「推荐」

「干货教程」Pandas处理异常数据「推荐」


分享到:


相關文章: