📌  相关文章
📜  如何在 Pandas 中以小块的形式加载海量文件?

📅  最后修改于: 2022-05-13 01:55:30.492000             🧑  作者: Mango

如何在 Pandas 中以小块的形式加载海量文件?

Pandas是一个灵活且易于使用的开源数据分析工具,它构建在Python之上,可以导入和可视化不同格式的数据,例如 . .csv , . tsv , . txt甚至.db文件。

对于以下示例,我们将仅考虑 . csv文件,但其他文件类型的过程类似。用于读取 CSV 文件的方法是read_csv()  

read_csv()方法有很多参数,但我们感兴趣的是chunksize 。从技术上讲,pandas 在文件中一次读取的行数称为chunksize 。假设如果大小为 100,那么熊猫将加载前 100 行。返回的对象不是数据框,而是需要迭代以获取数据的TextFileReader

示例1:正常加载海量数据。

在下面的程序中,我们将使用超过10000行的毒性分类数据集。这并不多,但对于我们的示例就足够了。

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


Python3
df.info()


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


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


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


输出:

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

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

蟒蛇3

df.info()

输出:

我们总共有159571 个非空行。

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

蟒蛇3

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

输出:

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

蟒蛇3

for data in df:
    pprint(data.shape)

输出:

现在,计算块的数量-

蟒蛇3

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

输出:

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

每个块的列数为 8。因此,分块不会影响列。现在我们了解了如何使用chunksize并获取数据,让我们对数据进行最后的可视化,出于可见性目的,将块大小指定为10