0
2

python 年-月-日を分ける

Posted at

・はじめに
・データセット
・object型からdateitme64ns型へ変換
・年、月、日に分割
・まとめ

はじめに

データフレームによくある年-月-日の日付。見やすくて良いのだが、実際にデータ分析をするとなると年、月、日が1個のオブジェクトになっている為扱いにくくなってしまいます。

そこで年、月、日で分割し、それぞれ新しいカラムとしてデータフレームに格納する手法を記載したいと思います。

データセット

カレーの印象が強いインドのデリー市の気象データを使います。
kaggleから取ってきました。

df = pd.read_csv('/kaggle/input/daily-climate-time-series-data/DailyDelhiClimateTest.csv')
df.head()

2023-09-10 11.37のイメージ.jpeg

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も合わせて覚えておくと便利だと思います。

2023-09-10 11.53のイメージ.jpeg

まとめ

インドのデリー市気象データを使って、日付データの年月日の分割手法を記載しました。
今回は気象データなので休日や平日は関係ないですが、売り上げ予測などで海外のデータを扱う機会があれば、hoildaysモジュールを使って日付の分割、平日休日の分割をすることができるので、時系列分析の幅が広がると思います。holidaysモジュールを使えば各国の休日を取得することが可能です。

データ分析初学者なりに日付の分割手法を記載いたしました。
ありがとうございました。
参考文献 : デリー市気象データ

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2