首页 > 解决方案 > Pandas Python中的多柱形图

问题描述

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

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

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

action - 一旦用户登陆这个他会采取什么行动。采取的行动计数在action_view列中给出。

因此,页面列应该是外壳,里面应该有“动作”列值。这是下面的数据。

数据

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

在此处输入图像描述

问题

  1. 在原始数据中,我有 10 个不同的页面和 10 个不同的操作集,因此按照这种方法,条形图看起来非常混乱。我怎样才能更好地想象这一点?
  2. 如何增加每个条的宽度(厚度)?另外,有没有办法给单个条加边界(显示每个动作条边界的区别)?
  3. 如何将图例包含在一个框中?
  4. 使用seaborn包我能够生成这个图,但它无法通过使用matplotlib工作。
  5. 此外,像主页这样的页面具有非常高的操作计数,这会扭曲条形图。关于可以做些什么来更好地了解其他页面操作的任何想法。
  6. 最后,如果我想使用 _ page_view _ 列对条形图进行排序,我会使用sortvalue函数吗?

非常感谢您在这方面的帮助和建议。清除这些疑虑将有助于未来的学习。仅供参考 - 我正在使用 Ipython notebook 和 Python 3.0。

标签: pythonpandasmatplotlibbar-chartseaborn

解决方案


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


推荐阅读