Python读取.xlsx指定行列 您所在的位置:网站首页 在表格提取数据处理中的数据 Python读取.xlsx指定行列

Python读取.xlsx指定行列

2024-07-10 15:28| 来源: 网络整理| 查看: 265

本文以Python3.9.1读取data.xlsx中包含的西瓜数据集3.0数据为例,数据集如下:

编号色泽根蒂敲声纹理脐部触感密度含糖率好瓜1青绿蜷缩浊响清晰凹陷硬滑0.6970.46是2乌黑蜷缩沉闷清晰凹陷硬滑0.7740.376是3乌黑蜷缩浊响清晰凹陷硬滑0.6340.264是4青绿蜷缩沉闷清晰凹陷硬滑0.6080.318是5浅白蜷缩浊响清晰凹陷硬滑0.5560.215是6青绿稍蜷浊响清晰稍凹软粘0.4030.237是7乌黑稍蜷浊响稍糊稍凹软粘0.4810.149是8乌黑稍蜷浊响清晰稍凹硬滑0.4370.211是9乌黑稍蜷沉闷稍糊稍凹硬滑0.6660.091否10青绿硬挺清脆清晰平坦软粘0.2430.267否11浅白硬挺清脆模糊平坦硬滑0.2450.057否12浅白蜷缩浊响模糊平坦软粘0.3430.099否13青绿稍蜷浊响稍糊凹陷硬滑0.6390.161否14浅白稍蜷沉闷稍糊凹陷硬滑0.6570.198否15乌黑稍蜷浊响清晰稍凹软粘0.360.37否16浅白蜷缩浊响模糊平坦硬滑0.5930.042否17青绿蜷缩沉闷稍糊稍凹硬滑0.7190.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()

此时的输出为: list 此时的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数据的应用



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有