python 经济数据第三方库 tushare 简单试用

python适合数据分析类的工作是众所周知的,那么金融数据是其中重要的一个部分,国内这样提供免费的金融数据的API并不是很多,可能是我孤陋寡闻,有更好的选择还请各位大神多多指教~~

Tushare简单的介绍:Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。当然,如果您习惯了用Excel或者关系型数据库做分析,您也可以通过Tushare的数据存储功能,将数据全部保存到本地后进行分析。应一些用户的请求,从0.2.5版本开始,Tushare同时兼容Python 2.x和Python 3.x,对部分代码进行了重构,并优化了一些算法,确保数据获取的高效和稳定。

tushare website: http://tushare.org/

废话少说,进入正题

OS: Win10 x64

python version: 3.6

IDE: PyCharm

tushare version: 1.2.4

下面是我简单的开发的python程序,通过tushare来获取股票的历史价格数据(包括日期,日开盘价,日最高价,日最低价,日收盘价,日成交量,日成交额),并保存为csv文件。

 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import datetime
import time
from random import random

import dateutil
import pandas as pd
import tushare


def getdata(code, index, start_date, end_date):
    """obtain history price of stock"""
    # format date
    start = dateutil.parser.parse(start_date)
    end = dateutil.parser.parse(end_date)

    # obtain data by year
    total = pd.DataFrame()
    flag = True
    while flag:
        delta = datetime.timedelta(days=365)
        end = start + delta

        # Max end_date is today
        if end > datetime.datetime.today():
            end = datetime.datetime.today()
            flag = False

        # transfer datetime to string
        start_str = datetime.datetime.strftime(start, '%Y-%m-%d')
        end_str = datetime.datetime.strftime(end, '%Y-%m-%d')
        print(start_str, end_str)
        try:
            result = tushare.get_h_data(code=code, index=index, start=start_str, end=end_str)
            print(result[:1])
            total = result.append(total)
        except:
            print("Getting data error")
            total.to_csv(filename, mode='w')
        finally:
            # wait for [10,15)s
            sec = round(random() * 5 + 10, 1)
            print("waiting for %0.1f s" % sec)
            time.sleep(sec)
        start = end + datetime.timedelta(days=1)

    return total


def getstartdate(code):
    """obtain establish date of stock"""
    df = tushare.get_stock_basics()
    date = df.ix[code]['timeToMarket']  # 上市日期YYYYMMDD
    return date


if __name__ == '__main__':
    
    """arguments: 
    code
    start date
    end date
    index
    filename
    """

    # stock code
    code = '000016'

    # start date
    start_date = '20030101'

    # end date
    end_date = '20180808'

    # 如果是大盘指数index=True,我这里获取上证50指数历史数据,所以index=True
    index = True
    #如果是具体股票代码index=False
    # index = False

    # file name & path to save
    filename = "D:\\MyCode\\data\\" + code + ".csv"

    # get data
    resultDF = getdata(code, index, start_date, end_date)

    # save data to csv
    resultDF.to_csv(filename, mode='w')

获取数据完成后,保存的csv文件格式如下图:

然后可以利用获取的数据进行分析。。。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值