본문 바로가기

Python18

[파이썬] 여러 리스트를 하나로 합쳐주는 zip 함수 zip함수는 따로 존재하는 리스트들을 모아서 하나로 패키징 해 주는 함수입니다. 예를 들어 아래처럼 날짜, 시가, 고가, 저가, 종가 리스트가 각각 존재할 때 이를 (날짜, 시가, 고가, 저가, 종가)의 배열로 모으는 아주 유용한 함수입니다. date = ['2020/2/14','2020/2/13','2020/2/12','2020/2/11','2020/2/10','2020/2/7','2020/2/6','2020/2/5','2020/2/4'] open = [60900, 61200,60300,59800,59200,61100,60100,60000,57100] high = [61900,61600,60700,60700,59800,61200,61100,60200,59000] low = [60200,60500 ,59.. 2020. 2. 16.
서울시 많이 본 단지 실거래가 비교 차트 그리기 네이버 부동산 구버전에 있는 '서울시' 많이 본 단지 정보를 이용해서 간단하게 차트로 그려보았다. 네이버 부동산 네이버 부동산 매물 land.naver.com 위 그림의 주요 조건은 전용 면적은 80~90㎡ 로 제한했다 (대충 30평대) 차트 표시 순서는 각 아파트별 최고가를 기준으로 높은 가격순으로 정렬했다. 인기 아파트 중 실거래가 없는 아파트는 제외했다. PC에서는 차트를 클릭하면 보다 크게 볼 수 있다. 기간은 2015 ~ 2020.1.16일까지 등록된 실거래가를 기준으로 했다. 서울시 인기 아파트들은 대부분 각 구별 세대수가 많은 아파트에 해당한다. 송파구 파크리오는 무려 6,864세대나 된다. '신천동 잠실파크리오'의 실거래가, 시세, 매물, 주변정보 | 아파트는 호갱노노 '신천동 잠실파크리오.. 2020. 1. 16.
파이썬 아나콘다 32비트 설치/재설치 아나콘다 64비트와 32비트를 동시에 사용 중이었는데 32비트 아나콘다에서 아래 그림 같은 차트를 위해 matplotlib 설치하다가 계속 오류가 발생했다. 결국 32비트 아나콘다를 재 설치해서 해결했는데 이번 글은 반복되는 파이썬 라이브러리 설치 오류를 해결하는데 도움이 될까 하고 기록. 우선 중요한 아나콘다 명령어 부터 정리 conda activate py37_32 32비트 아나콘다 활성화 conda activate base 64비트 아나콘다 활성화 conda env list 설치된 아나콘다 빌드 환경 set CONDA_FORCE_32BIT=1 conda create -n py37_32 python=3.7 32비트 아나콘다 환경 생성(한 줄씩 입력) conda env remove -n py37_32 .. 2019. 11. 14.
[파이썬] 딕셔너리를 이용한 카운팅, 정렬 예제 목적 숫자 리스트에서 발생하는 숫자의 횟수와 합을 저장 숫자, 발생 횟수, 합의 다양한 방식으로 딕셔너리 저장 샘플 코드 # 딕셔너리와 리스트 조합, 소팅 예제 dataSample = [5, 3, 3, 2, 1, 6, 10, 8, 7, 3, 10, 2, 1, 6, 9, 4, 5, 2] dicCount = {} for data in dataSample: if not data in dicCount: dicCount[data] = [0, 0] dicCount[data][0] += 1 dicCount[data][1] += data print('dicCount') for k, v in dicCount.items() : print(k,v) # 정렬 방식 : dicCount 를 key를 이용해 정렬 --> 튜플로 리.. 2019. 11. 2.
[파이썬] 웹 페이지 스크랩 하기(BeautifulSoup 이용) 파이썬의 BeautifulSoup 라이브러리를 이용해서 웹 페이지를 스크랩하는 간단한 예제 코드입니다. 예제를 위한 사이트는 뽐뿌 게시판으로 정했습니다. 우선 전체 코드를 먼저 올리고 간단한 설명은 뒤에 있습니다. 전체 코드 # 뽐뿌/뽐뿌 게시판 스크랩 # 타겟 주소: https://www.ppomppu.co.kr/zboard/zboard.php?id=ppomppu import pandas as pd from urllib.request import urlopen from requests import get from bs4 import BeautifulSoup import os g_sTargetUrl = 'https://www.ppomppu.co.kr/zboard/zboard.php?id=ppomppu' .. 2019. 10. 20.
[파이썬] 함수 호출 CALL BY VALUE/CALL BY REFERENCE 파이썬에서 함수 호출 시 call by value/ref 를 설명하는 간단한 예제입니다 1. bool, 문자열, 숫자, 리스트, 딕셔너리를 함수에서 변경했을 때 def testFunc2(bValue, sString, nValue, list, dic): bValue = True sString = '새로운 문자' nValue = nValue + 100 list.append(100) dic['과학'] = 70 bValue = False sString = '이전 문자' nValue = 10 list = [1,2,3] dic = {'국어': 80, '수학': 95, '영어': 80} testFunc2(bValue, sString, nValue, list, dic) print(bValue) print(sString.. 2019. 10. 6.
파이썬의 for 루프 파이썬의 for 루프는 전통적인 C/C++/JAVA 와는 조금 사용방법이 달라서 기록 해 둡니다. 일반적인 C/C++ 은 for (초기값 ; 완료조건; step) 순으로 되어 있는데 비해 파이썬은 for 변수 in 리스트 와 같이 되어 있습니다. 0부터 99까지 더하는 간단한 for 루프는 ##### sum = 0 for i in range(0, 100): sum = sum + i print(sum) 식으로 구현 됩니다. 여기서 range는 range(stop) 또는 range(start, stop, step) 식으로 사용되고 list 와 유사한 빌트인 클래스를 리턴합니다. loop = range(10) print(type(loop)) # 결과는 99부터 0까지 더하기를 역으로 처리하면 요리 됩니다 st.. 2019. 6. 16.
[CREON PLUS API 활용] BlockRequest 와 Request 크레온 플러스 API를 이용해서 통신하는 방법은 다음 2가지가 있습니다 BlockRequest 방식 - 가장 간단한 데이터 요청Request 호출 후 Received 이벤트를 수신 받기 아래 코드는 두 가지 방식으로 현재가를 통신하는 코드 입니다.import pythoncom from PyQt5.QtWidgets import * import win32com.client import win32event g_objCodeMgr = win32com.client.Dispatch('CpUtil.CpCodeMgr') StopEvent = win32event.CreateEvent(None, 0, 0, None) class CpEvent: def set_params(self, client, name, caller): .. 2018. 12. 11.
파이썬 리턴값 편리 기능 파이썬에는 몫과 나머지를 한번에 구하는 dibmod 함수가 있다. a, b = divmod(123, 5) 여기서 특이한 점은 함수의 리턴이 마치 2개가 되는 것처럼 표현되어 a, b 두 변수에 각각 할당 된다는 점 실제 divmod 의 리턴값은 tuple 하나이며 아래와 같이 확인 해 볼 수 있다. a = divmod(123,5) type(a) Out[6]: tuple print(a) (24, 3) 단 파이썬에서는 tuple 에 한해 패킹과 언패킹을 손쉽게 해 줘서 처음 예제처럼 a, b 변수에 튜플을 분리해서 값을 넣어주는 식이다. 함수는 실제 구현하고자 하는 목적을 달성하기 위해 대부분 어떤 값을 리턴하는 경우가 많다 대부분의 언어에서는 리턴값이 하나이기 때문에, 하나의 리턴값으로 함수의 성공을 리턴.. 2018. 11. 18.
[파이썬] 문자열 다루기 파이썬 문자열 관련 자주 사용하는 함수들 위주로 샘플 코드를 만들었습니다 sText = ' *# They said: "Of course." and you said "Thank you" #* ' print('원문:', sText) #결과: 원문: *# They said: "Of course." and you said "Thank you" #* # 문자열 Trim 하기 공백 등 제거 sText = sText.strip() print('공백제거:', sText) #결과: 공백제거: *# They said: "Of course." and you said "Thank you" #* # 특정 단어 가 문자열에 있는 지 찾기 if 'They' in sText: print('"They" Found') #결과: "The.. 2018. 10. 17.
[CREON PLUS API 활용] 종목검색 실시간 신호 수신 받기 CREON PLUS API 를 이용해서 종목검색 예제 조건을 조회 하고, 해당 조건의 실시간 감시(서버에서 감시)를 등록해서 실시간으로 해당 조건에 만족하는 종목을 받아 오는 코드입니다 서버에서 실시간 감시를 해 주기 때문에, 당연하게도 등록 가능한 실시간 감시 조건은 제한되어 있어 감시를 마친 후에는 반드시 감시 중단 처리가 필요 합니다. 종목검색 프로세스는 아래 글을 참조 [Tutorial] 종목검색 프로세스 이해하기 import sys from PyQt5.QtWidgets import * import win32com.client import pandas as pd import os g_objCodeMgr = win32com.client.Dispatch('CpUtil.CpStockCode') g_ob.. 2018. 6. 6.
[파이썬] 선물 분 차트 그리기(matplotlib) CYBOS PLUS/CREON PLUS API 를 이용하여 간단한 분차트를 그리는 예제 코드입니다 차트는 matplotlib 라이브러리를 이용했습니다 matplotlib 사용방법이 은근히 까다롭네요 화면 좌 상단에는 파생 종목 코드 리스트를 콤보에 넣어 종목을 선택할 수 있게 했습니다. [전체 코드] import datetime import sys import ctypes import time import numpy as np from PyQt5.QtWidgets import * import win32com.client import pandas as pd import os import matplotlib.pyplot as plt from matplotlib.backends.backend_qt5agg im.. 2018. 2. 18.
[파이썬] Creon Plus 를 이용해서 KOSPI200 종목 시세 가져오기 목적: CREON PLUS API를 이용해서 KOSPI200에 소속된 200 종목의 현재가 정보를 가져온다가져온 데이터를 Pandas DataFrame 에 저장하고, 엑셀로도 내 보낸다. 예제를 위해 공부가 필요한(or 필요했던) 항목들CREON PLUS API (증권 시세/주문/계좌 정보 가져오기 위해 필요)판다스(PANDAS), DATAFRAME 개인적으로는 파이썬의 Pandas/DataFrame 을 좀더 공부하고 싶어서 만든 예제입니다 아직 실시간 부분은 처리하지 못했는데 요건 담번에 추가 예정입니다 실시간 시세 받아 업데이트도 됩니다. 엑셀로 저장한 데이터 전체 코드 (실시간은 아직 미 구현 실시간도 구현됨)import sys from PyQt5.QtWidgets import * import wi.. 2017. 10. 15.
[파이썬] 안드로이드 프로젝트에서 자바 클래스 레퍼런스 카운트 구하기 요즘 파이썬으로 공부하면서 그동안 필요했던 기능들을 파이썬으로 구현중인데, 배운 지 얼마 안됐지만 파이썬 언어 자체가 정말 매력적이네요 C++ 과는 비교가 안될 정도로 코딩량도 적고 로직에 집중할 수 있어 좋은 듯. 예제 코드의 목적 안드로이드 프로젝트가 커지면서 사용하지 않는 클래스가 점점 늘어남, 다른 파일에서 호출하지 않는 클래스를 찾기 위해 만듦 1. 모든 파일에서 클래스 이름을 찾아 저장 (한 파일에서 하나의 public class 만 있다고 가정) 2. 다시 모든 파일을 단어 단위로 읽어 '1' 에서 저장한 클래스 이름이 있으면 ref count 를 증가 시킴. (단, 클래스가 선언된 파일은 ref count 에서 제외 3. 참조하는 파일 리스트도 저장 4. csv 로 저장할 수 있도록 ','.. 2017. 10. 14.
[파이썬] 폴더 명 일괄 변경 예제 예전에 찍은 사진 중 폴더의 날짜 표기를 변경할 대상들이 많아 일괄 변경하기 위해 만든 코드 (주의: 코드 참고용으로 작성하여 범용적이지 않음) 목적: 주어진 폴더 내에서 폴더 이름의 일자표기가 20031025__**** 인 폴더를 찾아 2003-10-25_**** 로 일괄 변경 코드 import os # 20031025_삼천포대교앞 --> 2003-10-25_삼천포대교앞과 폴더 이름 변경 path = "H:\\5. 사진\\" for fname in os.listdir(path) : fullpath = path + fname if os.path.isdir(fullpath) == False: continue if len(fname) < 8 : continue fpre = fname[:8] fpost = f.. 2017. 10. 11.
[파이썬] 주어진 폴더 파일/크기 비교 예제 사진과 동영상을 백업받을 새로운 하드를 장만하면서 약 10만개가 넘는 사진을 두 하드에 복사하다가, 필요해서 만든 간단한 폴더 비교 샘플입니다 (주의: 파일 자체의 내용까지 비교 해주는 좋은 사용 툴이 있지만, 바이너리 파일 비교는 너무 오래 걸려 파이썬 공부 목적으로 만든 참고용 예제임) 목적: 주어진 폴더 2개를 비교 동일한 파일(파일 이름과 크기만 비교), 한쪽에만 있는 파일, 오른쪽에만 있는 파일 리스트를 구한다 프로그램 코드 import os # 주어진 folder 2개를 look up 한 후 # 파일 이름/사이즈까지 비교 path1 = "H:\\5. 사진\\" path2 = "G:\\5. 사진\\" # key: full path value: filename, folder/file, file s.. 2017. 10. 11.
파이썬 기본 - 리스트/딕셔너리/튜플/set 기본 사용법 파이썬 문법은 C++ 과 상당히 유사합니다 특히 파이썬의 리스트와 딕셔너리는 STL 의 vector 와 map 을 상당히 많이 닮아 C++ 에 익숙하다면 익히는 데 별 어려움이 없이 적응이 가능해서 좋습니다 아래는 간단한 리스트와 딕셔너리에 대한 샘플 코드입니다 리스트는 [], 딕셔너리는 {}, 튜플은 () 로 선언한다는 것도 유의! (자세한 설명은 생략합니다 ^^) 1. 리스트 # list 테스트 def listTest(): # 초기화 codeList = ["A003540", "A005930","A066570"] size = len(codeList) print("list ->", codeList) # 추가 codeList.append("A000660") size = len(codeList) print(.. 2017. 9. 26.
파이썬 개발 환경 구축 하기 파이썬 개발 환경 구축 관련 간단하게 정리~ 아나콘다 설치 설치 주소: https://www.anaconda.com/download/ 32 비트 또는 64 비트 (증권사 API 개발한다면 32 비트 필요) 설치 위치는 기본 user/~ 밑에 설치 되는데, 개발 툴을 특정 위치에 설치를 선호한다면 다운로드 패스를 지정한다 (물론 이처럼 설정 할 경우 추후 SDK PATH 지정시 변경이 필요) 파이썬용 IDE 설치PyCharm 설치 주소: https://www.jetbrains.com/pycharm/download/Community Free 버전 선택 원하는 테마 선택(Visual Studio 가 편하다면 키보드 설정을 VS 로)아나콘다 패스 지정해 주기(아나콘다를 다른 폴더에 선택 한 경우) PYQT5 설.. 2017. 9. 25.