下記は入力部であるdatesが与えられたとき、to_period()を用いて週単位、月単位の期間指定の範囲で出現数をカウントします。
# dates 0 2020-01-07 12:03:24+00:00 1 2020-01-10 06:50:11+00:00 2 2020-01-14 12:09:12+00:00 3 2020-01-21 11:32:37+00:00 4 2020-02-05 13:04:53+00:00 5 2020-02-15 12:36:20+00:00 6 2020-03-05 12:45:47+00:00 7 2020-03-28 04:28:11+00:00 8 2020-04-14 11:15:31+00:00 9 2020-04-25 13:12:17+00:00
def count_period(dates): dates = pd.Series(index=dates) months = dates.to_period("M").index months = months.value_counts().sort_index() weeks = dates.to_period("W").index weeks = weeks.value_counts().sort_index() return weeks, months (weeks, months) = count_period(dates) print(weeks) print(months) #weeks 2020-01-06/2020-01-12 2 2020-01-13/2020-01-19 1 2020-01-20/2020-01-26 1 2020-02-03/2020-02-09 1 2020-02-10/2020-02-16 1 2020-03-02/2020-03-08 1 2020-03-23/2020-03-29 1 2020-04-13/2020-04-19 1 2020-04-20/2020-04-26 1 #months 2020-01 4 2020-02 2 2020-03 2 2020-04 2
しかし、この実装ですと、2020-01-272020-02-02や2020-02-172020-03-01などでカウント数:0の情報が抜けてしまいます。
また、日付が2020-04-20/2020-04-26までで止まっており、それ以降~現在(先週の日曜)までの週単位、月単位の情報(カウント数:0)が漏れないようにしたいです。
最終的には下記のような結果を望みます。
#weeks 2020-01-06/2020-01-12 2 2020-01-13/2020-01-19 1 2020-01-20/2020-01-26 1 2020-01-27/2020-02-02 0 2020-02-03/2020-02-09 1 2020-02-10/2020-02-16 1 2020-02-17/2020-02-23 0 2020-02-24/2020-03-01 0 2020-03-02/2020-03-08 1 2020-03-09/2020-03-15 0 2020-03-16/2020-03-22 0 ・・・ 2020-08-31/2020-09-06 0 2020-09-07/2020-09-13 0 #months 2020-01 4 2020-02 2 2020-03 2 2020-04 2 2020-05 0 2020-06 0 2020-07 0 2020-08 0
ご教授お待ちしております!
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/22 14:09