繁体   English   中英

将文本数据的大熊猫df保存到磁盘会由于耗尽所有RAM而使Colab崩溃。 有解决方法吗?

[英]Saving large Pandas df of text data to disk crashes Colab due to using up all RAM. Is there a workaround?

我有一个很大的Pandas数据框,我想保存到磁盘以备后用。 数据框仅包含字符串数据。

但是,无论我使用哪种格式,保存过程都会使我的Google Colab环境崩溃,这是因为用尽了所有可用的RAM,除了CSV以外,CSV甚至在5小时后仍未完成。

但这也破坏了环境。

是否有将大文本熊猫数据框保存到磁盘的解决方法?

我尝试了to_jsonto_featherto_parquetto_pickle ,它们都使环境崩溃。

我也尝试通过使用to_sql

from sqlalchemy import create_engine
engine = sqlalchemy.create_engine("sqlite:///database.db")
df.to_sql("table", engine)

我想在一个合理的时间内将我的数据帧保存到磁盘上而不会导致环境崩溃。

使用chunksize参数带有适当的数字,例如

df.to_csv('filename.csv', chunksize=100000)

这告诉Python将数据一次转换为.csv 100000行,而不是将数据帧的整个第二个副本实质上存储在RAM中,然后再将其转储到磁盘。

.to_sql相似:熊猫会成批写入,而不是一次性写入。

而不是使用Pandas方法 “ to_csv()”, 而是使用Dask Dataframe编写 csv文件。 这将比熊猫方法更快。 快捷的写入功能会将您的文件分成多个块并存储。 码:

#Reading file
import dask.dataframe as dd

df = dd.from_pandas(pd.DataFrame(load_boston().data),npartitions=10)

def operation(df):
   df['new'] = df[0]
   return df[['new']]

#Writing the file
df.pipe(operation).to_csv('boston*.csv')

注意:使用前请安装Dask软件包:

使用Conda:

conda install -c conda-forge dask

使用点子:

pip install "dask[complete]"    # Install everything

参考文献:

[1] https://docs.dask.org/en/latest/install.html

[2] https://gist.github.com/hussainsultan/f7c2fb9f11008123bda405c5b024a79f

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM