首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fancyimpute Python 3 MemoryError

fancyimpute Python 3 MemoryError
EN

Stack Overflow用户
提问于 2019-05-05 18:59:04
回答 1查看 572关注 0票数 1

我有一个CSV文件,其中包含了很多缺失的值。我试图使用'fancyimpute‘包来使用'KNN()’方法来计算缺失的值。

包含CSV文件的熊猫DataFrame有7个属性/列,而第8个属性是'time‘,但用作DataFrame的索引。

data.shape

代码语言:javascript
复制
# (83070, 7)

data.isnull().sum().sum()

代码语言:javascript
复制
# 59926

data.isnull().sum()

代码语言:javascript
复制
'''
A        171
B        0
C        0
D        47441
E        170
F        12144
G        0
dtype: int64
'''

当我使用以下代码进行数据计算时-

代码语言:javascript
复制
filled_data_na = KNN(k = 3).fit_transform(data)

它给了我以下错误-

MemoryError跟踪(最近一次调用) in ->1 filled_na = KNN(k = 3).fit_transform(data_date_idx) ~/.local/lib/python3.6/site-packages/fancyimpute/solver.py in fit_transform(self,X,y) 187类型(X_filled)) 188 --> 189个X_result = self.solve(X_filled,missing_mask) 190如果不是in(X_result,np.ndarray):191个提高TypeError( 解题中的~/.local/lib/python3.6/site-packages/fancyimpute/knn.py (self,X,missing_mask) 102 k=self.k,103 verbose=self.verbose,-> 104 print_interval=self.print_interval) 105 106 failed_to_impute = np.isnan(X_imputed) ~/.local/lib/python3.6/site-packages/knnimpute/few_observed_entries.py in knn_impute_few_observed(X,missing_mask,k,print_interval) 49 X_column_major = X.copy(order="F") 50 X_row_major,D,effective_infinity =\-> 51 knn_initialize(X,missing_mask,verbose=verbose) 52 #去掉无穷大,用一个很大的数字53 D_sorted = np.argsort(D,axis=1)替换它们 ~/.local/lib/python3.6/site-packages/knnimpute/common.py in knn_initialize(X,missing_mask,verbose,min_dist,max_dist_multiplier) 37 #将NaN返回到距离函数38 X_row_majormissing_mask = np.nan ->39D= all_pairs_normalized_distances(X_row_major) 40 D_finite_flat = Dnp.isfinite(D) 41的数据矩阵中,如果len(D_finite_flat) > 0: 样本间均方差的~/.local/lib/python3.6/site-packages/knnimpute/normalized_distance.py (X) 36 37 #矩阵-->38D=np.ones(n_rows,n_rows),dtype="float32",order="C") * np.inf 39 40 #我们可以廉价地确定两行共享的列数 ~/.local/lib/python3.6/site-packages/numpy/core/numeric.py in ones(shape,dtype,order) 221 222“-> 223 a=空(shape,dtype,order) 224 multiarray.copyto(a,1,casting=‘不安全’) 225返回a MemoryError:

对出什么问题有什么想法吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-05-05 20:21:01

我不太熟悉幻想,然而,利用熊猫的块状来迭代,可以解决记忆相关的问题。基本上,块大小为您提供了一个可以迭代的“t极值对象”。

代码语言:javascript
复制
for chunk in pd.read_csv('my_csv.csv', chunksize=1000):

另一个可以工作的选项是将数据导入到7个不同的pd.Series中,在每个列上执行您的函数,然后连接(axis=1)来创建一个DataFrame。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55995363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档