數(shù)據(jù)存儲(chǔ)?數(shù)據(jù)存儲(chǔ)模塊主要是引導(dǎo)用戶將數(shù)據(jù)保存在本地磁盤或數(shù)據(jù)庫(kù)服務(wù)器上,便于后期的量化分析和回測(cè)使用,在以文件格式保存在電腦磁盤的方式上,調(diào)用的是pandas本身自帶的方法,此處會(huì)羅列常用的參數(shù)和說(shuō)明,另外,也會(huì)通過(guò)實(shí)例,展示操作的方法。在存入DataBase方面,也提供了簡(jiǎn)單的處理方式,本文將給出簡(jiǎn)單的python代碼。
CSV文件?pandas的DataFrame和Series對(duì)象提供了直接保存csv文件格式的方法,通過(guò)參數(shù)設(shè)定,輕松將數(shù)據(jù)內(nèi)容保存在本地磁盤。 常用參數(shù)說(shuō)明:
注:在設(shè)定path時(shí),如果目錄不存在,程序會(huì)提示IOError,請(qǐng)先確保目錄已經(jīng)存在于磁盤中。 調(diào)用方法: import tushare as ts df = ts.get_hist_data('000875') #直接保存 df.to_csv('c:/day/000875.csv') #選擇保存 df.to_csv('c:/day/000875.csv',columns=['open','high','low','close']) 追加數(shù)據(jù)的方式: 某些時(shí)候,可能需要將一些同類數(shù)據(jù)保存在一個(gè)大文件中,這時(shí)候就需要將數(shù)據(jù)追加在同一個(gè)文件里,簡(jiǎn)單舉例如下: import tushare as ts import os filename = 'c:/day/bigfile.csv' for code in ['000875', '600848', '000981']: df = ts.get_hist_data(code) if os.path.exists(filename): df.to_csv(filename, mode='a', header=None) else: df.to_csv(filename) 【注:如果是不考慮header,直接df.to_csv(filename, mode=’a’)即可,否則,每次循環(huán)都會(huì)把columns名稱也append進(jìn)去】 Excel文件?pandas將數(shù)據(jù)保存為MicroSoft Excel文件格式。 常用參數(shù)說(shuō)明:
調(diào)用方法: import tushare as ts df = ts.get_hist_data('000875') #直接保存 df.to_excel('c:/day/000875.xlsx') #設(shè)定數(shù)據(jù)位置(從第3行,第6列開(kāi)始插入數(shù)據(jù)) df.to_excel('c:/day/000875.xlsx', startrow=2,startcol=5) HDF5文件?pandas利用PyTables包將數(shù)據(jù)保存為HDF5格式的文件。需要確認(rèn)的是,運(yùn)行時(shí)PyTables包的版本需要 >=3.0.0。 常用參數(shù)說(shuō)明:
調(diào)用方法: import tushare as ts df = ts.get_hist_data('000875') df.to_hdf('c:/day/hdf.h5','000875') 方法2: import tushare as ts df = ts.get_hist_data('000875') store = HDFStore('c:/day/store.h5') store['000875'] = df store.close() JSON文件?pandas生成Json格式的文件或字符串。 常用參數(shù)說(shuō)明:
調(diào)用方法: import tushare as ts df = ts.get_hist_data('000875') df.to_json('c:/day/000875.json',orient='records') #或者直接使用 print df.to_json(orient='records') MySQL數(shù)據(jù)庫(kù)?pandas提供了將數(shù)據(jù)便捷存入關(guān)系型數(shù)據(jù)庫(kù)的方法,在新版的pandas中,主要是已sqlalchemy方式與數(shù)據(jù)建立連接,支持MySQL、Postgresql、Oracle、MS SQLServer、SQLite等主流數(shù)據(jù)庫(kù)。本例以MySQL數(shù)據(jù)庫(kù)為代表,展示將獲取到的股票數(shù)據(jù)存入數(shù)據(jù)庫(kù)的方法,其他類型數(shù)據(jù)庫(kù)請(qǐng)參考sqlalchemy官網(wǎng)文檔的create_engine部分。 常用參數(shù)說(shuō)明:
調(diào)用方法: from sqlalchemy import create_engine import tushare as ts df = ts.get_tick_data('600848', date='2014-12-22') engine = create_engine('mysql://user:passwd@127.0.0.1/db_name?charset=utf8') #存入數(shù)據(jù)庫(kù) df.to_sql('tick_data',engine) #追加數(shù)據(jù)到現(xiàn)有表 #df.to_sql('tick_data',engine,if_exists='append') MongoDB?pandas目前沒(méi)有提供直接存入MongoDB的方法,不過(guò)依然很簡(jiǎn)單,而且方式很多,用戶可根據(jù)自身的業(yè)務(wù)特點(diǎn)選擇存儲(chǔ)的結(jié)構(gòu)方式。 使用方法: import pymongo import json conn = pymongo.Connection('127.0.0.1', port=27017) df = ts.get_tick_data('600848',date='2014-12-22') conn.db.tickdata.insert(json.loads(df.to_json(orient='records'))) |
|
來(lái)自: camberwell施 > 《待分類》