玩转Pandas,让数据处理更easy系列5

01

系列回顾

玩转Pandas系列已经连续推送3篇,尽量贴近Pandas的本质原理,结合工作实践,按照使用Pandas的逻辑步骤,系统地并结合实例推送Pandas的主要常用功能,已经推送的3篇文章:

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

Series(一维)和DataFrame(二维),

系统地介绍了创建,索引,增删改查Series, DataFrame等常用操作接口,

总结了Series如何装载到DataFrame中,以及一个实际应用多个DataFrame的实战项目例子。

总结了多层索引,Pivot操作,sort操作等

值得推荐的是,Pandas广泛应用在金融,统计,社会科学,和许多工程领域。Pandas和R语言直接无缝衔接。Pandas是基于Numpy(Numpy基于Python)基础开发,因此能和带有第三方库的科学计算环境很好地进行集成。

02

Pandas核心应用场景

按照使用逻辑,盘点Pandas的主要可以做的事情:

03

处理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 :

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

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

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

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

pd_data4.fillna(1)

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

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

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

原有NaN的表格:

执行如下:

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:

df2:

合并后:

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

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

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

2. 图算法(含树)

3. 动态规划

4. LeetCode

5. Python

6. 数据处理三剑客

7. 数学知识

8. 数据预处理

9. 机器学习算法实例大全

10. 深度学习

11. Tensorflow

12. 自然语言处理

13. 上海沙龙

如果文章对您有帮助,欢迎点赞、转发。你的支持=彼此的进步

算法channel∣原创干货分享

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180327G01EEY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券