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

##要是我還有想到其他的東西 以後再補充吧~~
 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Markjong001 的頭像
    Markjong001

    新手小白用Python來做資料分析是否搞錯了什麼

    Markjong001 發表在 痞客邦 留言(0) 人氣()