如何使用Python读取.xlsx指定行列
作者:L_Jane_H 发布时间:2022-10-28 21:57:44
引言
本文以Python3.9.1读取data.xlsx中包含的西瓜数据集3.0数据为例,数据集如下:
编号 | 色泽 | 根蒂 | 敲声 | 纹理 | 脐部 | 触感 | 密度 | 含糖率 | 好瓜 |
---|---|---|---|---|---|---|---|---|---|
1 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.697 | 0.46 | 是 |
2 | 乌黑 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 0.774 | 0.376 | 是 |
3 | 乌黑 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.634 | 0.264 | 是 |
4 | 青绿 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 0.608 | 0.318 | 是 |
5 | 浅白 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.556 | 0.215 | 是 |
6 | 青绿 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 软粘 | 0.403 | 0.237 | 是 |
7 | 乌黑 | 稍蜷 | 浊响 | 稍糊 | 稍凹 | 软粘 | 0.481 | 0.149 | 是 |
8 | 乌黑 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 硬滑 | 0.437 | 0.211 | 是 |
9 | 乌黑 | 稍蜷 | 沉闷 | 稍糊 | 稍凹 | 硬滑 | 0.666 | 0.091 | 否 |
10 | 青绿 | 硬挺 | 清脆 | 清晰 | 平坦 | 软粘 | 0.243 | 0.267 | 否 |
11 | 浅白 | 硬挺 | 清脆 | 模糊 | 平坦 | 硬滑 | 0.245 | 0.057 | 否 |
12 | 浅白 | 蜷缩 | 浊响 | 模糊 | 平坦 | 软粘 | 0.343 | 0.099 | 否 |
13 | 青绿 | 稍蜷 | 浊响 | 稍糊 | 凹陷 | 硬滑 | 0.639 | 0.161 | 否 |
14 | 浅白 | 稍蜷 | 沉闷 | 稍糊 | 凹陷 | 硬滑 | 0.657 | 0.198 | 否 |
15 | 乌黑 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 软粘 | 0.36 | 0.37 | 否 |
16 | 浅白 | 蜷缩 | 浊响 | 模糊 | 平坦 | 硬滑 | 0.593 | 0.042 | 否 |
17 | 青绿 | 蜷缩 | 沉闷 | 稍糊 | 稍凹 | 硬滑 | 0.719 | 0.103 | 否 |
代码段:
一、读取工作表内容(.xlsx转化为DataFrame)
导入pandas库,读取工作表数据
import pandas as pd
df = pd.read_excel(r'E:\Aownplan\data.xlsx')#默认读取工作簿中第一个工作表,默认第一行为表头
备注:r是为了读取文件路径中\
字符,防止转义。
此处利用pandas库的 read_excel 函数读取文件,获取到的函数返回值类型为DataFrame,后续所有的操作均是基于DataFrame的数据操作方法进行。
二、获取指定行指定列数据(DataFrame转化为numpy.ndarray)
获取整个工作表数据
data=df.values#获取整个工作表数据
print("读取整个工作表的数据:\n{0}".format(data))
获取某一行数据
data=df.iloc[0].values#0表示第一行,不包含表头
print("读取指定行的数据:\n{0}".format(data))
获取多行数据
data=df.head().values#head()默认读取前5行数据(不包含表头)
print("获取工作表前5行数据:\n{0}".format(data))
data=df.iloc[[1,2]].values#读取指定多行,在iloc[]里面嵌套列表指定行数
print("读取指定多行的数据:\n{0}".format(data))
data=df.sample(3).values#读取df中随机3行数据(3个样本)
print("获取随机多行数据:\n{0}".format(data))
获取指定单元格数据
data=df.iloc[1,2]#读取索引为[1, 2]的值,这里不需要嵌套列表
print("读取指定某行某列(单元格)的数据:\n{0}".format(data))
获取指定列数据
print("输出值\n",df['含糖率'].values)
获取指定多列数据
data=df.loc[:,['敲声','纹理']].values#读所有行的敲声以及纹理列的值,这里需要嵌套列表
print("读取指定列的数据:\n{0}".format(data))
获取指定多行多列数据
data=df.loc[[1,2],['密度','含糖率']].values#读取第一行第二行的密度以及含糖率列的值,这里需要嵌套列表
print("读取指定多行多列的数据:\n{0}".format(data))
获取行号和列标题
print("输出行号列表",df.index.values)
print("输出列标题",df.columns.values)
三、数据处理(numpy.ndarray转化为list/set/dict)
(1) 转化为列表list
以上通过.values方法获取到的data值,均为二维值数组(numpy.ndarray)类型,在使用时如果需要转换为列表类型,可使用.tolist()方法,如:
data=df.values.tolist()
此时的输出为:
此时的data为list类型,其中每一行数据均为一个列表,多个列表合并为一个二维列表,此时要获取指定行(m)的数据,使用 data[m],获取指定单元格数据,使用data[m][n]。
(2) 转化为集合set
在分析时,若想获取某一列的数据集合,则可以先提取该列数据,然后使用set()函数将其转化为集合即可,如当前为获取敲声的类型,进行如下操作:
data=df['敲声'].values
print(set(data))
此时的输出:
{'清脆', '浊响', '沉闷'}
获取除编号,密度,含糖率外所有列的集合:
titles = df.columns.values
for title in titles:
if title != '编号' and title != '密度' and title != '含糖率':
key = df[title].values
values = set(key)
print(title,':',values)
输出:
色泽 : {'乌黑', '青绿', '浅白'}
根蒂 : {'蜷缩', '稍蜷', '硬挺'}
敲声 : {'清脆', '浊响', '沉闷'}
纹理 : {'清晰', '稍糊', '模糊'}
脐部 : {'平坦', '稍凹', '凹陷'}
触感 : {'硬滑', '软粘'}
好瓜 : {'是', '否'}
(3) 转化为字典dict
如果需要读取某一行的数据为字典,可进行如下操作:
data=df.iloc[0].values#获取某行数据
title=df.columns.values#获取列标题
a=zip(title,data)#将其压缩为一个元组
print(dict(a))#转化为字典
输出:
{'编号': 1, '色泽': '青绿', '根蒂': '蜷缩', '敲声': '浊响', '纹理': '清晰', '脐部': '凹陷', '触感': '硬滑', '密度': 0.697,'含糖率': 0.46, '好瓜': '是'}
获取除编号,密度,含糖率外所有列的字典:
titles = df.columns.values
adict=dict()
for title in titles:
if title != '编号' and title != '密度' and title != '含糖率':
key = df[title].values
adict[title]=set(key)
print(adict)
输出:
{'色泽': {'乌黑', '青绿', '浅白'}, '根蒂': {'蜷缩', '稍蜷', '硬挺'}, '敲声': {'清脆', '浊响', '沉闷'}, '纹理': {'清晰', '稍糊', '模糊'}, '脐部': {'平坦', '稍凹', '凹陷'}, '触感': {'硬滑', '软粘'}, '好瓜': {'是', '否'}}
参考文章:
[1]. Python利用pandas处理Excel数据的应用
来源:https://blog.csdn.net/L_Jane_H/article/details/125586000


猜你喜欢
- 前言最近在工作中遇到一个需求,就是要把SQLite数据中没有存储的文件名的文件删除掉,想来想去还是决定用python。所以也就花了一天半的时
- 打印整数16进制num=10print('%#x'%num)打印字符串中的16进制arr='12342535'
- 先看一段代码<!DOCTYPE html><html lang="en"><head>
- 阅读目录前言加密算法分类Python加密库DES加密AES加密RSA加密前言据记载,公元前400年,古希腊人发明了置换密码。1881年世界上
- 在安装SQL Server 2005 时出现ASP.Net版本注册要求(警告),提示找不到ASP.Net 在 Microsoft Inter
- Python 面向对象方法没有重载#在其他语言中,可以定义多个重名的方法,只要保证方法签名唯一即可。方法签名包含3个部分:方法名、参数数量、
- 1. 使用 fileinput 进行迭代fileinput 模块可以对一个或多个文件中的内容进行迭代、遍历等操作。该模块的 input()
- 1. 前言文章主要围绕着以下三个问题:group by的作用where与having的区别表的连接分为哪些,分别是什么作用2. 表的设计在创
- Win10系统安装MySQL8.0遇到的问题及解决方法,具体内容如下所示:对着第一个桌面应用击右键,选择“以管理员身份运行”选项,就可以以管
- 原理形态学是图像处理中常见的名词,图像处理的形态学基本属于数学形态学的范畴,是一门建立在格论和拓扑学基础上的图像分析学科。黑帽运算是结合了腐
- 1、pylint是什么? Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Py
- 1.列表:list# 1.list:Python内置的一种数据类型,列表;# 2.list是一种有序的集合,可以随时添加和删除其中的元素;#
- MySQL ALTER语法如下:ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec
- (1)int转strings := strconv.Itoa(i)等价于s := strconv.FormatInt(int64(i), 1
- 开发Web应用时,你经常要加上搜索功能。甚至还不知能要搜什么,就在草图上画了一个放大镜。搜索是项非常重要的功能,所以像elasticsear
- 输出电脑上所有的串口名:import serialimport serial.tools.list_portsfrom easygui im
- 一、安装MySQL下载MySQL的社区版的压缩包:https://dev.mysql.com/get/Downloads/MySQL-8.0
- 问题如何遍历一个二叉树遍历二叉树就是访问二叉树的每一个节点二叉树父结点下先左访问,先序遍历(根左右)例如:遍历以下的二叉树遍历结果:ABDE
- 这是一家游戏公司,他面试通过后 擅长的机试却没答出来,不过还是被录用了。这道题内容大概这样有条蛇它长度不固定,蛇头朝北顺时针盘旋着,请打印出
- SQL Server 2005默认是不允许远程连接的,要想通过远程连接实现MSSQL,数据库备份,需要做如下设置:步骤/方法1.打开SQL