1. 前言 => 2. 生成 Series => 3. Series 的查找 => 4. Series 中的 一些函數
=> 5. 簡單的畫一下Series => 6. Series 轉 DataFream
1. 前言
緊張緊張喔~ 系列文出到 6 了
Python 的基本工具應該快介紹完了
之後 這個系列文會比較慢更新
然後專注在其他的應用上吧
本篇 要介紹的 Series 也是pandas 套件裡的資料形式
這其實是之前介紹的 DataFrame 的簡化版
兩個是可以互通的喔 (下邊會介紹)
不過這次會介紹Series 比較細節的部份
讓我們繼續看下去.........
2. 生成 Series
import pandas as pd ##因為Series 是pandas 套件裡的資料形式
### 生成Series 的簡單方法 是先產生一組list 然後再用 pd.Series 指令
s = pd.Series( [1,3,6,9,12] ) ## 和生成 Array 的方法是一樣的
### 哈哈 你會發現這跟一般的list 不是一樣嗎
### 實際上 我們會用到 Series 的情況 是希望
### 它的index 是擺成時間的 (一組時間序列)
### 所以 接著會這樣做
date = pd.date_range('20180101', periods=5) ## 生成一個日期的 index
##這邊用到了 date_range 這個函數 然後日期是從 20180101開始 往後數5天
##接著就可以用我們想要用的 data 來當作index了
s = pd.Series([1,3,6,9,12], index= date)
3. Series 的查找
## 和其他資料格式一樣
## 我們會想要找到 Series 中 某個位置的值是多少
## 可以用下面兩個函數 loc 和 iloc
## 試試用 loc 找 2018年 1月 5 日的值是多少
## 在已經建號的Series 後面加 .loc 即可
s.loc['20180105'] #可以這樣寫
s.loc['2018-01-05'] #也可以這樣寫
# 出來的結果是一樣的
## 這可寫法也能找一段時間的資料
## 例如 找 2018-01-01~2018-01-05
s.loc['2018-01-01':'2018-01-05']
#### 上面的方法 已經滿足了新手小白的 查找寫法了
## 那 iloc 呢? 這函數是可以多個位置的
## 但是它 不是用日期 而是直接打序號 (用 list 來寫)
## 例如: 找 0 和 4 這兩個位置
s.iloc[ [0,4] ]
## 另外我們 如果想找 某個值他的位置在哪 可以直接用布林運算
## 這也是很直覺的方式
## 例如 s==3 ; s>3 ;
print(s[s==3]); print("\n")
print(s[s>3])
4.Series 中的 一些函數
## 以下是常用的 max min ..... 就不細說了
## 只是要注意 要加一個 ( )
print(s)
print(s.max()) ; print(s.min()) ; print(s.mean()) ; print(s.std())
## 在 Series 的世界裡 不得不介紹 cumsum 和 cumprod
## cumsum 的意思是 累加~
## 以我們的例子來說 就是產生一個Series
## 然後根據 1 , 1+2 , 1+2+3, .... 這樣的規則產生的
## cumprod 也是類似的概念 只不過是用乘法的
print(s)
print(s.cumsum())
print(s.cumprod())
#### 之後新手小白會示範這個函數到底可以用在哪邊~~
## Series 中的 一些函數 最後要提到的 就是 rolling
## rolling 疊代 以我們的例子來說 rolling 取2
## 他會是 1+3 , 3+6 , 6+9 , 9+12
## 也就是跟 前一行作互動
## 那因為第一行是沒有前一行可以互動 所以就顯示NaN
print(s)
s.rolling(2).sum()
#s.rolling(2).max() ; s.rolling(2).min() ;
#s.rolling(2).mean() ; s.rolling(2).std()
# 除了 sum 以外 max , min ... 也是可行的
# 也可以試試 rolling() 裡面改別的數字
# 像是 rolling( 3 ) ; rolling( 4 )
# 它一樣就是往前抓3 個做互動喔~
5.簡單的畫一下Series
%matplotlib inline
s.plot()
## 就只是畫畫看圖而已XD
## 不過要注意的是 %matplotlib inline 這行一定要打
## 不然他不會顯示在 Jupyter notbook 上面
6. Series 轉 DataFream
## 前面有說 Series 和 DataFream 是互通的
## 接下來示範 怎麼把 Series 轉為DataFream
## 首先 我先生成 3個 Series 分別為 s1 s2 s3
#Series index 都用一樣的
date = pd.date_range('20180101', periods=6) # 生成 index
s1 = pd.Series(list(np.arange(1,1+6,1)), index=date) # 用arange 生成數列 再轉為 list
s2 = pd.Series(list(np.arange(7,7+6,1)), index=date)
s3 = pd.Series(list(np.arange(13,13+6,1)), index=date)
## dictionary 只是幫忙 對應我的命名 和 Series 而已 可跳過
dictionary = {'第一條': s1,'第二條': s2,'第三條': s3}
df = pd.DataFrame(dictionary)
df
#好啦~~ 這樣就完成了 DataFream 囉~~
#一些 DataFream 的操作可以參考 上次發的文
http://markjong001.pixnet.net/blog/post/191632355
##要是我還有想到其他的東西 以後再補充吧~~
留言列表