如何通过pandas.read_csv TextFileReader选项使用Patsy增量生成器?

时间:2019-05-10 15:52:05

标签: python-3.x pandas patsy

在Python 3中,我正在使用pandas读取大型压缩的CSV文件,并使用patsy将其转换为设计矩阵。对于不到一百万行,我可以做:

filename = 'data.csv.gz'
df = pd.read_csv(filename)
iv_variables = [ c for c in df.columns if c.startswith('iv_') ]
dv_variables = [ c for c in df.columns if c.startswith('dv_') ]
formula = " + ".join(dv_variables) + " ~ " + " + ".join(pdi_variables)
Y, X = patsy.dmatrices(formula, df)

但是,CSV文件非常大-700列-如果文件包含一百万行,则需要超过94G的RAM,这是我使用的计算机的限制。我想将其转换为迭代解决方案,如果您通过chunksize parameter,则会在文档中发现pandas.read_csv()在页面中进行迭代。在另一端,patsy似乎有一个iterative design matrix builder which accepts an iterator.

在这一点上,我仍然无法理解patsy的记录:

enter image description here

特别是我不知道如何编写可接受的data_iter_maker函数或eval_env的作用,并且传递TextFileReader返回的pandas.read_csv(chunksize=1000)对象无效。

如何使上面的代码与这些迭代构造一起使用,或者在Python中创建大型设计矩阵还可以使用哪些其他选项?

0 个答案:

没有答案