前期准備
准備測試數據如下:
fl_path = r"C:\Users\Desktop\test.xlsx" dic = { 'num': ['001', '002', '003', '004'], 'name': ['jack', 'bob', 'alice', 'peter'], 'age': [22, 19, 21, 18], 'gender': ['man', 'man', 'woman', 'man'] } info = pd.DataFrame(dic) writer = pd.ExcelWriter(fl_path) info.to_excel(writer, index=False) writer.save()
正文開始
read_excel方法的常用參數詳解
read_excel( io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=False, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, verbose=False, parse_dates=False, date_parser=None, thousands=None, comment=None, skip_footer=0, skipfooter=0, convert_float=True, mangle_dupe_cols=True, **kwds )
- io
值為str類型,文件路徑,必須傳
- sheet_name
值為str或int類型 int類型時,默認值0,表示Sheet1表,依次分別向后表示,不存在該sheet表時拋出IndexError錯誤: list index out of range str類型時,必須輸入sheet表的全名,不存在該sheet表時拋出xlrd.biffh.XLRDError錯誤: No sheet named <'x'>
- header
值為int類型或list類型 默認值0,表示從第一行開始讀,輸入值大於列的長度時會拋出ValueError錯誤: Passed header=7 but only 6 lines in file list內的值也必須在列的長度范圍內,如[2, 7],超出會拋出IndexError錯誤: list index out of range header=[1, 3]中的1表示按行索引讀取第幾行,3表示按行索引從第幾行開始往后讀取。 當輸入的最后一個值為最后一行時,如:header=[2, 4],顯示方式為: Empty DataFrame Columns: [(2, 4), (bob, peter), (19, 18), (man, man)] Index: [] 當一列中含有空行時,header用list時不能包含空行
- names
值為list或者str,默認None,一般使用list傳參
指定表頭的名稱,list內的值跟表的列數要一一對應,即不能多也不能少,多或者少都會拋出ValueError錯誤: Number of passed names did not match number of header fields in the file 使用str類型傳參時會循環出每一個字符在賦值給每一個表頭,即不能多也不能少,多或者少都會拋出ValueError錯誤。 舉栗子: pd.read_excel(f_path, sheet_name=0, header=1, names='asdf') a s d f 0 2 bob 19 man 1 3 alice 21 woman 2 4 peter 18 man 字符重復時,會自動在后面追加數字,從1開始,如:names='aaaa' a a.1 a.2 a.3 0 2 bob 19 man 1 3 alice 21 woman 2 4 peter 18 man
- index_col
值為int或str類型,默認None,指定第幾列做為新的索引列 int時,按索引傳參,超出列的長度后會拋出IndexError錯誤: list index out of range str時,按第一行的列名傳入,不存在該列名時拋出ValueError錯誤: Index age invalid
- usecols
值為None、int、str、list類型,指定讀取表格的指定列 None時,讀取整個excel列 int時,讀取從第一列開始到該數值(包含)結束的中間所有列 str時,只能按照excel的格式指定列,如"A: G",讀取A列到G列的所有列 list時,list的元素只能是int型,如:[1, 4],表示讀取list內指定的第一和第四列
- skiprows
值為int類型,默認None,跳過指定行(包括)之前的行開始讀取 傳入的值從1開始的任意int類型,超出行的長度不報錯,顯示為空,如下: Empty DataFrame Columns: [] Index: [] 只剩最后一條數據時,顯示如下: Empty DataFrame Columns: [4, peter, 18, man] Index: []
- nrows
值為int類型,默認None,只取前n行數據,按索引傳參 傳入值為0時,只取第一行,顯示如下: Empty DataFrame Columns: [1, jack, 22, man] Index: [] 傳入其余值時,只顯示該值(包括)之前的行,超出行的長度后不報錯,有多少行顯示多少行
- converters
值為dict類型,默認None,將指定的數據列轉換為int、float、str等數據類型 num name age gender 001 jack 22 man 002 bob 19 man 003 alice 21 woman 004 peter 18 man 如上:是Excel中的原本數據形式,但是當我們讀取出來可能就不是這個樣子了,num以0開頭的都不顯示,如下: num name age gender 0 1 jack 22 man 1 2 bob 19 man 2 3 alice 21 woman 3 4 peter 18 man 那這個時候就需要指定converters參數,將num列指定為str類型就可以了!可多個同時設置,如:converters={'num': str, 'age': str}
后續更新中。。。。。