대량의 데이터를 전처리를 하다가 현재 코딩한 방법보다 더 빠르게 전처리할 방법들을 찾아보다가 iterable 객체 처리 속도 증가 방법을 고민하게 됨, 현재 머신러닝 학습전 데이터 전처리 중간과정을 통하여 test해보았다.
총3가지의 방법으로 비교
1. append를 이용한 list data받기
string을 list로 반환하는 공통 함수
def strLst(string):
str_ = string[1:-1]
str_ = str_.replace("'",'')
str_ = str_.split(', ')
return str_[:10000]
tmp list변수를 선언한후 append로 가져오는 방법을 주로 사용
tmp = []
for x in test[:1000]:
tmp.append(strLst(x))
2.86 s ± 17.3 ms per loop (mean ± std. dev. of 10 runs, 100 loops each)
2. List Comprehension 방법
tmp = [strLst(x) for x in test[:1000]]
2.97 s ± 97.6 ms per loop (mean ± std. dev. of 10 runs, 100 loops each)
3. python의 내장함수 map 활용
tmp = list(map(strLst,test[:1000]]
2.87 s ± 7.47 ms per loop (mean ± std. dev. of 10 runs, 100 loops each)
반복실행 결과 표(%%timeit -n 100 -r 10로 1000회 반복 테스트 )
Method | 결과 |
append를 활용 | 2.86 s ± 17.3 ms |
List Comprehension | 2.97 s ± 97.6 ms |
map method | 2.87 s ± 7.47 ms |
코드 가독성과, 속도를 생각해보면 앞으론 2,3번째의 방법으로 코드를 작성해야 겠다고 느끼게 됨
'python' 카테고리의 다른 글
Python 2, 3 동시 사용 환경설정 on Windows 10 (1) | 2020.11.04 |
---|---|
Email parser 제작기 (0) | 2020.07.22 |
Python OpenCV를 이용한 라이즈 오브 킹덤즈 매크로(4) (2) | 2020.02.10 |
Python OpenCV를 이용한 라이즈 오브 킹덤즈 매크로(3) (0) | 2020.02.10 |
Python OpenCV를 이용한 라이즈 오브 킹덤즈 매크로(2) (0) | 2020.02.09 |