Python使⽤pandas读取excel表格数据
导⼊
import pandas as pd
若使⽤的是Anaconda集成包则可直接使⽤,否则可能需要下载:pip install pandas
读取表格并得到表格⾏列信息
ad_excel('test.xlsx')
height,width = df.shape
print(height,width,type(df))
表格如下:
得到如下输出,为⼀个4⾏5列的数据块,为DataFrame格式:
直接print(df)得到的结果:
对⽐结果和表格,很显然表格中的第⼀⾏(黄⾊⾼亮部分)被定义为数据块的列下标,⽽实际视作数据的是后四⾏(蓝⾊⾼亮部分);并且⾃动在表格第⼀列之前加了⼀个⾏索引{0,1,2,3}。
提取数据放⼊数组中
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
python怎么读入exceldf.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','⼆'])
得到的输出如下所⽰:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。