Aquí hay una consulta SQL que debería ayudarlo a comenzar (suponiendo que desee calcularla por columna):
create table normalize as
select
(RT - min(RT)over()) / (max(RT)over() - min(RT)over()) * 0.8 + 0.1 as RT_norm
from test;
Probé esta consulta en sqlite3, no en MySQL. No es necesariamente óptimo, pero intuitivamente sigue la fórmula. Aviso, el over
convierte las funciones agregadas min / max en funciones de ventana, lo que significa que miran toda la columna, pero el resultado se repite en cada fila.
Todo
Todavía necesitarías:
- envíe la consulta MySQl a través de Python
- repita el mismo código para cada columna
- asigne un nombre a cada columna
- asigne la tabla resultante a un esquema (lo más probable)
- manejar la división por 0 en caso de que el máximo y el mínimo de una columna sean iguales