#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