はじめに
サイトのアクセス解析をするときには、通常、Google AnalyticsやAdobe Analyticsのような専用のツールを使うことが多いでしょう。(私はAdobe Analyticsは使ったことはありませんが)
いろんなツールを駆使するデジタルマーケティングでは、WebPageのアクセスログも含め、いろんなデータに触れることになります。そんなときにPythonで処理するうえで、知っておくと便利な日付を処理する方法を扱います。
データの準備
データを読み込んだのはよいけれど、日付をうまく処理できなかった、ということはありませんか?ここでは「文字列として読み込まれた日付」を「日付型」として扱う方法を紹介します。
たとえば、次のようなデータです。
df1=pd.DataFrame({'受注日':['2019/9/1 9:36:11','2019/9/2 10:22:42','2019/10/3 11:36:12',
'2019/10/5 15:45:42','2019/11/15 13:32:56','2019/11/23 11:32:43'],
'お客様名':['●×興行株式会社','△〇銀行','□□株式会社',
'有限会社×〇','〇〇病院','株式会社×△'],
'受注金額':[202000,186400,345600,98760,663220,405000],
'営業名':['営業 一郎','山田 太郎','茨城 一郎','東京 次郎',
'埼玉 三郎','山田 太郎']})
このデータと各列の型をみてみると、受注日は「object」として読み込まれています。
df1.info()
日付型に変換する
ここではpythonの標準ライブラリであるdatetimeを使う方法をご紹介します。 文字列から日付型への変換は、strptime()メソッドを使います。まずは、ライブラリを読み込み、簡単な例を掲載しておきます。
import datetime as dt
dt.datetime.strptime(df1['受注日'][0],'%Y/%m/%d %H:%M:%S')
元の文字列に対応する書式化文字列を指定する必要があります。データフレームのある列(今回の例では「受注日」)全体に適用するのであれば、関数を定義しておくと扱いやすいでしょう。
関数の定義とデータフレームへの適用
まずは関数の定義です。ここではchange_dateとしておきましょう。この関数をデータフレームの各列に適用するには、次のようにします。
change_date=lambda x:dt.datetime.strptime(x,'%Y/%m/%d %H:%M:%S')
df1['受注日']=[change_date(x) for x in df1['受注日']]
このコードの適用後にあらためて、データフレーム全体の情報を見てみると、次のように、object型だった「受注日」がdatetime型に変換されています。
さてこのように日付型にしておくと、何が便利なのでしょうか?たとえば、次のように日付を条件に指定することができます。
# 9月のデータのみを抽出
df1[df1['受注日'].dt.month==9]
まとめ
いかがでしたでしょうか?今回は、object型として取り込まれた日時情報を「日付型」に変換して扱う方法を扱いました。
python標準ライブラリのdatetimeを読み込んで、strptime()メソッドを使うことでこれを実現できます。strptime()メソッドでは、 元の文字列に対応する書式化文字列を指定することを覚えておいてください。
コメント