Python
-
[datetime] 시간포맷: datetime.strftime("%Y-%m-%d")Python 2020. 12. 18. 21:43
strftime으로 현재 시간 등을 출력할 때, 자주 안 쓰는 포맷코드는 기억하기가 쉽지 않다. 제목인 datetime.strftime("%Y-%m-%d")는 "2020-12-18"처럼 4자리 연도-2자리 월-2자리 일 형태다. 혹시 또 필요할 수 있으니, 자주 쓸 법한 것들은 정리해두고자 한다. 공식문서에서 strftime() and strptime() Format Codes(strftime()과 strptime() 포맷 코드) 로 검색하면 전체 테이블을 확인할 수 있다. Directive Meaning Example %a 짧은 요일이름 Sun, Mon, …, Sat.. %A 전체 요일이름 Sunday, Monday, …, Saturday %w 숫자로 표현한 요일, 0이 일요일, 6이 토요일임 0, 1..
-
[python] 모듈 정리하기Python/텔레그램봇:채권모니터링 2020. 12. 18. 19:48
전체 코드가 길진 않지만, 작업 단위별로 파일을 따로 두는 게 확인하기 수월할 것 같아 코드를 분리하기로 했다. 폴더에서 스크립트 임포트를 임포트하면서 약간 헤맸어서 여기에 정리해두었다: hayjo.tistory.com/63 [import] 폴더 안의 스크립트 임포트하기 일반적으로 폴더에 코드를 정리해놓고 불러다 쓰려면 from folder import script를 하면 된다. 폴더가 여러 개 있거나, 여러 파일에서 코드를 임포트하려면 디렉토리 사이를 .으로 연결하면 된다. 폴더 hayjo.tistory.com 전체 작업은 이렇게 나뉜다. 데이터 받아오기1: requests로 한국거래소 사이트에서 OTP 발급받은 후 필요한 데이터 csv형태로 받아오기 데이터 받아오기2: requests로 한국은행 경제..
-
[TelegramBot] 봇 생성과 메시지전송Python/텔레그램봇:채권모니터링 2020. 12. 18. 19:08
python-telegram-bot 패키지의 telegram.Bot.sendMessage(chat_id, text)로 데이터를 전송한다. 생성 및 작동 확인 기존 텔레그램 계정에서 @botfather를 친구 추가하고 /newbot을 입력하면, 이름을 뭘로 할 거냐고 물어본다. Bot이나 _bot처럼 이름 끝을 bot으로 해서 대답하면 축하한다면서 봇 토큰을 준다. 봇 토큰은 나중에 @botfather에서 /mybots -> 해당 봇 선택 -> API Token에서 확인할 수 있다. 혹시라도 노출되었다면 Revoke current token으로 갱신하면 된다. 기존 계정에서 방금 만든 봇을 친구 추가하고, 시작을 누르면 /start 메시지가 전송된다. 아래 url로 들어가면 방금 메시지를 보낸 유저 정보가..
-
[pip] pip search error: xmlrpc.client.Fault: <Fault -32500: 'RuntimeError>Python 2020. 12. 17. 18:18
pip search 커맨드가 PyPI 서버에 과부하를 줘서 현재 비활성화 상태. 지금은 트래픽 주범인 악성 IP의 소유자 및 거기 사용된 툴 관리자와 접촉 중이라고 한다. 파이썬 홈페이지 하단에서 연결되는 Status 페이지에서 현황을 확인할 수 있다. status.python.org/ Python Infrastructure Status status.python.org pip으로 텔레그램 패키지를 설치하려고 아래 명령어를 실행했는데 pip search python-telegram-bot 이런 에러가 뜬다. ERROR: Exception: Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/pip/_internal/..
-
[import] 폴더 안의 스크립트 임포트하기Python 2020. 12. 16. 21:43
일반적으로 폴더에 코드를 정리해놓고 불러다 쓰려면 from folder import script를 하면 된다. 폴더가 여러 개 있거나, 여러 파일에서 코드를 임포트하려면 디렉토리 사이를 .으로 연결하면 된다. 폴더 구조가 아래와 같이 되어있을 때, main.py에서 f~의 파일들을 임포트하는 경우: 더보기 위의 폴더구조 생성할 때 사용한 코드 import os path = os.getcwd() for i in range(1,4): p1 = path + '/' + 'f' + str(i) os.mkdir(p1) for j in range(1,4): p2 = p1 + '/' + 'f' + str(j) os.mkdir(p2) for k in range(1,4): p3 = p2 + '/' + 'm' + str(k..
-
[python f'{formating}'] 봇 메시지 포맷팅Python/텔레그램봇:채권모니터링 2020. 12. 16. 16:00
pandas의 DataFrame에 저장된 데이터를 가져와서 f"{}" 방식으로 포맷팅한다. 봇으로 메시지를 보내려면 적당한 형식으로 포맷팅을 해야한다. 내 핸드폰에서는 한글 22자가 한 줄에 들어가는 맥시멈이어서, 아래와 같은 형식을 취하기로 했다. 파라다이스6 D-1042 A ₩10,043.0(3.302%) 10,043(3.302%) 9,900(3.831%) 이걸 위해서는 pandas dataframe 형태의 데이터를 string 형태로 바꿔주어야 한다. f"{변수}" 형태로 입력하면 변수를 손쉽게 문자열로 바꿀 수 있다. a = 98765.4321 print(f"{a}") # 98765.4321 특정 공간에 맞춰 정렬하는 것도 가능하다. print(f"{a:>20}") # 98765.4321 prin..
-
[Pandas] 데이터 정리 (2) 필터링(query) 및 정렬Python/텔레그램봇:채권모니터링 2020. 12. 15. 12:03
현재 데이터를 pandas dataframe에 넣고, NULL값 정리까지 끝난 상태. 이제 목적에 맞게 데이터를 필터링할 차례다. 목적: 투자등급 A-이상이면서 잔존기간이 3년 미만인, 매력적인 가격대의 채권 찾아내기. 매력적인 가격대는 1) 평균 금리에 비해 저렴하게 매도 매물이 있는 종목 2) 혹은 거래량이 있는 종목 중에 적당한 매수가격대가 없는 종목 으로 정했다. 일단 투자등급을 걸러야 하니 'BBB', 'BB', 'B'와 'BBB+', 'BB+', 'B+', 'BBB-', 'BB-', 'B-'를 버리고, 잔존기간이 1095일 이상인 종목을 버리고, 수익률이 평균 금리 미만인 종목을 버리고, 나의 채권 기대수익률은 2% 이상이기 때문에 매수수익률이 2% 미만으로 걸려있는 종목도 버린다. 다만 0...
-
[Pandas] 데이터 정리 (1) read_csv(na_values) & applyPython/텔레그램봇:채권모니터링 2020. 12. 15. 11:37
데이터를 csv 형태로 확보했으니, 이제 입맛대로 정렬해서 원하는 데이터만 골라낼 차례다. python의 pandas 라이브러리를 사용할 예정이고, 우선 데이터를 불러와서 NULL값을 처리하고 날짜 포맷을 변경한다. 일단 설치를 하고 # python -m pip install --upgrade pip # pip install pandas 데이터는 이렇게 생겼다. 가격, 수익률, 거래량, 거래대금은 '-'로 표시된 NULL 데이터가 있다. 종목명,가격,수익률,거래량,거래대금,매도최우선호가 가격,매도최우선호가 수익률,매수최우선호가 가격,매수최우선호가 수익률,신용등급,잔존기간,표준코드 HMM199CB,"10,856.0","0.000","42,122,597","44,815,973,553","10,840.0","..