我有一个CSV文件,其中包含了很多缺失的值。我试图使用'fancyimpute‘包来使用'KNN()’方法来计算缺失的值。
包含CSV文件的熊猫DataFrame有7个属性/列,而第8个属性是'time‘,但用作DataFrame的索引。
data.shape
# (83070, 7)data.isnull().sum().sum()
# 59926data.isnull().sum()
'''
A 171
B 0
C 0
D 47441
E 170
F 12144
G 0
dtype: int64
'''当我使用以下代码进行数据计算时-
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:
对出什么问题有什么想法吗?
谢谢!
发布于 2019-05-05 20:21:01
我不太熟悉幻想,然而,利用熊猫的块状来迭代,可以解决记忆相关的问题。基本上,块大小为您提供了一个可以迭代的“t极值对象”。
for chunk in pd.read_csv('my_csv.csv', chunksize=1000):另一个可以工作的选项是将数据导入到7个不同的pd.Series中,在每个列上执行您的函数,然后连接(axis=1)来创建一个DataFrame。
https://stackoverflow.com/questions/55995363
复制相似问题