I have a data set like
import pandas as pd
compnaies = ['Microsoft', 'Google', 'Amazon', 'Microsoft', 'Facebook', 'Google']
products = ['OS', 'Search', 'E-comm', 'E-comm', 'Social Media', 'OS']
average = [1.2,3.4,2.4,5.2,3.2,4.4]
df = pd.DataFrame({'company' : compnaies, 'product':products,
'average' : average})
df
average company product
0 1.2 Microsoft OS
1 3.4 Google Search
2 2.4 Amazon Search
3 5.2 Microsoft Search
4 4.4 Google OS
Now I want to plot in Python/MatPlotLib it like

I am from R background and whatever I found here is converting the x axis in numeric index, then plot 2 numeric values and then name the group in hard coded way, Is there any standard way where I can plot the required graph.
Most of the places, I find the help like this code where we plot all numeric value with static group https://matplotlib.org/examples/api/barchart_demo.html