⽤python的pandas读取excel⽂件中的数据
⼀、读取Excel⽂件
使⽤pandas的read_excel()⽅法,可通过⽂件路径直接读取。注意到,在⼀个excel⽂件中有多个sheet,因此,对excel⽂件的读取实际上是读取指定⽂件、并同时指定sheet下的数据。可以⼀次读取⼀个sheet,也可以⼀次读取多个sheet,同时读取多个sheet时后续操作可能不够⽅便,因此建议⼀次性只读取⼀个sheet。
当只读取⼀个sheet时,返回的是DataFrame类型,这是⼀种表格数据类型,它清晰地展⽰出了数据的表格型结构。具体写法为:(1)不指定sheet参数,默认读取第⼀个sheet,
ad_excel("data_test.xlsx")
(2)指定sheet名称读取,
ad_excel("data_test.xlsx",sheet_name="test1")
(3)指定sheet索引号读取,
ad_excel("data_test.xlsx",sheet_name=0) #sheet索引号从0开始
*同时读取多个sheet,以字典形式返回。(不推荐)
(1)指定多个sheet名称读取, ad_excel("data_test.xlsx",sheet_name=["test1","test2"])
(2)指定多个sheet索引号读取,
ad_excel("data_test.xlsx",sheet_name=[0,1])
(3)混合指定sheet名称和sheet索引号读取,
ad_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(⼀维);
根据具体需要,通过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(切⽚)的形式,表⽰多⾏或多列。
python怎么读入excel 这两个⽅法的区别是,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)`
执⾏结果
End.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论