PythonPandas:如何只读取CSV文件的前n行?

s5a0g9ez  于 2023-02-14  发布在  Python
关注(0)|答案(3)|浏览(282)

我有一个非常大的数据集,我无法读取整个数据集。因此,我考虑只阅读其中的一个块来训练,但我不知道如何执行。

8wtpewkr

8wtpewkr1#

如果只想读取前999,999行(非标题行):

read_csv(..., nrows=999999)

如果只想读取行1,000,000 ... 1,999,999

read_csv(..., skiprows=1000000, nrows=999999)

无行:要读取的文件的行数。用于阅读大文件的片段 *
飞鱼:列表类型或整数要跳过的行数(索引为0)或文件开头处要跳过的行数(int

对于大文件,你可能还需要使用chunksize:

区块大小:int,默认值None返回用于迭代的TextFileReader对象

pandas.io.parsers.read_csv documentation

8oomwypt

8oomwypt2#

chunksize=是一个非常有用的参数,因为read_csv传递后的输出是一个迭代器,因此您可以在它上面调用next()函数来获取您想要的特定块,而不会占用您的内存。例如,要获取前n行,您可以用途:

chunks = pd.read_csv('file.csv', chunksize=n)
df = next(chunks)

例如,如果您有一个时间序列数据,并且希望将前700k行作为训练集和余数测试集,则可以通过以下方式实现:

chunks = pd.read_csv('file.csv', chunksize=700_000)
train_df = next(chunks)
test_df = next(chunks)
zqdjd7g9

zqdjd7g93#

如果你不想使用Pandas,你可以使用csv库和限制行读取与交互中断。
例如,我需要读取存储在 * csv * list中的文件列表,以获取唯一的文件头。

for csvs in result:
    csvs = './'+csvs
    with open(csvs,encoding='ANSI', newline='') as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=',')
        count=0
        for row in csv_reader:
            if count:
                break;

相关问题