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

【Python】Pandas DataFrameで特定のタイムスタンプを比較する方法

Pandas DataFrame内の特定のタイムスタンプ同士を比較するには、角括弧 [ ] の中にインデックス番号を指定して、目的のセルの値にアクセスします。まずは必要なライブラリをインポートしましょう。

import pandas as pd

タイムスタンプを含むDataFrameを作成する

続いて、3つの列を持つDataFrameを作成します。今回は「Car(車種)」「Date_of_Purchase(購入日)」「Date_of_Service(整備日)」という構成にし、後者の2列には pd.Timestamp() で生成した日付データを格納します。

dataFrame = pd.DataFrame(
    {
        "Car": ["Audi", "Lexus", "Tesla", "Mercedes", "BMW"],

        "Date_of_Purchase": [
            pd.Timestamp("2021-06-10"),
            pd.Timestamp("2021-07-11"),
            pd.Timestamp("2021-06-25"),
            pd.Timestamp("2021-06-29"),
            pd.Timestamp("2021-03-20"),
        ],
        "Date_of_Service": [
            pd.Timestamp("2021-11-05"),
            pd.Timestamp("2021-12-03"),
            pd.Timestamp("2021-10-30"),
            pd.Timestamp("2021-11-29"),
            pd.Timestamp("2021-08-20"),
        ]
    }
)

特定のタイムスタンプを比較する

比較したい行のインデックス番号を指定して、2つの日付列からそれぞれ値を取り出します。あとは abs() で絶対値を取れば、2つのタイムスタンプの差(Timedelta型)を求められます。ここでは0行目から2行目までの3行分を計算してみましょう。

timestamp1_diff = abs(dataFrame['Date_of_Purchase'][0] - dataFrame['Date_of_Service'][0])
timestamp2_diff = abs(dataFrame['Date_of_Purchase'][1] - dataFrame['Date_of_Service'][1])
timestamp3_diff = abs(dataFrame['Date_of_Purchase'][2] - dataFrame['Date_of_Service'][2])

完全なコード例

以下が全体のコードです。

import pandas as pd

# 3列のDataFrameを作成
dataFrame = pd.DataFrame(
    {
        "Car": ["Audi", "Lexus", "Tesla", "Mercedes", "BMW"],

        "Date_of_Purchase": [
            pd.Timestamp("2021-06-10"),
            pd.Timestamp("2021-07-11"),
            pd.Timestamp("2021-06-25"),
            pd.Timestamp("2021-06-29"),
            pd.Timestamp("2021-03-20"),
        ],
        "Date_of_Service": [
            pd.Timestamp("2021-11-05"),
            pd.Timestamp("2021-12-03"),
            pd.Timestamp("2021-10-30"),
            pd.Timestamp("2021-11-29"),
            pd.Timestamp("2021-08-20"),
        ]
    }
)

print("DataFrame...\n", dataFrame)

# 特定のタイムスタンプを比較
timestamp1_diff = abs(dataFrame['Date_of_Purchase'][0] - dataFrame['Date_of_Service'][0])
timestamp2_diff = abs(dataFrame['Date_of_Purchase'][1] - dataFrame['Date_of_Service'][1])
timestamp3_diff = abs(dataFrame['Date_of_Purchase'][2] - dataFrame['Date_of_Service'][2])

print("\n車1の購入日と整備日の差\n", timestamp1_diff)
print("\n車2の購入日と整備日の差\n", timestamp2_diff)
print("\n車3の購入日と整備日の差\n", timestamp3_diff)

実行結果

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

DataFrame...
       Car  Date_of_Purchase   Date_of_Service
0     Audi          2021-06-10        2021-11-05
1    Lexus          2021-07-11        2021-12-03
2    Tesla          2021-06-25        2021-10-30
3 Mercedes          2021-06-29        2021-11-29
4      BMW          2021-03-20        2021-08-20

車1の購入日と整備日の差
148 days 00:00:00

車2の購入日と整備日の差
145 days 00:00:00

車3の購入日と整備日の差
127 days 00:00:00

まとめ

このように、インデックス番号を使ってDataFrameの特定のセルにアクセスすれば、個別のタイムスタンプ同士を簡単に比較できます。計算結果はTimedelta型で返されるため、日数や時間単位での集計や条件分岐にもそのまま活用できます。なお、全行を一括で処理したい場合は、(dataFrame['Date_of_Purchase'] - dataFrame['Date_of_Service']).abs() のようにベクトル化した演算を使うと、より効率的に差分を求められます。

  1. Python・Pandas DataFrameで散布図を描画する方法

    散布図(Scatter Plot)は、2つの変数の関係を視覚的に把握するための代表的なデータ可視化手法です。Pandasでは plot.scatter() メソッドを使うことで、DataFrameのデータから簡単に散布図を作成できます。この記事では、チームごとのランキングポイントデータを例に、Pandas DataFrameから散布図を描画する手順を解説します。必要なライブラリのインポートまず、必要なライブラリをインポートします。データ操作には pandas、グラフの表示には matplotlib を使用します。import pandas as pd import matplotlib.pyp

  2. Python Pandasのnotnull()メソッドでNULL値(NaN)を確認する方法

    Pandasのnotnull()メソッドは、ブール値(True / False)を返すメソッドです。DataFrameにNULL値(NaN)が含まれている場合はFalseを返し、NULL値でない場合はTrueを返します。ここでは、NaN(NULL値)をいくつか含む次のCSVファイルを例にして説明します。CSVファイルの読み込みまず、read_csv()を使ってCSVファイルを読み込みます。dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\CarRecords.csv")NULL値以外(有効なデータ)の確認notnull(