みなさん、こんにちは。
前回は表計算ファイルのセルに記入された日時から曜日を判別する方法を紹介しましたが、今回は、CSVファイルに記入された日時から曜日を判別する方法を紹介したいと思います。
表計算ファイルとCSVファイルの違い
表計算ファイルに日付を記入すると、同じデータであっても書式に設定によって、いろいろな表現が出来ます。このように出来るのは、入力されたデータが日付であることが認識されているからなのです。
下記はCSVファイルを表計算ソフトで開いた場合ですが、上記と同じように見えます。しかし、CSVはテキストファイルなので、データ上は文字列として認識されます。
表計算ファイルでは日付として認識され、CSVファイルとしては文字列として認識されるということは、PYTHONにおいてもCSVファイルの5月25日は文字列として扱われるのです。
曜日を判別するには取得した文字列を日付に変更する必要が出てきます。
ソースコード
は、ソースコードを見ていきましょう。
import pandas as pd
from datetime import datetime as dt
file_a = "C:/Labo/test-weekday.csv"
df = pd.read_csv(file_a, header=None)
newdate = dt.strptime(df.iat[0, 0], '%m月%d日')
newdate2 = newdate.replace(year=2022)
print(newdate2.weekday())
1,2行目 ライブラリの呼び出し
表計算ファイルを読み込むので、pandasを使用します。そして、日付などを扱うライブラリdatetimeも使用します。
5、6行目 CSVファイルの読み込み
file_a は、実際に読み込むCSVファイルです。絶対パスを含めて定義して下さい。
9,10行目 日付の変換
df.iat[0, 0]はCSVファイルの最初の要素となる「5月25日」となります。5月25日と読み込んだとしても、文字列として扱われるため、文字列を日付に変更する strptimeを実行します。
この時、西暦が入っていないので、下記の日付として認識されます。
1900-05-25 00:00:00
曜日変更する為に正確な西暦に変換する必要があります。下記の関数を実行して、2022年に変更します。これで設定したい日付になりました。
newdate.replace(year=2022)
2が出力されます。月曜日は0,日曜日は6に対応するのでなので、水曜日ということになります。
2
日本語で曜日出力
日本語で曜日出力したい場合は、日本語の曜日のリストを事前に定義しておけば出来ます。
import pandas as pd
from datetime import datetime as dt
weekday = ["月", "火", "水", "# 木", "金", "土", "日"]
file_a = "C:/Labo/test-weekday.csv"
df = pd.read_csv(file_a, header=None)
newdate = dt.strptime(df.iat[0, 0], '%m月%d日')
newdate2 = newdate.replace(year=2022)
print(weekday[newdate2.weekday()])
出力結果は下記になります。
水
英語も同様にすればいいですよね。
まとめ
いかだったでしょうか。
CSVファイルの場合は文字列として認識されるので、日付型に変換する必要があるので覚えておいてくださいね。
「役に立った!」と思れましたら、下のSNSボタンで記事のシェアをしていただけると嬉しいです!
コメント