简单来说,在Python中如何对一个大的Pandas数据框(可能有2,000,000行)应用分位数归一化?
PS. 我知道有一个名为rpy2的软件包可以在子进程中运行R,使用R中的分位数归一化。 但事实是,当我使用以下数据集时,R无法计算出正确的结果:
5.690386092696389541e-05,2.051450375415418849e-05,1.963190184049079707e-05,1.258362869906251862e-04,1.503352476021528139e-04,6.881341586355676286e-06
8.535579139044583634e-05,5.128625938538547123e-06,1.635991820040899643e-05,6.291814349531259308e-05,3.006704952043056075e-05,6.881341586355676286e-06
5.690386092696389541e-05,2.051450375415418849e-05,1.963190184049079707e-05,1.258362869906251862e-04,1.503352476021528139e-04,6.881341586355676286e-06
2.845193046348194770e-05,1.538587781561563968e-05,2.944785276073619561e-05,4.194542899687506431e-05,6.013409904086112150e-05,1.032201237953351358e-05
编辑:
我的要求是:
在给定的数据的基础上,如何按照https://en.wikipedia.org/wiki/Quantile_normalization中所述的步骤应用分位数标准化。
我发现Python的一段代码可以计算分位数标准化:
import rpy2.robjects as robjects
import numpy as np
from rpy2.robjects.packages import importr
preprocessCore = importr('preprocessCore')
matrix = [ [1,2,3,4,5], [1,3,5,7,9], [2,4,6,8,10] ]
v = robjects.FloatVector([ element for col in matrix for element in col ])
m = robjects.r['matrix'](v, ncol = len(matrix), byrow=False)
Rnormalized_matrix = preprocessCore.normalize_quantiles(m)
normalized_matrix = np.array( Rnormalized_matrix)
这段代码在使用本身的样例数据时能够良好运行,但是当我使用上述数据进行测试时,结果却出现了错误。
由于ryp2提供了一个在python子进程中运行R的接口,我直接在R中再次进行了测试,结果仍然错误。因此,我认为问题出在R的方法上。
matrix
,然后继续进行。 - Shawn. L