Tushare安裝使用入門

本文的目的是:

通過Tushare獲取股票基本信息, 并對獲取的數(shù)據(jù)做進一步處理倘零。

Tushare是什么

Tushare是一個免費、開源的python財經(jīng)數(shù)據(jù)接口包戳寸。主要實現(xiàn)對股票等金融數(shù)據(jù)從數(shù)據(jù)采集呈驶、清洗加工數(shù)據(jù)存儲的過程,能夠為金融分析人員提供快速疫鹊、整潔袖瞻、和多樣的便于分析的數(shù)據(jù),為他們在數(shù)據(jù)獲取方面極大地減輕工作量拆吆,使他們更加專注于策略和模型的研究與實現(xiàn)上聋迎。考慮到Python pandas包在金融量化分析中體現(xiàn)出的優(yōu)勢枣耀,Tushare返回的絕大部分的數(shù)據(jù)格式都是pandas DataFrame類型霉晕,非常便于用pandas/NumPy/Matplotlib進行數(shù)據(jù)分析和可視化。當然,如果您習慣了用Excel或者關系型數(shù)據(jù)庫做分析牺堰,您也可以通過Tushare的數(shù)據(jù)存儲功能拄轻,將數(shù)據(jù)全部保存到本地后進行分析。應一些用戶的請求伟葫,從0.2.5版本開始恨搓,Tushare同時兼容Python 2.x和Python 3.x,對部分代碼進行了重構筏养,并優(yōu)化了一些算法斧抱,確保數(shù)據(jù)獲取的高效和穩(wěn)定。

Tushare的安裝

假設是Windows平臺, 首先安裝Python. 個人建議使用Cygwin, 不會的話建議自己摸索下, 官方安裝教程渐溶。為了方便通過Cygwin安裝包, 建議安裝cyg-apt.

  • 安裝Python
    apt-cyg install python3 python3-pip
    
  • 安裝Tushare
     pip install pandas bs4  lxml tshare
    
  • 測試當前版本
    import tushare as ts
    print(ts.__version__)
    

使用Tushare獲取A股指數(shù)

使用文件存儲數(shù)據(jù)

直接上python3腳本

#!/usr/bin/python3
#-*- coding: utf-8 -*-
# FileName: GetIndexFromTushare.py

import sys,os
from glob import glob
from datetime import datetime
from pathlib import Path
import tushare as ts

# Get current date
current_date = datetime.now()

''' Function: years_before
Para: current, i
    current: current date
    i: the date of i years before current date
    
Explanation:     
We will get data by tushare, as it is suggested that
we should get data range in one year, insteading of
the whole data, to avoid the 465 response from data server
'''
def years_before(current, i):
    return current.replace(year=current.year-i).strftime("%Y-%m-%d")
''' Function: combine_csvs
Para: thedir, basename, partten
thedir: the root directory
basename: the shared file names in the root directory
partten: the partten of file name to search

Explanation:
We will save the data of each year to a file named `basename_i.csv`, where `basename` is the stock name and `i` is the year from current year
then we will use this function to combine then into one csv file
'''
def combine_csvs(thedir, basename, partten):
    fname = thedir + basename + ".csv"
    # delete the dumplicated file
    if (Path(fname).exists()): 
        os.remove(fname)
    # search all the `./basename_i.csv` in to an array
    csv_arr=glob(thedir+basename+partten)
    #print(csv_arr)
    # open the fname to write, a=append
    fout=open(fname, "a")
    for csv in csv_arr:
        f=open(csv)
        # remove the header of csv
        if csv_arr.index(csv) != 0: 
            f.__next__()
        for line in f:
            fout.write(line)
        f.close()
        os.remove(csv)
    fout.close()
''' Function: pairwise
Para: arr

Explanation錛?
Given a array, we will pair each nearby two elements into a new array
The arr will be each year of current date getting from `years_before`
function, it will return the range of each two year
'''
def pairwise(arr):
    if not arr: return
    for i in range(len(arr)-1):
        yield arr[i], arr[i+1]

# define the stocks name, id and initial date 
stocks ={
        #'SHS_index' : ["000001", "2016-12-19"],
        'AS_index' : ["000002", "1990-12-19"],
        #'SZ300_index' : ["000300", "2005-04-08"],
        }
for name, id_date in stocks.items():
    id= id_date[0]
    date= id_date[1]
    #print(name, id, date)
    # construct the range of time, separated by year
    i=0
    date_arr=[]

    while( date < years_before(current_date, i) ):
        date_arr.append(years_before(current_date, i))
        i=i+1
    date_arr.append(date)
    #print(date_arr)
    
    #Get the data
    for date_e, date_b in pairwise(date_arr):
        #print(date_b, date_e, "\n")
        data = ts.get_h_data(id, start=date_b, end=date_e, index=True, pause=10, retry_count=5)
        # save data to csv file
        data.to_csv(name + '_' + str(date_arr.index(date_b)) + '.csv', columns=['date', 'high', 'low', 'close', 'volume', 'amount'])
    # combine into one csv file
    combine_csvs('./', name, "*.csv")

#sys.exit()
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夺姑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子掌猛,更是在濱河造成了極大的恐慌盏浙,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荔茬,死亡現(xiàn)場離奇詭異废膘,居然都是意外死亡,警方通過查閱死者的電腦和手機慕蔚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門丐黄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人孔飒,你說我怎么就攤上這事灌闺。” “怎么了坏瞄?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵桂对,是天一觀的道長。 經(jīng)常有香客問我鸠匀,道長蕉斜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任缀棍,我火速辦了婚禮宅此,結果婚禮上,老公的妹妹穿的比我還像新娘爬范。我一直安慰自己父腕,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布青瀑。 她就那樣靜靜地躺著璧亮,像睡著了一般萧诫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杜顺,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天财搁,我揣著相機與錄音,去河邊找鬼躬络。 笑死尖奔,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的穷当。 我是一名探鬼主播提茁,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼馁菜!你這毒婦竟也來了茴扁?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤汪疮,失蹤者是張志新(化名)和其女友劉穎峭火,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體智嚷,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡卖丸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了盏道。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稍浆。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖猜嘱,靈堂內(nèi)的尸體忽然破棺而出衅枫,到底是詐尸還是另有隱情,我是刑警寧澤朗伶,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布弦撩,位于F島的核電站,受9級特大地震影響腕让,放射性物質(zhì)發(fā)生泄漏孤钦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一纯丸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧静袖,春花似錦觉鼻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萨惑。三九已至,卻和暖如春仇矾,著一層夾襖步出監(jiān)牢的瞬間庸蔼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工贮匕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姐仅,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓刻盐,卻偏偏與公主長得像掏膏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子敦锌,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容