I think the code you have mentioned doesn’t correspond to min-max.
Z-score is fine. However, min_max_norm = (data - data.min())/(data.max() - data.min())
For normalisation, the values are squashed in [0, 1]. If you have an outlier say data.max() the transformed values will be very small for min_max_norm(max in denominator) for the majority of samples. Thereby affecting the statistics of your transformed distribution.