Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas로 두 타임스탬프 간의 차이 계산하기

데이터 분석을 하다 보면 구매일과 서비스일처럼 두 날짜(타임스탬프) 사이의 기간을 계산해야 하는 경우가 자주 있습니다. Python의 Pandas 라이브러리를 사용하면 이러한 타임스탬프 차이를 아주 간단하게 구할 수 있습니다.

핵심 원리

타임스탬프의 차이를 구하려면 인덱스 연산자, 즉 대괄호 []를 사용하여 DataFrame의 열에 접근한 뒤 서로 빼주면 됩니다. 이때 결과가 항상 양수가 되도록 하려면 abs() 함수를 함께 사용하는 것이 좋습니다.

1. 라이브러리 임포트

먼저 필요한 라이브러리를 가져옵니다.

import pandas as pd

2. DataFrame 생성

이제 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-10"),
         pd.Timestamp("2021-12-11"),
         pd.Timestamp("2021-11-25"),
         pd.Timestamp("2021-11-29"),
         pd.Timestamp("2021-08-20"),
      ]
   })

3. 타임스탬프 차이 계산

두 날짜 열의 타임스탬프 차이는 다음과 같이 구할 수 있습니다. abs()를 적용하면 열의 순서와 관계없이 항상 양수 값의 시간 차이를 얻을 수 있습니다.

timestamp_diff = abs(dataFrame['Date_of_Purchase'] - dataFrame['Date_of_Service'])

전체 예제 코드

지금까지의 내용을 하나로 합친 전체 코드는 다음과 같습니다.

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-10"),
            pd.Timestamp("2021-12-11"),
            pd.Timestamp("2021-11-25"),
            pd.Timestamp("2021-11-29"),
            pd.Timestamp("2021-08-20"),
        ]
    })

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

# 타임스탬프 차이 계산
timestamp_diff = abs(dataFrame['Date_of_Purchase'] - dataFrame['Date_of_Service'])
print("\n두 타임스탬프 간의 차이:\n", timestamp_diff)

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

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

두 타임스탬프 간의 차이:
0   153 days
1   153 days
2   153 days
3   153 days
4   153 days
dtype: timedelta64[ns]

결과 해석

출력 결과에서 확인할 수 있듯이, 모든 행에서 구매일과 서비스일 사이의 차이는 정확히 153일입니다. 결과의 데이터 타입은 timedelta64[ns]로, Pandas에서 시간 간격을 나타내는 표준 자료형입니다.

이렇게 구한 timedelta 값은 .dt.days, .dt.seconds 등의 속성으로 일, 시간, 분 단위로 변환할 수도 있으며, 특정 조건(예: 100일 이상 경과)으로 필터링하는 데도 활용할 수 있습니다.