一、讀取Excel檔案
??使用pandas的read_excel()方法,可通過檔案路徑直接讀取,注意到,在一個excel檔案中有多個sheet,因此,對excel檔案的讀取實際上是讀取指定檔案、并同時指定sheet下的資料,可以一次讀取一個sheet,也可以一次讀取多個sheet,同時讀取多個sheet時后續操作可能不夠方便,因此建議一次性只讀取一個sheet,
??當只讀取一個sheet時,回傳的是DataFrame型別,這是一種表格資料型別,它清晰地展示出了資料的表格型結構,具體寫法為:
(1)不指定sheet引數,默認讀取第一個sheet,
?df=pd.read_excel("data_test.xlsx")
(2)指定sheet名稱讀取,
?df=pd.read_excel("data_test.xlsx",sheet_name="test1")
(3)指定sheet索引號讀取,
?df=pd.read_excel("data_test.xlsx",sheet_name=0) #sheet索引號從0開始
*同時讀取多個sheet,以字典形式回傳,(不推薦)
(1)指定多個sheet名稱讀取, df=pd.read_excel("data_test.xlsx",sheet_name=["test1","test2"])
(2)指定多個sheet索引號讀取,
df=pd.read_excel("data_test.xlsx",sheet_name=[0,1])
(3)混合指定sheet名稱和sheet索引號讀取,
df=pd.read_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(一維);
df.columns.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(切片)的形式,表示多行或多列,
??這兩個方法的區別是,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.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/300127.html
標籤:其他
上一篇:中國移動基于 Kubernetes 的物聯網邊緣計算應用實踐
下一篇:分享一則Linux系統郵件提示 /usr/local/lib/libprocesshider.so > /etc/ld.so.preload 的中病毒解決方法
