🗓️

Python 週番号取得で気をつけること (Week Number in Python)

2023/01/04に公開

Python を利用した週次レポートを作成していました。
しかし、年跨ぎを考慮しておらずデータ分析に支障が出たため修正した内容を記録に残しておきます。

ポイントとしては、2023年1月1日を

  • 2023年 第00週としてデータ分析する
  • 2022年 第52週としてデータ分析する

かです。自分は後者の 2023年1月1日は2022年 第52週としてデータ分析する 必要がありました。

Jan 1st 2023 is 52nd week of 2022 or 0th week of 2023?
I need to analysis data using Jan 1st 2023 as 52nd week of 2022.

週番号取得 - Week Number

変更前 before

import datetime
testDate = datetime.datetime(2023, 1, 1)
testDate.strftime('%W')
'00'

参考文献

変更後 after

import datetime
testDate = datetime.datetime(2023, 1, 1)
str(testDate.isocalendar()[1]).zfill(2)
'52'

testDate.isocalendar() の実行結果は (2022, 52, 7) となるので、週番号を取得するために [1]を追加。さらに、文字列へ変換して、0 で padding をする。

testDate.isocalendar() is (2022, 52, 7). Thus add [1] for getting week number. And convert to str and padding using 0.

参考文献

pandas を利用しての一括変換

これらの週番号取得を pandas の dataframe で一括で変更はできないらしくエラーが出る。
そのため、apply 関数を利用してデータ処理を行う。

When I process to dataframe fo pandas, I need to use apply function.

def addWeekNumber(row):
    row["week"] = str(row['date'].isocalendar()[0]) + ' Week ' + str(row['date'].isocalendar()[1]).zfill(2)
    return row
_df = _df.apply(addWeekNumber, axis=1)

参考文献

シンギュラリティ・ソサエティ

Discussion