일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- freeze_support
- 멀티 로그인
- 파이썬
- Windows
- 티스토리
- Python
- 코드블럭
- 의사 클래스
- OpenAPI+
- pycharm
- idxmax
- 우리FIS
- pywinauto
- 웹크롤링
- CSS
- QueueHandler
- idxmin
- HTML
- multiprocessing
- 진행 상황
- 필기
- line number
- 금결원
- 구현
- Tistory
- DataFrame
- 퀀트
- 금융결제원
- 하이라이트
- highlight.js
- Today
- Total
목록분류 전체보기 (41)
맨땅에 헤딩하는 사람

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() 호출은 윈도우가 아닌 다른 운영 체제에서 실행될 때는 아무런 영향을 미치지 않습니다. 또한,..

HTML/CSS 수정에 대한 기초적인 글은 아래 글에서 참고바란다. 2020/05/03 - [정보] - 티스토리 HTML/CSS 수정하기 Color Scripter를 사용하던 중 디자인적으로 불만이 하나 생겼다. 그것은 바로 코드의 최대 line 길이에 따라 코드블럭의 width가 결정된다는 점이다. 글로 풀어쓰려니 설명이 잘 안되는 느낌인데 아래 그림을 보면 이해가 쉽게 될 것이다. 글 작성 시 여러 코드를 삽입하는 경우 최대 line의 길이는 제각각이다. 따라서 위와 같이 표현되기 일쑤인데 이는 개인적으로 일관성을 헤치고 심미성을 저해시킨다고 생각한다. Color scripter는 HTML 코드를 제공하므로 이에 대한 CSS 구문을 추가하면 다른 코드블럭처럼 포스트 화면의 최대 길이로 일관되게 설정할..
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에서는 스크립트가 정상작동하지만 윈도..
python multiprocessing 사용하는 문제로 editor를 spyder에서 PyCharm으로 바꾸면서 새로 프로젝트 폴더도 만들고 그 쪽으로 지금까지 구현한 코드들을 옮겼다. PyCharm에서 옮겼던 코드 일부를 수정한 후 실행시키니 수정 전 예전 코드 내용으로 실행되는 상황을 발견했다. 응? 대체 무슨 상황이지? PyCharm에 이런 버그가 있을 수 있나 싶어 구글링해보았다. 실제로 해당 링크에서 나랑 같은 현상을 가진 사람이 JetBrains IDEs Support에 질문을 올린 것을 확인할 수 있었다. PyCharm은 이전에 run했던 설정을 저장한다. 그리고 편집 중인 현재 코드 말고 다른 코드를 실행시킬 수 있기도 하다. 이것이 맞물려서 이전에 run했던 파일 경로가 설정에 남아있고..