Вычисление процента из сводной таблицы pandas

#pandas #pivot-table #python-3.6 #percentage

#pandas #сводная таблица #python-3.6 #процент

Вопрос:

У меня есть набор данных, которые я уже импортировал из файла Excel xlsx. После этого я решаю узнать процент от общей прибыли от каждого сегмента клиентов. Мне удается использовать сводную таблицу для суммирования общей прибыли каждого клиентского сегмента. Однако я также хотел бы знать процент. Как мне это сделать?

Сводная таблица

  profit = df.pivot_table(index = ['Customer Segment'], values = ['Profit'], aggfunc=sum)
  

Результат на данный момент

 Customer Segment      Profit
    A                    a
    B                    b
    C                    c
    D                    d
  

Возможно, идеальным способом было бы добавить столбец процентов в сводную таблицу. Но как я могу это сделать?

Комментарии:

1. процент от общей прибыли, так что a / (a b c d), …? Если это так, вероятно, проще всего сделать это позже.

2. да, я знаю формулу. Но исходя из прибыли, которую я классифицировал в сводной таблице, как мне это использовать?

Ответ №1:

Как насчет

 df['percent'] = df['Profit']/sum(df['Profit'])
  

Ответ №2:

Например, у вас есть этот фрейм данных:

     Customer Segment    Customer    Profit
0         A                AAA        12
1         B                BBB        43
2         C                CCC        45
3         D                DDD        23
4         D                EEE        67
5         C                FFF        21
6         B                GGG        45
7         A                JJJ        67
8         A                KKK        32
9         B                LLL        13
10        C                MMM        43
11        D                NNN        13
  

Из приведенного выше фрейма данных вы хотите создать сводную таблицу.

 import pandas as pd
import numpy as np

tableframe = pd.pivot_table(df, values='Profit', index=['Customer Segment'], aggfunc=np.sum)
  

Вот ваша сводная таблица:

                   Profit
Customer Segment    
     A              111
     B              101
     C              109
     D              103
  

Теперь вы хотите добавить еще один столбец в tableframe, а затем вычислить процент.

 tableframe['percentage'] = ((tableframe.Profit / tableframe.Profit.sum()) * 100)
  

Вот ваш окончательный табличный фрейм:

                    Profit   percentage
Customer Segment        
         A          111     26.179245
         B          101     23.820755
         C          109     25.707547
         D          103     24.292453