如何在Pandas中把一个庞大的文件加载成小块
Pandas是一个灵活且易于使用的开源数据分析工具,它建立在Python之上,可以导入和可视化不同格式的数据,如。csv, .tsv, .txt甚至是.db文件。
在下面的例子中,我们将只考虑.csv文件,但其他文件类型的过程也类似。用于读取CSV文件的方法是read_csv()
参数:
filepath_or_bufferstr :任何有效的字符串路径都可以接受。该字符串可以是一个URL。有效的URL方案包括http, ftp, s3, gs, 和file。对于文件的URL,需要一个主机。一个本地文件可以是:file://localhost/path/to/table.csv。
iteratorbool : 默认False 返回TextFileReader对象,用于迭代或用get_chunk()获取块。
chunksize : int, optional 为迭代返回TextFileReader对象。关于迭代器和chunksize的更多信息,请参见IO工具的文档。
read_csv()方法有很多参数,但我们感兴趣的是chunksize。技术上来说,pandas在一个文件中一次读取的行数被称为chunksize。假设chunksize是100,那么pandas将加载前100条记录。返回的对象不是一个数据框,而是一个TextFileReader,它需要被迭代以获得数据。
例子1:正常加载海量数据。
在下面的程序中,我们将使用毒性分类数据集,它有超过10000行。这不是很多,但对我们的例子来说已经足够了。
输出:
首先,让我们加载数据集并检查不同的列数。这个数据集有8列。
让我们更深入地了解数据集的数据类型和行数。
输出:
我们总共有159571条非空行。
例子2:使用chunksize参数加载大量的数据。
输出:
这里我们通过传递chunksize参数来创建一个大小为10000的块。返回的对象不是一个数据框,而是一个迭代器,要想获得数据,需要在这个对象中进行迭代。
输出:
现在,计算块的数量 —
输出:
在上面的例子中,返回的每个元素/块的大小为10000。记得我们有159571。因此,块的数量是159571/10000 ~ 15个块,剩下的9571个例子构成第16个块。
每个chunk的列数是8。 因此,chunking不会影响列数。现在我们了解了如何使用chunksize并获得数据,让我们最后来看看数据的可视化,为了可见性,块的大小被分配为10。