量化:tushare构建数据库(二)

基本思路

       首先导入基本库,tushare官网的数据接口获取申万一级行业列表。

        获取电子行业(801080.SI)成分股,并把df1存到excel中,方便后续提取股票代码。要提取con_code电子行业的股票代码,in_date:该股票纳入电子行业指数时间,out_date:剔除该指数时间,is_new:现在是不是该指数成分股。因此,要剔除out_date有时间的股票,或者保留is_new==Y的股票。过滤并获得所需个股代码。

       最后根据上篇文章获取数据和存储文件。

代码

import tushare as ts
import pandas as pd

pro = ts.pro_api()

#获取数据及数据合并函数,start_date='20101012', end_date='20240325'根据自己需求更改
def get_data(code):
    df1 = pro.daily(ts_code=code, start_date='20101012', end_date='20240325', fields='ts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount,')
    df1 = df1.sort_values('trade_date')
    df2 = pro.daily_basic(ts_code=code, start_date='20101012', end_date='20240325', fields='ts_code,trade_date,close,turnover_rate,turnover_rate_f,volume_ratio,pe,pe_ttm,pb,ps,ps_ttm,dv_ratio,dv_ttm,total_share,float_share,free_share,total_mv,circ_mv')
    df2 = df2.sort_values('trade_date')
    
    #合并df1和df2
    merged_df = pd.merge(df1, df2, how='outer')
    # 删除2中与df1重复的列
    merged_df = merged_df.loc[:, ~merged_df.columns.duplicated()]
    return merged_df

def acquire_code():
    filename = "stock1/"+ code + ".csv"
    #stock1 文件路径可更改,需要提前建文件夹,或者导入os后用代码创建文件夹
    merged_df = get_data(code)
    merged_df.to_csv(filename, index=False)

#获取申万一级行业列表
df = pro.index_classify(level='L1', src='SW2021')

#获取指数的成份股
df = pro.index_member(index_code='801080.SI')
#df.to_excel('电子行业.xlsx', index=False)

# 筛选is_new等于Y的行
filtered_df = df[df['is_new'] == 'Y']

# 输出con_code列表
con_code_list = filtered_df['con_code'].tolist()
#print(con_code_list)

for code in con_code_list:
    acquire_code()
#最终在stock1中得到行业成分股的数据库

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值