Python使用pandas读取excel表格数据

Python使用pandas读取excel表格数据导入importpandasaspd若使用的是Anaconda集成包则可直接使用,否则可能需要下载:pipinstallpandas读取表格并得到表格行列信息df=pd.read_excel(‘test.xlsx’)height,width=df.shapeprint(height,width,type(df))表格如下:得到如下输出,为一个4行5列的数据块:…

大家好,又见面了,我是你们的朋友全栈君。

导入

import pandas as pd

若使用的是Anaconda集成包则可直接使用,否则可能需要下载:pip install pandas

读取表格并得到表格行列信息

df=pd.read_excel('test.xlsx')
height,width = df.shape
print(height,width,type(df))

表格如下:
test.xlsx1
得到如下输出,为一个4行5列的数据块,为DataFrame格式:
输出
直接print(df)得到的结果:
print(df)
对比结果和表格,很显然表格中的第一行(黄色高亮部分)被定义为数据块的列下标,而实际视作数据的是后四行(蓝色高亮部分);并且自动在表格第一列之前加了一个行索引{0,1,2,3}。
test.xlsx2

提取数据放入数组中

x = np.zeros((height,width))
for i in range(0,height):
	for j in range(1,width+1): #遍历的实际下标,即excel第一行
		x[i][j-1] = df.ix[i,j]
print(x.shape)
print(x)

np.zeros()方法定义一个初试值全为0的二维数组(需要导入numpy库),用df.ix[i,j]读取数据并复制入二维数组中,其中for i in range(0,height)循环表示从下标0到下标height-1(不包含height),得到的输出如下:
输出

对代码做一些补充说明:

从DataFrame结构的数据中取值有三种常用的方法:

#第一种方法:ix
df.ix[i,j]		# 这里面的i,j为内置数字索引,行列均从0开始计数
df.ix[row,col]	# 这里面的row和col为表格行列索引,也就是表格中的行与列名称

#第二种方法:loc
df.loc[row,col]	# loc只支持使用表格行列索引,不能用内置数字索引

#第三种方法:iloc
df.iloc[i,j]	# iloc只支持使用内置数字索引,不能用表格行列索引

由于ix方法对两种索引都支持,所以这里就有一个问题:如果表格行列索引也是数字怎么办? 比如我上述例子中列索引为表格的第一行{1,2,3,4},而行索引为读取时自动添加的。
经过实验这种情况将会优先使用表格行列索引,也就对应了上面代码中得到的结果。不过为了不在使用时产生混乱,我个人建议还是使用loc或者iloc而不是ix为好。

在表格中自定义行列索引的情况

如果表格是下面这样的形式:
新表格
想要让读取得到的DataFrame行索引为{‘one’,‘two’,‘three’,‘four’},列索引为{‘一’,‘二’,‘三’,‘四’,‘五’}。如果直接使用read_excel(filename),虽然列索引会默认为第一行,但是行索引并不会默认为第一列,而是会自动添加一个{0,1,2,3}作为行索引。因此需要达到我们的目的需要设定一下读取时的参数,如下:

df = pd.read_excel(filename,index_col=0)	# 即指定第一列为行索引
print(df)
print('第0行第1列的数据为:',df.iloc[0,1])
print('第three行第二列的数据为:',df.loc['three','二'])

得到的输出如下所示:
新dataframe

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154163.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • win10 Maven配置环境变量问题

    win10 Maven配置环境变量问题win10配置环境变量相比win7而言出现的问题要多点,不过基本的配置差不多:你可以选择配置JAVA_HOME,也可以选择不配置.但在path里面的位置就很有讲究.我这边是放在第二个.是因为我放在最后一个的时候cmd命令中mvn-v显示不是内部命令,证明没有配置好.不同电脑有不同的位置,可以从第一个开始放,依次往下尝试,就不会有问题.

    2022年7月25日
    17
  • phpstrom2021激活码(JetBrains全家桶)

    (phpstrom2021激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月27日
    77
  • idea搭建vue(使用VUE打开一个项目)

    使用IDEA创建咱们的第一个VUE项目最近在学习VUE,想着使用vscode、hbulider、webstorm这些软件学习,但听前端前辈们说要很多插件什么的等等等!听完咱还是选择IDEA吧,毕竟和IDEA还是很亲近的!1.安装环境–让VUE‘顺产’(1)安装node.js至于为什么安装大家可以看看前辈们的博客哦!1.先让IDAE准备准备(迎接VUE)~~~提示:这里可以添加要学的内容例如:1、搭建Java开发环境2、掌握Java基本语法3、掌握条件语句4、掌握循环

    2022年4月14日
    298
  • cas 6.2 Incompatible because this component declares an API of a component compatible with Java 11

    cas 6.2 Incompatible because this component declares an API of a component compatible with Java 11

    2020年11月9日
    1.4K
  • 组合数学容斥原理答案_容斥原理例题精讲

    组合数学容斥原理答案_容斥原理例题精讲一.容斥原理就是人们为了不重复计算重叠部分,想出的一种不重复计算的方法。先来认识一下这两个符号:与(如图)蓝色的圈就是c1c2,红色的圈围起来的就是c1c2二.例题:组合数学1.题目1.1.题目描述八是个很有趣的数字啊。八=发,八八=爸爸,88=拜拜。当然最有趣的还是8用二进制表示是1000。怎么样,有趣吧。当然题目和这些都没有关系。某个人很无聊,他想找出[a,b…

    2025年7月5日
    3
  • MATLABfill函数_matlab中C的模块名称是什么

    MATLABfill函数_matlab中C的模块名称是什么matlab移植C/C++代码时,发现不管是opencv还是IPP库都没有填充联通区域函数imfill(),于是只能自己动手了。先展示一下imfill()函数的功能,如下图:上图中,左图是一个二值图像,白色是手臂边缘像素值为1,黑色区域像素值为0,现在想将手臂填充1,用imfill()函数可以实现该功能,但C/C++代码需要自己实现。C/C++代码:boolimFill(Ipp8u*img,intwidth,intheight){ vector<int>q; int

    2025年11月4日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号