我希望使用pandas来填充一个大的数据矩阵(90*90000),以及稍后会更大的一个(150000*800000)。目前我正在我的笔记本电脑上(8GB RAM,Haswell Core i5 2.2 GHz)测试较小的那个数据集,而更大的数据集将在服务器上运行。
这些列中有一些缺失值,我想用所有行中最常见的值来填充它们。
我的可行代码如下:
这些列中有一些缺失值,我想用所有行中最常见的值来填充它们。
我的可行代码如下:
freq_val = pd.Series(mode(df.ix[:,6:])[0][0], df.ix[:,6:].columns.values) #most frequent value per column, starting from the first SNP column (second row of 'mode'gives actual frequencies)
df_imputed = df.ix[:,6:].fillna(freq_val) #impute unknown SNP values with most frequent value of respective columns
在我的机器上,这个操作大约需要20分钟的时间。有没有其他的实现方法可以提高性能?
NaN
的行的索引,然后使用.loc()
手动将单元格设置为模式。我不知道它是否会给你更好的性能,但这是一个可供测试的替代方法。 - Alex PetraliaNaN
值并没有带来什么显著的改进。 - Dahlai