股市與上帝一樣,不同的是股市不會原諒不知道自己在做些什麼的人。
巴菲特
在將畫圖的程式用變數取代時,發現這種資料型態轉換(把SQL的dataset轉成畫圖的x,y List),應該很早就有這種需求,只是筆者不太熟這關鍵字要怎麼搜尋,先試一下pandas.
Python Data Analysis Library
官網是http://pandas.pydata.org/。
在官網教學中,有一個10 Minutes to Pandas,10分鐘上手。
我們先試一下,看一下葫蘆裏賣著什麼膏藥。
Pandas是一個產生表格式data的工具庫。
簡易的做出表格式data,
s = pd.Series([1,3,5,np.nan,6,8])
s
Out[3]:
0 1
1 3
2 5
3 NaN
4 6
5 8
產生時間的陣列。滿激賞的。
股票和時間是連動的。
dates=pd.DateRange('20130101',periods=6)
dates
Out[5]:
<class 'pandas.core.daterange.DateRange'>
offset: <1 BusinessDay>, tzinfo: None
[2013-01-01 00:00:00, ..., 2013-01-08 00:00:00]
length: 6
日期的陣列。有意思的是會產生工作天。把假日去掉。
dates[2],dates[3],dates[4],dates[5]
Out[8]:
(datetime.datetime(2013, 1, 3, 0, 0),
datetime.datetime(2013, 1, 4, 0, 0),
datetime.datetime(2013, 1, 7, 0, 0),
datetime.datetime(2013, 1, 8, 0, 0))
快速打作表格data, 它用DataFrame這個專有名詞來表達!
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
df
Out[30]:
A B C D
2013-01-01 0.507979 -0.458618 -0.772404 1.818761
2013-01-02 0.387739 -0.329805 0.692372 0.267453
2013-01-03 -0.159015 -1.010833 0.463948 1.005358
2013-01-04 1.927620 0.649585 1.208413 -0.693031
2013-01-07 -0.248774 1.687360 -0.537145 1.951803
2013-01-08 1.933946 0.264941 -2.341975 -1.806157
這個建構的方式,好像讓人耳目一新,也許也以解決筆者遇到的問題。
內建的統計功能。
df.describe()
Out[24]:
A B C D
count 6.000000 6.000000 6.000000 6.000000
mean -0.226524 0.281673 -0.716989 0.569399
std 0.717004 0.727893 1.033587 0.865014
min -1.333311 -0.899685 -1.744398 -0.513850
25% -0.552823 -0.103056 -1.088389 -0.139714
50% -0.189836 0.527759 -1.048515 0.722963
75% 0.259492 0.851652 -0.726865 1.110899
max 0.618388 0.887915 1.260821 1.671377
先簡介到此。
小結:因為很懶,所以直接用ubuntu的套件管理程式,安裝pandas, 結果很多10分鐘速成的
範例不能使用,查了一下,才發現裝的是0.7.0版。
目前正式釋出版是0.12, 開發中的版本是0.13。
一些函式。改一下名字還是可以用的。
可能讀者會發現,和http://pandas.pydata.org/pandas-docs/stable/10min.html
並不一致,編排方式不是英翻中。