Pandas最详细教程来了( 二 )


创建的时候 , 如果指定了列标签 , 那么DataFrame的列也会按照指定的顺序进行排列 , 示例代码如下:
df=pd.DataFrame(data,columns=['C','B','A'],index=['a','b','c'])df运行结果如图3-3所示 。

Pandas最详细教程来了

文章插图
▲图3-3
如果某列不存在 , 为其赋值 , 会创建一个新列 。我们可以用这种方法来添加一个新的列:
df['D']=10df运行结果如图3-4所示 。
Pandas最详细教程来了

文章插图
▲图3-4
使用del命令可以删除列 , 示例代码如下:
del df['D']df运行结果如图3-5所示 。
Pandas最详细教程来了

文章插图
▲图3-5
添加行的一种方法是先创建一个DataFrame , 然后再使用Append方法 , 代码如下:
new_df=pd.DataFrame({'A':'new','B':4000,'C':40},index=['d'])df=df.append(new_df)df运行结果如图3-6所示 。
Pandas最详细教程来了

文章插图
▲图3-6
或者也可以使用loc方法来添加行 , 示例代码如下:
df.loc['e']=['new2',5000,50]df运行结果如图3-7所示 。
Pandas最详细教程来了

文章插图
▲图3-7
loc方法将在后面的内容中详细介绍 。
索引的存在 , 使得Pandas在处理缺漏信息的时候非常灵活 。下面的示例代码会新建一个DataFrame数据df2 。
df2=pd.DataFrame([1,2,3,4,5],index=['a','b','c','d','z'],columns=['E'])df2运行结果如图3-8所示 。
Pandas最详细教程来了

文章插图
▲图3-8
如果现在想要合并df和df2 , 使得df有一个新的列E , 那么可以使用join方法 , 代码如下:
df.join(df2)运行结果如图3-9所示 。
Pandas最详细教程来了

文章插图
▲图3-9
可以看到 , df只接受索引已经存在的值 。由于df2中没有索引e , 所以是NaN值 , 而且df2索引为z的值已经丢失了 。为了保留df2中索引为z的值 , 我们可以提供一个参数 , 告诉Pandas如何连接 。示例代码如下:
df.join(df2,how='outer')运行结果如图3-10所示 。
Pandas最详细教程来了

文章插图
▲图3-10
在上述代码中 , how='outer'表示使用两个索引中所有值的并集 。连接操作的其他选项还有inner(索引的交集)、left(默认值 , 调用方法的对象的索引值)、right(被连接对象的索引值)等 。
在金融数据分析中 , 我们要分析的往往是时间序列数据 。下面介绍一下如何基于时间序列生成DataFrame 。为了创建时间序列数据 , 我们需要一个时间索引 。这里先生成一个DatetimeIndex对象的日期序列 , 代码如下:
dates=pd.date_range('20160101',periods=8)dates输出结果如下:
DatetimeIndex(['2016-01-01', '2016-01-02', '2016-01-03', '2016-01-04',               '2016-01-05', '2016-01-06', '2016-01-07', '2016-01-08'],dtype='da                   tetime64[ns]', freq='D')可以看到 , 使用Pandas的date_range函数生成的是一个DatetimeIndex对象 。date_range函数的参数及说明如下所示: