TuShare

repository·master·Indexed 11 days ago

https://github.com/waditu/tushare

A tool for the collection, cleaning, and storage of financial data, including stocks and futures, designed for quantitative analysts and data science learners. It provides interfaces for retrieving historical transaction data via get_hist_data(), real-time quotes, Dragon-Tiger List statistics, and movie box office data. The library also supports industry, concept, and area classifications, as well as index constituents for CSI 300, SSE 50, and CSI 500.

Tokens
19.4K
Snippets
100
Records
107
Agent score
94%

What's inside TuShare

  1. Save data to JSON files

    master

    Use the to_json method to generate JSON files or strings.

    Common Parameters:

    • path_or_buf: Path to the JSON file.
    • orient: JSON format orientation (e.g., 'columns', 'records', 'index', 'split', 'values'). Default is 'columns'.
    • force_ascii: Whether to convert characters to ASCII (default is True).
    import tushare as ts
    
    df = ts.get_hist_data('000875')
    # Save to file with 'records' orientation
    df.to_json('c:/day/000875.json', orient='records')
    
    # Or print as JSON string
    print(df.to_json(orient='records'))
  2. Save data to Excel files

    master

    Use the to_excel method to save data to Microsoft Excel format.

    Common Parameters:

    • excel_writer: File path or ExcelWriter object.
    • sheet_name: Name of the sheet (default is Sheet1).
    • startrow: Number of empty rows to leave at the top.
    • startcol: Number of empty columns to leave on the left.
    import tushare as ts
    
    df = ts.get_hist_data('000875')
    # Direct save
    df.to_excel('c:/day/000875.xlsx')
    
    # Set data position (starting from 3rd row, 6th column)
    df.to_excel('c:/day/000875.xlsx', startrow=2, startcol=5)
  3. Save data to HDF5 files

    master

    Use the to_hdf method to save data in HDF5 format. This requires the PyTables package (version >= 3.0.0).

    Common Parameters:

    • path_or_buf: File path or HDFStore object.
    • key: Group identifier within the HDF5 file.
    • mode: 'a' (append/read-write, default), 'w' (write), 'r' (read), or 'r+' (read/write, file must exist).
    • format: 'fixed' (fast read/write, no append) or 'table' (supports searching and appending).
    • append: Set to True if using format='table' to append data.
    • complevel: Compression level (1-9, default 0).
    • complib: Compression library (e.g., 'zlib', 'bzip2', 'lzo', 'blosc').
    import tushare as ts
    from pandas import HDFStore
    
    df = ts.get_hist_data('000875')
    
    # Method 1: Direct save
    df.to_hdf('c:/day/hdf.h5', '000875')
    
    # Method 2: Using HDFStore object
    store = HDFStore('c:/day/store.h5')
    store['000875'] = df
    store.close()
  4. Save data to CSV files

    master

    You can save tushare data (as pandas DataFrame or Series objects) to CSV files using the to_csv method.

    Common Parameters:

    • path_or_buf: File path or StringIO object.
    • sep: Delimiter (default is ,).
    • na_rep: Character to use for NaN values (default is '').
    • columns: List of columns to save.
    • header: Whether to save column names (default is True).
    • index: Whether to save the index (default is True).
    • mode: 'w' for new file (default) or 'a' for appending.
    • encoding: File encoding.

    Note: Ensure the target directory exists before saving, otherwise an IOError will be raised.

    import tushare as ts
    
    df = ts.get_hist_data('000875')
    # Direct save
    df.to_csv('c:/day/000875.csv')
    
    # Save specific columns
    df.to_csv('c:/day/000875.csv', columns=['open', 'high', 'low', 'close'])
  5. Set up DataYes token in TuShare

    master

    To use DataYes (通联数据) interfaces through TuShare, you must first register an account on the DataYes website and obtain a token. Once you have your token, you need to configure it in your Python environment using ts.set_token(). This only needs to be done once unless you regenerate your token.

    Steps to get a token:

    1. Register at the DataYes website.
    2. Log in and navigate to "My Data" (我的数据) -> "Developer Options" (开发者选项) -> "Become a Developer" (成为开发者).
    3. Go to "My Credentials" (我的凭证) -> "Show Credentials" (显示凭证) and copy the token string.

    To verify your current token, use ts.get_token().

    import tushare as ts
    # Set your DataYes token
    ts.set_token('xxxxxxxxxxxxxxxxxxxxxxxxxxxx')
    
    # Verify the token
    print(ts.get_token())
  6. Save data to MongoDB

    master

    Pandas does not have a direct to_mongodb method. To save data to MongoDB, convert the DataFrame to a JSON string with orient='records' and then insert it using pymongo.

    import tushare as ts
    import pymongo
    import json
    
    # Connect to MongoDB
    conn = pymongo.MongoClient('127.0.0.1', port=27017)
    # Note: In newer pymongo, use MongoClient instead of Connection
    
    df = ts.get_tick_data('600848', date='2014-12-22')
    
    # Convert to JSON records and insert
    conn.db.tickdata.insert_many(json.loads(df.to_json(orient='records')))
  7. Donate to TuShare

    master

    If you wish to support the development of TuShare, you can provide financial support via WeChat or Alipay. In return, the author offers assistance with programming languages, databases, Python/pandas, or quantitative analysis questions.

    **捐助方式一(微信)**
    请通过微信“扫一扫”下面的二维码(或添加我的微信jimmysoa打赏个红包也OK:-)
    
    **捐助方式二(支付宝)**
    请打开支付宝App“扫一扫”下面的二维码(或通过帐号liuzhiming@ymail.com)
  8. Install TuShare

    master

    You can install TuShare using pip or by downloading it directly from PyPI.

    Prerequisites

    Before installing, ensure you have the following installed:

    • Python
    • pandas
    • lxml (If you use Anaconda, this is usually included. Otherwise, install it via pip install lxml)

    It is highly recommended to use Anaconda to manage your Python environment and dependencies to minimize installation issues.

    pip install tushare
  9. Save data to MySQL or other SQL databases

    master

    You can save data to relational databases (MySQL, PostgreSQL, Oracle, MS SQLServer, SQLite) using the to_sql method. It is recommended to use sqlalchemy to create the connection engine.

    Common Parameters:

    • name: Table name (pandas will automatically create the table structure).
    • con: Database connection (use a sqlalchemy engine).
    • if_exists: How to handle existing tables: 'fail' (default), 'replace', or 'append'.
    • index: Whether to store the pandas Index as a column (default is True).
    • index_label: Column name for the Index.
    • chunksize: Number of rows to write at a time (default is None, writes all at once).
    • dtype: Dictionary specifying column data types.
    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')
    
    # Save to database
    df.to_sql('tick_data', engine)
    
    # Append to existing table
    # df.to_sql('tick_data', engine, if_exists='append')