Я хочу прогнозировать ассигнования на основе исторических цифр.
Ручной ввод, предоставленный пользователем:
year month x y z k
2018 JAN 9,267,581 627,129 254,110 14,980
2018 FEB 7,771,691 738,041 217,027 17,363
Вывод из исторических цифр:
year month segment pg is_p x y z k
2018 JAN A p Y 600 600 600 600
2018 JAN A p N 200 200 200 200
2018 JAN B r Y 400 400 400 400
2018 JAN A r Y 400 400 400 400
2018 JAN A r N 400 400 400 400
2018 JAN B r N 300 300 300 300
2018 JAN C s Y 200 200 200 200
2018 JAN C s N 10 10 10 10
2018 JAN C t Y 11 11 11 11
2018 JAN C t N 12 12 12 12
2018 FEB A p Y 789 789 789 789
2018 FEB A p N 2093874 2093874 2093874 2093874
Я попытался вычислить распределение is_p
от общей суммы, как, скажем, добавить некоторые столбцы для расчета% распределения:
%ofx_segment
= 600 + 200 + 400 + 400/600 +400 + 200 + 400 + 400 + 300 + 200 + 10 + 11 + 12.Это даст мне, сколько х вкладывается в сегмент. То же самое происходит с y, z, k - . Я умножаю ручной ввод, равный 9276581 *
%ofx_segment
, чтобы вычислить значение сегмента_x - Затем я вычисляю
%_pg
.Для сегмента A за январь 2018 года %_pg
= 600 + 200/600 + 200 + 400 + 400 - Затем я умножаю ручной ввод, полученный на шаге 2 *% pg, полученный от 3, для 'p' вpg для сегмента A
- Затем, наконец, я вычислю% is_p, я вычислю% Y или% N для p в pg для A в сегменте% Y = 600/600 + 200.
- Значение, полученное на шаге 5, должно быть умножено на результат, полученный на 4.
import pandas as pd
first=pd.read_csv('/Users/arork/Downloads/first.csv')
second=pd.read_csv('/Users/arork/Downloads/second.csv')
interested_columns=['x','y','z','k']
second=pd.read_csv('/Users/arork/Downloads/second.csv')
interested_columns=['x','y','z','k']
primeallocation=first.groupby(['year','month','pg','segment'])[['is_p']+interested_columns].apply(f)
segmentallocation=first.groupby(['year','month'])[['segment']+interested_columns].apply(g)
pgallocation=first.groupby(['year','month','segment'])[['pg']+interested_columns].apply(h)
segmentallocation['%of allocation_segment x']
np.array(second)
func = lambda x: x * np.asarray(second['x'])
segmentallocation['%of allocation_segment x'].apply(func)