01
系列回顾
玩转Pandas系列已经连续推送4篇,尽量贴近Pandas的本质原理,结合工作实践,按照使用Pandas的逻辑步骤,系统地并结合实例推送Pandas的主要常用功能,已经推送的4篇文章:
玩转Pandas,让数据处理更easy系列1
玩转Pandas,让数据处理更easy系列2
玩转Pandas,让数据处理更easy系列3
玩转Pandas,让数据处理更easy系列4
以上4篇总结了Pandas主要的两个数据结构:
值得推荐的是,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 : {0 or ‘index’, 1 or ‘columns’}
举例说明如何使用,假如有如下一张表 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操作。
小编对所推文章分类整理,欢迎后台回复数字,查找感兴趣的文章: 1. 排序算法
2. 图算法(含树)
3. 动态规划
4. LeetCode
5. Python
6. 数据处理三剑客 7. 数学知识
8. 数据预处理
9. 机器学习算法实例大全 10. 深度学习
11. Tensorflow
12. 自然语言处理 13. 上海沙龙
本文分享自 程序员郭震zhenguo 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!