[英]how to downsize a pandas DataFrame without making a copy?
我有内存问题,我想缩小我加载的数据的read_stata()
可悲的是,使用read_stata()
只能排几行)。 我可以更改下面的代码以仅将一些行用于X和y,但不进行复制吗? 即使暂时无法达到目的,我也想节省内存,而不是再增加任何空间。 还是可能先缩小数据的大小(如果您指定的大小小于原始大小,“重塑”会在没有副本的情况下进行吗?)然后选择一些列?
data = pd.read_stata('S:/data/controls/notreat.dta')
X = data.iloc[:,1:]
y = data.iloc[:,0]
我感到你很痛苦。 Pandas不是一个内存友好的库,而500Mb可以迅速变为> 16Gb并降低性能。
但是,对我有用的一件事是memmap。 您可以使用memmap在numpy数组和矩阵中分页,其速度几乎与数据总线所允许的速度一样。 另外,可以卸载未使用的页面。
详情请参阅这里 。 通过一些工作,这些memmap np数组可用于备份pd.Series或pd.DataFrame而无需复制。 但是,您可能会发现Pandas稍后会继续复制您的数据。 因此,我的建议是:创建一个memmap文件,并保留在numpy-land中。
您的另一种选择是使用HDFS。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.