・はじめに
・データセット
・object型からdateitme64ns型へ変換
・年、月、日に分割
・まとめ
はじめに
データフレームによくある年-月-日の日付。見やすくて良いのだが、実際にデータ分析をするとなると年、月、日が1個のオブジェクトになっている為扱いにくくなってしまいます。
そこで年、月、日で分割し、それぞれ新しいカラムとしてデータフレームに格納する手法を記載したいと思います。
データセット
カレーの印象が強いインドのデリー市の気象データを使います。
kaggleから取ってきました。
df = pd.read_csv('/kaggle/input/daily-climate-time-series-data/DailyDelhiClimateTest.csv')
df.head()
object型からdateitme64ns型へ変換
print(df.dtypes)
date object
meantemp float64
humidity float64
wind_speed float64
meanpressure float64
dtype: object
データフレームにある日付は、object型なのでdatetime型に変換してから、各々分割していきます。
df['date'] = pd.to_datetime(df['date'])
print(df.dtypes)
date datetime64[ns]
meantemp float64
humidity float64
wind_speed float64
meanpressure float64
dtype: object
これで、datime型に変換されました。
年、月、日に分割
import datetime as dt
#年を抽出
df['year'] = df['date'].dt.year
#月を抽出
df['month'] = df['date'].dt.month
#日を抽出
df['day'] = df['date'].dt.day
#週の初めから数えて何日目か
df['day_of_week'] = df['date'].dt.dayofweek
#年の初めから数えて何日目か
df['day_of_year'] = df['date'].dt.dayofyear
df = df.drop(['humidity','wind_speed','meanpressure'],axis=1)
df.head()
年月日に加えて、週始め、年始めから数えて何日目かも入れてみました。
時系列分析では、平日休日で周期性を掴める可能性もあるのでdayofweekとdayofyearも合わせて覚えておくと便利だと思います。
まとめ
インドのデリー市気象データを使って、日付データの年月日の分割手法を記載しました。
今回は気象データなので休日や平日は関係ないですが、売り上げ予測などで海外のデータを扱う機会があれば、hoildaysモジュールを使って日付の分割、平日休日の分割をすることができるので、時系列分析の幅が広がると思います。holidaysモジュールを使えば各国の休日を取得することが可能です。
データ分析初学者なりに日付の分割手法を記載いたしました。
ありがとうございました。
参考文献 : デリー市気象データ