女少木亘 2024-05-31 22:43 采纳率: 100%
浏览 2
已结题

为什么会显示KeyError?

作业进行数据导入,导入之后进行检查结果发现数据只显示一列(但其实有10列),同时没法进行分析,用哪个键都是KeyError,是哪里错了求大佬解答救救孩子<(ToT)>

img

img

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-31 22:43
    关注

    引自免费微信小程序:皆我百晓生

    从您提供的信息来看,您在尝试执行一个数据分析任务时遇到了KeyError。这个错误通常发生在试图访问字典、Series 或 DataFrame 中不存在的键时。

    根据您提供的代码和输出,问题可能出在第15行的plt.scatter()函数调用上。您尝试通过键'Age'和'Platform'访问DataFrame df_heights中的列,但是程序找不到这些列。这可能是由于以下几个原因:

    1. 列名拼写错误:请确保列名完全匹配原始CSV文件中的列名。Python是大小写敏感的,所以"Age"和"age"是不同的。
    2. 数据加载问题:pd.read_table()函数可能没有正确读取所有列。您可以尝试使用pd.read_csv()函数,因为它更常用且功能强大。
    3. 文件路径问题:确保提供的文件路径正确无误,并且确实存在名为"newdata.csv"的文件。

    为了修复这个问题,请按照以下步骤操作:

    1. 使用pd.read_csv()替换pd.read_table(),并指定正确的分隔符,因为默认情况下read_table()使用的是制表符\t,而您的数据看起来是以逗号 , 分隔的。
    2. 检查DataFrame的列名,确保它们与您在散点图中使用的列名匹配。
    3. 如果问题仍然存在,请检查您的数据文件,确认是否有 Age 和 Platform 这两列。

    下面是修改后的代码:

    import pandas as pd
    import matplotlib.pyplot as plt
    import os
    
    # 更改工作目录
    os.chdir(r'D:\')  # 确保这里包含正确的反斜杠
    
    # 使用 read_csv 替换 read_table 并指定分隔符为逗号
    df_heights = pd.read_csv("newdata.csv", sep=',', engine='python')
    
    # 检查DataFrame的列名
    print(df_heights.columns)
    
    # 使用正确的列名进行散点图绘制
    try:
        plt.scatter(df_heights['Age'], df_heights['Platform'])
    except KeyError as e:
        print(f"列名错误:{e}")
    else:
        plt.title('父亲身高与儿子身高的线性回归分析')
        plt.xlabel('父亲')
        plt.ylabel('儿子')
        h = 70
        results.predict([1, h])  # 假设results是您的模型,这里需要提供完整的模型预测代码
        plt.show()
    

    运行这段代码后,应该会显示DataFrame的列名,然后绘制散点图。如果有任何错误,它将打印出具体的列名错误。如果一切顺利,您将看到散点图。记得替换results.predict([1, h])部分为实际的模型预测代码,因为这里只是一个占位符。

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

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 5月31日