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

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

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

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

目次

受講者数No.1!初心者からプロへ導く信頼のスクール

    短期間で習得可能!未経験から実践力を磨く充実のプログラム

    今なら無料相談でAmazonギフトカードがもらえる!

    時系列データの作成

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

    以下は、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をコピーしました!
    目次