Проще говоря, как применить нормировку квантилей на большом кадре данных Pandas (возможно, 200000 строк) в Python?квантильная нормализация на pandas dataframe
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.0322e-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 предоставляет интерфейс для запуска R в подпроцессе python, я проверяю его снова в R напрямую, и результат все еще не прав. В результате я считаю, что причина в том, что метод в R неверен.
Я удалил "R" метки поскольку вы (1) не используете R и (2) не хотите R в ответе. Но если вы скажете, что «R не может вычислить правильный результат», это звучит так, будто вы либо пренебрегаете R (с какой целью?), Либо хотите, чтобы кто-то исправил ваш неопубликованный код. В любом случае, возможно, я не понимаю, что вы хотите: нормализация квантилей требует источника и целевого распределения, и я не уверен, что вы предоставляете здесь. Можете ли вы пояснить, пожалуйста? – r2evans
@ r2evans Спасибо за ваш комментарий, и я уже отредактировал этот вопрос. FYI, код, который я googled, запускает R как подпроцесс Python. После запуска R я обнаружил, что результат был неправильным. Кроме того, я не уверен, что вы подразумеваете под «целевым распределением». Согласно Wiki, вычисление нормировки квантиля не включает этот термин. Вопрос, надеюсь, я ясно дал понять, заключается в применении количественной нормализации данных, которые я дал. –
Вы правы, мой термин «цель» на самом деле не очень хорош. Ссылки на wiki * «два одинаковых дистрибутива» *, поэтому мне было интересно, каковы ваши два дистрибутива. Теперь, когда вы предоставили дополнительный код (и данные, определенные как 'matrix'), я смущен тем, что ваши фактические данные должны быть квантово-нормированными. (Возможно, глупый вопрос, но возможно ли, что матрица транспонирована по сравнению с тем, что вам действительно нужно?) – r2evans