使用Dask在python上对大型数据集进行计算时计算机崩溃

时间:2018-12-25 14:12:10

标签: python-3.x dask

我无法使用python-Dask对大型数据集进行计算。我的计算机崩溃了。

我有一台具有4GB RAM并运行Linux Debian的计算机。我正在尝试从Kaggle竞赛(ElO Merchant竞赛)中加载一些文件,当我尝试加载并获取模糊数据框的形状时,计算机崩溃。

我仅在笔记本电脑上运行代码。我选择dask是因为它可以处理大型数据集。我还想知道如果Dask不适合内存,Dask是否能够将计算移到我的硬盘上?如果是这样,我是否需要激活此类设备或自动运行?如果我需要手动进行操作,该怎么办?如果有关于此的教程,那也很好。

我有250GB固态硬盘作为我的硬盘。因此,大型数据集将有空间适合磁盘。

在这方面请帮助我。我的代码如下。

谢谢

迈克尔

import dask.dataframe as dd
from dask.distributed import Client
from sklearn.externals.joblib import parallel_backend
client = Client(processes=False)

merchant = dd.read_csv('/home/michael/Elo_Merchant/merchants.csv')
new_merchant_transactions = dd.read_csv('/home/michael/Elo_Merchant/new_merchant_transactions.csv')
historical_transactions = dd.read_csv('/home/michael/Elo_Merchant/historical_transactions.csv')
train = dd.read_csv('/home/michael/Elo_Merchant/train.csv')
test = dd.read_csv('/home/michael/Elo_Merchant/test.csv')

merchant.head()
merchant.compute().shape
merchant_headers = merchant.columns.values.tolist()

for c in range(len(merchant_headers)): 
    print(merchant_headers[c])
    print('--------------------')
    print("{}".format(merchant[merchant_headers[c]].value_counts().compute()) + '\n')
    print("Number of NaN values {}".format(merchant[merchant_headers[c]].isnull().sum().compute()) + '\n')

historical_transactions.head()
historical_transactions.compute().shape #after computing for a few minutes computer restarts.

我希望它可以作为代码运行,并为我提供dask数组的形状并运行其余代码(由于不相关,在此未显示)

1 个答案:

答案 0 :(得分:0)

我找到了一种方法。 在这里:

print("(%s,%s)" % (historical_transactions.index.count().compute(),len(historical_transactions.columns)))

第一个输出值是行,第二个输出值是列数。

谢谢

迈克尔