【发布时间】:2016-11-09 01:52:55
【问题描述】:
您能帮帮我吗,我遇到了在 Windows(8 Gb RAM)上使用 0.18.1 pandas 和 2.7.10 Python 从大型 csv 文件中读取随机行的问题。
在Read a small random sample from a big CSV file into a Python data frame 我看到了一种方法,但是,我的 PC 非常消耗内存,即部分代码:
n = 100
s = 10
skip = sorted(rnd.sample(xrange(1, n), n-s))# skip n-s random rows from *.csv
data = pd.read_csv(path, usecols = ['Col1', 'Col2'],
dtype = {'Col1': 'int32', 'Col2':'int32'}, skiprows = skip)
所以,如果我想从文件中取出一些随机行,不仅考虑 100 行,而且考虑 100 000 行,这变得很难,但是从文件中不取出随机行几乎没问题:
skiprows = xrange(100000)
data = pd.read_csv(path, usecols = ['Col1', 'Col2'],
dtype = {'Col1': 'int32', 'Col2':'int32'}, skiprows = skip, nrows = 10000)
所以问题是我如何处理使用熊猫从大型 csv 文件中读取大量随机行,即因为我无法读取整个 csv 文件,即使对它进行分块,我对随机行完全感兴趣. 谢谢
【问题讨论】:
-
我认为关于这个问题的大部分讨论都是相关的。简而言之,没有一个不是内存密集型的好解决方案。 stackoverflow.com/questions/38039723/…
-
skiprows 使用大量内存,请尝试与块一起使用:stackoverflow.com/questions/36874993/…
-
如果您访问这些链接之一并发现它们有用,请尽可能为它们投票。您需要 15 声望才能投票。你现在有 6 个。
标签: python pandas csv large-data