Python Pandas:如何只读取CSV文件的前n行?
我有一个非常大的数据集,但我不能一次性把整个数据集都读进来。所以,我在考虑只读取其中的一部分来进行训练,但我不知道该怎么做。
3 个回答
0
如果你不想使用Pandas这个库,可以用csv库来读取文件,并且可以通过设置中断来限制读取的行数。
举个例子,我需要从一个叫csvs的列表中读取一些文件,只获取文件的表头部分。
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
chunksize=
是一个非常实用的参数,因为在使用 read_csv
读取数据时,它会返回一个迭代器。简单来说,你可以用 next()
函数来获取你想要的特定数据块,这样就不会占用太多内存。例如,如果你想获取前 n
行数据,可以这样做:
chunks = pd.read_csv('file.csv', chunksize=n)
df = next(chunks)
举个例子,如果你有一份时间序列数据,想把前70万行作为训练集,剩下的作为测试集,你可以这样操作:
chunks = pd.read_csv('file.csv', chunksize=700_000)
train_df = next(chunks)
test_df = next(chunks)
348
如果你只想读取前999,999行(不包括表头):
read_csv(..., nrows=999999)
如果你只想读取第1,000,000行到第1,999,999行:
read_csv(..., skiprows=1000000, nrows=999999)
nrows : 整数,默认值为None 读取文件的行数。这个参数在处理大文件时特别有用,可以让你只读取一部分内容。
skiprows : 列表或整数 跳过的行号(从0开始计数)或者在文件开头要跳过的行数(整数)。
对于大文件,你可能还想使用chunksize:
chunksize : 整数,默认值为None 返回一个TextFileReader对象,方便你逐块读取数据。