Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Pandas - Period(期間)を任意の頻度に変換する方法

PandasのPeriodオブジェクトを任意の頻度に変換するには、period.asfreq()メソッドを使用します。この記事では、'H'(Hourly:時間単位)の指定子を使って、Periodを時間単位の頻度に変換する手順を解説します。

必要なライブラリのインポート

まず、必要なライブラリをインポートします。

import pandas as pd

pandas.Periodは、一定の期間(時点の範囲)を表すオブジェクトです。ここでは、2つのPeriodオブジェクトを作成してみましょう。

period1 = pd.Period("2020-09-23 03:15:40")
period2 = pd.Period(freq="D", year = 2021, month = 4, day = 16, hour = 2, minute = 35)

作成したPeriodオブジェクトを表示して確認します。

print("Period1...\n", period1)
print("Period2...\n", period2)

asfreq()で頻度を変換する

asfreq()メソッドに目的の頻度を渡すことで、Periodの頻度を変換できます。ここでは、頻度として'H'(時間単位)を指定しています。

res1 = period1.asfreq('H')
res2 = period2.asfreq('H')

なお、asfreq()はデフォルトでhow='end'が適用されるため、日単位('D')のPeriodを時間単位に変換すると、その日の終わりの時刻(23:00)が返されます。

サンプルコード全体

以下に、ここまでの処理をまとめた完全なコードを示します。

import pandas as pd

# pandas.Period は一定の期間を表す
# 2つのPeriodオブジェクトを作成
period1 = pd.Period("2020-09-23 03:15:40")
period2 = pd.Period(freq="D", year = 2021, month = 4, day = 16, hour = 2, minute = 35)

# Periodオブジェクトを表示
print("Period1...\n", period1)
print("Period2...\n", period2)

# Periodを希望の頻度に変換
# 頻度として H(時間単位)を指定
res1 = period1.asfreq('H')
res2 = period2.asfreq('H')

# 変換結果を表示
print("\n1つ目のPeriodオブジェクトの変換結果...\n", res1)
print("\n2つ目のPeriodオブジェクトの変換結果...\n", res2)

実行結果

上記のコードを実行すると、次のような出力が得られます。

Period1...
2020-09-23 03:15:40
Period2...
2021-04-16

1つ目のPeriodオブジェクトの変換結果...
2020-09-23 03:00

2つ目のPeriodオブジェクトの変換結果...
2021-04-16 23:00

このように、asfreq()メソッドを使えば、Periodオブジェクトの頻度を簡単に目的の単位へ変換できます。なお、Pandas 2.2以降では'H'は非推奨となっており、代わりに小文字の'h'を使用することが推奨されています。

  1. Python Pandas - 指定したタイムスタンプを期間(Period)に変換する方法

    Pandasで指定したタイムスタンプを期間に変換するには、timestamp.to_period() メソッドを使用します。このメソッドでは、freq パラメータを使って頻度を指定することができます。必要なライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pdタイムスタンプオブジェクトの作成次に、Pandasでタイムスタンプオブジェクトを作成します。timestamp = pd.Timestamp(2021-09-14T15:12:34.261811624)タイムスタンプから期間への変換タイムスタンプを期間に変換します。ここでは、freq パラメ

  2. PandasのオフセットをPythonの日付に変換する方法

    日付オブジェクトからPandasのオフセットを減算すると、結果は pandas Timestamp オブジェクトになります。このオブジェクトは、文字列形式の日付や、標準的なPythonの日付オブジェクト(datetime.date)に変換できます。また、datetime ライブラリの timedelta オブジェクトを使う方法もあります。Timestampオブジェクトが生成される例まず、日付からオフセットを引いたときにどのような型になるか確認してみましょう。from pandas.tseries.frequencies import to_offset import pandas as pd