我在python中有一个方法,它完全不是内存密集型的,但是每次我的代码片段到达该方法时,经过大约30-40次迭代,系统的RAM达到100%,系统就会冻结。同样的方法以前没有给任何问题,但现在我似乎找不到一个简单的方法。有什么具体原因吗?我有i5处理器(CPU使用率甚至不到50%)和8gbram。代码段如下:
def modify_data(self, data, col):
"""
Convert Raw scores to Z-scores.
Args:
data (Pandas DataFrame): DataFrame storing raw scores
col (String): The column on which conversion is being done
Returns:
z_score (Pandas DataFrame): New DataFrame storing z-scores instead of raw scores.
"""
print "inside modify_data"
# Now calculate z-score based on rolling windows for columns calculated above.
z_score = pd.DataFrame()
score = data
z_scores = []
ctr = 0
indeces = score.index.tolist()
for idx in indeces:
row = score.ix[idx]
n = min(idx, self.window)
if self.use_window:
subdata = score.iloc[ctr-n:ctr+1]
else:
subdata = score.iloc[:ctr+1]
row = score.ix[idx]
x = row[0]
mu = subdata.mean()
sigma = subdata.std()
new_score = (x-mu)/sigma
z_scores = np.append(z_score, new_score)
ctr += 1
z_scores = np.array(z_scores)
tmpDF = pd.DataFrame(data=z_scores, columns=[col])
z_score = z_score.append(tmpDF)
return z_score
早些时候,我实施了:
for index, row in score.iterrows():
在循环上迭代,并认为可能iterrows基于性能比较慢,因此切换到在索引列表上迭代。但即使这样似乎也无济于事。任何输入都会非常有用
谢谢。。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐