Debe dividir antes de preprocesar o imputar.
La división entre el conjunto de entrenamiento y el conjunto de pruebas es un intento de replicar la situación en la que se tiene información pasada y se está construyendo un modelo que se probará con información futura aún desconocida: el conjunto de entrenamiento ocupa el lugar del pasado y el conjunto de pruebas ocupa el lugar del futuro, por lo que sólo se puede probar el modelo entrenado una vez.
Teniendo en cuenta la analogía pasado/futuro, esto significa que cualquier cosa que se haga para preprocesar o procesar los datos, como la imputación de valores perdidos, debe hacerse sólo en el conjunto de entrenamiento. Así podrá recordar lo que hizo en el conjunto de entrenamiento si el conjunto de prueba también necesita un preprocesamiento o una imputación, de modo que lo haga de la misma manera en ambos conjuntos.
Añadido de los comentarios: si utiliza los datos de prueba para afectar a los datos de entrenamiento, entonces los datos de prueba se están utilizando para construir su modelo, por lo que dejan de ser datos de prueba y no proporcionarán una prueba justa de su modelo. Se corre el riesgo de sobreajustar, y fue para desalentar esto que se separaron los datos de prueba en primer lugar