今天是读《python数据分析基础》的第8天,今天的读书笔记的内容为利用pandas读写多个excel文件,当中涉及到读写excel文件的多个工作表。
大致原理如下:
glob.glob()以及os.path.join()函数负责获取输入要读取的excel文件的具体路径。
pandas的read_excel函数负责读取函数,通过当中的sheet_name参数控制读取excel工作表。当读取一个工作表时,返回一个DataFrame;若读取多个或全部excel工作表,则返回一个字典,键、值分别为工作表文件名和存放工作表数据的数据框。
pandas.DataFrame.to_csv()函数负责输出数据至excel文件。当中的excel_writer参数控制输出路径及excel文件名,sheet_name控制输出的excel工作表。请注意,若指定的excel文件不存在,则新建一个;若存在,则将数据以新工作表的形式写入已存在的excel文件当中。
接下来实例及相应的代码说明通过pandas读写exel文件。
案例:读取多个excel文件当中的所有工作表,将数据输出至一个新excel文件,当中的每个工作表为之前读取的单个excel文件的所有数据,工作表名为读取的excel文件名,不包括后缀。
代码:
"""
通过pandas读写多个excel文件
"""
import glob
import os
import pandas as pd
inputPath="需要读入的excel文件路径"
outputWorkbook="excel输出文件"
inputWorkbook=glob.glob(os.path.join(inputPath,"*.xlsx"))
writer=pd.ExcelWriter(outputWorkbook)
for workbook in inputWorkbook:
allData=[]
combineData=pd.DataFrame
#读取excel文件
allSheetData=pd.read_excel(workbook,sheet_name=None)
for name,data in allSheetData.items():
allData.append(data)
combineData=pd.concat(allData,axis=0,ignore_index=True)
#输出excel文件
combineData.to_excel(writer,sheet_name=os.path.basename(workbook)[:-5],index=False)
writer.save()