Я работал над собственным сгенерированным набором данных, поэтому он не мог быть идеальным. Однако это также должно работать с вашими данными.
Я работал с данными, сгенерированными чем-то вроде этого:
#import all needed libraries
airline_names = ['BRITISH AIRWAYS PLC','VIRGIN ATLANTIC AIRWAYS LTD','BRITANNIA AIRWAYS AND THOMSONFLY','BRITISH AIRWAYS (EURO OPS) LGW','MONARCH AIRLINES','AIR EUROPE','FIRST CHOICE AIRWAYS LTD','CALEDONIAN AIRWAYS','BMI BRITISH MIDLAND','KLM UK LTD','ANGLO CARGO','MY TRAVEL AIRWAYS UK','LEISURE INTERNATIONAL','EXCALIBUR AIRWAYS','HEAVYLIFT','GB AIRWAYS LTD','NOVAIR INTERNATIONAL','BERLIN EUROPEAN UK','HUNTING CARGO AIRLINES LTD','TRADEWINDS AIRWAYS','LOGANAIR','DUO AIRWAYS LTD','BRITISH WORLD AIRLINES LTD','RYANAIR-EUROPE','BRITISH AIRWAYS CITIEXPRESS LTD','AIR FOYLE']
months = np.random.choice(range(1,13), size=40, replace=True)
counts = np.random.choice(range(200,800), size=40, replace=True)
airlines = np.random.choice(airline_names, size=40, replace=True)
df = pd.DataFrame({"Airline":airlines,"month":months,"counts":counts})
Я предположил, что в течение одного месяца есть одна авиакомпания, поэтому я не суммировал счет за месяц. В моем наборе данных могут появиться те же авиакомпании за один месяц. Так что, пожалуйста, имейте это в виду.
grouped = df.groupby('month')
fig = plt.figure(figsize=(18,15))
i=0
import random as rand
#create random rgb colors assigned to airline
colors = {k: (rand.random(),rand.random(),rand.random()) for k in airline_names}
for month, values in grouped:
i += 1
ax = fig.add_subplot(4,3,i)
colors_list = [colors[airline] for airline in values["Airline"]]
values.plot.bar("Airline", "counts",ax=ax,color=colors_list,xticks=[],title=month)
#As a xlabel I printed only 7 chars, otherwise it would be mess
ax.set_xticklabels(values["Airline"].str[0:7])
plt.show()
И вывод выглядит следующим образом:
Я надеюсь, что это то, что вы ожидали.