Python 合并文件夹中的所有CSV文件

Python 合并文件夹中的所有CSV文件

在本教程中,我们将演示基于Python的不同方法,将众多CSV数据合并到一个文件中(这种方法也适用于文本和其他类型的文件)。将会有一个额外的课程,介绍如何快速合并Linux下的众多CSV文件。最后,你可以通过将所有的CSV文件转换为Pandas DataFrame,并在之后将每一行标记为它所来自的CSV文件,从而在完全控制导入数据的情况下合并成千上万的文件。

如何使用Python来合并许多相同的CSV文件 请注意,我们假定所有文件都包含相同的列和信息。使用一个简短的代码样本串联下载文件夹中的CSV文件。

数据集

在这个文件夹中可以找到五个CSV格式的假销售文件,我将在下一步教程中使用这些文件。每个文件都有精确相同的列数和正好100万行。例如,sales_recors_n1.csv文件打开后的格式如下。

os Python 模块里面的 listdir() 方法可以用来在你把文件下载到笔记本电脑的某个目录中后列出文件的内容。

为了使用这个方法,你必须提供该目录的确切路径,如下图所示。

注意这个方法产生的Python列表,它包含销售csv目录下的所有文件。这是有利的,因为它可以用对象进行反复的文件读取。

  • 合并多个CSV文件

第1步的目标是使用Python将五个CSV文件合并成一个有500万行的数据集。我将利用os或pandas包来完成它。完整的Python脚本如下,以完成这一任务

Python - 合并文件夹中的所有CSV文件

现在让我一步一步地指导你完成这个代码的操作。

  1. 我首先导入了必要的Python包,然后指定了CSV文件的位置。我建议你把我们打算合并的所有CSV文件放在一个文件夹里。我们的生活会因此而变得更容易。
  2. 接下来,我在制作一个文件清单,把遵守特定命名模式的每条记录的路径加进去–在这种情况下,所有以销售记录n开头的文件,然后把这些文件清单合并成一个。有时,根据名称选择文件是至关重要的,因为我们的工作目录有可能包含很多不相关的文件。注意到文件列表是如何用列表理解法产生的。

当我们打印文件列表的内容时,我们得到如下结果。

print(file_list)

输出

['/Users/anbento/Documents/sales/sales_csv/sales_records_n5.csv', '/Users/anbento/Documents/sales/sales_csv/sales_records_n4.csv', '/Users/anbento/Documents/sales/sales_csv/sales_records_n1.csv', '/Users/anbento/Documents/sales/sales_csv/sales_records_n3.csv', '/Users/anbento/Documents/sales/sales_csv/sales_records_n2.csv']

现在所有的文件都可以解析了,并且有了相关的路径。

虽然这个列表是无序的,但请记住,如果文件的组合顺序对我们来说至关重要,那么在迭代到这个列表时,我们将需要利用排序()函数。

然后我们使用pandas的read csv()方法连续读取文件列表中的任何CSV文件,并将这些数据集添加到csv列表中。

需要注意的是,当使用read csv()解析CSV文件时,数据集会自动转化为pandas DFs,因此csv_list现在包含5个不同的pandas DFs。然而,除了解析文件之外,我们还附上了以下命令。

assign(File_Name = os.path.basename(file))

这为每个DF添加了一个新的列,包含源CSV文件的标题,这样,当文件被合并时,就能清楚地知道哪个文件是哪个。

通过应用concat()方法,这些文件最终被合并为一个单一的文件pandas DF。如果忽略索引被设置为 “True”,将为合并的csv创建一个新的有序索引。

最后一步是将合并后的csv从位于相同目录下的pandas DF中转换出来。为了达到这个目的,使用to csv()命令。当使用index=False时,它表示含索引的列必须不被添加。

os.listdir(path)

输出

['sales_records_full.csv',
 'sales_records_n1.csv',
 'sales_records_n2.csv',
 'sales_records_n3.csv',
 'sales_records_n4.csv',
 'sales_records_n5.csv']

只需7行代码加上几秒钟的运行时间,除了包的导入之外,就可以得到这样的结果。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程