I have been practicing Data Science/Machine Learning, and I am confused about when to complete the following tasks when using train-test split in scikit learn: 1) EDA 2) Filling in missing data 3) Removing data that isn't needed 4) Working with categorical data 5) Feature Engineering 6) Feature Selection I know that scaling should be done after train-test split. However, I have seen both approaches (train-test split before and after) when working with the above tasks. I'm confused about which is the correct way for these tasks. Can someone provide some clarification? Thank you!