代码如下
#导入需要的包
# 先引入后面可能用到的包(package)
import pandas as pd
import datetime
import jqdatasdk as jk # 导入聚宽包
stk_list = jk.get_all_securities(types=['stock'], date=None)
stk_list.reset_index(inplace=True) # 重建索引
stk_list.rename(columns={'index': 'stk_code', 'display_name': 'stk_name'}, inplace=True) # 修改列名
stk_list_n=list(stk_list["stk_code"])
# 基本面数据,查询个股财务指标
from jqdatasdk import valuation # 市值数据
from jqdatasdk import income # 利润数据
from jqdatasdk import indicator # 财务指标数据
q1 =jk.query(
valuation, income ,indicator
) # .filter(valuation.code == '000651.XSHE')
df1 = jk.get_fundamentals(q1)
# 数据处理
df1 = df1[['day',
'code',
'capitalization',
'circulating_cap',
'market_cap',
'circulating_market_cap',
'turnover_ratio',
'pe_ratio',
'pe_ratio_lyr',
'pb_ratio',
'ps_ratio',
'pcf_ratio',
'statDate',
'basic_eps',
'statDate.1',
'net_profit_margin',
'gross_profit_margin',
'roe',
'inc_total_revenue_year_on_year',
'inc_net_profit_year_on_year'
]]
# 日期
star_day=datetime.datetime.today().strftime('%Y-%m-%d')
end_day=datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S')
# 上一个交易日的交易数据
df2 = jk.get_price(stk_list_n, start_date=star_day, end_date=end_day)
# 合并两个数据表
data = pd.merge(df1, df2, left_on=['code'], right_on=['code'], how='inner')
data = pd.merge(data, stk_list, left_on=['code'], right_on=['stk_code'], how='inner')
# data.head(3)
# #### 数据清洗
# 数据清洗过程大致包含:选择子集、列名重命名、缺失数据处理、数据类型转换、数据排序、异常值处理等。
data.rename(columns={'time': '日期',
'code': '股票编码',
'stk_name': '股票名称',
'capitalization': '总股本(万股)',
'circulating_cap': '流通股本(万股)',
'market_cap': '总市值(亿元)',
'circulating_market_cap': '流通市值(亿元)',
'turnover_ratio': '换手率(%)',
'pe_ratio': '市盈率(PE,TTM)',
'pe_ratio_lyr': '市盈率(PE)',
'pb_ratio': '市净率(PB)',
'ps_ratio': '市销率(PS,TTM)',
'pcf_ratio': '市现率(PCF, 现金净流量TTM)',
'statDate': '财报报告期1',
'basic_eps': '基本每股收益(元)',
'statDate.1': '财报报告期2',
'net_profit_margin': '销售净利率(%)',
'gross_profit_margin': '销售毛利率(%)',
'roe': '净资产收益率ROE(%)',
'inc_total_revenue_year_on_year': '营业总收入同比增长率(%)',
'inc_net_profit_year_on_year': '净利润同比增长率(%)',
'open': '开盘价',
'close': '收盘价',
'volume': '成交量',
'money': '成交额'
}, inplace=True)
data = data[['日期', '股票编码', '股票名称', '总股本(万股)', '流通股本(万股)', '总市值(亿元)', '流通市值(亿元)',
'换手率(%)', '市盈率(PE,TTM)', '市盈率(PE)', '市净率(PB)', '市销率(PS,TTM)', '市现率(PCF, 现金净流量TTM)',
'财报报告期1', '基本每股收益(元)', '财报报告期2', '销售净利率(%)', '销售毛利率(%)', '净资产收益率ROE(%)',
'营业总收入同比增长率(%)', '净利润同比增长率(%)', '开盘价', '收盘价', '成交量', '成交额']]
# 设置参数和过滤值(根据需要不断调整)
# 市盈率>0
pe0 = data['市盈率(PE)'] > 0
pe1 = data['市盈率(PE)'] < 50
# 市净率>0
pb0 = data['市净率(PB)'] > 0
pb1 = data['市净率(PB)'] < 100
# 流通股本<=20亿
out = data['流通股本(万股)'] >= 0
# 每股收益>=1元
eps = data['基本每股收益(元)'] >= 1
# 总市值<500亿
mktcap = data['总市值(亿元)'] >= 1000
# 收入同比正数
rev = data['营业总收入同比增长率(%)'] >= 1
# 利润同比
profit = data['净利润同比增长率(%)'] >= 1
# 净利率>5%
npr = data['销售净利率(%)'] >= 1
# 股价<=80
price = data['收盘价'] <= 80
# 净资产收益率>=10
ROE = data['净资产收益率ROE(%)'] >= 10
# 取并集结果:
select = out & eps & mktcap & rev & pe0 & pe1 & pb0 & profit & npr & price & ROE
out = data[select]
out
但运行时会报错,例如AttributeError: 'NoneType' object has no attribute 'reset_index'
请更改到能输出文章上面的结果