数据分析免不了遇到很多个数据结构完全一样,就是数量太多,几十个,多则上千个,如何快速的合并文件一直是一个头疼的问题,在我学习了pandas的cocat后我写了一个小程序,运行后几百个文件都可以快速的合并完成,下面一起来看看如何实现:
本文涉及的知识点:
- tkinter的初步了解
- panads的concat
知识点回顾:
concat:
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False,
copy=True)
合并csv需要以下几个参数:
- objs:DataFrame的列表
- ignore_index=False:是否忽略原先的索引
代码实例讲解:
首先导入需要的库:
#ecoding:utf-8# Created by Administrator at 2018-8-27import pandas as pdimport osfrom tkinter.filedialog import askdirectoryimport tkinter as tkfrom tkinter import filedialog
第二步:因为文档经常涉及到中文,所以重点讲解在gbk编码下的实现过程:
想要实现批量合并,1、首先需要拿到文件的路径,根据路径实现循环。2、每个数据导入pandas后的数据名列表
1、获取文件名列表
print("请选择文件:")root = tk.Tk()root.withdraw()file_path = filedialog.askopenfilenames()
2、读取数据
file_list = []#定义一个列表用来放合并的文件名num=0for each in file_path: num+=1 print('正在读取:',each) each=d.read_csv(each,encoding='gbk') file_list.append(each)
3、合并数据
print('正在合并数据,请稍等...')result=pd.concat(file_list,ingone=True)
4、导出数据
print("请选择输出文件路径:")root = tk.Tk()root.withdraw()file_out=askdirectory()print('正在导出...')result.to_csv(file_out + '' + '合并结果' + '.csv', header=1, index=0)print('合并完成!',“共合并文件%s"%num)
如果你是utf编码的文件:
将步骤2中:encoding改为“utf-8”
"df%s"% num=d.read_csv(each,encoding='gbk')