Pandas操作excel


讀取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

 

方法很簡單,不用再重新導入新的模塊,只要使用pd.ExcelWriter建立一個writer,然后,將df1,df2都使用to_excel(writer, sheet名),最后一次性將這些數據保存,並關閉writer就完成了

 

 

 當然跟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'
簡單高效,不需要再單獨寫save和close,自動完成。
 

 

 

 

 

 

 


免責聲明!

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



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