はじめに
データ分析を実施している際に、日付や時刻といった時間の計算をするケースが多々あります。その際に用いるライブラリがdatetimeやtimeです。時系列データを扱う際にdatetimeとtimeのライブラリを多用します。時系列データの場合、データに日付が入ることが多く、それを加工・抽出するケースがあり、その際にdatetimeをよく使用します。さらに、作成したプログラムの性能評価の一つとして、コードの処理時間の計測する場合があり、その際にtimeを使用します。
本記事ではdatetimeとtimeによる日付・時間データの取得と計算の方法について紹介します。
- はじめに
- 1. datetimeによる日付・時間データの取得と生成
- 2. datetimeによる日付・時刻の計算:datetime.timdelta()
- 3. 時間データと文字列の変換
- 4. UNIX時間の取得と計算
- オススメ書籍
- スキル修得&転職
- おわりに
1. datetimeによる日付・時間データの取得と生成
1.1 現在の日付・時刻データの取得:datetime.datetime.now()
現在の日付・時刻データの取得には以下のようにdatetime.datetime.now()を用います。取得したデータは、datetime.datetime型です。
さらに、取得した日付・時刻データから年、月、日、時間、分、秒のデータを抽出するには以下の様にします。
1.2 任意の日付・時刻データの生成:datetime.datetime()
日付・時刻データの生成は以下の様にします。生成したデータは、datetime.datetime型です。
1.3 日付データの取得:datetime.datetime.today()
日付データの取得には以下のようにdatetime.datetime.today()を用います。取得したデータは、datetime.date型です。
さらに、取得した日付データから年、月、日のデータを抽出するには以下の様にします
1.4 任意の日付データの生成:datetime.date()
日付データの生成は以下の様にします。生成したデータは、datetime.date型です。
1.5 時刻データの生成:datetime.time()
時刻データの生成は以下の様にします。生成したデータは、datetime.time型です。
2. datetimeによる日付・時刻の計算:datetime.timdelta()
日付や時刻の時間差を計算するには、以下の様にデータ同士を引きます。
さらに、時間の計算は以下の様にdatetime.timdelta()で足し引きしたい値を引数にして実施することも可能です。
3. 時間データと文字列の変換
3.1 時間データから文字列への変換:strftime()
時間データから文字列への変換にはstrftime()を用います。以下の例では現在の日付・時刻データを取得して、指定した形式「〇年〇月〇日 〇 〇時:〇分:〇秒○○」の文字列に変換しています。
ここで文字列に変換する際に書式化コード(%Y、%Hなど)を用いています。これにはいくつか種類があるので以下の表にまとめます。
書式化コード | 意味 | 例 |
---|---|---|
%Y | 西暦4桁 | 2022 |
%y | 西暦下2桁 | 22 |
%m | 月(数字) | 9 |
%B | 月名 | September |
%b | 月名(省略) | Sep |
%d | 日にち | 05 |
%A | 曜日 | Friday |
%a | 曜日(省略) | Fri |
%w | 曜日(数字:10進表記) | 5 |
%H | 時(24時間表記) | 14 |
%I | 時(12時間表記) | 2 |
%p | AM or PM | PM |
%M | 分(10進表記) | 03 |
%S | 秒(10進表記) | 43 |
%f | マイクロ秒(6桁) | 317466 |
%j | 該当年における経過日 | 266 |
それでは上記の書式化コードをいくつか用いてデータを確認してみます。以下に、年、月名、時間、曜日などを示しています。
3.2 文字列から時間データへの変換:strptime()
文字列から時間データへの変換にはstrptime()を用います。第一引数に日付・時刻の文字列を、第二引数にその文字列の形式を書式化コードを用いて指定します。その形式に従って時間データに変換します。
4. UNIX時間の取得と計算
4.1 UNIX時間で現在時刻の取得:time.time()
UNIX時間で現在時刻を取得するには、time.time()を用います。
4.2 UNIX時間を非UNIX時間に変換:datetime.datetime.fromtimestamp()
UNIX時間を非UNIX時間に変換するには、datetime.datetime.fromtimestamp()を用います。
4.3 時間差・処理時間の計算
UNIX時間を取得して時間差を計算する方法を示します。この手法はコードを実行する際にどのくらいの時間がかかるか(処理時間)を計算する際に用いられることが多いです。
以下の例では、for文のループ処理の直前と直後にtime.time()でUNIX時間を取得して、その引き算を行うことで、for文の処理時間を計測しています。
オススメ書籍
Pythonによるあたらしいデータ分析の教科書
Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。
データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析
こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。
東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~
こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。
スキル修得&転職
近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。
以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
おわりに
本記事ではdatetimeとtimeによる日付・時間データの取得と計算の方法について紹介しました。時系列データを扱う際にdatetimeとtimeのライブラリを多用します。さらに4.3で示した処理時間の計測も性能評価の際に使用します。こういった意味で本記事の内容は非常に重要なので、しっかり覚えておきましょう。