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

使用Tushare获取和处理申万电子行业成分股数据
本文介绍了如何利用tushare库从申万一级行业中获取电子行业的成分股数据,包括股票代码、纳入和剔除日期等,并通过函数合并数据并存储到CSV文件中。

基本思路

       首先导入基本库,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中得到行业成分股的数据库

### 类似于 Tushare 的开源金融数据 API 和数据库 #### 1. **Yahoo Finance (yfinance)** `yfinance` 是一个非常流行的 Python 库,可以用来抓取全球范围内的金融市场数据。它提供了丰富的功能来获取股票价格、历史数据、财务报表以及公司基本信息等。对于希望研究国际市场的用户来说,这是一个不可或缺的工具[^1]。 ```python import yfinance as yf ticker = "AAPL" data = yf.Ticker(ticker) print(data.info) # 获取公司的基本概况 ``` --- #### 2. **Pandas DataReader** 作为 Pandas 生态的一部分,`pandas_datareader` 提供了一个简单易用的接口,可以从多个在线平台(如 Yahoo! Finance, FRED, World Bank 等)提取经济和金融数据。尽管其部分功能可能不如 `Tushare` 那样针对中国市场优化,但它仍然是一个强大的通用型工具[^2]。 ```python from pandas_datareader import data as pdr import datetime start_date = datetime.datetime(2023, 1, 1) end_date = datetime.datetime.now() df = pdr.get_data_yahoo("MSFT", start=start_date, end=end_date) print(df.head()) ``` --- #### 3. **Quandl** Quandl 是另一个广泛使用的金融数据提供商,涵盖了广泛的市场领域,包括商品期货、外汇汇率以及其他宏观经济指标。虽然 Quandl 并不完全免费,但对于学术用途和个人项目而言,它的免费版本已经足够强大。通过安装对应的 Python 客户端即可轻松访问这些资源。 ```python import quandl quandl.ApiConfig.api_key = 'your_api_key_here' data = quandl.get('WIKI/AAPL', start_date='2023-01-01', end_date='2023-12-31') print(data.tail()) ``` --- #### 4. **Alpha Vantage** Alpha Vantage 提供实时和历史股市行情服务,同时还支持技术分析指标计算等功能。该服务允许开发者注册并获得个人专属密钥,在此基础上构建自己的应用程序或者进行量化交易实验。需要注意的是,默认情况下每日请求次数有限制。 ```python from alpha_vantage.timeseries import TimeSeries ts = TimeSeries(key='your_alpha_vantage_api_key', output_format='pandas') data, meta_data = ts.get_daily(symbol='GOOGL', outputsize='full') print(data.head()) ``` --- #### 5. **Intrinio** 类似于 Alpha Vantage , Intrinio 同样定位于为中小型企业及独立投资者提供高质量证券资讯 。除了常规的价格序列之外 , 还能查询到更多深层次的企业财报细节等内容. 请注意以上提到的服务大多需要先完成账户创建流程才能正常使用相应 api 接口调用权限 [^3]. --- ### 总结 综上所述,如果目标是国内 A 股相关业务,则首选仍是 Tushare;而对于国际化视野下的资产配置需求者来讲,可以选择像 YFinance 或者其他付费性质较高的专业级解决方案比如 Bloomberg Terminal 来满足更复杂的要求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值