Неделя за неделей, день за днем ​​и расчеты за год на Pandas DF - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть следующий фрейм данных на дневном уровне:

    BillDate    S2Rate
4   2019-06-04  4686.5
3   2019-06-03  1557.5
2   2019-05-21  10073.5
1   2019-05-19  6501.5
0   2019-05-18  1378.0

Я хочу рассчитать процент WoW, увеличение или уменьшение WoW, используя эти данные. Как мне это сделать?

Кроме того, как мне повторить это в годовом сопоставлении и в день в день?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Установить BillDate в качестве индекса после приведения его к дате / времени

df.set_index(pd.to_datetime(df['BillDate']), inplace=True)
df

Избавьтесь от BillDate из столбцов теперь, когда вы переместили его в индекс

df.drop(columns=['BillDate'], inplace=True)

Resample к требуемому периоду, подсчитайте сумму и процентное изменение

df.resample('W')['S2Rate'].sum().pct_change().to_frame()

Обратите внимание на повторную выборку работ, взяв последнее значение в периоде.

'W' -установка даты до воскресенья

'M' - установка даты до последней даты месяца

0 голосов
/ 12 апреля 2020

Вы должны использовать resample . Затем вы можете использовать такие функции, как pct_change и diff , чтобы получить различия:

# df["BillDate"] = pd.to_datetime(df["BillDate"])

week_over_week = df.set_index("BillDate").resample("W").sum()
week_over_week_pct = week_over_week.pct_change()
week_over_week_increase = week_over_week.diff()

Вы можете заменить параметр для resample на "D" для дня в течение дня, "Y" для года в течение года и многие другие варианты для более сложных временных интервалов.

...