この記事では、Pythonの基本的なモジュールを使って、日付から曜日を取得する方法をわかりやすく解説します。
具体的には、datetime
オブジェクトやdate
オブジェクトを使った方法、曜日を文字列で取得する方法、そして実際のコード例を紹介します。
さらに、データ分析ライブラリのpandasを使った応用的な方法や、カスタム関数を使った曜日の取得方法もカバーします。
曜日を取得する方法
Pythonでは、日付から曜日を取得するためにいくつかの方法があります。
ここでは、datetime
モジュールを使った方法と、date
オブジェクトを使った方法について詳しく解説します。
datetimeオブジェクトから曜日を取得する
datetime
モジュールは、日付と時間を扱うための標準ライブラリです。
このモジュールを使うことで、簡単に曜日を取得することができます。
weekday()メソッドの使い方
weekday()メソッド
は、曜日を0から6の整数で返します。
0が月曜日、6が日曜日です。
以下に例を示します。
import datetime
# 現在の日付と時刻を取得
now = datetime.datetime.now()
# 曜日を取得
weekday = now.weekday()
print(f"今日の曜日(0=月曜日, 6=日曜日): {weekday}")
このコードを実行すると、今日の曜日が0から6の整数で表示されます。
isoweekday()メソッドの使い方
isoweekday()メソッド
は、曜日を1から7の整数で返します。
1が月曜日、7が日曜日です。
以下に例を示します。
import datetime
# 現在の日付と時刻を取得
now = datetime.datetime.now()
# 曜日を取得
isoweekday = now.isoweekday()
print(f"今日の曜日(1=月曜日, 7=日曜日): {isoweekday}")
このコードを実行すると、今日の曜日が1から7の整数で表示されます。
dateオブジェクトから曜日を取得する
date
オブジェクトは、日付のみを扱うためのオブジェクトです。
datetime
モジュールの一部として提供されています。
dateオブジェクトの作成方法
まず、date
オブジェクトを作成する方法を見てみましょう。
以下の例では、特定の日付のdate
オブジェクトを作成します。
import datetime
# 特定の日付のdateオブジェクトを作成
specific_date = datetime.date(2023, 10, 1)
print(f"特定の日付: {specific_date}")
このコードを実行すると、指定した日付が表示されます。
weekday()メソッドの使い方
date
オブジェクトでも、weekday()メソッド
を使って曜日を取得することができます。
以下に例を示します。
import datetime
# 特定の日付のdateオブジェクトを作成
specific_date = datetime.date(2023, 10, 1)
# 曜日を取得
weekday = specific_date.weekday()
print(f"特定の日付の曜日(0=月曜日, 6=日曜日): {weekday}")
このコードを実行すると、指定した日付の曜日が0から6の整数で表示されます。
isoweekday()メソッドの使い方
date
オブジェクトでも、isoweekday()メソッド
を使って曜日を取得することができます。
以下に例を示します。
import datetime
# 特定の日付のdateオブジェクトを作成
specific_date = datetime.date(2023, 10, 1)
# 曜日を取得
isoweekday = specific_date.isoweekday()
print(f"特定の日付の曜日(1=月曜日, 7=日曜日): {isoweekday}")
このコードを実行すると、指定した日付の曜日が1から7の整数で表示されます。
以上が、datetime
オブジェクトとdate
オブジェクトを使って曜日を取得する方法です。
これらのメソッドを使うことで、簡単に日付から曜日を取得することができます。
曜日を文字列で取得する方法
Pythonでは、日付から曜日を文字列として取得する方法もあります。
特に、曜日を「月曜日」や Tuesday
といった形式で表示したい場合に便利です。
このセクションでは、strftime()メソッド
を使った方法と、曜日を日本語で表示する方法について解説します。
strftime()メソッドの使い方
strftime()メソッド
は、日付や時間を指定した形式の文字列に変換するためのメソッドです。
曜日を文字列で取得するには、%A
や%a
といったフォーマットコードを使用します。
フォーマット指定子 | 説明 |
---|---|
%A | 曜日をフルスペルで表示 (例: Monday, Tuesday) |
%a | 曜日を省略形で表示 (例: Mon, Tue) |
以下に、strftime()メソッド
を使って曜日を文字列で取得する例を示します。
from datetime import datetime
# 現在の日付と時刻を取得
now = datetime.now()
# 曜日をフルスペルで表示
full_weekday = now.strftime("%A")
print("Full Weekday:", full_weekday) # 例: Full Weekday: Monday
# 曜日を省略形で表示
short_weekday = now.strftime("%a")
print("Short Weekday:", short_weekday) # 例: Short Weekday: Mon
曜日を日本語で表示する方法
Pythonの標準ライブラリでは、曜日を日本語で直接表示する機能はありません。
しかし、辞書を使って英語の曜日を日本語に変換することができます。
曜日を日本語に変換する辞書の作成
まず、英語の曜日を日本語に変換するための辞書を作成します。
以下のように、英語の曜日をキー、日本語の曜日を値とする辞書を定義します。
# 英語の曜日を日本語に変換する辞書
weekday_dict = {
"Monday": "月曜日",
"Tuesday": "火曜日",
"Wednesday": "水曜日",
"Thursday": "木曜日",
"Friday": "金曜日",
"Saturday": "土曜日",
"Sunday": "日曜日"
}
辞書を使った曜日の表示方法
次に、strftime()メソッド
で取得した英語の曜日を、先ほど作成した辞書を使って日本語に変換します。
from datetime import datetime
# 現在の日付と時刻を取得
now = datetime.now()
# 曜日をフルスペルで取得
english_weekday = now.strftime("%A")
# 英語の曜日を日本語に変換
japanese_weekday = weekday_dict[english_weekday]
print("Japanese Weekday:", japanese_weekday) # 例: Japanese Weekday: 月曜日
このようにして、Pythonを使って日付から曜日を文字列で取得し、それを日本語で表示することができます。
これにより、ユーザーにとってより親しみやすい形式で曜日を表示することが可能になります。
実践例
ここでは、実際にPythonを使って日付から曜日を取得する具体的な例を紹介します。
基本的な使い方を理解した上で、実際のコードを見ていきましょう。
現在の日付から曜日を取得する
まずは、現在の日付から曜日を取得する方法を見てみましょう。
Pythonのdatetime
モジュールを使うと、簡単に現在の日付を取得できます。
import datetime
# 現在の日付を取得
today = datetime.datetime.today()
# 曜日を取得 (0:月曜日, 6:日曜日)
weekday = today.weekday()
# 曜日を表示
print("今日は", weekday, "曜日です。")
このコードを実行すると、現在の日付の曜日が数値で表示されます。
例えば、月曜日なら0、日曜日なら6が表示されます。
任意の日付から曜日を取得する
次に、任意の日付から曜日を取得する方法を見てみましょう。
datetime
モジュールを使って特定の日付を作成し、その日付の曜日を取得します。
import datetime
# 任意の日付を作成 (例: 2023年10月1日)
specific_date = datetime.datetime(2023, 10, 1)
# 曜日を取得 (0:月曜日, 6:日曜日)
weekday = specific_date.weekday()
# 曜日を表示
print("2023年10月1日は", weekday, "曜日です。")
このコードを実行すると、指定した日付の曜日が数値で表示されます。
例えば、2023年10月1日が日曜日なら6が表示されます。
ユーザー入力の日付から曜日を取得する
最後に、ユーザーが入力した日付から曜日を取得する方法を見てみましょう。
input関数
を使ってユーザーから日付を入力してもらい、その日付の曜日を取得します。
import datetime
# ユーザーから日付を入力してもらう
date_input = input("日付を入力してください (例: 2023-10-01): ")
# 入力された日付をdatetimeオブジェクトに変換
input_date = datetime.datetime.strptime(date_input, "%Y-%m-%d")
# 曜日を取得 (0:月曜日, 6:日曜日)
weekday = input_date.weekday()
# 曜日を表示
print(date_input, "は", weekday, "曜日です。")
このコードを実行すると、ユーザーが入力した日付の曜日が数値で表示されます。
例えば、ユーザーが 2023-10-01
と入力すると、その日付の曜日が表示されます。
以上が、Pythonを使って日付から曜日を取得する実践例です。
これらの方法を使えば、さまざまなシチュエーションで日付から曜日を簡単に取得することができます。
応用編
pandasを使った曜日の取得
Pythonのデータ分析ライブラリであるpandasを使うと、日付データの操作が非常に簡単になります。
ここでは、pandasを使って曜日を取得する方法を解説します。
pandasのインストール方法
まず、pandasがインストールされていない場合は、以下のコマンドを使ってインストールします。
pip install pandas
pandasで日付データを扱う方法
pandasでは、pd.to_datetime()関数
を使って日付データを扱うことができます。
以下はその基本的な使い方です。
import pandas as pd
# 日付データを文字列から変換
date_series = pd.to_datetime(['2023-10-01', '2023-10-02', '2023-10-03'])
print(date_series)
このコードを実行すると、以下のような出力が得られます。
DatetimeIndex(['2023-10-01', '2023-10-02', '2023-10-03'], dtype='datetime64[ns]', freq=None)
pandasで曜日を取得する方法
pandasでは、dt
アクセサを使って曜日を取得することができます。
以下にその例を示します。
import pandas as pd
# 日付データを文字列から変換
date_series = pd.to_datetime(['2023-10-01', '2023-10-02', '2023-10-03'])
# 曜日を取得
weekdays = date_series.dt.day_name()
print(weekdays)
このコードを実行すると、以下のような出力が得られます。
Index(['Sunday', 'Monday', 'Tuesday'], dtype='object')
カスタム関数を使った曜日の取得
特定のフォーマットや条件に基づいて曜日を取得したい場合、カスタム関数を作成することが有効です。
カスタム関数の作成方法
以下に、日付を入力として受け取り、曜日を日本語で返すカスタム関数の例を示します。
import datetime
def get_weekday_japanese(date):
# 曜日を日本語に変換する辞書
weekdays_japanese = {
0: '月曜日',
1: '火曜日',
2: '水曜日',
3: '木曜日',
4: '金曜日',
5: '土曜日',
6: '日曜日'
}
# 曜日を取得
weekday = date.weekday()
return weekdays_japanese[weekday]
カスタム関数の利用例
上記のカスタム関数を使って、特定の日付の曜日を取得する方法を示します。
import datetime
# カスタム関数の定義(前述のコードを使用)
def get_weekday_japanese(date):
weekdays_japanese = {
0: '月曜日',
1: '火曜日',
2: '水曜日',
3: '木曜日',
4: '金曜日',
5: '土曜日',
6: '日曜日'
}
weekday = date.weekday()
return weekdays_japanese[weekday]
# 任意の日付を指定
date = datetime.date(2023, 10, 1)
weekday_japanese = get_weekday_japanese(date)
print(f"{date}は{weekday_japanese}です。")
このコードを実行すると、以下のような出力が得られます。
2023-10-01は日曜日です。
このように、カスタム関数を使うことで、特定のフォーマットや条件に基づいて曜日を取得することができます。