gpt4 book ai didi

python - 基于月份列的多个箱线图

转载 作者:太空宇宙 更新时间:2023-11-04 02:04:13 24 4
gpt4 key购买 nike

我需要 12 个图 (fig, axes = plt.subplots(4,3))在每个图中,我都需要一个条形图,其中 x 轴是 Airline,y 轴是他们每个月绘制的计数。

即对于第 1 个月 --> x-axis='Airline'y-axis='counts' 如果每个条具有不同的颜色,也会很感激。

同样,我每个月都需要这样的地 block (12 个地 block )。

                     Airline    counts
Month
1 Jet Airways 430
1 Air France 197
1 Emirates 184
2 Jet Airways 674
2 Air France 513
2 Emirates 369
3 Jet Airways 153
3 Air France 76
4 Emirates 63
.... ..... ....

我试过类似的东西,

df.groupby(df.index)['Airline'].plot(kind='bar')

下图仅包含 7 个月。

enter image description here

但这只返回一个包含所有值的图,这不是我预期的输出。

最佳答案

我正在处理自己生成的数据集,所以它不可能是完美的。但是,它也应该适用于您的数据。

我正在处理由类似这样的东西生成的数据:

#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()

输出如下:output

我希望这是你所期望的。

关于python - 基于月份列的多个箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55070138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com