pandas金融數(shù)據(jù)分析教程-part1

??本文是利用python來分析金融數(shù)據(jù)的一個入門教程蒲拉,同時也是數(shù)據(jù)分析利器pandas的一個實戰(zhàn)教程。文中將利用pandas來分析中國A股歷史交易數(shù)據(jù),數(shù)據(jù)來源為tushare
??由于大數(shù)據(jù)、人工智能技術(shù)的快速發(fā)展蜻势,國內(nèi)外許多金融機(jī)構(gòu)早就不僅僅專耕于金融領(lǐng)域,并且在大數(shù)據(jù)分析鹉胖、自動化策略等方面投入了大量的精力握玛,因為數(shù)據(jù)科學(xué)與計算機(jī)技術(shù)的發(fā)展不僅可以大幅提高傳統(tǒng)交易模式的速度,提高準(zhǔn)確度甫菠,并且能夠自動化管理更大的數(shù)據(jù)量挠铲,尤其在國外,利用數(shù)據(jù)分析和自動化交易技術(shù)早已經(jīng)成為了主流淑蔚。

396876_cc92_7.jpg

??下面將數(shù)據(jù)處理的代碼貼在下面市殷,代碼中主要涉及的知識點如下:

  • DataFrame和Series的基本結(jié)構(gòu)
  • DataFrame的行、列選取方式和規(guī)范
  • 時間索引的基礎(chǔ)和切片
  • 滑動窗口和移動平均數(shù)
  • 數(shù)據(jù)按時間周期的重采樣

??具體的講解請查看代碼中的注釋刹衫,直接看注釋不直觀醋寝?需要清晰搞挣、直觀的體驗點擊這里!

??通過tushare獲取的數(shù)據(jù)為pandas.DataFrame格式音羞,可以保存在本地

# coding: utf-8
import tushare as ts
df = ts.get_hist_data('000001')
df.to_csv('./000001.csv')

??然后可以通過直接讀取本地文件來導(dǎo)入數(shù)據(jù), read_csv函數(shù)的詳細(xì)介紹查看這里

import pandas as pd
df = pd.read_csv('./000001.csv', header=0, index_col='date')
df.index = pd.DatetimeIndex(df.index)  # 將普通字符型索引傳化為時間索引

??DataFrame是一個二維表囱桨,類似于excel的一個sheet中的內(nèi)容,也類似于數(shù)據(jù)庫中的表的概念嗅绰。 讀入數(shù)據(jù)后舍肠,可以通過許多DataFrame內(nèi)置的函數(shù)來對數(shù)據(jù)進(jìn)行一個整體的查看

df.head(10) # 查看前10行數(shù)據(jù) 
df.describe() # 查每一列的行數(shù)、期望窘面、各個分位數(shù)等
df.shape # 查看數(shù)據(jù)表的大小

??對DataFrame的整體有一個初步的認(rèn)識之后翠语,下面是對其行和列的選取操作

df['open']  # 可以選取DataFrame的對應(yīng)的列
df.iloc[0]  # 通過此方式來選取數(shù)據(jù)的行
df.loc['2016-09-27']  # 可以通過索引選取對應(yīng)的行
df[['open', 'close', 'high']] # 選取多個列
df.iloc[0:3] # 選取多個行
df['2016-09'] # 按照時間索引選取所有的9月數(shù)據(jù),只有在索引類型為時間索引時才可以這么操作
df[0:-1:2] 
# 從前往后每隔兩個數(shù)據(jù)取一個數(shù)據(jù)财边,第一個數(shù)為開始行數(shù)肌括,第二個數(shù)為結(jié)束行數(shù)(選取到此行之前)
# 第三個數(shù)為間隔數(shù)目

??可以通過DataFrame內(nèi)置的plot函數(shù)來進(jìn)行畫圖,其內(nèi)部是利用了matplotlib實現(xiàn)的酣难。為了畫圖的美觀谍夭,首先設(shè)置一些畫圖的參數(shù):

import matplotlib.pyplot as plt 
plt.style.use('seaborn-darkgrid') # 設(shè)置畫圖的風(fēng)格
plt.rc('font', family='SimHei', size=6) #設(shè)置圖中字體和大小
plt.rc('figure', figsize=(4,3), dpi=200) # 設(shè)置圖的大小

??將其中一列畫折線圖

df.open.plot()  # 索引為時間后,會在圖上的x軸以合理的間隔顯示
價格折線圖.png

??原始數(shù)據(jù)中憨募,所有的價格都是實際值紧索,實際情況下,我們可能需要價格的變化值菜谣,或者是價格的變化率

df.open.diff() # 后一天減去前一天的差值
df.close.pct_change() # 后一天對比前一天的變化率

??我們可以對變化率進(jìn)行初步的統(tǒng)計分析珠漂,看看收盤價變化率的概率分布情況

df.close.pct_change().hist(bins=30) # hist函數(shù)用于查看一個序列的直方圖,bins參數(shù)表示將數(shù)據(jù)分為多少段
變化率直方圖.png

??可以為DataFrame和Series設(shè)置一個指定長度的滑動窗口葛菇,然后在窗口長度內(nèi)進(jìn)行數(shù)據(jù)操作甘磨,例如求mean橡羞,max眯停,min等

df.open.rolling(5).mean() # 以5個數(shù)據(jù)作為一個數(shù)據(jù)滑動窗口,在這個5個數(shù)據(jù)上取均值
df.open.rolling(5).max() # 以5個數(shù)據(jù)作為一個數(shù)據(jù)滑動窗口卿泽,在這個5個數(shù)據(jù)上取最大值
# 將原始數(shù)據(jù)和5日莺债、20日均線畫到一個圖上,由于需要讓數(shù)據(jù)從時間最遠(yuǎn)處開始,所以將實際數(shù)據(jù)倒序
df.open.plot()
df[::-1].open.rolling(5).mean().plot()
df[::-1].open.rolling(20).mean().plot()
移動平均數(shù).png

??對于時間序列數(shù)據(jù)签夭,除了求移動平均值等常用操作之外齐邦,還有一個常用的操作就是對時間數(shù)據(jù)進(jìn)行重采樣(resample)。

??例如上面的示例數(shù)據(jù)是每日的交易數(shù)據(jù)第租,我們需要按周來查看開盤價措拇,即需要對數(shù)據(jù)按周進(jìn)行重采樣。

??需要注意的是慎宾,重采樣時候DataFrame或Series的索引必須為時間索引丐吓。

df.open.resample('W').max()  # 按周為采樣規(guī)則浅悉,每周內(nèi)取最大值

??常用采樣參數(shù):B:工作日; D:天; W:周; M:月; SM:半月
??詳情點擊查看

df.open.plot()
df.open.resample('7D').max().plot()
降采樣價格.png

寫在最后:
??文中的代碼,以及具體的分析過程券犁,可以點擊這里查看和下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末术健,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子粘衬,更是在濱河造成了極大的恐慌荞估,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勘伺,死亡現(xiàn)場離奇詭異褂删,居然都是意外死亡笤妙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來召衔,“玉大人苍凛,你說我怎么就攤上這事⌒牵” “怎么了悠栓?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵惭适,是天一觀的道長。 經(jīng)常有香客問我往枷,道長,這世上最難降的妖魔是什么茅信? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任蘸鲸,我火速辦了婚禮窿锉,結(jié)果婚禮上嗡载,老公的妹妹穿的比我還像新娘。我一直安慰自己埂息,他們只是感情好遥巴,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布铲掐。 她就那樣靜靜地躺著摆霉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搭盾。 梳的紋絲不亂的頭發(fā)上婉支,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天磅摹,我揣著相機(jī)與錄音户誓,去河邊找鬼幕侠。 笑死,一個胖子當(dāng)著我的面吹牛悼潭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播皆疹,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼略就,長吁一口氣:“原來是場噩夢啊……” “哼晃酒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起崔兴,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤敲茄,失蹤者是張志新(化名)和其女友劉穎折汞,沒想到半個月后盖腿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翩腐,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡茂卦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年等龙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罐栈。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡荠诬,死狀恐怖柑贞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情棠众,我是刑警寧澤摄欲,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布胸墙,位于F島的核電站按咒,受9級特大地震影響励七,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吼野,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一瞳步、第九天 我趴在偏房一處隱蔽的房頂上張望单起。 院中可真熱鬧劣坊,春花似錦局冰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藕帜。三九已至洽故,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間隘弊,已是汗流浹背梨熙。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工咽扇, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留质欲,地道東北人嘶伟。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓九昧,卻偏偏與公主長得像耽装,于是被迫代替她去往敵國和親期揪。 傳聞我的和親對象是個殘疾皇子凤薛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容