Pythonで日時を扱うなら、とりあえずdatetimeモジュールを利用しよう

Pythonで日時を扱うなら、とりあえずdatetimeモジュールを利用しよう

ビジネス系のデータ分析には、時間という概念が付いて回ることが多いです。

必ずというわけではありませんが、場合によっては「時間」に関する情報を使用することもあるでしょう。

Pythonですと、datetimeモジュールを利用すると便利です。

datetimeには、以下の4つのオブジェクトがあります。

  • dateオブジェクト(日付オブジェクト)
  • timeオブジェクト(時刻オブジェクト)
  • datetimeオブジェクト(日時オブジェクト)
  • timedeltaオブジェクト(日付や時刻を計算するときに利用)

今回は、「Pythonで日時を扱うなら、とりあえずdatetimeモジュールを利用しよう」というお話しをします。

日付オブジェクト(dateオブジェクト)

現在の日付を取得してみましょう。

以下、コードです。

# ライブラリーの読み込み
from datetime import date

# 現在の日付
date1 = date.today()
print(date1)

 

以下、実行結果(実行した日時で異なります)です。

 

特定の日付をもった日付オブジェクトを作ることができます。

以下、コードです。

# 日付の設定
date2 = date(2020, 4, 30)
print(date2)

 

以下、実行結果です。

 

日付オブジェクト年・月・日の情報を取得することもできます。

以下、コードです。

print("年:",date2.year) 
print("月:",date2.month)
print("日:",date2.day)

 

以下、実行結果です。

 

日付のフォーマットを変換することもできます。

以下、yyyy/mm/ddに変換するコードです。

# フォーマット変更
date3= "{0:%Y/%m/%d}".format(date2)
print(date3)

 

以下、実行結果です。

 

時刻オブジェクト(timeオブジェクト)

日付より粒度の細かい時間を扱うときには、timeオブジェクトを使います。

時、分、秒、マイクロ秒(100万分の1秒)のレベルで扱えます。

時刻オブジェクトを作ってみます。

以下、コードです。

# ライブラリーの読み込み
from datetime import time

# 時刻の設定
time1 = time(13, 35) #時-分
time2 = time(13, 35, 17, 128234) #時-分-秒-マイクロ秒

print(time1)
print(time2)

 

以下、実行結果です。

 

時刻オブジェクト時・分・秒・マイクロ秒の情報を取得することもできます。

以下、コードです。

print("時:", time2.hour)
print("分:", time2.minute)
print("秒:", time2.second)
print("マイクロ秒:", time2.microsecond)

 

以下、実行結果です。

 

時刻のフォーマットを変換することもできます。

以下、HH-MM-SSに変換するコードです。

# フォーマット変更
time3= "{0:%H-%M-%S}".format(time1)
print(time3)

 

以下、実行結果です。

 

日時オブジェクト(datetimeオブジェクト)

日付と時刻を一緒に扱うこともあります。datetimeオブジェクトを使います。

現在の日時(日付と時刻)を取得してみましょう。

以下、コードです。

# ライブラリーの読み込み
from datetime import datetime

#現在の日時(日付と時刻)
datetime1 = datetime.now()
print(datetime1)

 

以下、実行結果(実行した日時で異なります)です。

 

特定の日時をもった日時オブジェクトを作ることができます。

以下、コードです。

# 日時の設定
datetime2 = datetime(2020, 4, 30, 16, 20, 43)
print(datetime2)

 

以下、実行結果です。

 

日時オブジェクト年・月・日・時・分・秒・マイクロ秒の情報を取得することもできます。

以下、コードです。

print("年:", datetime1.year) 
print("月:", datetime1.month)
print("日:", datetime1.day) 
print("時:", datetime1.hour)
print("分:", datetime1.minute)
print("秒:", datetime1.second)
print("マイクロ秒:", datetime1.microsecond)

 

以下、実行結果です。

 

日時のフォーマットを変換することもできます。

以下、yyyy/mm/dd HH-MM-SSに変換するコードです。

# フォーマット変更
datetime3 = "{0:%Y/%m/%d %H-%M-%S}".format(datetime1)
print(datetime3)

 

以下、実行結果です。

 

timedeltaオブジェクトを使い日付や時刻を計算する

ビジネス系のデータ分析をしていると、日付や時刻の足し算引き算などの処理が必要になる場面もあります。

timedeltaオブジェクトを使います。

日付オブジェクト(dateオブジェクト)や時刻オブジェクト(timeオブジェクト)、日時オブジェクト(datetimeオブジェクト)を足したり引いたりしても生成されます。

2021年12月31日と現在の日付の差分を計算してみます。

以下、コードです。

# ライブラリーの読み込み
from datetime import date
from datetime import timedelta

# 日付の設定
date1 = date.today()
date2 = date(2021, 12, 31)

# 日付の引き算
date3 = date2 - date1
print(date3)

 

以下、実行結果です。

 

次に、先に差分を設定し、その差分を日付に足していたいと思います。

以下、コードです。

# 日付の差分設定
diff_day = timedelta(days=25)

# 日付を足す
date4 = date2 + diff_day
print(date4)

 

以下、実行結果です。

 

timedelta(days=25)の「days」(日)の個所を変えることで、時(hours)分(minutes)などの差分にすることができます。

便利なことに、週(weeks)も可能です。

以下、コードです。

# 日付の差分設定
diff_week = timedelta(weeks=-1)

# 日付を足す
date5 = date2 + diff_week
print(date5)

 

以下、実行結果です。

 

2021年12月31日の1週間前の日付(2021年12月24日)になっています。

文字列変換

ビジネス系のデータ分析をしていると、日付型を文字列型に変換したり、文字列型を日付型に変換することが、たまにあると思います。

日付型→文字列型

日付型から文字列型へ変換するときは、strftimeを使います。

以下、コードです。

# ライブラリーの読み込み
from datetime import datetime

# 現在の日時
datetime1 = datetime.now()
datetime2 = datetime1.strftime('%Y-%m-%d %H:%M:%S')
print(datetime2)

# 型の確認
print(type(datetime1))
print(type(datetime2))

 

以下、実行結果です。

 

文字列型→日付型

文字列型から日付型へ変換するときは、strptimeを使います。

以下、コードです。

# ライブラリーの読み込み
from datetime import datetime

# 現在の日時
datetime3 = '2021-04-16'
datetime4 = datetime.strptime(datetime3, '%Y-%m-%d')
print(datetime4)

# 型の確認
print(type(datetime3))
print(type(datetime4))

 

以下、実行結果です。

 

まとめ

今回は、Pythonのdatetimeモジュールを使った、日付や時刻、日時の簡単な扱い方について説明しました。

ビジネス系のデータ分析では、「時間」に関する情報を使用することもあるでしょう。

そのときに使用してみてください。