🗓️
Python 週番号取得で気をつけること (Week Number in Python)
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'
参考文献
- Pythonのdatetimeで日付や時間と文字列を変換(strftime, strptime)
https://note.nkmk.me/python-datetime-usage/
変更後 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.
参考文献
- Pythonでいろいろな週始まりのウィークナンバー(週番号)を取得してみる
https://dev.classmethod.jp/articles/python_week_numbers/
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)
参考文献
- 【Pandas】データフレームの1行ごとに複雑な処理を実行する -apply()
https://www.learning-nao.com/?p=3453
人工知能を活用したアプリケーションやサービスを活用し、内発的動機付けで行動するエンジニア、起業家、社会起業家をサポートするコミュニティーです。 singularitysociety.org
Discussion