2 回答
![?](http://img1.sycdn.imooc.com/545845b40001de9902200220-100-100.jpg)
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)
输出(恕我直言,这不是很好对齐):
![?](http://img1.sycdn.imooc.com/54584cde0001d19202200220-100-100.jpg)
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"
)
添加回答
举报