pandas常用方法之read_excel詳解


前期准備

准備測試數據如下:

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}

  

 

 

 后續更新中。。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM