【Python・Pandas】DateTimeIndexをPeriodIndexに変換する方法(to_periodの使い方)
DateTimeIndexをPeriodIndexに変換するとは?
Pandasでは、datetimeindex.to_period()メソッドを使うことで、DateTimeIndex(日時型のインデックス)をPeriodIndex(期間型のインデックス)に簡単に変換できます。変換後の頻度(周期)は、freqパラメータで自由に指定可能です。時系列データを月単位や年単位などで集計・分析したい場合に非常に便利な機能です。
1. 必要なライブラリをインポートする
まずは、Pandasをインポートします。
import pandas as pd
2. DatetimeIndexを作成する
次に、開始日時を「2021-10-18 07:20:32.261811624」とし、要素数5、頻度を「2Y」(2年ごと)に設定したDatetimeIndexを作成します。
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5, freq='2Y')
作成したDateTimeIndexを表示して確認してみましょう。
print("DateTimeIndex...\n", datetimeindex)
3. to_period()メソッドでPeriodIndexに変換する
to_period()メソッドを呼び出し、freqパラメータに「'M'」を指定することで、月単位のPeriodIndexへ変換できます。
print("\nConvert DateTimeIndex to Period...\n",
datetimeindex.to_period(freq='M'))
サンプルコード全体
以下に、ここまでの手順をまとめた完全なコードを示します。
import pandas as pd
# 要素数5、頻度「2Y」(2年ごと)のDatetimeIndexを作成
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5, freq='2Y')
# DateTimeIndexを表示
print("DateTimeIndex...\n", datetimeindex)
# DateTimeIndexの頻度を表示
print("DateTimeIndex frequency...\n", datetimeindex.freq)
# DateTimeIndexをPeriodIndexに変換
# freqパラメータに'M'を指定し、月単位の頻度に設定
print("\nConvert DateTimeIndex to Period...\n",
datetimeindex.to_period(freq='M'))
実行結果
上記のコードを実行すると、次のような出力が得られます。
DateTimeIndex...
DatetimeIndex(['2021-12-31 07:20:32.261811624',
'2023-12-31 07:20:32.261811624',
'2025-12-31 07:20:32.261811624',
'2027-12-31 07:20:32.261811624',
'2029-12-31 07:20:32.261811624'],
dtype='datetime64[ns]', freq='2A-DEC')
DateTimeIndex frequency...
<2 * YearEnds: month=12>
Convert DateTimeIndex to Period...
PeriodIndex(['2021-12', '2023-12', '2025-12', '2027-12', '2029-12'], dtype='period[M]')
結果のポイント
元のDateTimeIndexは「2年ごと(freq='2A-DEC')」の日付データでしたが、to_period(freq='M')によって、各日付が対応する年月(例:'2021-12')を表すPeriodIndexに変換されていることがわかります。このように、freqパラメータの値を変更すれば、「D(日)」「Q(四半期)」「A(年)」など、目的に応じたさまざまな周期への変換が可能です。
-
PandasのオフセットをPythonの日付に変換する方法
日付オブジェクトからPandasのオフセットを減算すると、結果は pandas Timestamp オブジェクトになります。このオブジェクトは、文字列形式の日付や、標準的なPythonの日付オブジェクト(datetime.date)に変換できます。また、datetime ライブラリの timedelta オブジェクトを使う方法もあります。Timestampオブジェクトが生成される例まず、日付からオフセットを引いたときにどのような型になるか確認してみましょう。from pandas.tseries.frequencies import to_offset import pandas as pd
-
Pythonで文字列を辞書(dict)に変換する方法|ast.literal_evalとjson.loadsの使い分け
Pythonでは、文字列形式で表現された辞書データを実際のdictオブジェクトに変換したい場面がよくあります。主な方法としては、標準ライブラリの ast.literal_eval() を使う方法と、json モジュールを使う方法の2つがあります。それぞれの特徴と使い方を詳しく見ていきましょう。 方法1:ast.literal_eval() を使う ast.literal_eval() は、文字列をPythonの式として安全に評価する関数です。任意のコードを実行できてしまう eval() とは異なり、リテラル構造以外は評価しないため、セキュリティ面でも安心して利用できます。 評価できるのは、文