使用pandas读取大型csv文件并指定dtypes会导致内存错误吗?

时间:2017-11-14 13:31:27

标签: python python-3.x pandas csv kaggle

我正在尝试从Kaggle中读取expedia数据,其中包含一个4GB的csv文件,我尝试使用pd.read_csv('filename')读取它并出现内存错误。第二种方法我尝试仅使用代码读取特定列:

pd.read_csv('train.csv', dtype={'date_time':np.str, user_location_country': np.int32, 'user_location_region':np.int32, 'user_location_city':np.int32, 'orig_destination_distance':np.float64, 'user_id':np.int32})

这再次给了我内存错误,但使用了相同方法的另一个修改:

train = pd.read_csv('train.csv', dtype={'user_id':np.int32,'is_booking':bool, 'srch_destination_id':np.int32, 'hotel_cluster':np.int32}, usecols=['date_time', 'user_id', 'srch_ci', 'srch_co', 'srch_destination_id', 'is_booking', 'hotel_cluster'])'

在大约5分钟内读取数据。

我的问题是我想使用任何方法读取更多列但都失败并给出Memory error。我使用8GB RAM和8GB交换空间,因此在数据中只读取24列中的7-8列将减少大约800MB的数据大小,因此硬件使用没有问题。 我还尝试根据我将在后面阅读的算法阅读我不想做的块。

1 个答案:

答案 0 :(得分:-1)

不幸的是,读取csv文件需要的内存大于磁盘上的大小(我不知道还有多少)。

您可以找到另一种处理文件here

的方法