weixin_47909758 2022-05-17 23:21 采纳率: 100%
浏览 122
已结题

代码改错,有作者的代码但有报错

来自
https://blog.csdn.net/qq_32875265/article/details/120332960?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-11-120332960-null-null.pc_agg_new_rank&utm_term=python+%E9%80%89%E8%82%A1%E7%AD%96%E7%95%A5&spm=1000.2123.3001.4430

代码如下

#导入需要的包
# 先引入后面可能用到的包(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'
请更改到能输出文章上面的结果

  • 写回答

3条回答 默认 最新

  • 一切因为有你 2022-05-18 10:19
    关注

    里面格式有变化,有两个地方要改一下就行了,我帮你测试过了,私信你了

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月26日
  • 已采纳回答 5月18日
  • 创建了问题 5月17日

悬赏问题

  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题