?
數據是進行量化交易的基礎和關鍵,目前國內做量化產品的金融機構大部分是從券商獲取高頻實時行情數據的,另外很多金融網站也提供了數據接口,可以調用接口方式獲取,也可以用爬蟲的方式獲取。文本講述一種更經濟便捷的方式來獲取數據,即通過同花順交易軟件來導出股票數據,并且將數據轉換為DataFrame 表格型的數據結構,以csv的格式存儲,便于后續進行量化交易分析。
1.打開同花順軟件,點擊“分析”欄,選擇“歷史成交”,此時會出現股票的日線交易數據。
2.點擊“右鍵”,選擇“數據導出”—>“導出所有數據”,選擇導出的類型為Excel,執行下一步直到完成,即得到了2004年至今的該股交易數據。
3.打開EXCEL文檔已經可以查看到導出的數據了,不過在量化領域中最常用使用的是CSV格式,這里將EXCEL另存為CSV格式。CSV文件是一種文本文件,用記事本就能打開。文件的數據列以半角逗號分隔,每一行數據都以回車符結束。它可以非常容易地被導入各種PC表格及數據庫中。將EXCEL另存為CSV格式時,CSV文件將EXCEL工作表中的單元格所顯示的文本和數值以逗號分離進行保存。
注:如果單元格中包含逗號,則該單元格中的內容以雙引號引起。
在Python中,pandas是數據處理方面功能最為強大的擴展模塊了,包含了高級的數據結構Series和DataFrame,使得在Python中處理數據變得非常方便、快速和簡單,后續我們在應用中會深有體會。
方法1:通過pandas模塊自帶的read_csv函數可直接得到DataFrame格式數據,注意編碼格式為“GB2132”,否則控制臺會將中文解析為亂碼。
df_csvload?= pd.read_csv('C:\programPY\CSV_RWdata_ForNewFile\DataChange.csv',parse_dates=True,index_col=0,encoding='gb2312')
方法2:此處使用CSV模塊的DictReader函數讀取CSV文件,DictReader函數以字典形式返回,字典的鍵則是這個單元格的標題(即列頭),每一個單元格內容放在字典的值內。DataFrame的創建方式有numpy二維數組、列表、Series序列以及字典方式等,此處DictReader函數返回的字典形式數據可直接創建,字典中的keys就是DataFrame里面的columns,但是沒有index的值,默認是從零開始計數。
f=codecs.open('C:\programPY\CSV_RWdata_ForNewFile\DataChange.csv','rb','gb2312')#GB2312編碼 reader = csv.DictReader(f) rows = [row for row in reader] df = pd.DataFrame(rows) f.close()
該方法需要增加額外的處理,將“時間”列作為index索引,同時將日期信息去除星期幾
df.rename(columns={ "時間":'time' },inplace=True)#替換為英文columns for index,colstr in enumerate(df['time']): colstr = colstr.split(',',1)#去除日期中的星期幾 df.loc[index, 'time'] = colstr[0] df.index = df['time'].tolist()#time作為index del df['time']#數據中刪除time列
數據處理后使用pandas模塊自帶的to_csv可將數據直接存儲為CSV。
df.to_csv('C:\programPY\CSV_RWdata_ForNewFile\DataCheck.csv',columns=df.columns,index=True)
轉自:segmentfault