2019년 4월 5일 금요일

파이썬 리스트의 이해

리스트list란?
프로그래밍 언어에서 가장 많이 사용하는 자료형입니다. 배열array이라고도 합니다.
파이썬에서는 리스트처럼 여러 데이터를 하나의 변수에 할당하는 기법을 시퀀스 자료형이라고 합니다.


인덱싱indexing
리스트에 있는 값에 접근하기 위해, 이 값의 상대적인 주소offset를 사용하는 것.

예)
city = ['Seoul', 'Busan', 'Daegu', 'Gwangju']
print(city[0])
print(city[3])
print(len(city))

결과:
Seoul
Gwangu
4

*len() 함수는 리스트 안에 있는 값의 갯수를 반환합니다.


슬라이싱slicing
리스트의 인덱스를 사용하여 전체 리스트에서 일부를 잘라내어 반환합니다.

기본 문법
변수명[시작 인덱스:마지막 인덱스]

리스트와 인덱스 값

리버스 인덱스reverse index
인덱스를 마지막 값부터 시작하는 기능입니다.

리버스 인덱스


증가값step
기본 문법
변수명[시작 인덱스:마지막 인덱스:증가값]


리스트의 추가 및 삭제 함수
함수
기능
예시
append()
새로운 값을 기존 리스트의 맨 끝에 추가
city.append(‘Dokyo’)
extend()
새로운 리스트를 기존 리스트에 추가. 덧셈 연산과 같은 효과.
city.extend(‘Dokyo’, ‘Osaka’)
insert()
기존 리스트의 i번째 인덱스에 새로운 값을 추가. i번째 인덱스를 기준으로 뒤쪽의 인덱스는 하나씩 밀림
city.insert(1,‘Incheon’)
remove()
리스트 내의 특정 값을 삭제
city.remove(‘Busan’)
del
특정 인덱스값을 삭제
del city[1]


리스트의 메모리 저장
파이썬은 리스트를 저장할 때 값 자체가 아니라, 값이 위치한 메모리 주소reference를 저장합니다. 리스트 안에는 값 자체가 저장되는 게 아니라, 값이 메모리에서 위치한 메모리의 주소인 주소값을 저장합니다. C의 포인터 개념과 비슷합니다.


파이썬의 리스트에 대해 알아봤습니다. 감사합니다.

*위 내용은 최성철 교수의 책, '데이터 과학을 위한 파이썬 프로그래밍'(한빛아카데미)을 참고하여 작성하였습니다.

파이썬으로 오토핫키의 imagesearch를 구현해보자!

안녕하세요? 업무 자동화 하면 바로 파이썬입니다!
그래서 오늘은 오토핫키의 imagesearch 기능을 파이썬에서 구현하는 방법을 알아볼까 합니다. 기대되시나요? 그러면 글을 차근차근히 읽어주시면 됩니다!


우선 drov0님의 Github에서 imagesearch.py를 받아줍니다. imagesearch.py는 만들 py파일 경로에 넣어주세요.
(https://github.com/drov0/python-imagesearch)

[Clone or download] 버튼을 클릭하면 imagesearch.py를 받을 수 있습니다.


그리고 아래의 라이브러리들을 설치해줍니다. 다운 받은 폴더의 requirements.txt가 있는 자리에서 파이썬을 실행시키신 후, pip3 install -r requirements.txt 명령어를 진행해주시면 됩니다. 가장 좋은 것은 Anaconda를 통해 설치하고, 추가적으로 필요한 라이브러리들을 설치하는 방법으로 진행해주실 것을 권합니다.

필요한 라이브러리
opencv-python
numpy
python3_xlib
pyautogui

그렇다면 준비는 모두 완료되었습니다.


이제 찾고싶은 이미지 파일을 경로에 넣어줍니다. 우선 구글 로고를 클릭하는 프로그램을 만들어봅시다.

구글 로고
아래 그림처럼 구글 로고의 일부부분만 캡처해서 google.png파일로 해당 경로에 넣어줍니다.
빨간색 박스 부분을 캡처해 png파일로 만든다.



그리고 python 파일을 아래와 같이 작성해봅니다.

from imagesearch import * 

img = './google_logo.png'
pos = imagesearch(img)
if pos[0] != -1:
    click_image(img, pos, 'left', 0.1)



설명

line 1 from imagesearch import * : imagesearch.py를 import해줍니다.
line 3 img = './google_logo.png' : 찾고 싶은 이미지 파일의 경로를 변수 img에 넣어줍니다.
line 4 pos = imagesearch(img) : 변수 pos에 이미지 파일을 찾은 후 마우스 좌표를 넣어줍니다.
line 5 if pos[0] != -1: : pos 값이 정상일 경우 실행합니다.
line 6 click_image(img, pos, 'left', 0.1) : pos위치를 img 크기 내에서 랜덤으로 클릭해줍니다. 0.1초의 마우스 이동시간을 갖습니다.

브라우저를 통해, 우리가 갖고 있는 이미지와 같은 구글 로고 창을 띄운 뒤, 해당 py파일을 실행해봅시다. 이미지를 인식해서 구글 로고를 클릭했다면, 성공입니다!

감사합니다.

2019년 4월 3일 수요일

파이썬은 어떤 언어인가?

요즘 뜨고 있는 언어, 바로 파이썬(Python)입니다.
프로그래밍 언어에는 수만가지의 언어들이 있습니다. 그 중에서 파이썬에 대해 알아봅니다.


파이썬은 어떤 프로그래밍 언어일까요?


파이썬의 등장


파이썬은 귀도 반 로섬(Guido Van Rossum)이 1991년에 개발한 언어입니다. 처음에는 C 언어 기반으로 개발되었습니다. 이후 다양한 기능이 개발되어 추가되었습니다.


귀도 반 로섬(Guido Van Rossum)?


네덜란드 사람으로 파이썬의 개발자입니다. 1989년 크리스마스에 할 일이 없어 혼자 집에 있다가 파이썬을 개발했습니다. 구글에서 일했으며, 현재는 드랍박스(Dropbox)에서 근무하는 것으로 알려져 있습니다.
그는 파이썬의 이름을 정하면서 제일 좋아했던 코미디 프로그램인 "Monty Python's Flying Circus"에서 'Python'이라는 이름을 따왔다고 합니다. 원래 파이썬은 그리스 신화에 나오는 '피톤'이라는 뱀의 이름입니다. 이 뱀의 이름에서 따왔으므로, 파이썬의 로고는 뱀 두마리가 서로 똬리를 튼 듯한 형태를 사용합니다.

파이썬의 로고, 뱀이 똬리를 튼 듯한 모양.

파이썬의 특징


파이썬의 특징은 크게 4가지로 볼 수 있습니다.

첫 번째, 플랫폼 독립적인 언어이다.
어떤 운영체제에서나 상관없이 사용할 수 있는 언어입니다.

두 번째, 인터프리터 언어(interpreter language)이다.
인터프리터 언어는 컴파일러(compiler) 언어와 달리, 소스코드 자체가 바로 실행되는 특징이 있는 언어입니다. 속도는 느리지만, 굉장히 간편합니다.

세 번째, 객체 지향 언어(object oriented language)이다.
객체 지향 프로그래밍 환경에서 사용되는 프로그래밍 언어입니다. 소스코드를 작성할 때, 하나부터 열까지 프로그래밍을 하는 절차적 프로그래밍 언어(procedure progrmming)와 달리, 객체 지향 언어는 해당 프로그램이 해결해야 할 문제의 구성요소를 요소별로 정의하고, 각 요소의 기능(method, 메소드)과 정보(attribute, 속성)를 정의하여 요소들을 결합하고 프로그램을 작성하는 방식입니다.

네 번째, 동적 타이핑 언어(dynamic typing language)이다.
파이썬이 다른 언어와 가장 큰 차이를 보이는 특징입니다. 프로그램의 실행 시점에서 각 프로그램 변수의 타입(type)을 결정하는 언어입니다.


파이썬을 배우는 이유


쉽고 간단한 프로그래밍 언어이다!
파이썬은 인간 지향적인 문법이기 때문에 프로그래밍을 처음 배우는 사람도 코드를 쉽게 알아볼 수 있습니다. 이처럼 간결하며 직관적입니다.

다양한 라이브러리를 제공합니다.
딥러닝 프레임워크인 구글의 텐서플로(Tensorflow)나 페이스북이 참여한 PyTorch 같은 프레임워크를 이용할 수 있습니다. 이 외에도 수 많은 라이브러리를 제공합니다.
(참고 : https://pyinweb.blogspot.com/2019/04/python.html)

점점 치솟는 인기있고 대중적인 언어입니다.
컴퓨터 공학 학회지인 [ACM(Association for Computing Machinery)]의 2014년 조사에 따르면 미국의 39개 대학 중 파이썬을 기초 프로그래밍 언어로 선택한 대학이 가장 많았습니다. 또한 Stack Overflow의 조사 결과, 가장 많은 질의응답이 있는 프로그래밍 언어는 파이썬인 것으로 나타났습니다. 이로써 앞으로도 유망한 언이임을 알 수 있습니다.



이제 어느 정도 파이썬이라는 프로그래밍 언어에 대해 감이 잡히나요? 그렇다면 직접 파이썬에 빠져들어 봅시다!



*위 내용은 최성철 교수의 책, '데이터 과학을 위한 파이썬 프로그래밍'(한빛아카데미)에서 많은 참고를 하여 작성되었습니다.

2019년 4월 2일 화요일

자동화를 위한 Python의 오픈소스 라이브러리

안녕하세요?
파이썬은 다른 프로그래밍 언어에 비해 좋은 점이 오픈소스 라이브러리들이 잘 정리되어 있고, 관리되고 있다는 점입니다. 오픈소스 라이브러리들만 잘 다루어도 프로그래밍이 한 결 더 업그레이드 됩니다. 그래서 자동화를 위한 파이썬 오픈소스 라이브러리자주 쓰는 파이썬 GUI Framework를 정리해봤습니다.

자동화를 위한 파이썬 오픈소스 라이브러리

(출처: PYCON KOREA 2018)

데이터 크롤링
requests, BeautifulSoup

데이터 전처리
numpy, pandas

브라우저 자동화
Selenium

엑셀 자동화
OpenPyXL, pandas

이메일 자동화
smtplib, EmailMessage

보고서 생성 자동화
Jinja2

데스크탑 자동화
pyautogui

자동화 통합 관리
Robot Framework

이미지 캡처, 이미지 프로세싱
OpenCV

OCR (문자 인식, 숫자 인식)
tesseract



자주 쓰는 파이썬 GUI framework

tkinter
pyQt
electron

2019년 4월 1일 월요일

anaconda로 가상 환경 만들기

PYTHON을 쓰는 분들은 대부분 Anaconda를 통해 패키지를 관리하실 겁니다.

파이썬을 처음하는 초보 분들은 'Python은 뭐고, Anaconda는 뭐지?'라고 생각하실 거에요.

알기 쉽게 설명해드리면, AnacondaPython에서 자주 사용하는 패키지를 통합해 관리하기 쉽게 배포하는 배포판입니다. 주로 데이터 과학과 기계학습 관련된 패키지를 포함하고 있습니다.


주요 파이썬 인터프리터
Python - 일반적인 파이썬, 기본적인 모듈 포함
Anaconda - 다양한 과학 계산용 모듈을 묶어 패키지로 제공
Canopy - 다양한 과학 계산용 모듈을 묶어 패키지로 제공


아나콘다 설치 : https://www.anaconda.com


Anaconda의 홈페이지 설명



Anaconda를 쓰기 위해, 우리는 Anaconda env(가상 환경)을 만들 필요가 있습니다.

가장 쉬운 방법은 Anaconda 설치 후에, Anaconda Prompt를 들어가줍니다. 이 외에 conda 명령어를 실행할 수 있는 어떤 커맨드 창이라도 괜찮습니다. 이후 밑에 있는 필요한 명령을 입력하면 됩니다.





아나콘다 env(가상 환경) 만들기.

conda create -n 가상환경이름 python=파이썬버전

ex) conda create -n pyenvtest python=3.7
파이썬 3.7버전의 'pyenvtest'라는 이름의 가상 환경을 만듭니다.

이후 'Proceed (y/n)?'이라고 나오면, 계속 진행을 위해 y를 입력해줍니다.



env(가상 환경) 활성화 하기.

conda activate 가상환경이름



env(가상 환경) 비활성화.

conda deactivate



env(가상 환경) 제거하기.

conda remove -n 가상환경이름 --all



env(가상 환경) 리스트 보기.

conda env list