Jupyter에서 쓰는 유용한 단축키를 3개만 보여드릴까 합니다. 기초적인 단축키를 알고 싶으시다면 아래 포스팅을 참고해주세요. [Python/기초] - Jupyter notebook 사용법 Jupyter notebook 사용법 Jupyter notebook에 대해 알아볼까 합니다. Jupyter notebook 은 웹브라이저에서 파이썬 코드를 작성하고 실행하는 개발도구로 주로 계산하거나 python 연습할 때 많이 씁니다. 다른 파이썬 인터프리터와는 seong6496.tistory.com 동시 주석처리 [Ctrl]+[/] Jupyter는 한 셀을 실행을 시키면 특성상 한 셀에 있는 모든 코드 모두를 작업을 합니다. 간혹 어떤것은 하고 어떤 것은 하지 않고 싶을때 다시 쓰는 것보다는 커서 위치 주석처리를..
원도우 작업 스케줄러를 사용하면 정해진 시간에 파이썬 파일을 실행시킬 수 있습니다. 작업 스케줄러 실행하기 먼저 작업스케줄러를 실행시켜 봅시다. 밑의 그림과 같이 왼쪽 아래에 검색 창에서 작업 스케줄러를 입력합니다. 작업 스케줄러가 실행되면 다음과 같은 창이 뜹니다. 오른쪽 위에 작업란에서 [작업 만들기]를 클릭합니다. [이름] 란에 원하는 이름을 씁니다. 저는 excelsave라고 썼습니다. 파이썬을 실행할 때 보통 관리자 권한으로 실행하게 되므로 [가장 높은 수준의 권한으로 실행]에 체크를 해줍니다. [구성대상]에서는 자신에 맞는 운영체제를 선택해줍니다. 혹시 계정의 이름을 바꿨거나 다른 사용자 계정으로 써야 한다면 [사용자 또는 그룹 변경] 란을 클릭해 자신이 원하는 사용자로 변경합니다. [트리거]..
보통 우리는 64bit 환경에서 개발을 합니다만 증권사 api를 쓰기 위해서는 32bit 개발환경이 필요합니다. 물론 다시 설치할 수도 있지만 번거롭기 때문에 32bit 가상환경을 만들어 32bit 환경에서 python이 동작하는 공간을 용량은 조금 차지하기는 하지만 효율적으로 python을 사용할 수 있습니다. 가상환경 설치하기 1. Anaconda prompt 실행 다음과 같은 과정을 통해 가상환경을 구축할 수 있습니다. 생각보다 굉장히 간단합니다. 시작화면 검색에서 anaconda prompt를 찾습니다. 위의 그림처럼 anaconda prompt를 찾을 수 있습니다. 관리자 권한으로 실행을 하고 다음과 같이 코드를 입력합니다. 2. 아나콘다 32bit 설정 및 가상환경 설치 # 구식방법(파이썬 낮..
Win32com 이라는 모듈이 있습니다. 윈도우 프로그램을 컨트롤 하는 모듈인데 Win32com 모듈로 엑셀을 켠 상태로 다룰 수 있다 해서 한 번 해보았습니다. 엑셀을 켠 상태에서 할 수 있는게 장점이자 단점이 될 수도 있다는 생각이 들지만 개인적으로는 눈으로 상황을 볼 수 있어서 코딩 수정하기가 편해서 좋았습니다. 엑셀 구동 엑셀을 파이썬으로 구동을 해보겠습니다. 일단 새파일을 만들어보겠습니다. #엑셀 구동&새파일 생성 import win32com.client excel = win32com.client.Dispatch("Excel.Application") excel.Visible =True wb = excel.Workbooks.Add() ws = wb.Worksheets("Sheet1') excel...
회사에서 엑셀을 많이 씁니다. 문서를 만들때마다 일일히 문서를 다시 쓴다면 너무 힘들겁니다. 이런 엑셀 노가다를 피하기 위해 파이썬으로 업무자동화시스템을 구축할 수 있습니다. 업무자동화를 위해 이번 포스팅에서는 엑셀파일을 읽어오고 쓰는 방법을 소개할까 합니다. 엑셀을 다룰수 있는 다양한 모듈이 있지만 openpyxl만을 가지고 엑셀을 다루겠습니다. openpyxl 모듈 설치 먼저 openpyxl을 설치합시다 Jupyter에서 다음과 같이 입력해서 설치를 요청합니다. !pip install openpyxl 엑셀파일을 불러오려면 엑셀파일이 필요합니다. 저는 국고채(3년),국고채(10년) 금리표 파일이 있어서 시장금리 파일을 불러오겠습니다. 시장금리.xlsx로 저장했습니다. 엑셀파일 불러오기 먼저 다음과 같이..
DataFrame column 추가,삭제,순서변경을 해보겠습니다. import pandas as pd sise = pd.DataFrame({'저가' :[53800, 236000, 110000 ],'고가':[54800,234500,113000]},index=['삼성전자','SK','현대차']) sise 제가 임의로 삼성전자와 SK,현대차의 오늘의 고가,저가를 DataFrame 만들어서 진행하겠습니다. (실제 저가,고가는 아닙니다) 추가 여기서 고가-저가를 한 값들을 DataFrame의 column으로 추가를 해보겠습니다. 간단한 연산만 입력하면 추가할 수 있습니다. sise['range']=sise['고가']-sise['저가'] sise 순서변경 순서변경을 위해선 다시 재정의를 하는 방식으로 합니다. 원하..
DataFrame에 대해 살펴보겠습니다. Series가 1차원 형태의 자료구조라면 DataFrame은 2차원 형태의 자료구조입니다. Series보다 훨씬 다양하게 쓸수 있고 흔히 쓰는 엑셀(Excel)의 스프레트시트와 형태가 비슷하기 때문에 사용법을 조금 익히시면 계산측면에서는 엑셀보다 훨씬 효율적으로 쓸 수 있을겁니다. DataFrame 생성하기 먼저 DataFrame을 생성해서 살펴보겠습니다. from pandas import Series, DataFrame raw_data = {'col0':[1,2,3,4],'col1':[10,20,30,40],'col2':[100,200,300,400]} data = DataFrame(raw_data) print(raw_data) raw_data를 보시면 일반적인..
간단하게 Series의 슬라이싱에 대해서 살펴보겠습니다. 결론적으로 말하면 리스트와 동일합니다. import numpy as np import pandas as pd s = pd.Series(np.arange(1,6)) s s라는 Series에서 슬라이싱을 하겠습니다. 리스트와 동일한 방법으로 슬라이싱을 할 수 있습니다. s[1:3] 인덱스를 기준으로 슬라이싱이 된다는 것을 꼭 기억해주세요! 이번에는 인덱스를 0,1,2,3....으로 하지않고 a,b,c,d,e...로 해서 슬라이싱을 해보겠습니다. s1 = pd.Series(np.arange(1,6),['a','b','c','d','e']) s1 s1['c':'d'] s1 인덱스를 다른 것으로 정해놓아도 고유 인덱스번호는 가지고 있기 때문에 고유 인덱스번..
Series의 drop과 slicing 에 대해서 살펴보겠습니다. Drop 데이터를 받다보면 내가 필요없는 데이터들이 존재합니다. 그럴 때, drop을 이용해 데이터를 없앨 수 있습니다. import numpy as np import pandas as pd s = pd.Sereis(np.arange(1,6),['a','b','c','d','e'] s d를 없애보겠습니다. s.drop('d') 이번엔 d와 e를 없애보겠습니다. d와 e 두개 이상의 데이터를 없앨때는 대괄호 안에 해당 인덱스를 써 넣습니다. s.drop(['d','e']) 하지만 이런다고 s에서 완전히 없어진건 아닙니다. 원본 데이터는 그대로 둔채 drop된 새로운 데이터로 추가로 생성되는 방식이기 때문입니다. s를 다시 부르면 d,e가 사..
Bool을 이용해 Series에서 조건에 해당하는 값을 불러보겠습니다. 먼저 Series를 이용해서 Bool타입을 나타내보겠습니다. import numpy as np import pandas as pd s = pd.Series(np.arange(10),np.arange(10)+1) s 인덱스 구분을 위해 인덱스는 1부터 시작하게 했습니다. 여기서 4보다 큰 값을 Bool로 구분해보겠습니다. s>4 True, False로 구분했습니다. 이걸 Series s에 적용시켜 값이 나오도록 하겠습니다. List와 똑같은 방식으로 하면 됩니다. s[s>4] 대괄호 안에 bool타입을 넣으면 조건에 맞는 값(True)만 나옵니다. 이런 식으로 조건의 맞는 값을 가져올 수 있습니다. 그런데 Series는 index도 저..
Series 로도 연산이 가능합니다. Series는 인덱스를 정할 수 있었기 때문에 그 부분을 생각하고 ndarray에서 하던식으로 하면 연산이 잘 됩니다. 다만 주의할점은 짝이 맞아야 된다는 것인데 짝이 맞지 않으면 NaN으로 출력하게 됩니다. import numpy as np import pandas as pd s1 = pd.Series([1,2,3,4],['a','b','c','d']) s2 = pd.Series([4,2,3,1],['d','b','c','a']) s1+s2 s2의 value 값의 순서를 바꿔도 그에 대응하는 인덱스값을 설정을 해놓으면 Series에서는 인덱스에 대응하는 value 값으로 연산을 하게 됩니다. 가능한 연산을 살펴보겠습니다. 먼저 사칙연산 가능합니다. print(s1-..
Series의 정보를 추출하는 간단한 함수를 알려드릴까 합니다. 다음과 같은 함수를 쓰면 Series의 형태를 파악할 수 있습니다. 물론 더 많이 있지만 주요한 것만 소개하겠습니다. size : Series의 원소 개수를 알려줌 shape : 튜플형태로 shape를 알려줌 unique : 유일한 값만 ndarray로 반환해서 출력 count : NaN을 제외한 원소 개수를 알려줌 mean : NaN을 제외한 평균(numpy와 다르게 계산가능) value_counts : NaN을 제외하고 각 값들의 빈도를 출력 head : 상위 n개 출력 기본값은 5개 tail : 하위 n개 출력 기본값은 5개 import numpy as np import pandas as pd numpy와 pandas를 임포트하고 시작..
Pandas에 대해서 알아볼까 합니다. Pandas는 데이터 다룰 때 많이 쓰고 있고 데이터 사이언스를 하는데 있어서 반드시 잘 다루어야 하는 모듈 중에 하나이고 기본중의 기본 모듈이기도 합니다. 사실 파이썬에서도 리스트,튜플,딕셔너리를 가지고 데이터를 다룰 수 있습니다. 파이썬의 특유의 직관성 때문에 이런 자료구조를 다루는 것만으로도 굉장히 편리합니다. 그런데 좀 더 효율적인 부분을 생각한다면 pandas가 파이썬에 기본으로 내장되어 있는 것보다는 더욱 효율적인 작업을 할 수 있습니다. 그렇다고 Pandas만 주구장창 쓰는 건 아니고 필요에 따라서 리스트도 쓸 때도 있고 pandas에 있는 자료구조도 쓸수 있습니다. 그저 더욱 편리하고 잘 다룰 수 있는 방법을 추구하는 것 뿐입니다. Pandas에는 두..
matplotlib로 ndarray의 그래프를 그려보겠습니다. 참고로 Jupyter notebook에서 코드작성합니다. import numpy as np import matplotlib.pyplot as plt %matplotlib inline matplotlib 모듈을 이용해서 그래프를 그릴수 있는데 jupyter는 브라우저상의 개발도구라서 바로 그래프를 나타내야 한다고 명령을 따로 해줘야 합니다. '현 웹창에 당장 그래프를 그려줘'라는 명령을 내려줘야 하는데 그 명령이 %matplotlib inline입니다. 데이터 이렇게 import를 하면 이제 그래프를 생성할 수 있는 도구는 다 모은 셈입니다. 그래프를 그릴려면 먼저 데이터가 있어야겠지요. x,y로 ndarray를 만들겠습니다. x = np.li..
Bool을 이용하는 방법에 대해 설명하겠습니다. Boolean indexing ndarray도 인덱싱이 가능하다는 것은 앞서 작성한 포스팅을 보면 알 수 있습니다. 그런데 이 ndarray에서 조건에 맞는 원소만 가져오도록 하겠습니다. 파이썬 list와 똑같이 합니다. import numpy as np np.random.seed(22) x = np.random.randint(1,100,size=10) x를 100까지 수에서 아무거나 가져오고 여기서 짝수만 가져와보겠습니다. even = x%2==0 print(even) print(x[even]) even을 위에 만든 x의 각 원소를 2로 나눴을때 나머지가 0이 되는 것이라고 지정을 했습니다. print(even)을 하면 각 원소가 bool이 되는 것을 볼..