讀取excel:Pandas庫read_excel()參數詳解
pandas.read_excel(io,sheet_name = 0,header = 0,names = None,index_col = None,usecols = None,squeeze = False,dtype = None, ...)
io
:字符串,文件的路徑對象。
sheet_name
:None、string、int、字符串列表或整數列表,默認為0。字符串用於工作表名稱,整數用於零索引工作表位置,字符串列表或整數列表用於請求多個工作表,為None時獲取所有工作表。
值 | 對應操作 |
---|---|
sheet_name=0 | 第一張作為DataFrame |
sheet_name=1 | 第二張作為DataFrame |
sheet_name=“Sheet1” | 第一張作DataFrame |
sheet_name=[0,1,'Sheet5'] | 第1頁,第2頁和第5頁作為DataFrames的字典。 |
header
:指定作為列名的行,默認0,即取第一行的值為列名。數據為列名行以下的數據;若數據不含列名,則設定 header = None。
names
:默認為None,要使用的列名列表,如不包含標題行,應顯示傳遞header=None
。
index_col
:指定列為索引列,默認None列(0索引)用作DataFrame的行標簽。
usecols
:int或list,默認為None。
- 如果為None則解析所有列
- 如果為int則表示要解析的最后一列
- 如果為int列表則表示要解析的列號列表
- 如果字符串則表示以逗號分隔的Excel列字母和列范圍列表(例如“A:E”或“A,C,E:F”)。范圍包括雙方。
squeeze
:boolean,默認為False,如果解析的數據只包含一列,則返回一個Series。
dtype
:列的類型名稱或字典,默認為None。數據或列的數據類型。例如{'a':np.float64,'b':np.int32}使用對象保存存儲在Excel中的數據而不解釋dtype。如果指定了轉換器,則它們將應用於dtype轉換的INSTEAD。
寫入excel:pandas.dataframe.to_excel()
to_excel(self, excel_writer, sheet_name='Sheet1', na_rep='', float_format=None,columns=None, header=True, index=True, index_label=None,startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)
常用參數解析
-
excel_writer : ExcelWriter對象或者目標路徑
-
sheet_name : excel表名命名
-
na_rep : 缺失值填充 ,可以設置為字符串
-
float_format : string, default None Format string for floating point numbers
-
columns : 選擇輸出的的列存入。
-
header : 指定作為列名的行,默認0,即取第一行,數據為列名行以下的數據;若數據不含列名,則設定 header = None;
-
index : 默認為True,顯示index,當index=False 則不顯示行索引(名字)
-
index_label : 設置索引列的列名
-
startrow :upper left cell row to dump data frame
-
startcol :upper left cell column to dump data frame
-
engine : string, default None ,write engine to use - you can also set this via the options,io.excel.xlsx.writer, io.excel.xls.writer, andio.excel.xlsm.writer.
-
merge_cells : boolean, default True Write MultiIndex and Hierarchical Rows as merged cells.
-
encoding: string, default None encoding of the resulting excel file. Only necessary for xlwt,other writers support unicode natively.
-
inf_rep : string, default ‘inf’ Representation for infinity (there is no native representation for infinity in Excel)
-
freeze_panes : tuple of integer (length 2), default None Specifies the one-based bottommost row and rightmost column that is to be frozen
工作之中一個excel內會有多個sheet。但是將兩組數據先后保存到一個excel內會發現只有后一組保存的數據,因為前一組的數據被后寫入的數據覆蓋了。如:
這是兩組數據,df1與df2,我們分別使用to_excel將這兩組數據保存到同一個excel內。這里我們將sheet_name這個參數改成不同的
但是結果只有一個df2,即df1被df2這組數據覆蓋了。但是能不能兩組數據同時寫入、保存,但是不分先后順序。答案是可以的!
為了這一方法,我們需要使用到ExcelWriter

當然跟open文件一樣,上面的5行代碼也可以簡寫如下:
with pd.ExcelWriter(r'C:\Users\數據\Desktop\data\test2.xls') as writer: df1.to_excel(writer, sheet_name='df1') df2.to_excel(writer, sheet_name='df2')