用Tushare数据库获取银行股日度数据
Tushare是一个免费的、开放的数据平台,可以获取中国金融市场的实时和历史数据。本文将介绍如何使用Python和Tushare获取中国A股市场所有银行股票的日度交易数据,并计算股票的收益率和对数收益率。本文将介绍如何使用Python和Tushare获取银行股票的日度交易数据,并计算股票的收益率和对数收益率。如果您想深入了解如何使用Python和Tushare获取和分析金融数据,那么本文将为您提供有价值的参考。
在Python中用Tushare数据库获取银行股日度数据
首先,我们需要安装Tushare库。在命令行中输入以下命令即可安装:
pip install tushare
然后,在Python中引入必要的库:
import tushare as ts
import pandas as pd
import numpy as np
from time import sleep
设置pandas的显示选项:
pd.set_option('display.max_rows', 50) # 当行超过50不显示
pd.set_option('expand_frame_repr', False) # 当列太多时不换行
pd.set_option('display.unicode.ambiguous_as_wide', True) # 设置命令行输出时的列对齐功能
pd.set_option('display.unicode.east_asian_width', True) # 设置命令行输出时的列对齐功能
接着,我们需要设置Tushare的token:
pro = ts.pro_api('你的token') #你的token
我们将从Tushare获取所有股票的基础信息,并删除没有行业信息的股票。然后,我们将上市日期设置为日期,并筛选出行业信息最后两个字是‘银行’的股票,并且在给定的结束日期之前上市。
start_date = '20100101' #起始日期
end_date = '20211231' #结束日期
df = pro.stock_basic(exchange='', list_status='L') #获取所有股票的基础信息
df = df.dropna(subset=['industry']) #刨去没有行业信息的股票
df['list_date'] = pd.to_datetime(df['list_date']) #上市日期设置为日期
df = df.loc[(df['industry'].str.endswith('银行')) &
(df['list_date']<'20211231')] #筛选行业信息最后两个字是‘银行’的股票,并且在end_date之前上市
df = df.reset_index(drop=True) #重新设置index
code_list = df['ts_code'].tolist() #将股票代码设置为一个list列表
我们使用for循环遍历股票代码列表,然后使用Tushare获取每个股票的日度交易数据,并计算股票的收益率和对数收益率。我们还将数据按日期从小到大排序,并只保留自己需要的列名。最后,我们将数据导出为csv文件,并在每个请求之间休眠0.1秒,以防止频繁的访问Tushare服务器。
for i in code_list: #遍历list
df = pro.daily(ts_code=i, start_date=start_date, end_date=end_date) #tushare获取股票日度信息
df['return'] = df['close']/df['pre_close']-1 #计算收益率
df['ln_return'] = np.log(df['close'])-np.log(df['pre_close']) #计算对数收益率
df = df.sort_values(by=['trade_date']) #通过日期来从小到大排序
df = df[['ts_code', 'trade_date', 'close', 'return', 'ln_return']] #只留下自己需要的列名
df = df.reset_index(drop=True) #重新设置index
print(df) #打印整个df
df.to_csv(f'{i}.csv', encoding='gbk') #导出为csv文件
sleep(0.1) #休息0.1秒,防止访问过高
在本文中,我们使用Python和Tushare获取银行股票的日度交易数据,并计算了股票的收益率和对数收益率。Tushare提供了丰富的API接口,可以帮助开发人员快速地获取和分析金融数据。如果您对使用Python和Tushare获取和分析金融数据感兴趣,那么可以深入了解Tushare的API文档,并自行尝试分析更多的金融数据。
完整代码
import tushare as ts
import pandas as pd
import numpy as np
from time import sleep
# pandas设置
pd.set_option('display.max_rows', 50) # 当行超过50不显示
pd.set_option('expand_frame_repr', False) # 当列太多时不换行
# 设置命令行输出时的列对齐功能
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
# Tushare设置
pro = ts.pro_api('你的token') #你的token
start_date = '20100101' #起始日期
end_date = '20211231' #结束日期
df = pro.stock_basic(exchange='', list_status='L') #获取所有股票的基础信息
df = df.dropna(subset=['industry']) #刨去没有行业信息的股票
df['list_date'] = pd.to_datetime(df['list_date']) #上市日期设置为日期
df = df.loc[(df['industry'].str.endswith('银行')) &
(df['list_date']<'20211231')
] #筛选行业信息最后两个字是‘银行’的股票,并且在end_date之前上市
df = df.reset_index(drop=True) #重新设置index
code_list = df['ts_code'].tolist() #将股票代码设置为一个list列表
for i in code_list: #遍历list
df = pro.daily(ts_code=i, start_date=start_date, end_date=end_date) #tushare获取股票日度信息
df['return'] = df['close']/df['pre_close']-1 #计算收益率
df['ln_return'] = np.log(df['close'])-np.log(df['pre_close']) #计算对数收益率
df = df.sort_values(by=['trade_date']) #通过日期来从小到大排序
df = df[['ts_code', 'trade_date', 'close', 'return', 'ln_return']] #只留下自己需要的列名
df = df.reset_index(drop=True) #重新设置index
print(df) #打印整个df
df.to_csv(f'{i}.csv', encoding='gbk') #导出为csv文件
sleep(0.1) #休息0.1秒,防止访问过高