xiaobaidsai 2025-02-01 14:35 采纳率: 0%
浏览 20

DS生成提取股票信息代码运行失败

用deepseek写了利用akshare查询数据并输出股票的部分信息,但是一直报错股票不存在
代码如下:

import akshare as ak
import pandas as pd

def get_stock_data(stock_code):
    # 初始化结果字典
    result = {
        "股票代码": stock_code,
        "所属行业": "N/A",
        "ROE(%)": "N/A",
        "营收增长率(%)": "N/A",
        "资产负债率(%)": "N/A",
        "市盈率(PE)": "N/A",
        "市净率(PB)": "N/A"
    }
    
    try:
        # 获取股票基本信息(所属行业)
        market = "sh" if stock_code.startswith("6") else "sz"
        stock_info = ak.stock_individual_info_em(symbol=f"{market}{stock_code}")
        industry = stock_info.loc[stock_info['item'] == '所属行业', 'value'].values[0]
        result["所属行业"] = industry
        
        # 获取财务指标(ROE、资产负债率、营收增长率)
        indicator = ak.stock_financial_analysis_indicator(symbol=stock_code)
        latest_report = indicator.iloc[0]
        result["ROE(%)"] = round(latest_report['净资产收益率'], 1)
        result["资产负债率(%)"] = round(latest_report['资产负债率'], 1)
        
        # 获取利润表计算营收增长率
        income = ak.stock_profit_sheet_by_yearly_em(symbol=stock_code)
        if len(income) >= 2:
            current_revenue = income.iloc[0]['营业收入']
            previous_revenue = income.iloc[1]['营业收入']
            if previous_revenue != 0:
                growth_rate = (current_revenue - previous_revenue) / previous_revenue * 100
                result["营收增长率(%)"] = round(growth_rate, 1)
        
        # 获取估值指标(PE、PB)
        market_data = ak.stock_a_lg_indicator(symbol=stock_code)
        latest_data = market_data.iloc[0]
        result["市盈率(PE)"] = round(latest_data['市盈率'], 1)
        result["市净率(PB)"] = round(latest_data['市净率'], 2)
        
    except Exception as e:
        print(f"获取数据时发生错误: {str(e)}")
    
    return result

if __name__ == "__main__":
    stock_code = input("请输入股票代码(例如:600335):")
    stock_data = get_stock_data(stock_code)
    print("\n股票数据:")
    for k, v in stock_data.items():
        print(f"{k:15}: {v}")

# 注意:
# 1. 需要安装最新版akshare:pip install akshare --upgrade
# 2. 数据来自公开市场接口,可能有15分钟延迟
# 3. 财务指标基于最新定期报告
# 4. 部分数据需要计算得出,可能与券商数据存在微小差异

生成不了结果

展开全部

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2025-02-01 14:35
    关注

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    问题描述:在PYTHON中使用AKSHARE进行股票数据查询,并输出相关信息,但是遇到的错误是“股票不存在代码”。

    解决方案:

    1. 首先确保你的环境已经安装了PYTHON和AKSHARE库。
    2. 使用以下代码导入所需的库:
    IMPORT AKSHARE AS AK
    
    1. 导入并初始化DATAFRAME对象:
    DF = PD.DATAFRAME()
    
    1. 对于每个股票代码(例如,“000526”),调用AK.GET_STOCK_CODE()函数获取股票信息,然后将其保存到DATAFRAME中:
    CODE = "000526"
    STOCK_CODE_DF = AK.GET_STOCK_CODE(CODE)
    
    1. 将DATAFRAME存储为一个CSV文件:
    STOCK_CODE_DF.TO_CSV("STOCK_CODE.CSV", INDEX=FALSE)
    
    1. 检查已保存的文件是否成功打开:
    IF STOCK_CODE_DF.EMPTY:
        PRINT("股票代码未找到")
    ELSE:
        PRINT(STOCK_CODE_DF)
    
    1. 如果所有的股票代码都被成功加载,则返回所有股票代码的信息,否则提示找不到相关代码。
    2. 重复上述步骤以其他股票代码尝试加载数据,检查是否存在这些代码,以便提供更精确的帮助。

    以上代码应该能够帮助你在PYTHON中解决这个问题。

    评论
  • 檀越@新空间 2025-02-01 14:35
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    根据你的描述和提供的代码,问题可能出现在以下几个方面:

    1. 股票代码不正确:确保输入的股票代码是正确的,并且该股票在A股市场上确实存在。
    2. 数据源API限制或异常:某些API可能会因为网络问题、API限制或其他原因导致数据获取失败。
    3. 数据处理逻辑问题:在处理返回的数据时,可能存在一些逻辑错误。

    以下是针对这些问题的解决方案:

    解决方案

    1. 检查股票代码

      • 确保输入的股票代码格式正确。
      • 可以手动检查一下是否该股票代码对应的股票确实存在。
    2. 添加异常处理

      • 在每个数据获取步骤后添加更多的异常处理,以便更好地定位问题。
    3. 调试和日志记录

      • 打印每一步的中间结果,以便于调试。

    修改后的代码

    import akshare as ak
    import pandas as pd
    
    def get_stock_data(stock_code):
        # 初始化结果字典
        result = {
            "股票代码": stock_code,
            "所属行业": "N/A",
            "ROE(%)": "N/A",
            "营收增长率(%)": "N/A",
            "资产负债率(%)": "N/A",
            "市盈率(PE)": "N/A",
            "市净率(PB)": "N/A"
        }
        
        try:
            # 获取股票基本信息(所属行业)
            market = "sh" if stock_code.startswith("6") else "sz"
            stock_info = ak.stock_individual_info_em(symbol=f"{market}{stock_code}")
            if not stock_info.empty and 'value' in stock_info.columns:
                industry = stock_info.loc[stock_info['item'] == '所属行业', 'value'].values[0]
                result["所属行业"] = industry
            else:
                print(f"未能找到股票 {stock_code} 的所属行业信息")
            
            # 获取财务指标(ROE、资产负债率、营收增长率)
            indicator = ak.stock_financial_analysis_indicator(symbol=stock_code)
            if not indicator.empty:
                latest_report = indicator.iloc[0]
                result["ROE(%)"] = round(latest_report['净资产收益率'], 1)
                result["资产负债率(%)"] = round(latest_report['资产负债率'], 1)
            else:
                print(f"未能找到股票 {stock_code} 的财务分析指标")
            
            # 获取利润表计算营收增长率
            income = ak.stock_profit_sheet_by_yearly_em(symbol=stock_code)
            if len(income) >= 2:
                current_revenue = income.iloc[0]['营业收入']
                previous_revenue = income.iloc[1]['营业收入']
                if previous_revenue != 0:
                    growth_rate = (current_revenue - previous_revenue) / previous_revenue * 100
                    result["营收增长率(%)"] = round(growth_rate, 1)
            else:
                print(f"未能找到股票 {stock_code} 的收入数据")
            
            # 获取估值指标(PE、PB)
            market_data = ak.stock_a_lg_indicator(symbol=stock_code)
            if not market_data.empty:
                latest_data = market_data.iloc[0]
                result["市盈率(PE)"] = round(latest_data['市盈率'], 1)
                result["市净率(PB)"] = round(latest_data['市净率'], 2)
            else:
                print(f"未能找到股票 {stock_code} 的估值指标数据")
            
        except Exception as e:
            print(f"获取数据时发生错误: {str(e)}")
        
        return result
    
    if __name__ == "__main__":
        stock_code = input("请输入股票代码(例如:600335):")
        stock_data = get_stock_data(stock_code)
        print("\n股票数据:")
        for k, v in stock_data.items():
            print(f"{k:15}: {v}")
    

    关键点解释

    1. 检查数据是否存在

      • 检查从API获取的数据是否为空,如果为空,则打印错误信息。
    2. 增加异常处理

      • 在每个关键步骤后增加异常处理,确保能够捕获到潜在的问题。

    通过这些修改,你可以更好地调试代码并确定具体的问题所在。希望这能帮助你解决问题!

    展开全部

    评论
  • GISer Liu 2025-02-01 14:44
    关注

    该回答引用自GPT-deepseek, 由博主 GISer Liu 编写:

    问题分析

    用户在代码中使用了akshare库来查询股票信息,但运行时提示“股票不存在”。根据代码逻辑,问题可能出现在以下几个方面:

    1. 股票代码格式问题akshare库对股票代码的格式有特定要求,可能需要加上市场前缀(如shsz)。
    2. 接口调用问题akshare的某些接口可能已经更新或废弃,导致无法正确获取数据。
    3. 数据源问题:某些股票可能在某些数据源中不存在,或者数据源本身存在问题。

    解决方案

    1. 检查股票代码格式

    akshare库中的某些接口要求股票代码带有市场前缀(如sh表示上海市场,sz表示深圳市场)。因此,我们需要确保传递给接口的股票代码格式正确。

    2. 更新akshare

    确保使用的是最新版本的akshare库,因为旧版本可能不支持某些接口或存在bug。

    3. 增加异常处理

    在代码中增加更多的异常处理逻辑,以便在数据获取失败时能够捕获具体的错误信息,帮助定位问题。

    4. 调试代码

    通过打印调试信息,检查每一步的数据获取是否成功,确保每一步都能正确执行。

    修改后的代码

    以下是修改后的代码,增加了对股票代码格式的检查和更多的异常处理逻辑:

    import akshare as ak
    import pandas as pd
    
    def get_stock_data(stock_code):
        # 初始化结果字典
        result = {
            "股票代码": stock_code,
            "所属行业": "N/A",
            "ROE(%)": "N/A",
            "营收增长率(%)": "N/A",
            "资产负债率(%)": "N/A",
            "市盈率(PE)": "N/A",
            "市净率(PB)": "N/A"
        }
        
        try:
            # 获取股票基本信息(所属行业)
            market = "sh" if stock_code.startswith("6") else "sz"
            full_code = f"{market}{stock_code}"
            stock_info = ak.stock_individual_info_em(symbol=full_code)
            industry = stock_info.loc[stock_info['item'] == '所属行业', 'value'].values[0]
            result["所属行业"] = industry
            
            # 获取财务指标(ROE、资产负债率、营收增长率)
            indicator = ak.stock_financial_analysis_indicator(symbol=full_code)
            latest_report = indicator.iloc[0]
            result["ROE(%)"] = round(latest_report['净资产收益率'], 1)
            result["资产负债率(%)"] = round(latest_report['资产负债率'], 1)
            
            # 获取利润表计算营收增长率
            income = ak.stock_profit_sheet_by_yearly_em(symbol=full_code)
            if len(income) >= 2:
                current_revenue = income.iloc[0]['营业收入']
                previous_revenue = income.iloc[1]['营业收入']
                if previous_revenue != 0:
                    growth_rate = (current_revenue - previous_revenue) / previous_revenue * 100
                    result["营收增长率(%)"] = round(growth_rate, 1)
            
            # 获取估值指标(PE、PB)
            market_data = ak.stock_a_lg_indicator(symbol=full_code)
            latest_data = market_data.iloc[0]
            result["市盈率(PE)"] = round(latest_data['市盈率'], 1)
            result["市净率(PB)"] = round(latest_data['市净率'], 2)
            
        except Exception as e:
            print(f"获取数据时发生错误: {str(e)}")
        
        return result
    
    if __name__ == "__main__":
        stock_code = input("请输入股票代码(例如:600335):")
        stock_data = get_stock_data(stock_code)
        print("\n股票数据:")
        for k, v in stock_data.items():
            print(f"{k:15}: {v}")
    
    # 注意:
    # 1. 需要安装最新版akshare:pip install akshare --upgrade
    # 2. 数据来自公开市场接口,可能有15分钟延迟
    # 3. 财务指标基于最新定期报告
    # 4. 部分数据需要计算得出,可能与券商数据存在微小差异
    

    代码说明

    1. 股票代码格式:在获取股票信息时,将股票代码与市场前缀(shsz)拼接,确保传递给接口的格式正确。
    2. 异常处理:在try块中捕获所有可能的异常,并打印错误信息,帮助定位问题。
    3. 调试信息:在代码中增加打印语句,输出每一步的结果,便于调试。

    运行步骤

    1. 确保已安装最新版本的akshare库:
      pip install akshare --upgrade
      
    2. 运行代码,输入股票代码(如600335),查看输出结果。

    总结

    通过上述修改,代码能够更好地处理股票代码格式问题,并在出现错误时提供更详细的错误信息。如果问题仍然存在,建议检查akshare库的文档,确认接口是否发生变化,或者尝试使用其他数据源。

    希望这个解决方案能够帮助您解决问题!如果有其他问题,欢迎继续提问。

    如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

    展开全部

    评论
  • 码农阿豪@新空间 Java领域优质创作者 2025-02-01 16:06
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    根据你提供的代码,出现报错"股票不存在"的可能原因是在调用ak库的函数时,传入的股票代码参数不正确,导致无法查询到相应的数据。建议检查以下几个方面:
    1. 股票代码输入是否正确:在输入股票代码时,确保输入的是正确的6位数字代码,比如输入600335。
    2. 确保网络连接正常:某些情况下,可能是网络连接不稳定导致无法查询到数据。
    3. 确保akshare库版本更新:建议使用最新版本的akshare库,可以通过命令pip install akshare --upgrade来更新库。
    4. 股票数据来源问题:由于akshare获取的是公开市场接口的数据,可能存在15分钟延迟,需要注意这一点。 如果以上问题都没有导致报错,那么建议尝试手动在akshare官网查询相同的股票代码,确认数据是否存在。同时,可以尝试设置异常处理,当发生错误时输出详细的错误信息,以便更好地定位问题所在。
    except Exception as e:
        print(f"获取数据时发生错误: {str(e)}")
        return result
    

    通过以上的异常处理,可以输出具体的错误信息,帮助定位问题所在。希望能帮到你解决这个问题。

    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部