Средний / Новичок Python пользователь здесь.Мне нужно выяснить, как рассчитать годовые веса и средневзвешенные значения на основе некоторых данных фондового рынка, которые я проанализировал во фреймах данных.
У меня есть рыночные значения и даты из некоторого интервала 2003-2018 гг., Которые даются примерно так (намного больше значений, чем показывает этот фрагмент):
ticker date marketcap open high low close
A 2003-03-31 8466487038.0 13.38 13.47 13.0 13.15
A 2003-06-30 11273789220.5 19.5 19.76 19.46 19.55
AA 2017-03-31 6031414196.0 34.06 34.74 33.6 34.4
AA 2017-06-30 6426297428.0 33.16 33.45 32.535 32.65
ICE 2016-03-31 29363680289.5 46.396 47.184 46.242 47.028
ICE 2016-06-30 31796255816.0 50.602 51.349 50.321 51.192
Я просто хочу взять годовой вес для каждой рыночной тикера.
Т.е.:
Weight(YEAR) = AVGTickerMarketCap(YEAR) / AllTickersMarketCap(YEAR)
Поскольку каждый год для marketcap существует более одного значения, мне нужно в среднем рассчитывать сначала значение marketcap за 2003, 2004, 2005 ... и т. Д. Для каждого тикера - отсюда AVGTickerMarketCap (YEAR).
Я могу только выяснить, как несколько вычислить AllTickersMarketCap (ГОД):
df1['date'] = pd.to_datetime(df1.date)
avg_all = df1.groupby(df1.date.dt.year['marketcap'].transform('mean')
Но, похоже, для этого используется только первый тикер "A" и применяется то же самое среднее значение для "A""каждый год, независимо от их тикера.
Где проблема и как мне тогда найти AVGTickerMarketCap (YEAR)?