This post is also available in: English-US (英語)
python のライブラリ pandasを使っての日付(numpy.datetime64 フォーマット)の取得・変換についてのメモです。
numpy.datetime64フォーマットから、年・月・日などを抽出する際に便利です。
Contents
numpyの空配列から作成したdatetime64をpandasを使って変換したい場合
空のnumpy配列(np.empty)から作成したnumpy.datetime64を、pandasを使って日付を取得・変換したいんだ!...という場合のサンプルコードです。
以下のコード中のpd.to_datetime()でpandasのTimestamp型になりますのでpandasのメソッドを適用することができます。詳細は以下のサイトを参考にしてみてください。
pandas.Timestamp — pandas 0.23.4 documentation
#!/usr/bin/env python # -*- coding: utf-8 -*- import pandas as pd import numpy as np date_df = np.empty(2, dtype='datetime64[ns]') date_df[0] = np.datetime64('2016-09-29T00:00:00.000000000') date_df[1] = np.datetime64('2016-09-28T00:00:00.000000000') # Convert data by pandas date_df = pd.to_datetime(date_df) # print print type(date_df) # <class 'pandas.core.indexes.datetimes.DatetimeIndex'> print type(date_df[0]) # <class 'pandas._libs.tslib.Timestamp'> print date_df # DatetimeIndex(['2016-09-29', '2016-09-28'], dtype='datetime64[ns]', freq=None) print str(date_df[0].day) # 29 print str(date_df[0].month) # 9 print str(date_df[0].year) # 2016
numpyの空配列から作成したdatetime64をastypeを使って変換したい場合
空のnumpy配列(np.empty)から作成したnumpy.datetime64をastypeを使って日付を取得・変換したいんだ!...という場合のサンプルコードです。
#!/usr/bin/env python # -*- coding: utf-8 -*- import pandas as pd import numpy as np date_df = np.empty(2, dtype='datetime64[ns]') date_df[0] = np.datetime64('2016-09-29T00:00:00.000000000') date_df[1] = np.datetime64('2016-09-28T00:00:00.000000000') # print print type(date_df[0]) # <type 'numpy.datetime64'> print date_df # ['2016-09-29T00:00:00.000000000' '2016-09-28T00:00:00.000000000'] print date_df.astype('M8[D]') # ['2016-09-29' '2016-09-28' ] print date_df.astype('M8[M]') # ['2016-09' '2016-09'] print date_df.astype('M8[Y]') # ['2016' '2016']
CSVの日付データからdatetime64をastypeを使って変換したい場合
サンプルで使っているCSVデータは、Yahoo Finance USの株価データです。
CSVの日付データからdatetime64をastypeを使って日付を取得・変換したいんだ!...という場合のサンプルコードです。
#!/usr/bin/env python # -*- coding: utf-8 -*- import pandas as pd # Read CSV df = pd.read_csv("data/SMPLE.csv",index_col=0, parse_dates=True) # Get index(date) values date_df = df.index.get_values() # print print type(date_df[0]) # <type 'numpy.datetime64'> print date_df # ['2016-09-29T00:00:00.000000000' '2016-09-28T00:00:00.000000000'] print date_df.astype('M8[D]') # ['2016-09-29' '2016-09-28' ] print date_df.astype('M8[M]') # ['2016-09' '2016-09']
Pythonについて学びたいという方は 世界最大級のオンライン学習サイトUdemy をおすすめします。