Python Pandas:如何仅读取CSV文件的前n行?


96

我有一个非常大的数据集,我无法读取其中的整个数据集。因此,我正在考虑只读取其中的一个数据块进行训练,但是我不知道该怎么做。任何想法将不胜感激。

Answers:


172

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

read_csv(..., nrows=999999)

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

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

nrows:int,默认值无要读取的文件行数。对读取大文件有用*

skiprows:类似于列表或整数的行号,在文件开头要跳过(索引为0)或要跳过的行数(整数)

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

chunksize:int,默认为None返回TextFileReader对象进行迭代

pandas.io.parsers.read_csv文档


没关系,它们被稍微隐藏了。该文档可以使用这些示例。chunksize有点痛苦,您必须处理大小不均的块。还要以您知道所需的固定大小预先分配数组/数据帧,只要避免就不要动态进行concat / append。
smci 2014年

...而且,这与界面不同nstart=,nend=...。您必须在skiprows = nend - nrows
smci 2014年

1
我想那是从SQL那里接手的LIMIT nstart, skiprows::/
FooBar,2014年

...并且如果您也使用header=n/list
别忘了按次除错
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.