当前位置: 首页 > news >正文

解决 Pandas DataFrame 索引错误:KeyError:0

在使用 Pandas 处理数据时,KeyError 是一个常见的问题,尤其是在尝试通过索引访问数据时。本文将通过一个实际案例(使用SKLearn中的MINIST数据集为例),详细分析 KeyError 的原因,并提供解决方法。

1 问题背景

在处理一些数据集的时候,我们可能会遇到了一个典型的 KeyError 问题。如sklearn中的开源数据集MNIST是一个包含手写数字的灰度图像数据集,每个图像的大小为 28×28 像素,数据集通常以 Pandas DataFrame 的形式加载。在尝试访问数据集中的样本时,代码抛出了以下错误:

KeyError: 0

错误信息表明,代码试图通过索引 0 访问数据,但 Pandas DataFrame 中没有名为 0 的列。这通常是因为 DataFrame 的索引方式与我们想的不一样。

2 错误分析

在 Pandas 中,DataFrame 的索引方式有两种常见的形式:

  1. 按列名索引:通过列名访问数据,例如 df['column_name']

  2. 按位置索引:通过位置访问数据,例如 df.iloc[row_index, column_index]

在 MNIST 数据集中,X 是一个 Pandas DataFrame,其索引方式默认为按列名索引。因此,当我们尝试使用 X[0] 访问数据时,Pandas 会尝试查找名为 0 的列,而不是第 0 行。由于 DataFrame 中没有名为 0 的列,因此会抛出 KeyError

3 方法 1:将 DataFrame 转换为 NumPy 数组(不建议)

如果后续操作不需要 Pandas DataFrame 的功能,可以直接将 X 转换为 NumPy 数组。这样就可以使用整数索引访问数据。但是慎用,因为后续你的代码中可能要用到DataFrame的相关东西,所以不建议在这里直接转为numpy。

# 将 DataFrame 转换为 NumPy 数组
X = X.to_numpy()# 可视化第 0 个样本
plt.imshow(X[0].reshape(28, 28), cmap='gray')
plt.axis('off')
plt.show()

4 方法 2:使用 .iloc 访问 DataFrame 的行(推荐)

为了保留 Pandas DataFrame 的功能,可以使用 .iloc 方法来访问行数据。

# 使用 .iloc 访问第 0 行
plt.imshow(X.iloc[0].values.reshape(28, 28), cmap='gray')
plt.axis('off')
plt.show()

5 代码示例

以MINIST为例,代码如下

# 导入必要的库
import numpy as np
import os
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_openml# 设置随机种子以确保结果可复现
np.random.seed(42)# 定义数据存储目录
data_dir = os.path.join(os.getcwd(), 'data')# 下载 MNIST 数据集
mnist = fetch_openml("mnist_784", parser='auto', data_home=data_dir)# 提取特征和标签
X, y = mnist.data, mnist.target# 将 DataFrame 转换为 NumPy 数组(可选)
X = X.to_numpy()# 可视化第 0 个样本
plt.imshow(X[0].reshape(28, 28), cmap='gray')
plt.axis('off')
plt.show()

 

相关文章:

解决 Pandas DataFrame 索引错误:KeyError:0

在使用 Pandas 处理数据时,KeyError 是一个常见的问题,尤其是在尝试通过索引访问数据时。本文将通过一个实际案例(使用SKLearn中的MINIST数据集为例),详细分析 KeyError 的原因,并提供解决方法。 1 问题背…...

deepseek的对话风格

概述 deepseek的对话风格,比一般的模型的回答多了思考过程,这是它比较可爱的地方,模型的回答有了思考过程,对用户而言大模型的回答不完全是一个黑盒。 deepseek的对话风格 train_prompt_style """Below is an…...

制造业设备状态监控与生产优化实战:基于SQL的序列分析与状态机建模

目录 1. 背景与挑战 2. 数据建模与采集 2.1 数据表设计 设备状态表(记录设备实时状态变更)...

Javaweb学习之Mysql(Day5)

(一)Mysql概述 (1)MYSQL通用语法 SQL语句可以单行或多行书写,以分号结尾。 SQL语句可以使用空格/缩进来增强语句的可读性(即,空格和缩进不影响代码的执行)。 MySQL数据库的SQL语句不区分大小写。 注释: 1. 单行注释: -- 注释内容 或 # 注释内容 (MySQL 特有 …...

C++ Primer 迭代器

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

Java的String与StringBuilder例题

​​ package com.jiachen.StringBuilderDemo1;import java.util.Scanner;public class Exercise2 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);String s scanner.nextLine().trim(); // 读取输入并去除前后空格String result;// 根据…...

Vue.js 如何选择合适的组件库

Vue.js 如何选择合适的组件库 大家在开发 Vue.js 项目的时候,都会面临一个问题:我该选择哪个组件库? 市面上有很多优秀的 Vue 组件库,比如 Element Plus、Vuetify、Quasar 等,它们各有特点。选择合适的组件库&#xf…...

github下载失败网页打开失败 若你已经知道github地址如何cmd下载

直接打开命令行: winr cmd 输入:git clone 地址 eg:git clone https://github.com/akospasztor/stm32f103-dfu-bootloader...

排序算法--计数排序

统计每个元素出现的次数,直接计算元素在有序序列中的位置,要求数据是整数且范围有限。适用于数据为小范围整数(如年龄、成绩),数据重复率较高时效率更优。可用于小范围整数排序、基数排序的底层排序(作为基数排序的稳定…...

[特殊字符]const在函数前后的作用详解(附经典案例)

理解const在函数前后的位置差异,是掌握C精髓的重要一步。下面用几个超形象的例子,带你彻底搞懂这个知识点! 情况1:const在函数后面(成员函数限定符) 作用:承诺这个成员函数不会修改对象的状态&…...

【字节青训营-7】:初探 Kitex 字节微服务框架(使用ETCD进行服务注册与发现)

本文目录 一、Kitex概述二、第一个Kitex应用三、IDL四、服务注册与发现 一、Kitex概述 长话短说,就是字节跳动内部的 Golang 微服务 RPC 框架,具有高性能、强可扩展的特点,在字节内部已广泛使用。 如果对微服务性能有要求,又希望…...

给AI用工具的能力——Agent

ReAct框架: Reason Action,推理与行动结合 可以借助思维链,用小样本提示展示给模型一个ReAct框架 推理:针对问题或上一步观察的思考 行动:基于推理,与外部环境的一些交互(调用外部工具&…...

Jupyter Lab的使用

Lab与Notebook的区别: Jupyter Lab和Jupyter notebook有什么区别,这里找到一篇博客不过我没细看, Jupyter Lab和Jupyter Notebook的区别 - codersgl - 博客园 使用起来Lab就是一个更齐全、功能更高级的notebook, 启用滚动输出: 有时候一个…...

【从零开始的LeetCode-算法】922. 按奇偶排序数组 II

给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。 对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。 你可以返回 任何满足上述条件的…...

RabbitMQ深度探索:前置知识

消息中间件: 消息中间件基于队列模式实现异步 / 同步传输数据作用:可以实现支撑高并发、异步解耦、流量削峰、降低耦合 传统的 HTTP 请求存在的缺点: HTTP 请求基于响应的模型,在高并发的情况下,客户端发送大量的请求…...

『 C++ 』中不可重写虚函数的实用案例

文章目录 框架设计:保障核心逻辑稳定避免误操作:防止逻辑混乱确保接口一致:库与API设计 在C编程里,用final关键字修饰、不允许被继承(重写)的虚函数其实很有用。接下来我就结合实际案例,给大家讲…...

Redis - String相关命令

目录 setgetmsetmgetsetnx、setex、psetexincr、incrby、decr、decrby、incrbyfloatappendgetrangesetrangestrlen字符串类型编码方式总结 Redis - String Redis存储的字符串,是直接按二进制方式存储,不会做任何编码转换,存的是什么&#xff…...

pytorch基于FastText实现词嵌入

FastText 是 Facebook AI Research 提出的 改进版 Word2Vec,可以: ✅ 利用 n-grams 处理未登录词 比 Word2Vec 更快、更准确 适用于中文等形态丰富的语言 完整的 PyTorch FastText 代码(基于中文语料),包含&#xff1…...

3D人脸建模:高精度3D人脸扫描设备快速生成真人脸部3D模型

什么是3D人脸建模? 3D人脸建模,即借助特定技术手段,获取人脸三维数据,并构建出能精准呈现人脸形状、纹理等特征的三维模型。这一技术广泛应用于计算机视觉、人机交互、虚拟现实、影视制作等多个领域,为各行业都带来了前所未有的创…...

4.PPT:日月潭景点介绍【18】

目录 NO1、2、3、4​ NO5、6、7、8 ​ ​NO9、10、11、12 ​ 表居中或者水平/垂直居中单元格内容居中或者水平/垂直居中 NO1、2、3、4 新建一个空白演示文稿,命名为“PPT.pptx”(“.pptx”为扩展名)新建幻灯片 开始→版式“PPT_素材.doc…...

PdgCntEditor三步搞定PDF书签目录自动生成

1. 为什么你需要PDF书签目录? 每次打开几百页的PDF文档,像无头苍蝇一样滑动滚动条找内容?这种体验我太懂了。上周处理一份300多页的技术手册,光是翻目录就花了半小时,直到我发现PdgCntEditor这个神器。它能把杂乱无章…...

开源AI助手竟能自主建频道、做视频?李宏毅深度解析“小龙虾”的神秘工作原理!

最近全网爆火的「养龙虾」到底是什么?为什么一个开源的 AI 助理项目,能让 AI 自己创建 YouTube 频道、自己做教学视频、24 小时自主干活? 台大李宏毅老师的这堂《解剖小龙虾 — 以 OpenClaw 为例介绍 AI Agent 的运作原理》,用最通…...

三节点zookeeper集群搭建

1、环境准备 1.1、 设置三台虚拟机主机名# 在node1执行 sudo hostnamectl set-hostname node1 # 在node2执行 sudo hostnamectl set-hostname node2 # 在node3执行 sudo hostnamectl set-hostname node31.2、修改hosts# 使用vim编辑hosts文件 sudo vim /etc/hosts # 添加以下内…...

PHP 的异步编程 该怎么选择

一切的起点:synchronized 的舒适区 刚开始写代码时,思维往往停留在"单机"模式。遇到需要控制并发的地方,直觉反应就是加个 synchronized 关键字。 1. 曾经写过的代码 // 简单的库存扣减 public synchronized void deductStock(Stri…...

省市区县四级联动数据获取指南:基于高德API的geoJSON数据自动更新方案

省市区县四级联动数据获取指南:基于高德API的geoJSON数据自动更新方案 行政区划数据是地理信息系统和数据分析领域的基础要素之一。无论是制作可视化地图、进行区域统计分析,还是开发基于位置的服务应用,准确、实时的行政区划数据都至关重要。…...

别再用ls了!从Linux文件系统卡顿,看透MinIO多级目录的性能陷阱与正确用法

从Linux文件系统卡顿到MinIO性能陷阱:高效查询的工程哲学 当你在Linux终端输入ls命令后,系统突然卡死——这种经历对许多开发者来说并不陌生。但很少有人意识到,同样的性能陷阱正潜伏在MinIO这类对象存储系统的日常使用中。本文将揭示文件系…...

省流量秘籍:ESP32+LittleFS构建超轻量级物联网WEB界面(附低功耗配置)

ESP32物联网低功耗WEB界面开发实战:从LittleFS优化到移动端适配 在野外环境或移动场景中部署物联网设备时,每毫安的电流消耗和每KB的流量都值得精打细算。ESP32作为一款高性价比的Wi-Fi/蓝牙双模芯片,其灵活的网络配置和丰富的外设接口使其成…...

【Python AI 工具实战宝典】:20个高复用AI用例+开箱即用代码模板,限时开源库清单泄露!

第一章:Python AI 工具生态全景与实战价值定位Python 已成为人工智能开发的事实标准语言,其核心优势不在于单一库的性能,而在于高度协同、分层清晰的工具生态体系。从底层计算(NumPy、CuPy)、模型构建(PyTo…...

Spring Framework测试框架完整指南:从单元测试到集成测试的10个最佳实践

Spring Framework测试框架完整指南:从单元测试到集成测试的10个最佳实践 【免费下载链接】spring-framework spring-projects/spring-framework: 一个基于 Java 的开源应用程序框架,用于构建企业级 Java 应用程序。适合用于构建各种企业级 Java 应用程序…...

遇到‘Got minus one from a read call‘别慌!Oracle 12c连接数优化全攻略

深度解析Oracle 12c连接数优化:从"Got minus one from a read call"到高可用架构 当Java应用突然抛出java.sql.SQLRecoverableException: IO Error: Got minus one from a read call异常时,这往往是数据库连接资源耗尽的信号。本文将带您深入O…...