导读:在Python中,进行数据分析的一个主要工具就是Pandas。Pandas是Wes McKinney在大型对冲基金AQR公司工作时开发的,后来该工具开源了,主要由社区进行维护和更新。
Pandas具有NumPy的ndarray所不具有的很多功能,比如集成时间序列、按轴对齐数据、处理缺失数据等常用功能。Pandas最初是针对金融分析而开发的,所以很适合用于量化投资。
作者:赵志强 刘志伟
来源:大数据DT(ID:hzdashuju)
在使用Pandas之前,需要导入Pandas包。惯例是将pandas简写为pd,命令如下:
import pandas as pd
Pandas包含两个主要的数据结构:Series和DataFrame。其中最常用的是DataFrame,下面我们先来学习一下DataFrame。
01 DataFrame入门
DataFrame是一个表格型的数据结构。每列都可以是不同的数据类型(数值、字符串、布尔值等)。
DataFrame既有行索引也有列索引,这两种索引在DataFrame的实现上,本质上是一样的。但在使用的时候,往往是将列索引作为区分不同数据的标签。DataFrame的数据结构与SQL数据表或者Excel工作表的结构非常类似,可以很方便地互相转换。
下面先来创建一个DataFrame,一种常用的方式是使用字典,这个字典是由等长的list或者ndarray组成的,示例代码如下:
data={'A':['x','y','z'],'B':[1000,2000,3000],'C':[10,20,30]}
df=pd.DataFrame(data,index=['a','b','c'])
df
运行结果如图3-2所示。
▲图3-2
我们可以看到,DataFrame主要由如下三个部分组成。
数据,位于表格正中间的9个数据就是DataFrame的数据部分。
索引,最左边的a、b、c是索引,代表每一行数据的标识。这里的索引是显式指定的。如果没有指定,会自动生成从0开始的数字索引。
列标签,表头的A、B、C就是标签部分,代表了每一列的名称。
下文列出了DataFrame函数常用的参数。其中,“类似列表”代表类似列表的形式,比如列表、元组、ndarray等。一般来说,data、index、columns这三个参数的使用频率是最高的。
data:ndarray/字典/类似列表 | DataFrame数据;数据类型可以是ndarray、嵌套列表、字典等
index:索引/类似列表 | 使用的索引;默认值为range(n)
columns:索引/类似列表 | 使用的列标签;默认值为range(n)
dtype:dtype | 使用(强制)的数据类型;否则通过推导得出;默认值为None
copy:布尔值 | 从输入复制数据;默认值为False
其中data的数据类型有很多种。
下文列举了可以作为data传给DataFrame函数的数据类型。
可以传给DataFrame构造器的数据:
二维ndarray:可以自行指定索引和列标签
嵌套列表或者元组:类似于二维ndarray
数据、列表或元组组成的字典:每个序列变成一列。所有序列长度必须相同
由Series组成的字典:每个Series会成为一列。如果没有指定索引,各Series的索引会被合并
另一个DataFrame:该DataFrame的索引将会被沿用
前面生成了一个DataFrame,变量名为df。下面我们来查看一下df的各个属性值。
获取df数据的示例代码如下:
df.values
输出结果如下:
array([['x', 1000, 10],
['y', 2000, 20],
['z', 3000, 30]], dtype=object)
获取df行索引的示例代码如下:
df.index
输出结果如下:
Index(['a', 'b', 'c'], dtype='object')
获取df列索引(列标签)的示例代码如下:
df.columns
输出结果如下:
Index(['A', 'B', 'C'], dtype='object')
可以看到,行索引和列标签都是Index数据类型。
创建的时候,如果指定了列标签,那么DataFrame的列也会按照指定的顺序进行排列,示例代码如下:
df=pd.DataFrame(data,columns=['C','B','A'],index=['a','b','c'])
df
运行结果如图3-3所示。
▲图3-3
如果某列不存在,为其赋值,会创建一个新列。我们可以用这种方法来添加一个新的列:
df['D']=10
df
运行结果如图3-4所示。
▲图3-4
使用del命令可以删除列,示例代码如下:
del df['D']
df
运行结果如图3-5所示。
▲图3-5
添加行的一种方法是先创建一个DataFram