繁体   English   中英

pandas.groupby().plot() 堆叠每组的行数,而不是实际值

[英]pandas.groupby().plot() stacking amount of rows per group by, not actual values

我正在尝试创建一个堆叠条形图,它显示客户的两种交易类型。 图表按周排列成列。 我的代码结构中的示例代码如下:

%matplotlib inline
import pandas as pd
values = [('1','2019-07-28','retail',11),
          ('1','2019-07-28','wholesale',18),
          ('1','2019-08-04','retail',7),
          ('1','2019-08-04','wholesale',12),
          ('1','2019-08-11','retail',6),
          ('1','2019-08-11','wholesale',16)]

columns = ['customer_id','week',
           'transaction_type',
           'sale_count']

df = pd.DataFrame(values, columns=columns)

df.groupby(['week','transaction_type']).size()\
  .unstack()\
  .plot(sort_columns='week',
        kind='bar', stacked=True);

我得到的结果是每个 transaction_type 的行数为 1 或 2

当前的:result_im_currently_getting

我需要的是一个堆积条形图,它给出了周中列出的每个日期的 sale_count 总和,如下所示

预期的:

result_im_trying_to_get

谁能告诉我我在这里做错了什么?

类似于评论:

(df.groupby(['week','transaction_type'])['sale_count']
   .sum().unstack('transaction_type')
   .plot.bar(stacked=True)
)

输出:

在此处输入图片说明

@Quang Hoang 的回答是正确的,应该被接受和投票。 这只是关于格式化代码的说明。 我想最好去掉额外的圆括号并将图例移到外面,如下面的代码所示

df.groupby(['week','transaction_type'])['sale_count']\
   .sum().unstack('transaction_type')\
   .plot.bar(stacked=True, rot=0)\
   .legend(bbox_to_anchor=(1.3, 1.0));

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM