一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

TuShare

 camberwell施 2018-02-24

數(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格式
  • 保存為Excel格式
  • 保存為HDF5文件格式
  • 保存為JSON格式
  • 存入MySQL等關(guān)系型數(shù)據(jù)庫(kù)
  • 存入NoSQL數(shù)據(jù)庫(kù)

CSV文件?

pandas的DataFrame和Series對(duì)象提供了直接保存csv文件格式的方法,通過(guò)參數(shù)設(shè)定,輕松將數(shù)據(jù)內(nèi)容保存在本地磁盤。

常用參數(shù)說(shuō)明:

  • path_or_buf: csv文件存放路徑或者StringIO對(duì)象
  • sep : 文件內(nèi)容分隔符,默認(rèn)為,逗號(hào)
  • na_rep: 在遇到NaN值時(shí)保存為某字符,默認(rèn)為’‘空字符
  • float_format: float類型的格式
  • columns: 需要保存的列,默認(rèn)為None
  • header: 是否保存columns名,默認(rèn)為True
  • index: 是否保存index,默認(rèn)為True
  • mode : 創(chuàng)建新文件還是追加到現(xiàn)有文件,默認(rèn)為新建
  • encoding: 文件編碼格式
  • date_format: 日期格式

注:在設(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ō)明:

  • excel_writer: 文件路徑或者ExcelWriter對(duì)象
  • sheet_name:sheet名稱,默認(rèn)為Sheet1
  • sep : 文件內(nèi)容分隔符,默認(rèn)為,逗號(hào)
  • na_rep: 在遇到NaN值時(shí)保存為某字符,默認(rèn)為’‘空字符
  • float_format: float類型的格式
  • columns: 需要保存的列,默認(rèn)為None
  • header: 是否保存columns名,默認(rèn)為True
  • index: 是否保存index,默認(rèn)為True
  • encoding: 文件編碼格式
  • startrow: 在數(shù)據(jù)的頭部留出startrow行空行
  • startcol :在數(shù)據(jù)的左邊留出startcol列空列

調(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ō)明:

  • path_or_buf: 文件路徑或者HDFStore對(duì)象
  • key:HDF5中的group標(biāo)識(shí)
  • mode : 包括 {‘a(chǎn)’追加, ‘w’寫入, ‘r’只讀, ‘r+’等同于a但文件必須已經(jīng)存在}, 默認(rèn)是 ‘a(chǎn)’
  • format:‘fixed(f)|table(t)’,默認(rèn)‘fixed’,f適合快速讀寫,不能追加數(shù)據(jù) t適合從文件中查找和選擇數(shù)據(jù)
  • append: 適用于table(t)模式追加數(shù)據(jù),默認(rèn)Flase
  • complevel: 壓縮級(jí)別1-9, 默認(rèn)0
  • complib: 壓縮類型{‘zlib’, ‘bzip2’, ‘lzo’, ‘blosc’, None}默認(rèn)None

調(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ō)明:

  • path_or_buf: json文件存放路徑
  • orient:json格式順序,包括columns,records,index,split,values,默認(rèn)為columns
  • force_ascii: 將字符轉(zhuǎn)ASCII,默認(rèn)為True

調(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ō)明:

  • name:表名,pandas會(huì)自動(dòng)創(chuàng)建表結(jié)構(gòu)
  • con:數(shù)據(jù)庫(kù)連接,最好是用sqlalchemy創(chuàng)建engine的方式來(lái)替代con
  • flavor:數(shù)據(jù)庫(kù)類型 {‘sqlite’, ‘mysql’}, 默認(rèn)‘sqlite’,如果是engine此項(xiàng)可忽略
  • schema:指定數(shù)據(jù)庫(kù)的schema,默認(rèn)即可
  • if_exists:如果表名已存在的處理方式 {‘fail’, ‘replace’, ‘a(chǎn)ppend’},默認(rèn)‘fail’
  • index:將pandas的Index作為一列存入數(shù)據(jù)庫(kù),默認(rèn)是True
  • index_label:Index的列名
  • chunksize:分批存入數(shù)據(jù)庫(kù),默認(rèn)是None,即一次性全部寫人數(shù)據(jù)庫(kù)
  • dtype:設(shè)定columns在數(shù)據(jù)庫(kù)里的數(shù)據(jù)類型,默認(rèn)是None

調(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')))

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    日本在线视频播放91| 久久99青青精品免费| 日本东京热视频一区二区三区| 亚洲男人天堂网在线视频| 亚洲夫妻性生活免费视频| 激情国产白嫩美女在线观看| 91欧美日韩精品在线| 国产毛片对白精品看片| 午夜午夜精品一区二区| 国产毛片不卡视频在线| 丝袜视频日本成人午夜视频| 国产又粗又爽又猛又黄的| 欧美亚洲美女资源国产| 亚洲黄片在线免费小视频| 国产目拍亚洲精品区一区| 亚洲乱码av中文一区二区三区| 亚洲第一区二区三区女厕偷拍| 少妇淫真视频一区二区| 国产欧美一区二区久久| 国产性情片一区二区三区| 精品国自产拍天天青青草原 | 国产精品偷拍一区二区| 有坂深雪中文字幕亚洲中文| 欧美精品一区久久精品| 久久婷婷综合色拍亚洲| 精品少妇人妻av一区二区蜜桃| 肥白女人日韩中文视频| 亚洲专区中文字幕在线| 中文字幕五月婷婷免费| 成人午夜在线视频观看| 男人操女人下面国产剧情| 国产免费人成视频尤物| 亚洲一区二区精品福利| 91在线播放在线播放观看| 九九热九九热九九热九九热| 亚洲国产av在线视频| 国产亚洲午夜高清国产拍精品| 日韩18一区二区三区| 国产精品内射婷婷一级二级| 超薄丝袜足一区二区三区| 亚洲国产精品一区二区毛片|