일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- highlight.js
- 코드블럭
- line number
- 티스토리
- pywinauto
- 웹크롤링
- multiprocessing
- idxmin
- 구현
- pycharm
- Tistory
- 금결원
- OpenAPI+
- QueueHandler
- freeze_support
- 우리FIS
- 금융결제원
- idxmax
- 멀티 로그인
- Python
- HTML
- Windows
- 퀀트
- 하이라이트
- 진행 상황
- CSS
- 필기
- DataFrame
- 파이썬
- 의사 클래스
- Today
- Total
목록Python (20)
맨땅에 헤딩하는 사람
pandas는 idxmax(), idxmin()이란 method를 제공한다. parameter axis에 따라(column 혹은 row 기준에 따라) 최대값의 index, column Series를 반환하는 기능을 가진다. 많이 사용하진 않겠지만 DataFrame의 2차원 데이터 중 가장 큰 스칼라 값 하나의 index와 column이 궁금한 경우가 있다. 이는 간단하게 idxmax()를 두 번 적용하는 것으로 해결할 수 있다. 아래 예제 코드를 보자. >>> import pandas as pd >>> import numpy as np >>> df = pd.DataFrame(np.array([[5,2,4],[6,1,5],[7,1,3]]), ... columns=['a', 'b', 'c']) >>> df ..
logging은 파이썬에서 자체적으로 제공하는 로그 패키지다. 여러가지 기능을 제공하므로 굳이 다른 패키지를 찾지 않더라도 유용하게 사용이 가능하지만 멀티프로세스 환경을 자체적으로 보장하지 못하는 문제를 가지고 있다. (멀티 쓰레드에서는 안전하게 동작한다.) logging Cookbook에서는 이러한 점을 언급하며 예제 코드를 제공하고 있으며 이를 참고하여 내가 사용할 클래스를 구현하였다. QueueHandler logging 패키지는 QueueHandler를 제공한다. QueueHandler란 말 그대로 Queue에 logging 할 수 있게 구현된 Handler다. 이 자체는 FileHandler, StreamHandler와 다르게 log 기록 시 파일이나 표준 출력에 기록되지 않고 Queue에 출력..
pandas DataFrame은 데이터 분석에 있어 매우 강력한 도구이다. 그러나 그만큼 올바른 사용법이 필요하고 잘못된 사용법을 적용할 경우 매우 답답한 프로그램을 경험하게 된다. 그만큼 DataFrame 최적화는 프로그램의 효율성을 위해 어느정도 필요하다. 이번 포스팅에서는 pandas DataFrame을 최적화하는 방법을 알아본다. 반복 최적화 DataFrame에서 row 값을 사용한 어떤 수행을 반복한다고 하자. 이 때 고려해야 할 순서는 다음과 같다. 벡터화 (vectorization) pandas apply 사용 (Cython에서 실행) itertuples() 사용 index 사용(속도 df.at() > df.loc()) iterrows() 사용 len 단순 반복 이에 대한 자세한 설명은 "판..
실행 시간이 긴 프로그램의 경우 간혹 어느 정도 진행되었는지 확인할 필요가 있다. 물론 print()와 carriage return \r 을 사용해서 직접 구현할 수 있지만 계속 출력되는 line이 지저분해 보이기도 하고 매번 직접 구현한 것을 옮겨 사용하기도 애매하다. python에서는 tqdm 이라는 모듈을 사용하여 프로그램의 진행 상황을 깔끔하게 출력할 수 있다. ProgressBar라는 또 다른 모듈이 있긴 하지만 개발이 몇 년 전부터 이루어지지 않고 있으며 속도는 800ns/iter로 tqdm의 60ns/iter보다 느린 속도를 가진다. tqdm 모듈에서 tqdm 클래스를 사용하며 parameter는 다음과 같다. class tqdm(): """ Decorate an iterable object..
키움증권 Open API+는 2020년 8월 기준 동일 아이디의 중복 로그인이 불가능하다. 키움증권 고객센터를 보면 동일 아이디는 중복 로그인이 불가능하지만 모의투자서버와 실서버의 개별 로그인은 가능하며, TR 조회 제한은 프로세스별로 집계된다고 한다. 이에 따라 여러 아이디로 2개의 서버에 멀티 로그인을 해야할 필요성을 느끼고 pywinauto 모듈을 사용해 로그인하는 코드를 구현하였다. pywinauto에 대한 기초적인 내용은 아래 링크에서 확인 가능하다. 2020/08/22 - [파이썬/이론] - [Python] Windows GUI 자동화 pywinauto 사용법 구현코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2..
키움증권 Open API+에 수동 로그인하기 위해 GUI 윈도우 프로그램 창에서 로그인 정보를 입력해야 할 상황이 생겼다. Python은 pywinauto, pyautogui 등 다양한 GUI 자동화 모듈을 제공하는데 pyautogui가 실제 사용자 입장에서의 키보드, 마우스 움직임에 초점을 맞췄다면 pywinauto는 윈도우즈 프로그램 구성을 토대로 객체 지향적인 방식을 제공하는 느낌이다. 다양한 윈도우 환경에서 사용하기에 pywinauto가 좀 더 범용적으로 활용될 수 있을 것이라 생각하여 pywinauto를 채용하였고 여기에 그 원리와 사용법을 정리한다. 모듈 사용 방법 pywinauto를 사용하는 방법은 아래에서 보듯 간단하다. 조작하고자 하는 프로그램을 실행시키거나 연결한다. 실행되거나 연결된 ..
python multiprocessing에서 mysqlclient를 사용했더니 에러가 발생했다. 파이썬 multiprocessing 공식 문서를 찾아보니 다음과 같은 내용을 찾을 수 있었다. multiprocessing.freeze_support() multiprocessing을 사용하는 프로그램이 고정되어(frozen) 윈도우 실행 파일을 생성할 때를 위한 지원을 추가합니다. (py2exe, PyInstaller 및 cx_Freeze 에서 테스트 되었습니다.) freeze_support() 줄이 생략된 경우 고정된 실행 파일을 실행하려고 하면 RuntimeError 가 발생합니다. freeze_support() 호출은 윈도우가 아닌 다른 운영 체제에서 실행될 때는 아무런 영향을 미치지 않습니다. 또한,..
Python Spyder 사용 중 multiprocessing 관련해서 여러 문제가 생겨 정보를 찾아보던 중 "Multiprocessing in Python on Windows and Jupyter/Ipython — Making it work"라는 흥미로운 글을 발견해 참고하여 포스팅한다. Windows 환경은 UNIX, Linux와 다르게 fork(부모프로세스가 자식프로세스를 생성하는 기능)를 지원하지 않는다. 이는 부모프로세스와 자식프로세스의 구분이 되지 않는다는 의미이며 이에 따라 windows 환경에서 python multiprocessing을 사용할 때 몇몇 제약이 생기게 된다. 간단한 예로 if __name__=='__main__' 구문이 없을 때 Linux에서는 스크립트가 정상작동하지만 윈도..