This might be a duplicate, however please note I need a solution for ungrouped bar plots.
Here's my reproducible example:
import pandas as pd
import numpy as np
#generate data
np.random.seed(123)
df = pd.DataFrame({
'sex':np.random.choice(['male', 'female'], 500, p=[0.4, 0.6]),
'country':np.random.choice(['US', 'UK', 'Canada'], 500, p=[0.2, 0.5, 0.3]),
'age':np.random.normal(40,5,500).round(),
'grade':np.random.choice(['A', 'B'], 500),
'religion':np.random.choice(['christian', 'muslim', 'none'], 500),
'education':np.random.choice(['bachelor', 'master', 'doctorate'], 500, p=[0.7, 0.2, 0.1])
})
#define function to create percentage bar plot
def catbars (a):
x = ((a.value_counts(normalize=True, ascending=True))*100).plot.barh()
print (x)
catbars(df.country)
Output:
Now I want a similar function, but which will generate 6 separate plots, one for each of my variables (sex, country, age, etc.). How can I do this?


