Pandas Python中的多列条形图

时间:2018-08-26 08:06:46

标签: python pandas matplotlib bar-chart seaborn

我正在学习熊猫,需要一些帮助来改善情节的美感。

问题我正在尝试在熊猫中绘制多列条形图(使用Matplotlib或通过Seaborn库)。数据中的两个主要列是

页面-提供用户登陆位置的主列

动作-用户落入该动作后,他将执行什么动作。 action_view 列中给出了已采取的操作计数。

因此,Pages列应该是外壳,在其中应该有“ action”列值。这是下面的数据。

数据

import pandas as pd
import numpy as np
import seaborn as sns

sample_df = pd.DataFrame({
    'pages':('home','home','home','food','food','food','electronics','electronics','electronics','payment','payment','payment'),
    'action':('view ','added','checkout','cart viewed','added','bundled','added','product list viewed','checkout','checkout','view','removed'),
    'page_view':(100,100,100,40,40,40,70,70,70,500,500,500),
    'action_view':(30000,10000,5000,300,500,800,1500,1200,1800,1200,1400,1500)          
})

#Code for plot
sns.barplot(x='pages',y='action_view',hue='action',data=sample_df)
plt.xticks(rotation=90)
plt.xlabel('pages')
plt.ylabel('action_view')
plt.legend(loc='upper left', bbox_to_anchor=(1,1))

#Below is the image that I'm getting

enter image description here

问题

  1. 在原始数据中,我有10个不同的页面和10个不同的操作集,因此按照这种方法,条形图看起来非常混乱。我怎样才能更好地可视化呢?
  2. 如何增加每个条形的宽度(厚度)?另外,是否有任何方法可以限制各个小节的边界(在操作小节的每个边界处显示黑白)?
  3. 如何将图例放在框中?
  4. 使用 seaborn 包,我能够生成此图,但它 使用 matplotlib 无法正常工作。
  5. 此外,像 home 这样的页面具有很高的 action 计数,这会使条形图倾斜。关于可以采取哪些措施以更好地了解其他页面操作的任何想法。
  6. 最后,如果我想使用_ page_view _列对栏进行排序,我会使用 sortvalue 函数吗?

非常感谢您的帮助和建议。消除这些疑问将有助于将来的学习。 仅供参考-我正在使用Ipython Notebook和Python 3.0。

1 个答案:

答案 0 :(得分:0)

3)plt.legend(loc = 1,bbox_to_anchor =(1,1))