Programming/Python
[Python] AttributeError: Module 'PyQt5' has no attribute '__version__' 대처 방법
상황 친구의 부탁으로 Python을 활용한 이미지 인식 프로그램을 만드는 도중 해당 에러가 발생 anaconda prompt 환경에서 pyinstaller를 활용하여 .py 파일을 .exe 실행 파일로 만드는 과정에서 발생한 에러 pyautogui 패키지를 활용하는 코드가 에러의 원인일 것으로 추정 --------------------------------------------------------------------------- ... ... AttributeError: Module 'PyQt5' has no attribute '__version__' 해결 방안 아래의 코드를 Jupyter Notebook 환경에서 실행 후 다시 pyinstaller를 실행하면 에러가 해결될 것입니다. !pip ins..
[Python] 공공데이터 오픈 API를 활용한 기상청 ASOS 데이터 파싱하기
* 해당 글은 본인 스스로 정리하는 글이며 자세한 과정에 대해서는 다루고 있지 않음. 공공데이터 공공데이터 포털에서는 국가 보유 데이터를 『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방 중이며 공공데이터(Dataset)와 Open API로 제공하고 있다. 공공데이터 (Dataset) 일일이 내려받기를 통해 다운로드 가능하다. 파일 안에 자료가 정해져 있기 때문에 일단 내려받은 후 필요한 데이터만 가공하여 사용 가능하다. 활용 신청 과정이 불필요하므로 내려받기가 간편하다. 아무래도 일일이 다운받다가 착각으로 인한 실수(?)를 할 가능성이 존재한다. 공공데이터 Open API Open API란? 누구나 사용할 수 있도록 공개된 API(Open Application Program..
[Python] 유용한 문자열 함수들
※ 해당 글은 dojang.io/mod/page/view.php?id=2299을 참고하여 작성하였습니다. 저의 기준 사용 빈도가 높은 함수들 replace >>> 'sample setence'.replace(' ','_') 'sample_setence' split >>> 'sample one two three four five'.split() ['sample', 'one', 'two', 'three', 'four', 'five'] >>> 'one, two, three, four, five'.split(', ') ['one', 'two', 'three', 'four', 'five'] join >>> ' '.join(['one','two','three','four','five']) 'one two three..
[Python] 2차원 리스트를 1차원 리스트로 만들기
코드 2차원 리스트 >>> list_ = [] >>> for i in range(4) : >>> list_.append([j for j in range(i)]) >>> list_ [[], [0], [0, 1], [0, 1, 2]] 1차원 리스트로 만드는 방법들 방법 1 - sum 함수 >>> answer = sum(list_, []) [0, 0, 1, 0, 1, 2] 방법 2 - itertools.chain >>> import itertools >>> list(itertools.chain.from_iterable(list_)) [0, 0, 1, 0, 1, 2] 방법 3 - itertools와 unpacking >>> import itertools >>> list(itertools.chain(*list_)..
[Python] 병렬처리, Multiprocessing
병렬처리의 필요성 요즘같이 대용량 데이터를 처리하는 과정에서 병렬처리 활용은 선택이 아닌 필수가 되어버렸다. 극단적으로 말하자면 코드를 어떻게 짜느냐에 따라 똑같은 작업이라도 1시간이 걸릴 수 있고, 단 1초 만에 완료될 수 도 있다. 코드를 돌려놓고 하염없이 기다리기보다 병렬처리를 배워서 적용하는 시간이 오히려 더 빠르다. 그리고 추후에도 잘 응용하여 사용함으로써 데이터 분석가의 역량을 키워 나갈 수 있다. 하드웨어가 심각하게 싸지지 않는 한 앞으로 더더욱 연산속도와 메모리 관리는 중요한 이슈가 될 것이라고 생각한다. Multiprocessing multiprocessing 모듈은 threading 모듈과 유사한 API를 사용하여 *프로세스 스포닝(spawning)을 지원하는 패키지이다. multipr..
[Python] K-Fold 로 데이터 분할하기
데이콘이나 캐글 같은 경진대회에서 어떤 예측값을 제출하느냐에 따라 순위가 몇 단계나 출렁이곤 한다. 그렇기 때문에 어떤 데이터에 대해서도 견고한 예측값을 제공하는 모델을 선택하는 것이 중요한 이슈라고 할 수 있다. 모델을 어떻게 학습하냐에 따라 예측값도 천차만별이다. 좋은 결과를 위해서는 과적합, 과소 적합된 모델보다 균형 있게 학습된 모델을 선택하는 것이 가장 중요할 것이다. 쉬운 이해를 돕기 위해 인간으로 비유하자면 현재의 고정된 관념을 너무 학습하여 미래의 현상에도 고정 관념에 사로잡힌 사람 - 과적합 현재도 잘 이해하지 못하고 있으며 미래의 현상도 잘 이해하지 못하는 사람 - 과소적합 현재도 잘 이해하며 미래의 현상도 잘 예측하는 사람 - 일반화 K-fold 교차검증을 통해 비교적 일반화(gene..
[Python] 모듈의 버전을 확인하는 습관
필요성 데이터 분석 시, 잘 실행되던 코드가 오류로 실행이 되지 않는 경우가 종종 있다. 예측 결괏값이 가장 좋았던 코드로 점수를 복원하고자 할 때 문제가 생길 수 있다. 그렇기 때문에 그 당시의 분석 환경을 기록해두어야 할 필요가 있다고 생각한다. 최신 모듈일수록 버전이 중요 계속해서 발전해나가고 있는 최신 모듈의 경우는 비교적 급변하기 때문이다. (종종 버전 충돌로 실행이 안되면 검색해야 하는 번거로움이 발생) 습관 들이기 1) 모듈 버전 확인하기 구글링으로 애써 찾은 코드가 실행이 안된다면 버전 문제일 가능성이 크다. 내 코드의 모듈 버전은 버전 문제를 일으키지 않도록 잘 기억해두자. # 예시 import tensorflow as tf import tensorflow_addons as tfa imp..
[Python] datetime 모듈
R 에는 lubridate package가 있듯이, Python 에는 datetime module모듈이 있다. datetime module 날짜와 시간 데이터를 다루는데에 유용한 파이썬 스탠다드 라이브러리이다. timedelta : 기간을 표현하기 위해 사용 timezone : 시간대를 표현하기 위해 사용 date : 날짜를 표현하기 위해 사용 time : 시간을 표현하기 위해 사용 datetime : 날짜와 시간을 동시에 표현하기 위해 사용 hh:mm:ss으로 형태 변경 사용자 함수 # 시간 표시 함수 def format_time(elapsed): # 반올림 elapsed_rounded = int(round((elapsed))) # hh:mm:ss으로 형태 변경 return str(datetime.ti..