Dealing with outliers and z-scores
Just some quick fixes.
Normalization takes care of scale of data across the columns. e.g.
If one data column is in the ranges of 1000s and other in 10s then normalization will work.

But if you want to take care of the skew-ness one way is to simply take log of the data. It pulls in the outliers. as log increases very slowly for positive values. Do it before the normalization (Z score in your case)


Other ways are taking nth root of the data.