• <button id="sgosk"></button>
  • <small id="sgosk"><tr id="sgosk"></tr></small><code id="sgosk"><button id="sgosk"></button></code>
  • <nav id="sgosk"><li id="sgosk"></li></nav>
    <small id="sgosk"><acronym id="sgosk"></acronym></small>

    Tushare Pro 新版發布,數據更穩定質量更好,歡迎注冊使用。

    ?

    數據存儲模塊主要是引導用戶將數據保存在本地磁盤或數據庫服務器上,便于后期的量化分析和回測使用,在以文件格式保存在電腦磁盤的方式上,調用的是pandas本身自帶的方法,此處會羅列常用的參數和說明,另外,也會通過實例,展示操作的方法。在存入DataBase方面,也提供了簡單的處理方式,本文將給出簡單的python代碼。

    • 保存為csv格式
    • 保存為Excel格式
    • 保存為HDF5文件格式
    • 保存為JSON格式
    • 存入MySQL等關系型數據庫
    • 存入NoSQL數據庫

    CSV文件?

    pandas的DataFrame和Series對象提供了直接保存csv文件格式的方法,通過參數設定,輕松將數據內容保存在本地磁盤。

    常用參數說明:

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

    注:在設定path時,如果目錄不存在,程序會提示IOError,請先確保目錄已經存在于磁盤中。

    調用方法:

    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'])
    

    追加數據的方式:

    某些時候,可能需要將一些同類數據保存在一個大文件中,這時候就需要將數據追加在同一個文件里,簡單舉例如下:

    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’)即可,否則,每次循環都會把columns名稱也append進去】

    Excel文件?

    pandas將數據保存為MicroSoft Excel文件格式。

    常用參數說明:

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

    調用方法:

    import tushare as ts
    
    df = ts.get_hist_data('000875')
    #直接保存
    df.to_excel('c:/day/000875.xlsx')
    
    #設定數據位置(從第3行,第6列開始插入數據)
    df.to_excel('c:/day/000875.xlsx', startrow=2,startcol=5)
    

    HDF5文件?

    pandas利用PyTables包將數據保存為HDF5格式的文件。需要確認的是,運行時PyTables包的版本需要 >=3.0.0。

    常用參數說明:

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

    調用方法:

    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格式的文件或字符串。

    常用參數說明:

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

    調用方法:

    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數據庫?

    pandas提供了將數據便捷存入關系型數據庫的方法,在新版的pandas中,主要是已sqlalchemy方式與數據建立連接,支持MySQL、Postgresql、Oracle、MS SQLServer、SQLite等主流數據庫。本例以MySQL數據庫為代表,展示將獲取到的股票數據存入數據庫的方法,其他類型數據庫請參考sqlalchemy官網文檔的create_engine部分。

    常用參數說明:

    • name:表名,pandas會自動創建表結構
    • con:數據庫連接,最好是用sqlalchemy創建engine的方式來替代con
    • flavor:數據庫類型 {‘sqlite’, ‘mysql’}, 默認‘sqlite’,如果是engine此項可忽略
    • schema:指定數據庫的schema,默認即可
    • if_exists:如果表名已存在的處理方式 {‘fail’, ‘replace’, ‘append’},默認‘fail’
    • index:將pandas的Index作為一列存入數據庫,默認是True
    • index_label:Index的列名
    • chunksize:分批存入數據庫,默認是None,即一次性全部寫人數據庫
    • dtype:設定columns在數據庫里的數據類型,默認是None

    調用方法:

    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')
    
    #存入數據庫
    df.to_sql('tick_data',engine)
    
    #追加數據到現有表
    #df.to_sql('tick_data',engine,if_exists='append')
    

    MongoDB?

    pandas目前沒有提供直接存入MongoDB的方法,不過依然很簡單,而且方式很多,用戶可根據自身的業務特點選擇存儲的結構方式。

    使用方法:

    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')))
    
    国内露脸中年夫妇交换_丁香五月开心婷婷综合中文_紫夜影视国产成人_漫画全彩超级巨大乳_51色偷拍自怕亚洲_大香蕉久久爱_奇米777四色影视在线看 草草影院CCYY_啪啪视频_国产国产人免费视频成_女性生殖高清器图片_亚洲妇女自偷自偷_免费A级毛片无码蜜芽_扒开女人两片毛茸茸黑森林_天天看片免费高清观看 国内露脸中年夫妇交换_丁香五月开心婷婷综合中文_紫夜影视国产成人_漫画全彩超级巨大乳_51色偷拍自怕亚洲_大香蕉久久爱_奇米777四色影视在线看 免费特黄一级欧美大片_欧洲亚洲中文中韩_加勒比女海盗3中文字幕_国产第一页_国产自拍第1页_caoprn在线视频免费_久久五月精品中文字幕_欧美AV妻不如妾 免费观看一级特黄欧美大片_久久日AV_中文字幕视频二区人妻_最好看的2021中文字幕_亚洲妇女自偷自偷图片_在线看片免费不卡人成视频_体内谢xxxxx视频 国产A级特黄的片子_日日摸日日碰夜夜澡按摩_春色校园小说综合网_中文字幕2021永久在线_在线a亚洲老鸭窝天堂自拍视频_caoporn免费在线视频