Мне нужна помощь со следующим, пожалуйста, и спасибо заранее.
У меня есть следующий код для группировки по неделям:
weekdf = pd.DataFrame(df.groupby(['type', pd.Grouper(key='date', freq='W-SAT')])['id'].count())
Это дает мне следующее df:
type date id
expired 2019-11-09 62
2019-11-16 87
2019-11-23 26
multi 2019-11-09 10
2019-11-16 14
2019-11-23 8
single 2019-11-09 296
2019-11-16 300
2019-11-23 230
Мне бы хотелось, чтобы у меня был df, который дает мне еженедельный процент от общего числа.
Что-то вроде ...
процентов = в неделю, считай / сумма просроченных, нескольких и одиночных идентификаторов:
type date id percent
expired 2019-11-09 62 16.85%
2019-11-16 87 21.70%
2019-11-23 26 9.85%
multi 2019-11-09 10 2.72%
2019-11-16 14 3.49%
2019-11-23 8 3.03%
single 2019-11-09 296 80.43%
2019-11-16 300 74.81%
2019-11-23 230 87.12%
Спасибо за помощь!
Код для воспроизведения кадра данных:
l = [{'type': 'expired', 'date': '09-11-2019', 'id': 62},
{'type': 'expired', 'date': '16-11-2019', 'id': 87},
{'type': 'expired', 'date': '23-11-2019', 'id': 26},
{'type': 'multi', 'date': '09-11-2019', 'id': 10},
{'type': 'multi', 'date': '16-11-2019', 'id': 14},
{'type': 'multi', 'date': '23-11-2019', 'id': 8},
{'type': 'single', 'date': '09-11-2019', 'id': 296},
{'type': 'single', 'date': '16-11-2019', 'id': 300},
{'type': 'single', 'date': '23-11-2019', 'id': 230}]
weekdf = pd.DataFrame(l)
weekdf['date'] = pd.to_datetime(weekdf['date'])
weekdf = weekdf.set_index(['type','date'])
print(weekdf)