我正在尝试创建一个堆积条形图来显示卫星运载火箭如何随时间变化。我希望 x 轴是发射年份,y 轴是运载火箭上发射的卫星数量,其中条形图的每个部分都有不同的颜色,代表运载火箭。我正在努力想出一种方法来做到这一点,因为我的运载火箭专栏是非数字的。我查看了 group by function 以及 value_counts 但似乎无法让它执行我正在寻找的操作。
您必须重新组织数据才能以所需的方式使用DataFrame.plot
:
import pandas as pd
import matplotlib.pylab as plt
# test data
df = pd.DataFrame({'Launch Vehicle':["Soyuz 2.1a",'Ariane 5 ECA','Falcon 9','Long March','Falcon 9', 'Atlas 3','Atlas 3'],
'Year of Launch': [2016,2014,2016,1997,2015,2004,2004]})
# make groupby by year and rocket type to get the pivot table
# fillna put zero launch if there is no start of such type during the year
df2 = df.groupby(['Year of Launch','Launch Vehicle'])['Year of Launch'].count().unstack('Launch Vehicle').fillna(0)
print(df2)
# plot the data
df2.plot(kind='bar', stacked=True, rot=1)
plt.show()
df2 的输出:
Launch Vehicle Ariane 5 ECA Atlas 3 Falcon 9 Long March Soyuz 2.1a
Year of Launch
1997 0.0 0.0 0.0 1.0 0.0
2004 0.0 2.0 0.0 0.0 0.0
2014 1.0 0.0 0.0 0.0 0.0
2015 0.0 0.0 1.0 0.0 0.0
2016 0.0 0.0 1.0 0.0 1.0
我是一名优秀的程序员,十分优秀!