Python pandasで時系列データから指定した時刻の行を抽出する方法

Pythonのpandasを使用して、時系列データから指定した時刻の行を抽出する方法について解説します。

Pythonのpandasを使って、時刻に基づいて時系列データから行を選択する方法を知りたいです。

pandasを使用して、between_time()メソッド、locメソッド、queryメソッドなどの機能を使うことで、特定の時間帯に該当する行を簡単に抽出することができます。

目次

時系列データの作成

時系列データを作成します。

以下は、datetimeモジュールを使用して、2022年1月1日から1時間ごとにデータを生成する例です。

import pandas as pd
import datetime

start = datetime.datetime(2022, 1, 1)
index = pd.date_range(start, periods=24, freq='H')
data = {'value': range(24)}
df = pd.DataFrame(data, index=index)

この例では、2022年1月1日を開始時刻とし、1日を24時間に分割した期間(periods)と、1時間ごとにデータを生成するための頻度(freq)を指定しています。生成されたデータは、’value’列に0から23までの整数値を持つDataFrameオブジェクトとして作成されます。

時刻を指定して行を抽出する方法

pandasのDataFrameオブジェクトを操作する場合、以下のいくつかの方法を使用することで、特定の時間帯に該当する行を抽出することができます。

between_time()メソッドを使用する方法

between_time()メソッドを使用することで、特定の時間帯に該当する行を抽出することができます。以下の例では、11時のデータを抽出する方法を示しています。

selected = df.between_time('11:00:00', '11:00:59')

この例では、DataFrameオブジェクトのbetween_time()メソッドを使用して、11時00分から11時00分59秒までの行を抽出しています。抽出された行は、新しいDataFrameオブジェクトとしてselectedに格納されます。

また、between_time()メソッドは、複数の時間帯を指定して複数の行を抽出することもできます。以下の例では、10時と15時のデータを抽出しています。

selected = df.between_time('10:00:00', '10:59:59').append(df.between_time('15:00:00', '15:59:59'))

この例では、DataFrameオブジェクトのbetween_time()メソッドを2回使用して、10時00分から10時59分59秒までの行と、15時00分から15時59分59秒までの行を抽出しています。抽出された2つのDataFrameオブジェクトは、append()メソッドを使用して連結され、新しいDataFrameオブジェクトとしてselectedに格納されます。

locメソッドを使用する方法

locメソッドを使用することで、特定の時刻に該当する行を抽出することができます。以下の例では、11時のデータを抽出する方法を示しています。

selected = df.loc[df.index.hour == 11]

この例では、locメソッドを使用して、DataFrameオブジェクトのindexのhour属性が11である行を抽出しています。抽出された行は、新しいDataFrameオブジェクトとしてselectedに格納されます。

queryメソッドを使用する方法

queryメソッドを使用することで、特定の時刻に該当する行を抽出することができます。以下の例では、11時のデータを抽出する方法を示しています。

selected = df.query('index.hour == 11')

この例では、queryメソッドを使用して、DataFrameオブジェクトのindexのhour属性が11である行を抽出しています。抽出された行は、新しいDataFrameオブジェクトとしてselectedに格納されます。

以上、between_time()メソッド、locメソッド、queryメソッドのいずれも、特定の時刻に該当する行を簡単に抽出することができるため、便利に使用することができます。適切な方法を選択して、時系列データから必要な行を抽出することができます。

サンプルプログラムを使った解説

ある企業のウェブサイトのアクセスログを分析するために、時系列データから特定の時間帯にアクセスが多かったデータを抽出するサンプルプログラムです。

以下は、pandasを使用して時系列データを作成し、between_time()メソッドを使用して、午前11時から午後2時までのアクセスログデータを抽出するサンプルプログラムです。

import pandas as pd
import datetime

# 時系列データの作成
start = datetime.datetime(2022, 1, 1)
index = pd.date_range(start, periods=24, freq='H')
data = {'access': [2, 3, 5, 8, 9, 7, 10, 15, 20, 30, 25, 18, 15, 13, 12, 11, 13, 16, 18, 20, 22, 18, 12, 5]}
df = pd.DataFrame(data, index=index)

# 特定の時間帯の抽出
selected = df.between_time('11:00:00', '14:00:00')
print(selected)

この例では、2022年1月1日から1月2日までの24時間に1時間ごとにアクセス数を設定し、DataFrameオブジェクトとして作成しています。その後、between_time()メソッドを使用して、午前11時から午後2時までのデータを抽出しています。抽出されたデータは、新しいDataFrameオブジェクトとしてselectedに格納され、print文で表示されます。

まとめ

Pythonのpandasを使用して、時系列データから指定した時刻の行を抽出する方法について解説しました。

  • pandasのbetween_time()メソッドを使用することで、特定の時間帯に該当する行を抽出することができる。
  • また、locメソッドやqueryメソッドを使用することで、特定の時刻に該当する行を抽出することもできる。

pandasを使用して時系列データから特定の時間帯に該当するデータを抽出する方法について学ぶことができました。

between_time()メソッドやlocメソッド、queryメソッドなど、いくつかの方法が紹介されており、使い分けができるようになりました。今後の業務でも、これらの方法を活用してデータを分析していきたいと思います。

時系列データの分析では、特定の時間帯に該当するデータを抽出することが重要になることがあります。本記事で紹介したbetween_time()メソッドやlocメソッド、queryメソッドは、pandasの強力な機能の一つです。是非、これらのメソッドを活用して、効率的なデータ分析を行ってみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次