[Python] 文字列を日付型に変換する方法を解説
Pythonでは、文字列を日付型に変換するためにdatetimeモジュールを使用します。
特にdatetime.strptime()関数が便利で、文字列とそのフォーマットを指定することでdatetimeオブジェクトに変換できます。
例えば、文字列\”2023-10-15\”を日付型に変換するには、datetime.strptime("2023-10-15", "%Y-%m-%d")と記述します。
この方法を使うことで、様々なフォーマットの文字列を簡単に日付型に変換することが可能です。
文字列を日付型に変換する方法
Pythonでは、文字列を日付型に変換するために、主にdatetimeモジュールのstrptime関数を使用します。
この関数を使うことで、特定のフォーマットに従った文字列を日付型に変換することができます。
strptime関数の使い方
strptime関数は、文字列とそのフォーマットを引数に取り、対応するdatetimeオブジェクトを返します。
基本的な使い方は以下の通りです。
from datetime import datetime
# 文字列を日付型に変換
date_string = "2023-10-01 14:30:00"
date_format = "%Y-%m-%d %H:%M:%S"
date_object = datetime.strptime(date_string, date_format)
print(date_object)このコードを実行すると、2023-10-01 14:30:00という文字列がdatetimeオブジェクトに変換され、出力されます。
strptime関数のフォーマット指定子
strptime関数では、文字列のフォーマットを指定するために、いくつかの指定子を使用します。
以下に主要な指定子を示します。
| 指定子 | 説明 | 例 |
|---|---|---|
| %Y | 4桁の年 | 2023 |
| %y | 2桁の年 | 23 |
| %m | 2桁の月(01-12) | 10 |
| %d | 2桁の日(01-31) | 01 |
| %H | 24時間制の時間(00-23) | 14 |
| %M | 分(00-59) | 30 |
| %S | 秒(00-59) | 00 |
その他の指定子
%a: 曜日の省略名(例: Mon)%A: 曜日のフル名(例: Monday)%b: 月の省略名(例: Oct)%B: 月のフル名(例: October)
例: 基本的な文字列から日付への変換
以下の例では、シンプルな日付文字列をdatetimeオブジェクトに変換します。
from datetime import datetime
# 基本的な日付文字列
date_string = "2023-10-01"
date_format = "%Y-%m-%d"
date_object = datetime.strptime(date_string, date_format)
print(date_object)このコードを実行すると、2023-10-01という文字列がdatetimeオブジェクトに変換され、出力されます。
例: 複雑なフォーマットの文字列から日付への変換
複雑なフォーマットの文字列を変換する例を示します。
from datetime import datetime
# 複雑な日付文字列
date_string = "01-Oct-2023 14:30:00"
date_format = "%d-%b-%Y %H:%M:%S"
date_object = datetime.strptime(date_string, date_format)
print(date_object)このコードを実行すると、01-Oct-2023 14:30:00という文字列がdatetimeオブジェクトに変換され、出力されます。
pandasを使った文字列の変換
Pythonのデータ分析ライブラリであるpandasを使用すると、文字列を日付型に変換する作業が非常に簡単になります。
pandasのto_datetime関数を使うことで、さまざまなフォーマットの文字列を効率的に日付型に変換できます。
pandasのインポート方法
まず、pandasを使用するためには、ライブラリをインポートする必要があります。
以下のようにインポートします。
import pandas as pdto_datetime関数の使い方
to_datetime関数は、文字列やリスト、シリーズを日付型に変換するための関数です。
基本的な使い方は以下の通りです。
import pandas as pd
# 文字列を日付型に変換
date_string = "2023-10-01"
date_object = pd.to_datetime(date_string)
print(date_object)このコードを実行すると、2023-10-01という文字列がTimestampオブジェクトに変換され、出力されます。
例: シンプルな文字列から日付への変換
以下の例では、シンプルな日付文字列をto_datetime関数を使って変換します。
import pandas as pd
# シンプルな日付文字列
date_string = "2023-10-01"
date_object = pd.to_datetime(date_string)
print(date_object)このコードを実行すると、2023-10-01がTimestampオブジェクトに変換され、出力されます。
例: 複雑なフォーマットの文字列から日付への変換
複雑なフォーマットの文字列を変換する例を示します。
import pandas as pd
# 複雑な日付文字列
date_string = "01-Oct-2023 14:30:00"
date_object = pd.to_datetime(date_string, format="%d-%b-%Y %H:%M:%S")
print(date_object)このコードを実行すると、01-Oct-2023 14:30:00という文字列がTimestampオブジェクトに変換され、出力されます。
to_datetime関数は、フォーマットを指定することで、より複雑な日付文字列にも対応できます。
応用例
文字列を日付型に変換した後は、さまざまな操作が可能です。
ここでは、日付型データの操作やフィルタリング、グルーピングなどの応用例を紹介します。
日付型に変換したデータの操作
日付型データを操作することで、データ分析や処理がより効率的に行えます。
日付の加算・減算
日付型データに対して、日数や時間を加算・減算することができます。
以下の例では、日付に7日を加算する方法を示します。
from datetime import datetime, timedelta
# 日付型データ
date_object = datetime.strptime("2023-10-01", "%Y-%m-%d")
# 7日加算
new_date = date_object + timedelta(days=7)
print(new_date)このコードを実行すると、2023-10-08という新しい日付が出力されます。
日付の比較
日付型データ同士を比較することも可能です。
以下の例では、2つの日付を比較します。
from datetime import datetime
# 日付型データ
date1 = datetime.strptime("2023-10-01", "%Y-%m-%d")
date2 = datetime.strptime("2023-10-15", "%Y-%m-%d")
# 比較
if date1 < date2:
print("date1はdate2より前の日付です。")
else:
print("date1はdate2より後の日付です。")このコードを実行すると、date1はdate2より前の日付です。と出力されます。
日付型データのフォーマット変更
日付型データのフォーマットを変更するには、strftimeメソッドを使用します。
以下の例では、日付を異なるフォーマットで表示します。
from datetime import datetime
# 日付型データ
date_object = datetime.strptime("2023-10-01", "%Y-%m-%d")
# フォーマット変更
formatted_date = date_object.strftime("%d/%m/%Y")
print(formatted_date)このコードを実行すると、01/10/2023というフォーマットに変換されて出力されます。
日付型データのフィルタリング
日付型データをフィルタリングすることで、特定の条件に合ったデータを抽出できます。
以下の例では、特定の日付以降のデータをフィルタリングします。
import pandas as pd
# 日付型データのシリーズ
date_series = pd.Series(pd.to_datetime(["2023-09-30", "2023-10-01", "2023-10-02"]))
# フィルタリング
filtered_dates = date_series[date_series > "2023-10-01"]
print(filtered_dates)このコードを実行すると、2023-10-02という日付が出力されます。
日付型データのグルーピング
日付型データを使ってデータをグルーピングすることも可能です。
以下の例では、日付を基にデータをグルーピングします。
import pandas as pd
# 日付型データのシリーズ
data = {
"date": pd.to_datetime(["2023-10-01", "2023-10-01", "2023-10-02"]),
"value": [10, 20, 30]
}
df = pd.DataFrame(data)
# 日付でグルーピング
grouped = df.groupby("date").sum()
print(grouped)このコードを実行すると、日付ごとの合計値が出力されます。
例えば、2023-10-01の日付に対して、合計値が30となります。
まとめ
この記事では、Pythonにおける文字列を日付型に変換する方法について詳しく解説しました。
strptime関数やpandasのto_datetime関数を使った基本的な変換方法から、日付型データの操作や応用例まで幅広く紹介しました。
日付型データの扱いに自信を持ち、実際のデータ分析や処理に活用してみてください。