실험 데이터 개수 : 약 160만개
단순히 pd.series
를 사용한 indexing 의 처리 시간보다, numpy 문법을 사용했을 때 시간이 단축되었고, groupby
를 통해 key-value를 사용한 방법에서는 더 큰 시간 단축을 경험했다
기존 코드 : 2.6초 소요
for code in item_codes:
...
item_info = train_data[train_data['item_code'] == code] # 2.6 초
...
대안 1: numpy 배열 사용 ( 2.4초 소요, 0.2초 감소, 7.7% 향상)
for code in item_codes:
...
item_info = train_data[train_data['item_code'].values == code]
...
대안 2: groupby 사용 ( 0.7초 소요, 0.9초 감소, 73% 향상)
grouped = train_data.groupby('item_code')
for code in tqdm(item_codes):
...
single = grouped.get_group(code)
...
만약 색인 시, 단일값과 같은 데이터를 찾는 것이 아닌, 특정 값들 중 하나에 포함되는 데이터를 찾는 경우에도 대안이 있다
일반적으로 isin()
을 사용하는데 아래와 같이 np.in1d
를 통해 numpy 배열을 사용할 경우 매우 큰 성능 차이를 경험했다
# 범위 검색 : 일반적인 isin() 사용
soldout = [1132, 2832, 4930]
for code in item_codes:
...
soldout_info = train_data[train_data['item_code'].isin(soldout)]
...
# 범위 검색 : np.in1d() 로 numpy 배열 사용 (속도향상)
soldout = [1132, 2832, 4930]
for code in item_codes:
...
soldout_info = train_data[np.in1d(train_data['item_code'].values, soldout)]
...
Pandas row iteration 속도 향상 (Speed Up) (0) | 2022.05.12 |
---|
댓글 영역