2 回答

TA貢獻1841條經驗 獲得超3個贊
您是否在尋找:
(my_data.groupby('places')['actions']
.value_counts().unstack('places')
.plot.bar(subplots=True)
)
或者類似地:
(pd.crosstab(my_data['actions'], my_data['places'])
.plot.bar(subplots=True)
)
輸出:
如果你想要單杠:
(pd.crosstab(my_data['actions'], my_data['places'])
.plot.barh(subplots=True, layout=[1,2])
)
輸出:
或者我們可以修復您的代碼:
fig, axs = plt.subplots(1, 2, figsize = (5,7))
axs = axs.ravel()
for ax,place in zip(axs,my_data['places'].unique()):
temp_df = my_data[my_data['places'] == place].actions.value_counts()
sns.barplot(y=temp_df.index, x=temp_df,
color="#43B8E7", ax=ax, orient = 'h')
ax.set_title(place)
輸出(恕我直言,這不是很好對齊):

TA貢獻1873條經驗 獲得超9個贊
我會使用facetgrid,因為你已經在使用seaborn:
import pandas
import seaborn
axgrid = pandas.DataFrame({
'actions': ['buy','buy','buy','observe','consult'] ,
'places':['NY','AR','AR','NY','AR']
}).pipe((seaborn.catplot, 'data'),
y="actions", col="places",
order=['buy', 'consult', 'observe'],
kind="count"
)
添加回答
舉報