我有一个非常大的数据集,无法全部读入内存。因此,我想只读入其中的一部分进行训练,但不知道如何实现。
如果你只想阅读前999,999行(不包括标题行):
read_csv(..., nrows=999999)
如果您只想阅读1,000,000到1,999,999行
read_csv(..., skiprows=1000000, nrows=999999)
nrows:整数,默认为None。读取文件的行数。对于读取大文件的一部分很有用*
skiprows:类似列表或整数的行号,要跳过(从0开始索引),或要在文件开头跳过的行数(int)
对于大文件,您可能还想使用chunksize:
chunksize:整数,默认为None。返回TextFileReader对象以进行迭代。
chunksize=
是一个非常有用的参数,因为在传递给read_csv
后,它的输出是一个迭代器,所以您可以调用next()
函数来获取特定的块,而不会过度消耗内存。例如,要获取前n
行,您可以使用:
chunks = pd.read_csv('file.csv', chunksize=n)
df = next(chunks)
chunks = pd.read_csv('file.csv', chunksize=700_000)
train_df = next(chunks)
test_df = next(chunks)
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;
read_csv('路径', ..., skiprows=[1, 1000000], nrows=999999)
或者read_csv('路径', ..., skiprows=range(1, 1000000), nrows=999999)
。 - steTATO