? ? ? Tushare是一個(gè)免費(fèi)贞奋、開(kāi)源的python財(cái)經(jīng)數(shù)據(jù)接口包。主要實(shí)現(xiàn)對(duì)股票等金融數(shù)據(jù)從數(shù)據(jù)采集焕刮、清洗加工 到 數(shù)據(jù)存儲(chǔ)的過(guò)程,能夠?yàn)榻鹑诜治鋈藛T提供快速墙杯、整潔配并、和多樣的便于分析的數(shù)據(jù),為他們?cè)跀?shù)據(jù)獲取方面極大地減輕工作量高镐,使他們更加專注于策略和模型的研究與實(shí)現(xiàn)上溉旋。考慮到Python pandas包在金融量化分析中體現(xiàn)出的優(yōu)勢(shì)嫉髓,Tushare返回的絕大部分的數(shù)據(jù)格式都是pandas DataFrame類型观腊,非常便于用pandas/NumPy/Matplotlib進(jìn)行數(shù)據(jù)分析和可視化。當(dāng)然算行,如果您習(xí)慣了用Excel或者關(guān)系型數(shù)據(jù)庫(kù)做分析梧油,您也可以通過(guò)Tushare的數(shù)據(jù)存儲(chǔ)功能,將數(shù)據(jù)全部保存到本地后進(jìn)行分析州邢。應(yīng)一些用戶的請(qǐng)求婶溯,從0.2.5版本開(kāi)始,Tushare同時(shí)兼容Python 2.x和Python 3.x偷霉,對(duì)部分代碼進(jìn)行了重構(gòu)迄委,并優(yōu)化了一些算法,確保數(shù)據(jù)獲取的高效和穩(wěn)定类少。
? ? ? 不管你是量化投資分析師叙身,還是正在學(xué)習(xí)Python進(jìn)行數(shù)據(jù)分析的學(xué)習(xí)者,這種方法獲取的數(shù)據(jù)都可以適用硫狞。
一信轿、獲取前的準(zhǔn)備
? ? ? ? 1、安裝Python残吩,這個(gè)不再贅述财忽,Python官網(wǎng)下載安裝適合自己計(jì)算機(jī)的版本。
2泣侮、安裝pandas即彪,我是直接安裝的Anaconda,包含有pandas活尊,很實(shí)用隶校,建議安裝Anaconda漏益,下載地址:https://www.anaconda.com/download/?,選擇適合的版本安裝深胳。
3绰疤、Tushare的下載安裝,下載地址:https://pypi.python.org/pypi/tushare?舞终,下載完之后解壓即可轻庆,無(wú)需安裝。
二敛劝、獲取數(shù)據(jù)
? 1余爆、獲取歷史行情數(shù)據(jù) get_hist_data()
? ? ? ?獲取個(gè)股歷史交易數(shù)據(jù)(包括均線數(shù)據(jù)),可以通過(guò)參數(shù)設(shè)置獲取日k線攘蔽、周k線龙屉、月k線,以及5分鐘满俗、15分鐘转捕、30分鐘和60分鐘k線數(shù)據(jù)。本接口只能獲取近3年的日線數(shù)據(jù)唆垃,適合搭配均線數(shù)據(jù)進(jìn)行選股和分析五芝。
參數(shù)說(shuō)明:
code:股票代碼,即6位數(shù)字代碼辕万,或者指數(shù)代碼(sh=上證指數(shù) sz=深圳成指 hs300=滬深300指數(shù) sz50=上證50 zxb=中小板 cyb=創(chuàng)業(yè)板)
start:開(kāi)始日期枢步,格式Y(jié)YYY-MM-DD
end:結(jié)束日期,格式Y(jié)YYY-MM-DD
ktype:數(shù)據(jù)類型渐尿,D=日k線 W=周 M=月 5=5分鐘 15=15分鐘 30=30分鐘 60=60分鐘醉途,默認(rèn)為D
retry_count:當(dāng)網(wǎng)絡(luò)異常后重試次數(shù),默認(rèn)為3
pause:重試時(shí)停頓秒數(shù)砖茸,默認(rèn)為0
返回值說(shuō)明:
date:日期
open:開(kāi)盤(pán)價(jià)
high:最高價(jià)
close:收盤(pán)價(jià)
low:最低價(jià)
volume:成交量
price_change:價(jià)格變動(dòng)
p_change:漲跌幅
ma5:5日均價(jià)
ma10:10日均價(jià)
ma20:20日均價(jià)
v_ma5:5日均量
v_ma10:10日均量
v_ma20:20日均量
turnover:換手率[注:指數(shù)無(wú)此項(xiàng)]
? ? ? ? 使用方法:
import tushare as ts
data=ts.get_hist_data('300274')print(data)
? ? ? ? 需要注意的是路徑要在tushare文件下隘擎,否則會(huì)報(bào)錯(cuò)。
? ? ? ? 執(zhí)行結(jié)果:
?View Code
? ? ? ? 獲取某一時(shí)間段的歷史數(shù)據(jù)
import tushare as ts
data=ts.get_hist_data('300274',start='2017-01-01',end='2018-03-27')print(data)
? ? ? ? ?執(zhí)行結(jié)果:
?View Code
? ? ? ? 另外一個(gè)獲取歷史數(shù)據(jù)的函數(shù)get_h_data()凉夯。
import tushare as ts
data=ts.get_h_data('300274')print(data)
? ? ? ? 執(zhí)行結(jié)果:
?View Code
? ? ? ? ?在不指定開(kāi)始時(shí)間和結(jié)束時(shí)間時(shí)货葬,該函數(shù)默認(rèn)返回最近一年的日線數(shù)據(jù),返回的數(shù)據(jù)與get_hist_data不同的是劲够,該函數(shù)只返回開(kāi)盤(pán)價(jià)(open)震桶、最高價(jià)(high)、收盤(pán)價(jià)(close)征绎、最低價(jià)(low)蹲姐、成交量(volume)、成交金額(amount)六列 ,同樣加上時(shí)間段也可以獲取相應(yīng)數(shù)據(jù)淤堵。
? ? ? ? 第三個(gè)獲取歷史數(shù)據(jù)的函數(shù)get_k_data()寝衫。
import tushare as ts
data=ts.get_k_data('300274')print(data)
? ? ? ?執(zhí)行結(jié)果:
?View Code
? ? ? ?與前兩個(gè)函數(shù)相比顷扩,這個(gè)函數(shù)獲取數(shù)據(jù)的速度很明顯要快很多拐邪,而且可以返回每一只股票從上市開(kāi)始到當(dāng)前交易日的所有日線數(shù)據(jù),這個(gè)有點(diǎn)是前兩個(gè)函數(shù)都不具備的隘截,更重要的是扎阶,如果批量3000多只股票的數(shù)據(jù),前兩個(gè)都不如get_k_data()穩(wěn)定婶芭。
其他:
ts.get_hist_data('600848', ktype='W')#獲取周k線數(shù)據(jù)ts.get_hist_data('600848', ktype='M')#獲取月k線數(shù)據(jù)ts.get_hist_data('600848', ktype='5')#獲取5分鐘k線數(shù)據(jù)ts.get_hist_data('600848', ktype='15')#獲取15分鐘k線數(shù)據(jù)ts.get_hist_data('600848', ktype='30')#獲取30分鐘k線數(shù)據(jù)ts.get_hist_data('600848', ktype='60')#獲取60分鐘k線數(shù)據(jù)ts.get_hist_data('sh')#獲取上證指數(shù)k線數(shù)據(jù)东臀,其它參數(shù)與個(gè)股一致,下同ts.get_hist_data('sz')#獲取深圳成指k線數(shù)據(jù)ts.get_hist_data('hs300')#獲取滬深300指數(shù)k線數(shù)據(jù)ts.get_hist_data('sz50')#獲取上證50指數(shù)k線數(shù)據(jù)ts.get_hist_data('zxb')#獲取中小板指數(shù)k線數(shù)據(jù)ts.get_hist_data('cyb')#獲取創(chuàng)業(yè)板指數(shù)k線數(shù)據(jù)
2犀农、獲取實(shí)時(shí)行情數(shù)據(jù)get_today_all()
返回值說(shuō)明:
code:代碼
name:名稱
changepercent:漲跌幅
trade:現(xiàn)價(jià)
open:開(kāi)盤(pán)價(jià)
high:最高價(jià)
low:最低價(jià)
settlement:昨日收盤(pán)價(jià)
volume:成交量
turnoverratio:換手率
amount:成交量
per:市盈率
pb:市凈率
mktcap:總市值
nmc:流通市值
import tushare as ts
ts.get_today_all()
? ? ? ?執(zhí)行結(jié)果:
?View Code
? ? ? ?一次性獲取當(dāng)前交易所有股票的行情數(shù)據(jù)(如果是節(jié)假日惰赋,即為上一交易日)
?3、獲取歷史分筆數(shù)據(jù)之:get_tick_data()
? ? ? ?獲取個(gè)股以往交易歷史的分筆數(shù)據(jù)明細(xì)呵哨,通過(guò)分析分筆數(shù)據(jù)赁濒,可以大致判斷資金的進(jìn)出情況。在使用過(guò)程中孟害,對(duì)于獲取股票某一階段的歷史分筆數(shù)據(jù)拒炎,需要通過(guò)加入交易日參數(shù)并append到一個(gè)DataFrame或者直接append到本地同一個(gè)文件里。歷史分筆接口只能獲取當(dāng)前交易日之前的數(shù)據(jù)挨务,當(dāng)日分筆歷史數(shù)據(jù)請(qǐng)調(diào)用get_today_ticks()接口或者在當(dāng)日18點(diǎn)后通過(guò)本接口獲取击你。
參數(shù)說(shuō)明:
code:股票代碼,即6位數(shù)字代碼
date:日期谎柄,格式Y(jié)YYY-MM-DD
retry_count: int, 默認(rèn)3,如遇網(wǎng)絡(luò)等問(wèn)題重復(fù)執(zhí)行的次數(shù)
pause: int, 默認(rèn) 0,重復(fù)請(qǐng)求數(shù)據(jù)過(guò)程中暫停的秒數(shù)丁侄,防止請(qǐng)求間隔時(shí)間太短出現(xiàn)的問(wèn)題
? ? ? 使用方法:
import tushare as ts
df=ts.get_tick_data('300274',date='2018-03-27')
df.head(10)#距離執(zhí)行時(shí)間最近的十筆交易
? ? ? ?執(zhí)行結(jié)果:
? time? price change? volume? amount type
0? 15:00:03? 18.46? ? --? ? 2373? 4380761? 賣盤(pán)1? 14:57:03? 18.46? -0.01? ? 188? 347048? 賣盤(pán)2? 14:57:00? 18.47? -0.01? ? ? 42? ? 77574? 賣盤(pán)3? 14:56:57? 18.48? ? --? ? 644? 1190112? 買盤(pán)4? 14:56:54? 18.48? 0.01? ? ? 80? 147840? 買盤(pán)5? 14:56:51? 18.47? 0.01? ? ? 9? ? 16623? 中性盤(pán)6? 14:56:48? 18.46? -0.02? ? ? 38? ? 70148? 賣盤(pán)7? 14:56:45? 18.48? 0.01? ? ? 25? ? 46200? 買盤(pán)8? 14:56:42? 18.47? ? --? ? ? 87? 160689? 買盤(pán)9? 14:56:36? 18.47? ? --? ? ? 82? 151454? 買盤(pán)
? ? ? ?獲取當(dāng)日歷史分筆數(shù)據(jù):get_today_ticks()
? ? ? ?獲取當(dāng)前交易日(交易進(jìn)行中使用)已經(jīng)產(chǎn)生的分筆明細(xì)數(shù)據(jù)。
參數(shù)說(shuō)明:
code:股票代碼朝巫,即6位數(shù)字代碼
retry_count: int, 默認(rèn)3,如遇網(wǎng)絡(luò)等問(wèn)題重復(fù)執(zhí)行的次數(shù)
pause: int, 默認(rèn) 0,重復(fù)請(qǐng)求數(shù)據(jù)過(guò)程中暫停的秒數(shù)鸿摇,防止請(qǐng)求間隔時(shí)間太短出現(xiàn)的問(wèn)題
返回值說(shuō)明:
time:時(shí)間
price:當(dāng)前價(jià)格
pchange:漲跌幅
change:價(jià)格變動(dòng)
volume:成交手
amount:成交金額(元)
type:買賣類型【買盤(pán)、賣盤(pán)捍歪、中性盤(pán)】
? ? ? 使用方法:
import tushare as ts
df = ts.get_today_ticks('300274')#當(dāng)日的歷史分筆數(shù)據(jù)df.head(10)#距離執(zhí)行時(shí)間最近的10筆
? ? ? 執(zhí)行結(jié)果:
[Getting data:]###########################################Out[6]:? ? ? ? time? price pchange? change? volume? amount type
0? 13:32:15? 18.68? +1.19? -0.01? ? ? 1? ? 1868? 買盤(pán)1? 13:32:12? 18.69? +1.25? ? 0.00? ? ? 8? 14952? 買盤(pán)2? 13:32:06? 18.69? +1.25? ? 0.01? ? ? 1? ? 1869? 買盤(pán)3? 13:32:03? 18.68? +1.19? ? 0.00? ? ? 19? 35492? 賣盤(pán)4? 13:31:51? 18.68? +1.19? ? 0.00? ? ? 8? 14944? 買盤(pán)5? 13:31:48? 18.68? +1.19? ? 0.01? ? ? 14? 26152? 買盤(pán)6? 13:31:45? 18.67? +1.14? -0.01? ? ? 30? 56010? 賣盤(pán)7? 13:31:42? 18.68? +1.19? ? 0.01? ? ? 8? 14944? 買盤(pán)8? 13:31:36? 18.67? +1.14? ? 0.00? ? ? 14? 26138? 賣盤(pán)9? 13:31:33? 18.67? +1.14? -0.01? ? ? 10? 18670? 賣盤(pán)
4户辱、獲取實(shí)時(shí)分筆數(shù)據(jù)之:get_realtime_quotes()
? ? ? ?獲取實(shí)時(shí)分筆數(shù)據(jù),可以實(shí)時(shí)取得股票當(dāng)前報(bào)價(jià)和成交信息糙臼,其中一種場(chǎng)景是庐镐,寫(xiě)一個(gè)python定時(shí)程序來(lái)調(diào)用本接口(可兩三秒執(zhí)行一次,性能與行情軟件基本一致)变逃,然后通過(guò)DataFrame的矩陣計(jì)算實(shí)現(xiàn)交易監(jiān)控必逆,可實(shí)時(shí)監(jiān)測(cè)交易量和價(jià)格的變化。
參數(shù)說(shuō)明:
symbols:6位數(shù)字股票代碼,或者指數(shù)代碼(sh=上證指數(shù) sz=深圳成指 hs300=滬深300指數(shù) sz50=上證50 zxb=中小板 cyb=創(chuàng)業(yè)板) 可輸入的類型:str名眉、list粟矿、set或者pandas的Series對(duì)象
返回值說(shuō)明:
0:name,股票名字1:open损拢,今日開(kāi)盤(pán)價(jià)2:pre_close陌粹,昨日收盤(pán)價(jià)3:price,當(dāng)前價(jià)格4:high福压,今日最高價(jià)5:low掏秩,今日最低價(jià)6:bid,競(jìng)買價(jià)荆姆,即“買一”報(bào)價(jià)7:ask蒙幻,競(jìng)賣價(jià),即“賣一”報(bào)價(jià)8:volume胆筒,成交量 maybe you need do volume/1009:amount邮破,成交金額(元 CNY)10:b1_v,委買一(筆數(shù) bid volume)11:b1_p仆救,委買一(價(jià)格 bid price)12:b2_v抒和,“買二”13:b2_p,“買二”14:b3_v派桩,“買三”15:b3_p构诚,“買三”16:b4_v,“買四”17:b4_p铆惑,“買四”18:b5_v范嘱,“買五”19:b5_p,“買五”20:a1_v员魏,委賣一(筆數(shù) ask volume)21:a1_p丑蛤,委賣一(價(jià)格 ask price)
...30:date,日期撕阎;31:time受裹,時(shí)間;
? ? ? ? 使用方法:
import tushare as ts
df = ts.get_realtime_quotes('300274')#單個(gè)股票實(shí)時(shí)行情? ? df[['code','name','price','bid','ask','volume','amount','time']]#需要顯示的屬性
? ? ? ? 執(zhí)行結(jié)果:
code? name? price? ? bid? ? ask? ? volume? ? ? ? amount? ? ? time
0? 300274? 陽(yáng)光電源? 18.780? 18.750? 18.770? 17003279? 318581216.230? 13:16:06
? ? ? ? 多只股票的實(shí)時(shí)分筆數(shù)據(jù)(最好不要超過(guò)30):
import tushare as ts
df = ts.get_realtime_quotes(['600460','000762','000725'])
df[['code','name','price','bid','ask','volume','amount','time']]
? ? ? ? ?獲取實(shí)時(shí)指數(shù):
ts.get_realtime_quotes('sh')#上證指數(shù)ts.get_realtime_quotes(['sh','sz','hs300','sz50','zxb','cyb'])#上證指數(shù) 深圳成指 滬深300指數(shù) 上證50 中小板 創(chuàng)業(yè)板ts.get_realtime_quotes(['sh','600848'])#或者混搭
? ? ? ? 大盤(pán)指數(shù)行情列表:
? ? ? ? 獲取大盤(pán)指數(shù)實(shí)時(shí)行情列表虏束,以表格的形式展示大盤(pán)指數(shù)實(shí)時(shí)行情棉饶。
返回值說(shuō)明:
code:指數(shù)代碼
name:指數(shù)名稱
change:漲跌幅
open:開(kāi)盤(pán)點(diǎn)位
preclose:昨日收盤(pán)點(diǎn)位
close:收盤(pán)點(diǎn)位
high:最高點(diǎn)位
low:最低點(diǎn)位
volume:成交量(手)
amount:成交金額(億元)
? ? ? ? ?使用方法:
import tushare as ts
df = ts.get_index()print(df)
? ? ? ? ?執(zhí)行結(jié)果:
?View Code
5、獲取大單交易數(shù)據(jù)
? ? ? ? ?獲取大單交易數(shù)據(jù)镇匀,默認(rèn)為大于等于400手照藻,數(shù)據(jù)來(lái)源于新浪財(cái)經(jīng)。
參數(shù)說(shuō)明:
code:股票代碼汗侵,即6位數(shù)字代碼
date:日期幸缕,格式Y(jié)YYY-MM-DD
vol:手?jǐn)?shù)群发,默認(rèn)為400手,輸入數(shù)值型參數(shù)
retry_count: int, 默認(rèn)3,如遇網(wǎng)絡(luò)等問(wèn)題重復(fù)執(zhí)行的次數(shù)
pause: int, 默認(rèn) 0,重復(fù)請(qǐng)求數(shù)據(jù)過(guò)程中暫停的秒數(shù)发乔,防止請(qǐng)求間隔時(shí)間太短出現(xiàn)的問(wèn)題
返回值說(shuō)明:
code:代碼
name:名稱
time:時(shí)間
price:當(dāng)前價(jià)格
volume:成交手
preprice:上一筆價(jià)格
type:買賣類型【買盤(pán)熟妓、賣盤(pán)、中性盤(pán)】
? ? ? ? 使用方法:
import tushare as ts
df = ts.get_sina_dd('300274', date='2018-03-28')#默認(rèn)400手#df = ts.get_sina_dd('300274', date='2018-03-28', vol=500)? #指定大于等于500手的數(shù)據(jù)print(df)
? ? ? ? ?執(zhí)行結(jié)果:
?View Code
?6栏尚、數(shù)據(jù)的存儲(chǔ)
數(shù)據(jù)存儲(chǔ)模塊主要是引導(dǎo)用戶將數(shù)據(jù)保存在本地磁盤(pán)或數(shù)據(jù)庫(kù)服務(wù)器上起愈,便于后期的量化分析和回測(cè)使用,在以文件格式保存在電腦磁盤(pán)的方式上抵栈,調(diào)用的是pandas本身自帶的方法告材,此處會(huì)羅列常用的參數(shù)和說(shuō)明坤次。
?保存為CSV格式文件
? ? ??pandas的DataFrame和Series對(duì)象提供了直接保存csv文件格式的方法古劲,通過(guò)參數(shù)設(shè)定,輕松將數(shù)據(jù)內(nèi)容保存在本地磁盤(pán)缰猴。
常用參數(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)為T(mén)rue
index: 是否保存index,默認(rèn)為T(mén)rue
mode: 創(chuàng)建新文件還是追加到現(xiàn)有文件疑故,默認(rèn)為新建
encoding: 文件編碼格式
date_format: 日期格式
注:在設(shè)定path時(shí)杠览,如果目錄不存在,程序會(huì)提示IOError纵势,請(qǐng)先確保目錄已經(jīng)存在于磁盤(pán)中踱阿。
? ? ? 使用方法:
import tushare as ts
df = ts.get_hist_data('300274')#直接保存df.to_csv('C:/Users/07010018/Desktop/tushare-1.1.6/exportdata/300274.csv')#選擇保存#df.to_csv('C:/Users/07010018/Desktop/tushare-1.1.6/exportdata/300274.csv',columns=['open','high','low','close'])
? ? ? ?追加數(shù)據(jù)的方式:
? ? ? ?某些時(shí)候,可能需要將一些同類數(shù)據(jù)保存在一個(gè)大文件中钦铁,這時(shí)候就需要將數(shù)據(jù)追加在同一個(gè)文件里,簡(jiǎn)單舉例如下:
import tushare as tsimport os
filename ='c:/day/bigfile.csv'forcodein['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)為T(mén)rue
index: 是否保存index演闭,默認(rèn)為T(mén)rue
encoding: 文件編碼格式
startrow: 在數(shù)據(jù)的頭部留出startrow行空行
startcol:在數(shù)據(jù)的左邊留出startcol列空列
? ? ? ? 使用方法:
import tushare as ts
df = ts.get_hist_data('300274')#直接保存df.to_excel('C:/Users/07010018/Desktop/tushare-1.1.6/exportdata/300274.xlsx')#設(shè)定數(shù)據(jù)位置(從第3行,第6列開(kāi)始插入數(shù)據(jù))#df.to_excel('C:/Users/07010018/Desktop/tushare-1.1.6/exportdata/300274.xlsx', startrow=2,startcol=5)
?保存為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税朴,即一次性全部寫(xiě)人數(shù)據(jù)庫(kù)
dtype:設(shè)定columns在數(shù)據(jù)庫(kù)里的數(shù)據(jù)類型回季,默認(rèn)是None
使用方法:
fromsqlalchemyimport create_engineimport tushare as ts
df = ts.get_tick_data('300274', date='2018-03-27')
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')
? ? ? 另外,數(shù)據(jù)也可以保存為HDF5格式正林,JSON格式泡一,存入NoSQL數(shù)據(jù)庫(kù),這里就不在一一贅述觅廓,就簡(jiǎn)單介紹幾種常用的鼻忠。