财经数据获取_tushare简略版V1.0
撰写及编辑于20201011周日 广州图书馆
主要获取列表:
1、当前所有正常上市交易的股票列表 pro.stock_basic
2、指数基础信息列表 pro.index_basic
3、指数每日行情 pro.index_daily
4、沪股通、深股通成分数据 pro.hs_const
5、个股或单个股指每日行情 pro.daily
一、全部代码(整合)
import pandas as pd
import numpy as np
import datetime
import time
import os
import warnings
warnings.filterwarnings('ignore')
# 查看tushare当前版本
import tushare as ts
print("tushare.version :",ts.__version__)
# 设置token,看看例子
tushare_token = '1b4c5a07cb9ce8d3261388ace6c5f02d52a8a39058766503ca30ddb1'
pro = ts.pro_api(tushare_token)
# datetime.timedelta调用的股票数据时间段参数
timeperiod = -3650
# 查看上证指数过去10年(3650天)的数据
df2 = pro.daily(ts_code='000001.SZ',
start_date = (datetime.date.today()+datetime.timedelta(days=timeperiod)).strftime("%Y-%m-%d"),
end_date = datetime.date.today().strftime("%Y-%m-%d"))
print("\n上证指数标准化日期及排序前:\n",df2.head())
# 标准化日期,获取时间的“年、月、日” (亲测自定义函数change_date(s)可行)
def change_date(s):
s = datetime.datetime.strptime(s, "%Y%m%d") # 把日期标准化,转化结果如:20150104 => 2015-01-04 00:00:00
s = str(s) # 上一步把date转化为了时间格式,因此要把date转回str格式
return s[:10] # 只获取年月日,即“位置10”之前的字符串
df2['trade_date'] = df2['trade_date'].map(change_date) # 用change_date函数处理列表中date这一列,如把“20150104”转化为“2015-01-04”
df2.sort_values(by='trade_date',axis=0,ascending=True,inplace=True) # 从后面print(df2.head())验证升序成功
print("\n上证指数标准化日期及排序后:\n",df2.head())
# 下面用tushare新接口 tushare.pro 来获取其他列表数据
# 新建当期财经数据列表合集文件夹,用于储存当期财经数据
total_path = os.path.abspath('.')
print("运行文件根目录 "+total_path)
path = total_path+r'\本期财经数据列表合集'+str(datetime.date.today())
try:
os.mkdir(path)
except:
pass
print("\n已新建本期文件夹 "+path)
# —— —— 查询当前所有正常上市交易的股票列表
alldata1 = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
alldata_path = path +'\当前所有正常上市交易的股票列表'+str(datetime.date.today())+'.xlsx'
alldata1.to_excel(alldata_path, index=False)
print("\n当前所有正常上市交易的股票列表:\n",alldata1.head(10).append(alldata1.tail(10)))
# —— —— 获取指数基础信息
indexbasic1 = pro.index_basic(market='SW')
indexbasic1_path = path +'/指数基础信息列表_SW'+str(datetime.date.today())+'.xlsx'
indexbasic1.to_excel(indexbasic1_path, index=False)
print("\n指数基础信息列表_SW:\n",indexbasic1.head())
indexbasic2 = pro.index_basic()
indexbasic2_path = path +'/指数基础信息列表_默认SSE'+str(datetime.date.today())+'.xlsx'
indexbasic2.to_excel(indexbasic2_path, index=False)
print("\n指数基础信息列表_默认SSE:\n",indexbasic2.head())
# —— —— 获取指数每日行情
# indexdaily = pro.index_daily(ts_code='399300.SZ')
indexdaily_code = '000001.SH'
indexdaily = pro.index_daily(ts_code = indexdaily_code)
indexdaily_path = path +'/指数每日行情'+indexdaily_code+str(datetime.date.today())+'.xlsx'
indexdaily.to_excel(indexdaily_path, index=False)
# #或者按日期取
# df = pro.index_daily(ts_code='399300.SZ', start_date='20180101', end_date='20181010')
print("\n指数每日行情:\n",indexdaily.head())
# —— —— 获取沪股通、深股通成分数据
#获取沪股通成分
shcf = pro.hs_const(hs_type='SH')
shcf_path = path +'/沪股通成分数据'+str(datetime.date.today())+'.xlsx'
shcf.to_excel(shcf_path, index=False)
print("\n沪股通成分数据:\n",shcf.head())
#获取深股通成分
szcf = pro.hs_const(hs_type='SZ')
szcf_path = path +'/深股通成分数据'+str(datetime.date.today())+'.xlsx'
szcf.to_excel(szcf_path, index=False)
print("\n深股通成分数据:\n",szcf.head())
效果如图:
二、全部代码(分步运行)
import pandas as pd
import numpy as np
import datetime
import time
import os
import warnings
warnings.filterwarnings('ignore')
# 查看tushare当前版本
import tushare as ts
print("tushare.version :",ts.__version__)
tushare.version : 1.2.60
# 设置token,看看例子
tushare_token = '1b4c5a07cb9ce8d3261388ace6c5f02d52a8a39058766503ca30ddb1'
pro = ts.pro_api(tushare_token)
# datetime.timedelta调用的股票数据时间段参数
timeperiod = -3650
# 查看上证指数过去10年(3650天)的数据
df2 = pro.daily(ts_code='000001.SZ',
start_date = (datetime.date.today()+datetime.timedelta(days=timeperiod)).strftime("%Y-%m-%d"),
end_date = datetime.date.today().strftime("%Y-%m-%d"))
print("\n上证指数标准化日期及排序前:\n",df2.head())
# 标准化日期,获取时间的“年、月、日” (亲测自定义函数change_date(s)可行)
def change_date(s)