Pandas确实因为方法函数众多,光读取数据read()方式就有十几种,而且同一个数据处理场景同时有好几个方法可实现,比如拼接函数merge()
和join()
,导致使用起来有杂乱的感觉,特别是对于初学者,这种感觉尤为强烈。
先来讲讲Pandas乱的原因,再详细说说怎么学Pandas。
Pandas语法复杂不是设计层面有问题,主要是因为它要做的事太多了,你可以把Pandas看作代码界的Excel,都是处理行列数据的工具,Excel的按钮组件不计其数,比如格式、转化、插入、透视等,Pandas其实也需要处理同样多的事情,Excel的每一个按钮都对应Pandas的一个函数或方法,所以复杂度可见一斑。
其次Pandas还要兼顾面向对象和函数式两种编程风格,比如df.join()是面向对象风格,而pd.merge()则是函数式风格,虽然功能接近,但必须要这样设计。因为面向对象是Python语言的核心理念,而函数式风格又能简化pandas处理数据的流程,所以Pandas的API就格外的多了。
说了Pandas之所以乱的原因,相比你能理解这其中的不得已了。
想用好Pandas,其实也没那么难,你只需要掌握它的核心结构就可以,掌握了全貌就能有的放矢,遇到数据处理问题手到擒来。
Pandas有两种数据结构,DataFrame和Series,一个是二维数组,一个是一维数组,DataFame类似于Excel表格,有行和列,这是用的最多的数据形式。
随之而来的是这两种数据结构有各种各样的方法和属性,用来处理数据,比如apply、join等。
在这两种数据结构的方法之外,Pandas又有顶级函数,方便直接处理数据,一般都是pd.xx形式调用,比如pd.merge()
、pd.concat()
。
再来讲讲Pandas中主要的几种操作方法,这里可以参考pandas官方的cheetsheet导图来看,非常的详细且清晰。
首先是数据IO类操作,用来数据加载和导出,多数都是Excel和CSV数据,其实不难。
其次是创建DataFrame操作,这也是大家常遇到的,使用pd.DataFrame()方法。
数据的变形处理同样是高频操作,比如拼接、透视、行列转化、排序等,对应concat、pivot、melt、sort_values等方法。
分组操作也是经常会遇到的,熟悉Excel透视的都会知道,在Pandas里通过groupby方法实现。
不同表的关联,类似SQL中Join,在Pandas中主要使用merge实现。
数据表的子集操作,比如取样、索引、去重、最值、前N行等。
缺失值处理也是数据清洗高频操作,一般会用dropna、fillna。
数据表的统计学汇总,比如行列数、极值、唯一值等。
Pandas也有函数支持可视化图表的绘制,使用plot方法。
pandas支持方法链的操作。
还有很多方法这里不一一介绍了,大家可以多看看Pandas的官方文档,非常详细。