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

Python Pandas入門:DateTimeIndex.snap()でタイムスタンプを最も近い頻度にスナップする方法

DateTimeIndex.snap()メソッドとは

PandasのDateTimeIndex.snap()メソッドを使うと、DateTimeIndex内の各タイムスタンプを、指定した頻度の中で最も近い日時へスナップ(丸め)できます。スナップ先の頻度は、freqパラメータで指定します。

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

import pandas as pd

次に、期間6・頻度「D」(日単位)・タイムゾーン「Australia/Adelaide」を指定してDatetimeIndexを作成します。

datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=6, tz='Australia/Adelaide', freq='D')

作成したDateTimeIndexを表示します。

print("DateTimeIndex...\n", datetimeindex)

続いて、タイムスタンプを最も近い月末日へスナップします。ここではfreqに「M」を指定しています。

print("\nSnap time stamps to nearest occurring frequency...\n",
datetimeindex.snap(freq='M'))

サンプルコード全体

以下が完全なコード例です。

import pandas as pd

# 期間6・頻度D(日単位)のDatetimeIndexを作成
# タイムゾーンは Australia/Adelaide を指定
datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=6, tz='Australia/Adelaide', freq='D')

# DateTimeIndexを表示
print("DateTimeIndex...\n", datetimeindex)

# DateTimeIndexの頻度を表示
print("\nDateTimeIndex frequency...\n", datetimeindex.freq)

# タイムスタンプを最も近い月末日にスナップ
print("\nSnap time stamps to nearest occurring frequency...\n",
datetimeindex.snap(freq='M'))

実行結果

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

DateTimeIndex...
DatetimeIndex(['2021-10-20 02:30:50+10:30', '2021-10-21 02:30:50+10:30',
'2021-10-22 02:30:50+10:30', '2021-10-23 02:30:50+10:30',
'2021-10-24 02:30:50+10:30', '2021-10-25 02:30:50+10:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq='D')
DateTimeIndex frequency...
<Day>

Snap time stamps to nearest occurring frequency...
DatetimeIndex(['2021-10-31 02:30:50+10:30', '2021-10-31 02:30:50+10:30',
'2021-10-31 02:30:50+10:30', '2021-10-31 02:30:50+10:30',
'2021-10-31 02:30:50+10:30', '2021-10-31 02:30:50+10:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq=None)

ポイントのまとめ

  • snap(freq=...)は、元のタイムスタンプを変更せず、新しいDatetimeIndexを返します。
  • この例ではすべての日付が10月中のため、全タイムスタンプが2021-10-31(月末日)にスナップされています。
  • スナップ後のインデックスはfreq=Noneになる点に注意してください。規則的な頻度情報は保持されません。
  • freqには「M」(月末)以外にも、「B」(営業日)や「W」(週次)など、Pandasで利用可能なオフセットエイリアスを指定できます。
  1. Python Pandas入門:特定の時系列頻度でDateTimeIndexから時間(hour)を抽出する方法

    特定の時系列頻度を持つ DateTimeIndex から時間(hour)を抽出したい場合は、DateTimeIndex.hour プロパティを使用します。このプロパティを使うことで、日時インデックスに含まれる各タイムスタンプの「時」の部分だけを簡単に取り出すことができます。必要なライブラリのインポートまず、必要なライブラリをインポートしましょう。import pandas as pdDateTimeIndexの作成次に、開始時刻「2021-10-20 02:35:55」から始まる、期間6・頻度「H」(時間単位)の DatetimeIndex を作成します。タイムゾーンはオーストラリアのシドニー

  2. 【Python】PandasのDataFrameを日付(時間)条件でフィルタリングする方法

    PandasのDataFrameを特定の日付を基準にフィルタリングしたい場合は、locを使い、その中に抽出条件を指定することで、目的のレコードを簡単に取得できます。この記事では、購入日(Date_of_Purchase)を条件にデータを絞り込む具体的な手順を解説します。 1. 必要なライブラリをインポートする まずはPandasをインポートします。 import pandas as pd 2. 日付データを含む辞書を作成する 次に、車種と購入日のデータを持つ辞書(リスト形式)を作成します。 d = { Car: [BMW, Lexus, Audi, Mercedes, Jaguar