熊猫:情节馅饼,子情节

时间:2018-10-08 22:05:25

标签: python pandas split

我有一个如下所示的df:

+---------+---------------------------------------------------------+-------------+
| Product |                        Features                         | Profits USD |
+---------+---------------------------------------------------------+-------------+
| ABC     | Feature A1|Feature B5|Feature D4                        | 123,000     |
| DEF     | Feature B8|Feature C3                                   | (23,000)    |
| GHI     | Feature B5|Feature B8|Feature D7|Feature F5|Feature T6  | 1,435,000   |
+---------+---------------------------------------------------------+-------------+

我想做的是:

  • 为每个功能创建单独的列;
  • 计算每个功能的总利润;
  • 使用Python>绘制饼图>熊猫显示每利润+%的降序功能列表。

我的方法(虽然不合逻辑)是为每行每个功能添加利润。因此,基本上,对于产品ABC:利润特征A1 = 123,000,利润特征B5 = 123,000,等等。

到目前为止,我有以下代码来计算将要素拆分成多列,然后按利润分组:

Features = (df.Features.str.split('|', expand=True)
        .stack()
        .to_frame(name='Feature')
        )

Features.index = Features.index.droplevel(1)

Features_profits = (Features.join(df['Profits USD'])
   .groupby('Feature')
   .sum()
   .sort_values('Profits USD', ascending = False))

但是然后我在绘制饼图时遇到了问题:

Features_profits.plot(kind='pie', autopct='%1.1f%%', label='Feature', figsize =(10,10))

Output > ValueError: pie requires either y column or 'subplots=True'

我也尝试过:

Features_profits
.stack().value_counts()
.plot(kind='pie', autopct='%1.1f%%', label='Feature', figsize =(10,10))

但是上述代码的结果饼图将Profits USD列作为标签/饼图。

我想一种方法是替换每个功能列中的Profits USD中的值,但是我认为必须有一种更优雅的方法。

我陷入困境,我们将不胜感激。

0 个答案:

没有答案