导读
Microsoft Excel几乎无处不在,使用Excel既可以保存数据,还可以跟踪数据活动趋势。人们使用Excel的方式五花八门,难以计数。Excel已经成为商业活动中不可或缺的工具。
Excel本身不仅可以实现数据电子化,还可以通过VBA来实现数据自动化。随着Python语言的兴起,数据自动化显得更加方便和快捷。使用Python操作数据可能会是未来的一个趋势。
本文目的是将一个路径下的所有Excel文件内容合并,并且去掉重复项,然后另存为一个新的Excel文件。
01
代码
import pandas as pdimport globimport osinput_path = 'D:/pythonProject/venv'output_file = 'D:/pythonProject/venv/result/test111.xlsx'def W_Excel(input_path,output_file): dataframe = [] all_workbooks = glob.glob(os.path.join(input_path,'*.xls*')) print(all_workbooks) for workbook in all_workbooks: all_worksheets = pd.read_excel(workbook,sheet_name=None) for worksheet_name, data in all_worksheets.items(): dataframe.append(data.loc[data['ZN']==1]) all_data = pd.concat(dataframe,axis=0,ignore_index=True) all_data['索赔单号'] = all_data['维修站'].astype(str) + all_data['申请号'].astype(str) all_data.drop_duplicates(subset='索赔单号',keep='first',inplace=True) print(all_data) write = pd.ExcelWriter(output_file) all_data.to_excel(write,sheet_name='new',index=False) write.save()if __name__ == "__main__": W_Excel(input_path, output_file)
02
代码截图
03
代码解析
第11行代码:将数据处理扩展到多个文件中的关键语句。此行代码创建了一个for循环,在一个输入文件几何中迭代,并使用glob模块和os模块中的函数创建了一个输入文件列表以供处理。os模块中的os.path.join()函数将函数圆括号中的两部分连接在一起。input_path是包含输入文件的文件夹的路径。glob模块中的glob.glob()函数将星号(*)转换为实际的文件名。通过glob.glob()函数和os.path.join()函数创建了一个包含所有文件的列表。
第14行代码:通过pandas的read_excel函数读取Excel文件。sheet_name:默认是sheet_name为0,返回多表使用sheet_name=[0,1],若sheet_name=None是返回工作簿中的所有工作表。
第16行代码:loc函数是通过行标签索引行数据,通过data['ZN']==1来限定条件。
第17行代码:concat函数相当于数据库中的全连接(UNION ALL),可以指定按某个轴进行连接,也可以指定连接的方式join(outer,inner 只有这两种)。与数据库不同的是concat不会去重,要达到去重的效果可以使用drop_duplicates方法
第19行代码:drop_duplicates函数是用来删除或只保留重复项。subset表示只针对指定的列进行去重或保留重复项,keep='first'表示保留第一次出现的重复行,inplace=True表示直接在原来的DataFrame上删除重复项。