我有一个非常大的数据集,我无法读取整个数据集。因此,我考虑只阅读其中的一个块来训练,但我不知道如何执行。
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
8oomwypt2#
chunksize=是一个非常有用的参数,因为read_csv传递后的输出是一个迭代器,因此您可以在它上面调用next()函数来获取您想要的特定块,而不会占用您的内存。例如,要获取前n行,您可以用途:
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)
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;
3条答案
按热度按时间8wtpewkr1#
如果只想读取前999,999行(非标题行):
如果只想读取行1,000,000 ... 1,999,999
无行:要读取的文件的行数。用于阅读大文件的片段 *
飞鱼:列表类型或整数要跳过的行数(索引为0)或文件开头处要跳过的行数(int
对于大文件,你可能还需要使用chunksize:
区块大小:int,默认值None返回用于迭代的TextFileReader对象
pandas.io.parsers.read_csv documentation
8oomwypt2#
chunksize=
是一个非常有用的参数,因为read_csv
传递后的输出是一个迭代器,因此您可以在它上面调用next()
函数来获取您想要的特定块,而不会占用您的内存。例如,要获取前n
行,您可以用途:例如,如果您有一个时间序列数据,并且希望将前700k行作为训练集和余数测试集,则可以通过以下方式实现:
zqdjd7g93#
如果你不想使用Pandas,你可以使用csv库和限制行读取与交互中断。
例如,我需要读取存储在 * csv * list中的文件列表,以获取唯一的文件头。