If you have used scikit-learn for a while, you have probably written this pipeline. Numeric columns get imputed and scaled. Everything else gets imputed and one-hot encoded. Columns are routed by dtype, so it works on almost any table without you looking at it.