Dane timestamp, czyli te zawierające informacje o dacie i czasie, występują w wielu dziedzinach, takich jak finanse, zdrowie publiczne czy telekomunikacja. Przykłady takich danych to pomiary temperatury zarejestrowane co godzinę, daty i godziny transakcji finansowych, znaczniki czasowe postów na mediach społecznościowych czy zapisy medycznych pomiarów pacjentów.
Utworzenie DataFrame z danymi czasowymi
Za pomocą pandas.data_range stworzymy kolumnę date. Początkowa datę ustawiamy na 23.04.2023 na godzinę 6:15, wybieramy odstęp czasowy (26 godzin i 10 minut) i wygenerujemy 5 dat (periods = 5).
import datetime import numpy as np import pandas as pd dates = pd.Series(pd.date_range('2023-04-23 6:15', freq='26H10min', periods=5)) df = pd.DataFrame(dict(date=dates)) df
Wyciąganie podstawowych informacji
Wyciągnijmy odpowiednio: rok, miesiąc, dzień, godzinę, minuty, sekundy z daty.
df = df.assign( year=df['date'].dt.year, month=df['date'].dt.month, day=df['date'].dt.day, hour=df['date'].dt.hour, minute=df['date'].dt.minute, second=df['date'].dt.second ) df
Nazwa dnia/dzień tygodnia
A teraz chcielibyśmy wiedzieć czy 23.04.2023 to jest niedziela, a może poniedziałek? Albo od razu potrzebujemy dnia tygodnia jako liczby z zakresu od 0 do 6.
df = df.assign( day_name=df['date'].dt.day_name(), day_of_week=df['date'].dt.dayofweek ) df
Który to tydzień/dzień w roku?
df = df.assign( week_of_year=df['date'].dt.week, day_of_year=df['date'].dt.dayofyear ) df
Kwartał
df['quarter'] = df['date'].dt.quarter df
Rok przestępny
df['leap_year'] = df['date'].dt.is_leap_year df
Czy tego dnia jest święto?
import holidays pl_holidays = holidays.Poland() df['is_holiday'] = df['date'].dt.date.isin(pl_holidays) df
Hmmm… dziwne, przecież 23.04 to moje urodziny 😉 Więc już na sam koniec dorzućmy tę datę do świąt w Polsce.
from datetime import date pl_holidays = holidays.Poland() pl_holidays[date(2023, 4, 23)] = "Moje urodziny" df['is_holiday'] = df['date'].dt.date.isin(pl_holidays) df