常聽人說五窮六絕七翻身,然而實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),順便熟悉一下pandas對于時(shí)間序列的處理
選用上證指數(shù)近十年數(shù)據(jù) 所需lib tushare
import pandas as pd
import tushare as ts
上證指數(shù)十年觀之月份漲跌
sh = ts.get_k_data(code='sh', start='2007-01-01', ktype='M')
sh.head()

image.png
ktype='M',直接選取月份的數(shù)據(jù)。
sh.dtypes
date object
open float64
close float64
high float64
low float64
volume float64
code object
dtype: object
date 現(xiàn)在是objec類型(可以簡單的理解為字符串),我們需要先將其轉(zhuǎn)換成pandas時(shí)間相關(guān)的類型
sh.date = pd.to_datetime(sh.date)
sh.dtypes
date datetime64[ns]
open float64
close float64
high float64
low float64
volume float64
code object
dtype: object
當(dāng)date是datetime類型之后,我們便可以使用.dt 方法來自由轉(zhuǎn)化時(shí)間顯示的方式了。為了更加直觀,我們將date轉(zhuǎn)化為月份。
sh.date = sh.date.dt.month
sh.head()

image.png
接下來統(tǒng)計(jì)大盤月線收陽(close > open)的情況
up = sh[sh.close > sh.open].date.value_counts()
print up
7 8
2 8
10 7
9 7
11 6
8 6
3 6
12 5
6 5
5 5
4 5
1 5
Name: date, dtype: int64
sh[sh.close > sh.open] - 刪選出所有符合條件的列
.date - 取出符合條件的列的月份
.value_counts - 計(jì)算各個(gè)月份出現(xiàn)的次數(shù)
從結(jié)果上,似乎真的有點(diǎn)五窮六絕七翻身...接下來轉(zhuǎn)化成概率并且排序一下
per = up/sh.date.value_counts()
per.sort_values()
1 0.454545
4 0.454545
5 0.454545
6 0.454545
12 0.500000
3 0.545455
8 0.545455
11 0.600000
9 0.636364
10 0.700000
2 0.727273
7 0.727273
Name: date, dtype: float64
% matplotlib inline
per.plot(kind='bar')

image.png
不多說了。十一月開始減倉,來年一月份再加倉,繼續(xù)看好九月、十月這收獲的季節(jié)。
上證指數(shù)十年觀之周幾買入
weekday = ts.get_k_data(code='sh', start='2007-01-01', ktype='D')
weekday.head()

image.png
weekday.date = pd.to_datetime(weekday.date).dt.weekday_name
weekday.head()

image.png
per = weekday[weekday.close > weekday.open].date.value_counts()/weekday.date.value_counts()
per.plot(kind='bar')

image.png
周一最佳,周四最慘,當(dāng)然,差別沒月份那么明顯,而且這是日內(nèi)漲跌,漲了也有可能是假陽線。
放張pandas文檔截圖吧

image.png