如何在Pandas中把一个庞大的文件加载成小块

如何在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行。这不是很多,但对我们的例子来说已经足够了。

import pandas as pd
from pprint import pprint
  
df = pf.read_csv('train/train.csv')
  
df.columns
Python

输出:

如何在Pandas中把一个庞大的文件加载成小块?

首先,让我们加载数据集并检查不同的列数。这个数据集有8列。

让我们更深入地了解数据集的数据类型和行数。

df.info()
Python

输出:

如何在Pandas中把一个庞大的文件加载成小块?

我们总共有159571条非空行。

例子2:使用chunksize参数加载大量的数据。

df = pd.read_csv("train/train.csv", chunksize=10000)
print.print(df)
Python

输出:

如何在Pandas中把一个庞大的文件加载成小块?

这里我们通过传递chunksize参数来创建一个大小为10000的块。返回的对象不是一个数据框,而是一个迭代器,要想获得数据,需要在这个对象中进行迭代。

for data in df:
    pprint(data.shape)
Python

输出:

如何在Pandas中把一个庞大的文件加载成小块?

现在,计算块的数量 —

df = pd.read_csv("train/train.csv", chunksize=10)
  
for data in df:
    pprint(data)
    break
Python

输出:

如何在Pandas中把一个庞大的文件加载成小块?

在上面的例子中,返回的每个元素/块的大小为10000。记得我们有159571。因此,块的数量是159571/10000 ~ 15个块,剩下的9571个例子构成第16个块。

每个chunk的列数是8。 因此,chunking不会影响列数。现在我们了解了如何使用chunksize并获得数据,让我们最后来看看数据的可视化,为了可见性,块的大小被分配为10

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册