Lastest Update: 20250413
시간
순서대로 정렬되어 있음.float64
dtype100_000개 이상 1_000_000개 이하
라고 가정10개 이상 40개이하
라고 가정1_000_000개에서 40_000_000
개 라고 가정Indexing: Random 접근
Rolling: Seqeuncial 접근
이 두가지가 시계열 데이터인 시장 데이터를 다룰대 많이 사용하는 함수이다. 대부분의 코드에서는 df.loc
를 사용해서 특정 컬럼의 데이터에 접근한다.
우리가 사용하는 Indexing 방법(직관적)
def df_slice_linear_indexing(df, dt_from, dt_to, cols: List[str] | None = None):
return df.loc[dt_from:dt_to, :] if cols is None else df.loc[dt_from:dt_to, cols]
index
가 datetime 이기 때문에 O(1) 접근은 불가능하다. 어쩔수 없이 순회를 하면서 데이터를 접근해야 하는데 O(n) 이라는 시간이 필연적이다.
하루에 수십억건 데이터를 처리해야하는 HFT 리서치 시스템의 특성상 파이썬의 for loop
를 사용하는 방법은 너무 느리다.