用python的pandas读取excel文件中的数据

一、读取Excel文件

  使用pandas的read_excel()方法,可通过文件路径直接读取。注意到,在一个excel文件中有多个sheet,因此,对excel文件的读取实际上是读取指定文件、并同时指定sheet下的数据。可以一次读取一个sheet,也可以一次读取多个sheet,同时读取多个sheet时后续操作可能不够方便,因此建议一次性只读取一个sheet。

  当只读取一个sheet时,返回的是DataFrame类型,这是一种表格数据类型,它清晰地展示出了数据的表格型结构。具体写法为:

(1)不指定sheet参数,默认读取第一个sheet,
 df=pd.read_excel("data_test.xlsx")
(2)指定sheet名称读取,
 df=pd.read_excel("data_test.xlsx",sheet_name="test1")
(3)指定sheet索引号读取,
 df=pd.read_excel("data_test.xlsx",sheet_name=0) #sheet索引号从0开始

*同时读取多个sheet,以字典形式返回。(不推荐)
(1)指定多个sheet名称读取, df=pd.read_excel("data_test.xlsx",sheet_name=["test1","test2"])
(2)指定多个sheet索引号读取,
df=pd.read_excel("data_test.xlsx",sheet_name=[0,1])
(3)混合指定sheet名称和sheet索引号读取,
df=pd.read_excel("data_test.xlsx",sheet_name=[0,"test2"])

二、DataFrame对象的结构

  对内容的读取分有表头和无表头两种方式,默认情形下是有表头的方式,即将第一行元素自动置为表头标签,其余内容为数据;当在read_excel()方法中加上header=None参数时是不加表头的方式,即从第一行起,全部内容为数据。读取到的Excel数据均构造成并返回DataFrame表格类型(以下以df表示)。

  对有表头的方式,读取时将自动地将第一行元素置为表头向量,同时为除表头外的各行内容加入行索引(从0开始)、各列内容加入列索引(从0开始)。如图所示

  对无表头的方式,读取时将自动地为各行内容加入行索引(从0开始)、为各列内容加入列索引(从0开始),行索引从第一行开始。如图所示

三、用values方式获取数据

1.基本方法
df.values,获取全部数据,返回类型为ndarray(二维);
df.index.values,获取行索引向量,返回类型为ndarray(一维);
df.columns.values,获取列索引向量(对有表头的方式,是表头标签向量),返回类型为ndarray(一维)。

  根据具体需要,通过ndarray的使用规则获取指定数据。数据获取的结构示意图如下所示。

有表头

无表头

2.获取指定数据的写法
(1)获取全部数据:
df.values,获取全部数据,返回类型为ndarray(二维)。

(2)获取某个值:
df.values[i , j],第i行第j列的值,返回类型依内容而定。

(3)获取某一行:
df.values[i],第i行数据,返回类型为ndarray(一维)。

(4)获取多行:
df.values[[i1 , i2 , i3]],第i1、i2、i3行数据,返回类型为ndarray(二维)。

(5)获取某一列:
df.values[: , j],第j列数据,返回类型为ndarray(一维)。

(6)获取多列:
df.values[:,[j1,j2,j3]],第j1、j2、j3列数据,返回类型为ndarray(二维)。

(7)获取切片:
df.values[i1:i2 , j1:j2],返回行号[i1,i2)、列号[j1,j2)左闭右开区间内的数据,返回类型为ndarray(二维)。

3.示例
带表头,excel内容为

Python脚本为
`import pandas as pd

df = pd.read_excel("data_test.xlsx")

print("\n(1)全部数据:")
print(df.values)

print("\n(2)第2行第3列的值:")
print(df.values[1,2])

print("\n(3)第3行数据:")
print(df.values[2])

print("\n(4)获取第2、3行数据:")
print(df.values[[1,2]])

print("\n(5)第2列数据:")
print(df.values[:,1])

print("\n(6)第2、3列数据:")
print(df.values[:,[1,2]])

print("\n(7)第2至4行、第3至5列数据:")
print(df.values[1:4,2:5])
`
执行结果

四、用loc和iloc方式获取数据

1.基本写法
  loc和iloc方法是通过索引定位的方式获取数据的,写法为loc[A, B]和iloc[A, B]。其中A表示对行的索引,B表示对列的索引,B可缺省。A、B可为列表或i1:i2(切片)的形式,表示多行或多列。

  这两个方法的区别是,loc将参数当作标签处理,iloc将参数当作索引号处理。也就是说,在有表头的方式中,当列索引使用str标签时,只可用loc,当列索引使用索引号时,只可用iloc;在无表头的方式中,索引向量也是标签向量,loc和iloc均可使用;在切片中,loc是闭区间,iloc是半开区间。

获取指定数据的写法:
(1)获取全部数据:
df.loc[: , :].values

df.iloc[: , :].values,返回类型为ndarray(二维)。

(2)获取某个值:
无表头
df.loc[i, j]

df.iloc[i, j],第i行第j列的值,返回类型依内容而定。

有表头
df.loc[i, "序号"],第i行‘序号’列的值。

df.iloc[i, j],第i行第j列的值。

(3)获取某一行:
df.loc[i].values

df.iloc[i].values,第i行数据,返回类型为ndarray(一维)。

(4)获取多行:
df.loc[[i1, i2, i3]].values,

df.iloc[[i1, i2, i3]].values,第i1、i2、i3行数据,返回类型为ndarray(二维)。

(5)获取某一列:
无表头
df.loc[:, j].values

df.iloc[:, j].values,第j列数据,返回类型为ndarray(一维)。

有表头
df.loc[:,"姓名"].values,‘姓名’列数据,返回类型为ndarray(一维)。

df.iloc[:, j].values,第j列数据,返回类型为ndarray(一维)。

(6)获取多列:
无表头
df.loc[:, [j1 , j2]].values

df.iloc[:, [j1 , j2]].values,第j1、j2列数据,返回类型为ndarray(二维)。

有表头
df.loc[:, ["姓名","性别"]].values,‘姓名’、‘性别’列数据,返回类型为ndarray(二维);
df.iloc[:, [j1 , j2]].values,第j1、j2列数据,返回类型为ndarray(二维)。

(7)获取切片:
无表头
df.loc[i1:i2, j1:j2].values,返回行号[i1,i2]、列号[j1,j2]闭区间内的数据,返回类型为ndarray(二维);
df.iloc[i1:i2, j1:j2].values,返回行号[i1,i2)、列号[j1,j2)左闭右开区间内的数据,返回类型为ndarray(二维)。

有表头
df.loc[i1:i2, "序号":"姓名"].values,返回行号[i1,i2]、列号["序号","姓名"]闭区间的数据,返回类型为ndarray(二维);
df.iloc[i1:i2, j1:j2].values,返回行号[i1,i2)、列号[j1,j2)左闭右开区间内的数据,返回类型为ndarray(二维)。

2.示例
带表头,excel内容为

Python脚本为
`import pandas as pd

df = pd.read_excel("data_test.xlsx")

print("\n(1)全部数据:")
print(df.iloc[:,:].values)

print("\n(2)第2行第3列的值:")
print(df.iloc[1,2])

print("\n(3)第3行数据:")
print(df.iloc[2].values)

print("\n(4)第2列数据:")
print(df.iloc[:,1].values)

print("\n(5)第6行的姓名:")
print(df.loc[5,"姓名"])

print("\n(6)第2至3行、第3至4列数据:")
print(df.iloc[1:3,2:4].values)`
执行结果
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/476399.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Appium+python自动化怎么查看程序所占端口号和IP

简介 这篇博文和分类看似没有多大关系,但是也是从上一篇衍生出来的产物,因为涉及到 FQ工具 Lantern ,就算是给关注和支持的小伙伴们拓展一下眼界和知识面。而且好多人都阅读了上一篇没发现那个参考博客点不开吗?那是因为还没来的…

泛微OA常用的接口或方法(不公开)

泛微OA常用的接口或方法 记录一些平时工作用到的方法或属性,不公开,防忘记。 文章目录 泛微OA常用的接口或方法1 获取当前操作者2 根据人员id获取人员卡片信息3 获取浏览按钮的文本值4 插入 js 发送 post 请求5 插入 js 配合建模、后端接口实现发送 post…

如何在 Odoo 17 中为自定义模块添加设置菜单

Odoo 是一款极具影响力的开源企业资源规划和业务管理软件,用户可利用自定义模块灵活定制和增强其功能。在定制模块开发中,一个重要的方面是纳入设置菜单,使用户能够根据自己的独特需求对多个选项进行微调。 本文将引导您逐步了解如何在 Odoo…

Android Launcher开发注意事项

在开发Android Launcher时,需要关注性能、用户体验、权限管理、兼容性等方面,同时遵循相关的开发者政策和最佳实践。有几个重要的注意事项,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎…

『Mysql』Mysql四种分区方式及组合分区落地实现

📣读完这篇文章里你能收获到 Mysql分区的概念Mysql分区四种分区方式的落地及案例Mysql分区的管理 文章目录 一、概念篇 1 分区是什么2 Mysql中分区原理3 Mysql中分区局限二、落地篇 1 Range分区2 Hash分区3 Key分区4 List分区5 组合分区三、Mysql如何管理分区 1 删…

【LAMMPS学习】三、构建LAMMPS(5)可选的构建设置

3、构建LAMMPS 3.5.可选的构建设置 LAMMPS 可以通过多种可选设置来构建。每个小节都解释了如何使用 CMake 和 make 进行构建。 3.5.1. C11 标准合规性 编译 LAMMPS 需要 C11 标准兼容编译器。 LAMMPS 2020 年 3 月 3 版是核心代码和大多数软件包与之前的 C98 标准兼容的最…

巨细!Python爬虫详解

爬虫(又称为网页蜘蛛,网络机器人,在 FOAF 社区中间,更经常的称为网页追逐者);它是一种按照一定的规则,自动地抓取网络信息的程序或者脚本。 如果我们把互联网比作一张大的蜘蛛网,那…

oracle设置主键自增步骤

设置主键自增步骤: 每一张表都要设置序列,然后设置触发器。比mysql繁琐。 一、设置序列 选中表后,—》 文件—》新建—》其他—》序列. 设置如下四个值即可。 crtls保存。 给序列起个名字,一定要全大写字母。 二、设置触发器…

摘录笔记——2024年3月20日

这位大佬介绍的技术PM方面心得,有一定的启发意义(虽说我现在只是搬砖的,跟PM还有一定差距),现在摘录出来作为记录: 一文聊聊我理解的技术PM作为技术同学,不仅要写好自己的代码,做好…

Java毕业设计-基于springboot开发的Java时间管理系统-毕业论文+答辩PPT(附源代码+演示视频)

文章目录 前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构 三、系统实现展示1、管理员功能模块2、用户功能模块 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot开发的Java时间管理系统-毕业论文答…

Halcon 路标牌识别

文章目录 gray_closing_shape 使用选定的掩码执行灰度值关闭create_planar_uncalib_deformable_model 为未校准的透视匹配创建一个可变形的模型get_deformable_model_params 返回可变形模型的参数find_planar_uncalib_deformable_model 在图像中寻找平面投影不变变形模型的最佳…

详细剖析多线程(更新中...)

文章目录 前言一、认识线程1.1线程概念1.2为什么要有线程1.3线程和进程的区别(经典面试题) 二、创建线程2.1继承 Thread 类,重写run2.2实现 Runnable 接口,重写run2.3继承 Thread 类,重写run,匿名内部类2.4实现 Runnable 接口,重写run&#x…

电脑维修的相关资料,有需要的自取

电脑维修的相关资料,有需要的自取。 链接:https://pan.baidu.com/s/1X81sBNAOmomFvug6mK56Bw 提取码:52pj 爆笑幽默段子:电脑出故障了,准备拿去修,结果被女朋 友拦住了。女朋友:“你们男人一定…

登录与注册功能(简单版)(3)登录时使用Cookie增加记住我功能

目录 1、实现分析 2、步骤 1)新建login.jsp 2)修改LoginServlet: 3)启动访问: 3、安全性考虑 4、最佳实践思路 1)选择安全的认证机制 2)强化会话管理 3)安全地存储用户凭证…

数字化战略失配企业现状,可惜了!

尽管大部分的企业领导者已经意识到数字化转型对于企业革新业务模式、提升运营效率、抢占市场先机的关键作用,但是,认知上的转变并不等同于成功的实践。在实际操作中,往往出现战略与企业现状不符的现象,这无疑会使得所有的努力付诸…

矩形总面积(第十四届蓝桥杯JavaB组省赛真题)

测试用例范围比较大,所以全部用long类型,如果用int类型只能通过60%,建议在内存和运行时间允许的情况下,比赛题都用long。 重点在于计算相交的面积,这里找的两个相交点是左上角(m1,n1)和右下角&a…

公司系统中了.rmallox勒索病毒如何恢复数据?

早晨上班时刻: 当阳光逐渐洒满大地,城市的喧嚣开始涌动,某公司的员工们纷纷踏入办公大楼,准备开始新的一天的工作。他们像往常一样打开电脑,准备接收邮件、查看日程、浏览项目进展。 病毒悄然发作: 就在员…

万亿参数GPU!算力提升30倍!英伟达新核弹B200重磅发布!

关注文章底部的公众号,获取每日AI资讯 前沿 3月18日-21日期间,英伟达在美国圣何塞召开GTC大会。创始人黄仁勋也在GTC大会上,做了一场长达两小时的开幕演讲,展示了其在AI芯片、机器人、汽车等领域的最新研发成果和技术进展,号称让全世界用上AI。 全球头号人工智能领域开发…

加解密、签名、验签、数字签名、数字证书

说明:本文属于学习笔记,借鉴了很多经典网文,已记不清出处,如有侵权,请告知。 前言: 嵌入式开发时,绕不开数据安全问题。最近又在做OTA升级相关工作,因此,借此机会学习了加…

MySQL 索引:索引为什么使用 B+树?

Hash 索引不支持顺序和范围查询; 二叉查找树(BST):解决了排序的问题,极端情况下可能会退化成线性链表,查询效率急剧下降; 平衡二叉树(AVL) :通过旋转解决了平衡的问题,但是旋转操作效率太低&am…