How do I normalize this feature, I've tried almost everything I'm trying to normalize this skewed data as part of data preprocessing, but it doesn't normalize no matter which transformation I use to the point it's making me crazy :') .
The methods which I've used with their respective skew scores (top is without transformation):
Wage skew: 7.30956424189345
Wage skew when log transformed: 0.7814739131576722
Wage skew when box-cox transformed: 0.15976910824179216
Wage skew when Yeo-Johnson transformed: 0.15988186520016714
Wage skew when quantile transformed: -0.1658528258221841
Wage skew when squareroot transformed: 2.7150956859094366
Wage skew when cuberoot transformed: 1.8614016553408317
Screenshots of histograms: https://imgur.com/a/zeLYF2H
Does anybody know if there's a method I haven't tried? Or do I need to use a combination of certain methods?
Please help this noob out. Thanks in advance
# Distribution of skewed features
skewed_features = ['Value', 'Wage', 'Weight']
wage_features = ['Wage']
skewed_df = df[skewed_features]
log_df = np.log(skewed_df.astype(float))

# Yeo-Johnson transforming skewed features
yj_transformer = PowerTransformer(method='yeo-johnson')
yj_transformer.fit(skewed_df)
yj_transformed = yj_transformer.fit_transform(skewed_df)
yj_df = pd.DataFrame(yj_transformed, columns = skewed_df.columns)

# Quantile transforming skewed features
q_transformer = QuantileTransformer()
q_transformer.fit(skewed_df)
q_transformed = q_transformer.fit_transform(skewed_df)
q_df = pd.DataFrame(q_transformed, columns = skewed_df.columns)

for feature in wage_features:
    #Showing skewed feature
    plt.hist(df[feature])
    plt.xlabel(feature)
    plt.ylabel('frequency')
    plt.show()
    print(feature + " skew: " + str(df[feature].skew()))
    #Showing aforementioned feature log transformed
    plt.hist(log_df[feature])
    plt.xlabel('log_'+feature)
    plt.ylabel('frequency')
    plt.show()
    print(feature + " skew when log transformed: " + str(skew(log_df[feature])))
    #Showing aforementioned feature box-cox transformed
    boxcox_data, boxcox_lambda = boxcox(df[feature].astype(float))
    plt.hist(boxcox_data)
    plt.xlabel('box-cox_' + feature + ' lambda=' + str(boxcox_lambda))
    plt.ylabel('frequency')
    plt.show()
    print(feature + " skew when box-cox transformed: " + str(skew(boxcox_data)))
    #Showing aforementioned feature Yeo-Johnson transformed
    plt.hist(yj_df[feature])
    plt.xlabel('Yeo-Johnson_'+feature)
    plt.ylabel('frequency')
    plt.show()
    print(feature + " skew when Yeo-Johnson transformed: " + str(skew(yj_df[feature])))
    #Showing aforementioned feature quantile transformed
    plt.hist(q_df[feature])
    plt.xlabel('Quantile_'+feature)
    plt.ylabel('frequency')
    plt.show()
    print(feature + " skew when quantile transformed: " + str(skew(q_df[feature])))
    #Showing aforementioned feature squareroot transformed
    sqrt_feature = np.sqrt(skewed_df[feature].astype(float))
    plt.hist(sqrt_feature)
    plt.xlabel('Squareroot_'+feature)
    plt.ylabel('frequency')
    plt.show()
    print(feature + " skew when squareroot transformed: " + str(skew(sqrt_feature)))
    #Showing aforementioned feature cuberoot transformed
    cbrt_feature = np.cbrt(skewed_df[feature].astype(float))
    plt.hist(cbrt_feature)
    plt.xlabel('Cuberoot_'+feature)
    plt.ylabel('frequency')
    plt.show()
    print(feature + " skew when cuberoot transformed: " + str(skew(cbrt_feature)))


I extracted the data approximately from the histograms, added some random variation in the data, and then applied Elfving inverse normal scores transformation. This worked well.
But I don't know if this would work as well on the actual original data.
R code for this is below.  You can run it at the following site, without installing software, but it takes a minute, since it's a relative large data set. rdrr.io/snippets/.
Plots follow.
The log(log()) transformation didn't work as well.



