编写一个函数,可以利用tushare同时获取多只股票数据。通过tushare获取公司(2022年10月)的的盈利数据,并将其存储为HDF格式,并对roe大于15,net_profit_ratio>30的股票选取出来
时间: 2024-09-29 15:12:20 浏览: 67
要使用Tushare库同时获取多只股票的数据,包括盈利数据(如净利润、净资产收益率等),并按照给定条件筛选出符合条件的股票,你需要首先安装`tushare`库。如果你还没有安装,可以使用以下命令安装:
```bash
pip install tushare
```
然后,你可以创建一个函数,使用Tushare API获取股票数据,处理后存储到HDF5文件中。这里我为你提供了一个基本的示例代码:
```python
import tushare as ts
import pandas as pd
from pandas import HDFStore
# Tushare pro api key (需要你自己注册获取)
pro_api = 'your_tushare_pro_api_key'
ts.set_token(pro_api)
def get_stock_data(stock_codes, year=2022):
# 获取股票列表
stock_data = []
for code in stock_codes:
# 使用tushare pro获取指定股票的财务报表数据
try:
df = ts.pro_report(ts_code=code, period='annual', fields=['roe', 'net_profit_ratio'], start_date=f'{year}-01-01')
except Exception as e:
print(f"Error fetching data for {code}: {e}")
continue
if df.empty:
print(f"No data found for {code} in {year}.")
continue
df['stock_code'] = code
stock_data.append(df)
# 合并所有股票的数据
combined_df = pd.concat(stock_data) if len(stock_data) else None
return combined_df
def store_to_hdf(data, filename, condition_dict):
# 创建一个HDFStore来保存数据
with HDFStore(filename, complevel=9, complib='zlib') as hdf_store:
if data is not None:
# 应用条件筛选
filtered_data = data.query(''.join([f"{k} > {v}" for k, v in condition_dict.items()]))
# 将筛选后的数据保存到HDFStore
hdf_store.put('stocks', filtered_data, format='table')
print("Data stored in the HDF file.")
# 示例:获取2022年盈利能力超过15%和净利率超过30%的股票数据
stock_codes = ['000001.SZ', '600519.SH', '601398.SH'] # 假设这是你要查询的股票代码
condition_dict = {'roe': 0.15, 'net_profit_ratio': 0.3}
data = get_stock_data(stock_codes)
store_to_hdf(data, 'stocks_2022.h5', condition_dict)
```
记得替换`'your_tushare_pro_api_key'`为你的Tushare Pro API密钥。运行这个脚本后,它将获取指定股票列表在2022年的盈利数据,筛选出符合roe>15%和net_profit_ratio>30%的股票,并将结果存储为HDF5格式。
阅读全文