一、初識Pandas
Pandas 是基於 NumPy 的一個非常好用的庫,它有兩種自己獨有的基本數據結構Series (一維)和
DataFrame(二維),它們讓數據操作更簡單了。雖然Pandas有着兩種數據結構,但它依然是 Python 的一個庫,所以,Python
中有的數據類型在這里依然適用,也同樣還可以使用類自己定義數據類型。
在金融數據分析領域,Pandas更是起到了非常重要的作用,比如用於量化交易。Pandas
納入了大量庫和一些標准的數據模型,提供了高效地操作大型數據集所需的工具,對於億級的數據處理也如魚得水。
二、Pandas基本操作
1、Series的創建
Series的創建主要有三種方式:
1)通過一維數組創建Series
import numpy as npimport pandas as pd#創建一維數組a = np.arange(10)
print(a)
s = pd.Series(a)
print(s)
[/code]
輸出如下:

##### 2)通過字典的方式創建Series
```code
import numpy as npimport pandas as pd#創建字典d = {'a':1,'b':2,'c':3,'d':4,'e':5}
print(d)
s = pd.Series(d)
print(s)
[/code]
輸出如下:
##### 3)通過DataFrame中的某一行或某一列創建Series
參考下面DataFrame第三種創建方式中的s = df3['one']。
### 2、DataFrame的創建
DataFrame的創建主要有三種方式:
##### 1)通過二維數組創建DataFrame
```code
import numpy as npimport pandas as pd#創建二維數組a = np.array(np.arange(12)).reshape(3,4)
print(a)
df1 = pd.DataFrame(a)
print(df1)
[/code]
輸出如下:
##### 2)通過字典的方式創建DataFrame
以下以兩種字典來創建數據框,一個是字典列表,一個是嵌套字典。
```code
import numpy as npimport pandas as pd
d1 = {'a':[1,2,3,4],'b':[5,6,7,8],'c':[9,10,11,12],'d':[14,14,15,16]}
print(d1)
df1 = pd.DataFrame(d1)
print(df1)
d2 = {'one':{'a':1,'b':2,'c':3,'d':4},'two':{'a':5,'b':6,'c':7,'d':8},'three':{'a':9,'b':10,'c':11,'d':12}}
print(d2)
df2 = pd.DataFrame(d2)
print(df2)
[/code]
輸出如下:
##### 3)通過DataFrame的方式創建DataFrame
我們取出2)中的df2來創建df3
```code
df2 = pd.DataFrame(d2)print(df2)
df3 = df2[['one','two']]print(df3)
s = df3['one']print(s)
[/code]
輸出如下:
#### 三、處理股票數據
接下來,我們通過實例來學習Pandas在處理股票數據上的應用。
我們使用pandas_datareader來獲取阿里巴巴的股票數據。
##### 1)導入以下庫:
```code
import pandas as pdimport pandas_datareader.data as web#繪圖使用import matplotlib.pyplot as plt#獲取時間使用import datetime
[/code]
##### 2)設置股票名稱和時間參數
```code
name = "BABA"start = datetime.datetime(2015,1,1)end = datetime.date.today()
[/code]
##### 3)獲取股票數據
```code
prices = web.DataReader(name, "google", start, end)
[/code]
##### 4)查看prices的類型
```code
print(type(prices))
[/code]
打印如下:
```code
<class 'pandas.core.frame.DataFrame'>
[/code]
可以看到返回的數據類型就是DataFrame類型。
##### 5)查看股票的摘要信息
```code
print(prices.describe()
[/code]
打印 如下:
```code
Open High Low Close Volumecount 791.000000 791.000000 792.000000 792.000000 7.920000e+02mean 106.632099 107.793186 105.355164 106.614520 1.610571e+07std 38.191772 38.539981 37.719848 38.156416 9.941683e+06min 57.300000 58.650000 57.200000 57.390000 2.457439e+06
25% 79.855000 80.945000 79.157500 79.935000 1.003487e+07
50% 91.000000 91.740000 89.925000 90.705000 1.350020e+07
75% 119.315000 120.400000 118.462500 120.205000 1.879724e+07max 204.830000 206.200000 202.800000 205.220000 9.704593e+07
[/code]
再來打印最新的三條信息
```code
print(prices.tail(3))
[/code]
```code
Open High Low Close VolumeDate 2018-02-21 189.37 193.17 188.46 188.82 22071585
2018-02-22 190.20 190.74 187.77 188.75 12282843
2018-02-23 190.18 193.40 189.95 193.29 16937275
[/code]
##### 6)繪圖
我們將阿里巴巴的股票數據按照開盤價繪圖。
```code
plt.plot(prices.index, prices["Open"])plt.show()
[/code]

從圖中我們可以看到阿里巴巴的股票一路攀升,細心點發現每年的11月都有一個高點。
#### 四、總結
Pandas是以NumPy和Matplotlib為基礎封裝的金融數據分析的庫,對於量化交易十分有用,通過可視化的效果能幫我們一定程度分析股市的走向。
