在 pandas 中整理我的水平条形图
sorting out my horizontal bar chart in pandas
我一直在尝试可视化一些数据并将它们放在相互堆叠的水平条形图上。
这样做时,我发现很难根据我想要的大小对它们进行排序。
我曾尝试在可视化之前对日期进行排序,但这没有帮助。
有人可以帮我把它们分类吗?
谢谢
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("data.csv")
plot3 = df.groupby(['Company', 'Outcome']).size()
plot3 = plot3.unstack()
plot3[:].sort_values(('Company'), axis = 0, ascending = True).plot(kind = 'barh',color = ['r', 'g'],figsize = [15, 10], stacked = True)
#df= df.sort_values('Company', axis = 0, ascending = True,inplace = True)
plt.savefig('plot3.png')'''
[![here is what i get][1]][1]
[1]: https://i.stack.imgur.com/WkvY9.jpg
您可以使用 key
参数和 scending=False
:
按 DataFrame.sort_index
对汇总行进行排序
(plot3.sort_index(key=plot3.sum(axis=1).get, ascending=False)
.plot(kind = 'barh',color = ['r', 'g'],figsize = [15, 10], stacked = True))
或使用DataFrame.iloc
with Series.argsort
,-
为负值表示降序:
(plot3.iloc[-plot3.sum(axis=1).argsort()]
.plot(kind = 'barh',color = ['r', 'g'],figsize = [15, 10], stacked = True))
我一直在尝试可视化一些数据并将它们放在相互堆叠的水平条形图上。
这样做时,我发现很难根据我想要的大小对它们进行排序。
我曾尝试在可视化之前对日期进行排序,但这没有帮助。
有人可以帮我把它们分类吗? 谢谢
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("data.csv")
plot3 = df.groupby(['Company', 'Outcome']).size()
plot3 = plot3.unstack()
plot3[:].sort_values(('Company'), axis = 0, ascending = True).plot(kind = 'barh',color = ['r', 'g'],figsize = [15, 10], stacked = True)
#df= df.sort_values('Company', axis = 0, ascending = True,inplace = True)
plt.savefig('plot3.png')'''
[![here is what i get][1]][1]
[1]: https://i.stack.imgur.com/WkvY9.jpg
您可以使用 key
参数和 scending=False
:
DataFrame.sort_index
对汇总行进行排序
(plot3.sort_index(key=plot3.sum(axis=1).get, ascending=False)
.plot(kind = 'barh',color = ['r', 'g'],figsize = [15, 10], stacked = True))
或使用DataFrame.iloc
with Series.argsort
,-
为负值表示降序:
(plot3.iloc[-plot3.sum(axis=1).argsort()]
.plot(kind = 'barh',color = ['r', 'g'],figsize = [15, 10], stacked = True))