Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Python 활용: 이미지 처리와 데이터 분석

16,593 views

Published on

동양미래대학교 Python 강의슬라이드_08

Published in: Software
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Python 활용: 이미지 처리와 데이터 분석

  1. 1. 파이썬 활용: 이미지 처리와 데이터 분석 정보기술 시대에 유익한 파이썬 프로그래밍 – 제 8 강 동양미래대학교 2015.7 최용 <sk8er.choi@gmail.com>
  2. 2. 주제 • Anaconda • IPython • NumPy • PIL(Python Image Library) & Pillow • pandas: Python을 위한 데이터 분석 도구 • matplotlib: 차트
  3. 3. Anaconda 데이터 분석, 과학 컴퓨팅 등을 위한 Python 배포본 https://store.continuum.io/cshop/anaconda/
  4. 4. Anaconda 제품군 • Anaconda • Python과 conda 패키지 관리자 • 100개 이상의 패키지 포함. • conda install 명령으로 패키지 추가 설치 가능 • Miniconda • Python과 conda 패키지 관리자로 구성. • conda install 명령으로 패키지 설치 가능 • Anaconda Server • 기업 환경의 배포, 패키지 관리, 라이선스, 기술 지원 솔루션 • 유료
  5. 5. Anaconda에 포함된 주요 Python 패키지 • beautiful-soup: HTML과 XML 파일로부터 데이터 추출 • Cython: CPython 확장 모듈을 손쉽게 생성하도록 고안된 컴파일 언어 • IPython: 대화식 컴퓨팅 환경 • matplotlib: 2D 플로팅 라이브러리 • NLTK: 자연어 처리 플랫폼 • NumPy: 과학 컴퓨팅을 위한 패키지 • pandas: 데이터 분석 도구 • Pillow: Python Image Library의 fork • … • http://docs.continuum.io/anaconda/pkg-docs.html
  6. 6. Anaconda 다운로드와 설치 • http://continuum.io/downloads  I WANT PYTHON 3.4  Windows 64-Bit Python 3.4 Graphical Installer • Anaconda3-2.3.0-Windows-x86_64.exe 실행
  7. 7. conda – conda 관리 • conda 버전 확인 > conda --version • conda 업데이트 > conda update conda http://conda.pydata.org/docs/test-drive.html
  8. 8. conda – 환경 관리 • 환경 생성 > conda create --name dongyang python=3 • 환경 확인 > conda info --envs • 환경 활성화 > activate dongyang • 특정 환경에 대하여 패키지 확인, 설치, 삭제 (현재 활성화된 환경이 디폴트) > conda list -n dongyang > conda install -n dongyang matplotlib > conda remove -n dongyang somepkg • 환경 비활성화 > deactivate • 환경 삭제 > conda remove -n dongyang --all
  9. 9. conda – Python 실행
  10. 10. IPython 인터랙티브 컴퓨팅, 시각화 도구 http://ipython.org/
  11. 11. IPython Python을 대화식으로 사용함에 있어 편리한 기능을 제공 • 강력한 Python Shell • 웹 기반의 대화식 notebook • 데이터 시각화 지원 • 인터프리터를 프로젝트에 임베드할 수 있음 • 고성능의 라이브러리
  12. 12. IPython 설치와 실행 • 환경 활성화 > activate dongyang • ipython 설치 [dongyang] > conda install ipython • ipython 실행 [dongyang] > ipython
  13. 13. IPython 기능 • 프롬프트 번호, 색상 표시 • 자동 indent In [1]: class C: ...: pass ...: • Code assist In [2]: import pa parallelmagic parser pathlib • Built-in magic commands • 현재 디렉터리 확인 In [3]: %pwd • 디렉터리 이동 In [4]: %cd 'D:' In [5]: %cd summer_python • 디렉터리 생성 In [6]: %mkdir lecture08 In [7]: %cd lecture08 • 파일 목록 In [8]: %ls • 파일 편집 In [9]: %edit test.py • OS 명령 실행 (! 뒤에 명령 입력) In [10]: !del test.py In [11]: today = !date /t In [12]: today Out[12]: ['2015-07-24 '] Tab
  14. 14. IPython QtConsole • GUI 콘솔 • 그림 • 여러 줄 편집, 구문 강조 • 그래픽 calltip • 설치 [dongyang] > conda install ipython-qtconsole • 실행 [dongyang] > ipython qtconsole
  15. 15. IPython QtConsole – %load magic %load http://matplotlib.org/mpl_examples/pylab_examples/ellipse_demo.py
  16. 16. IPython Notebook • 웹 브라우저에서 사용하는 대화식 컴퓨팅 환경 • Python 코드 실행, HTML 문서, 수식, 도표를 한 화면에서 사용 • 입력과 출력을 저장할 수 있어, 인터프리터의 사용 내역을 쉽게 재연할 수 있음 • 설치 [dongyang] > conda install ipython-notebook • 실행 [dongyang] > ipython notebook
  17. 17. NumPy Numerical Python
  18. 18. NumPy • 다차원의 숫자 배열을 Python에서 효율적으로 처리하기 위한 모듈 • ndarray (n-dimensional array) 자료구조를 사용 • 참고 자료 • http://www.numpy.org/ • http://kestrel.nmt.edu/~raymond/software/python_notes/paper003.html • 엘리 브레설트 저, 이성주 역, <데이터/수치 분석을 위한 파이썬 라이브러리 SciPy와 NumPy>
  19. 19. NumPy – array >>> from numpy import * >>> a = array([[1., 2., 3.], [4., 5., 6.]]) >>> a array([[ 1., 2., 3.], [ 4., 5., 6.]]) >>> type(a) numpy.ndarray >>> a.shape (2, 3) http://kestrel.nmt.edu/~raymond/software/python_notes/paper003.html
  20. 20. NumPy – arange, linspace arange >>> b = arange(0, 11) >>> b array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) >>> c = arange(0., 2., 0.4) >>> c array([ 0. , 0.4, 0.8, 1.2, 1.6]) linspace >>> d = linspace(0., 3.5, 8) >>> d array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5])
  21. 21. NumPy – zeros, ones zeros >>> zeros((2, 4)) array([[ 0., 0., 0., 0.], [ 0., 0., 0., 0.]]) ones >>> ones((3, 3, 3)) array([[[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]], [[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]], [[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]]])
  22. 22. NumPy – array.transpose() >>> e = array([[1, 2], [3, 4]]) >>> e array([[1, 2], [3, 4]]) >>> e.transpose() array([[1, 3], [2, 4]])
  23. 23. NumPy – array.sort() >>> f = array([3, 7, 4, 8, 2, 15]) >>> f array([ 3, 7, 4, 8, 2, 15]) >>> f.sort() >>> f array([ 2, 3, 4, 7, 8, 15])
  24. 24. NumPy – array.max() >>> g = array([[1, 2], [3, 4]]) >>> g array([[1, 2], [3, 4]]) >>> g.max() # axis=None 배열 전체에서 가장 큰 스칼라 값 4 >>> g.max(axis=0) array([3, 4]) >>> g.max(1) array([2, 4]) http://pages.physics.cornell.edu/~myers/teaching/ComputationalMethods/python/arrays.html
  25. 25. PIL & Pillow Python Image Library
  26. 26. PIL & Pillow • PIL(Python Image Library) • Pillow: PIL의 fork • 이미지의 썸네일을 만들고, 형식을 변환하고, 크기를 바꾸는 등의 일들을 자동으로 처리하는 스크립트를 작성할 수 있음 • 설치 [dongyang] > conda search pil [dongyang] > conda install pillow • 참고 자료 • http://effbot.org/imagingbook/ • http://pillow.readthedocs.org/ • <예제 중심의 Python 3> 159 ~ 179 페이지
  27. 27. PIL.Image – open, show, save from PIL import Image im = Image.open('./EXID.jpg') im.show() im.save('EXID.png') 사진: wikimedia.org
  28. 28. PIL.Image • copy(): 복사 • thumbnail(): 썸네일 생성 • resize(): 크기 변경 • rotate():회전 • transpose() • FLIP_LEFT_RIGHT, FLIP_TOP_BOTTOM • ROTATE_90, ROTATE_180, ROTATE_270 • eval(): 밝기, 색상 조정 • convert(): 모드 변경 http://effbot.org/imagingbook/image.htm imout = im.transpose(Image.FLIP_LEFT_RIGHT) imout.show()
  29. 29. PIL.ImageFilter from PIL import ImageFilter imout = im.filter(ImageFilter.FIND_EDGES) imout.show() • BLUR • CONTOUR • DETAIL • EDGE_ENHANCE • EDGE_ENHANCE_MORE • EMBOSS • FIND_EDGES • SMOOTH • SMOOTH_MORE • SHARPEN
  30. 30. PIL.ImageDraw In [1]: from PIL import Image, ImageDraw In [2]: SIZE = 256 In [3]: im = Image.new("L", (SIZE, SIZE)) In [4]: d = ImageDraw.Draw(im) In [5]: for x in range(SIZE): ...: for y in range(SIZE): ...: d.point((x,y), 0) ...: In [6]: im.show()
  31. 31. PIL.ImageDraw In [7]: for x in range(SIZE): for y in range(SIZE): d.point((x,y), x) ....: In [8]: im.show()
  32. 32. PIL.ImageDraw In [9]: r = 100 In [10]: for x in range(SIZE): for y in range(SIZE): inner = (x - SIZE / 2) ** 2 + (y - SIZE / 2) ** 2 <= r ** 2 d.point((x,y), inner * 255) ....: In [11]: im.show()
  33. 33. pandas Python을 위한 데이터 분석 도구 http://pandas.pydata.org/
  34. 34. pandas • 빠르고 효율적인 DataFrame 개체 • 텍스트, CSV, 엑셀, SQL 데이터베이스, HDF5 입출력 • 지능적인 데이터 정렬, 누락된 데이터 처리 • Reshaping, pivot • Slicing, indexing, subsetting • 설치 [dongyang] > conda install pandas
  35. 35. pandas – Data Structure • Series • 1차원: index를 사용하여 참조 • DataFrame • 2차원: index, columns • 스프레드 시트, SQL 테이블 • Panel • 3차원 • items: axis 0 • major_axis: axis 1 • minor_axis: axis 2 • Panel4D, PanelND (실험 중) http://pandas.pydata.org/pandas-docs/stable/dsintro.html 참조
  36. 36. pandas – Series In [1]: import pandas as pd In [2]: s = pd.Series([3770, 4000, 4110, 4320, 4580, 4860, 5210, 5580], ...: index=list(range(2008, 2016))) In [3]: s Out[3]: 2008 3770 2009 4000 2010 4110 2011 4320 2012 4580 2013 4860 2014 5210 2015 5580 dtype: int64 http://www.index.go.kr/potal/main/EachDtlPageDetail.do?idx_cd=1492
  37. 37. pandas – Series In [4]: 2015 in s Out[4]: True In [5]: 2016 in s Out[5]: False In [6]: s[2015] Out[6]: 5580 In [7]: s * 2 Out[7]: 2008 7540 2009 8000 2010 8220 2011 8640 2012 9160 2013 9720 2014 10420 2015 11160 dtype: int64
  38. 38. pandas – DataFrame 생성(dict로부터) In [1]: import pandas as pd In [2]: d = {'Sales': [5.35, 17.04, 13.61], 'Operating Income': [0.37, 0.41, 0.56]} In [3]: pd.DataFrame(d, index=['롯데리아', '맥도날드', '버거킹']) Out[3]: Operating Income Sales 롯데리아 0.37 5.35 맥도날드 0.41 17.04 버거킹 0.56 13.61 In [4]: pd.DataFrame(d, index=['롯데리아', '맥도날드', '버거킹'], ....: columns=['Sales', 'Operating Income']) Out[4]: Sales Operating Income 롯데리아 5.35 0.37 맥도날드 17.04 0.41 버거킹 13.61 0.56 http://www.joseilbo.co.kr/news/htmls/2015/03/20150306250881. html
  39. 39. pandas – DataFrame 생성(CSV), 슬라이싱, 컬럼 선택 In [1]: import pandas as pd In [2]: file = 'https://github.com/sk8erchoi/csv-files/raw/master/minimum_wages.csv' In [3]: df = pd.read_csv(file, parse_dates=True) In [4]: df['2014-01-01':] Out[4]: Min wage Rise rate Influ factor Appl laborers Benef laborers 2014-01-01 5210 7.2 14.5 17734 2565 2015-01-01 5580 7.1 14.6 18240 2668 2016-01-01 6030 NaN NaN NaN NaN In [5]: df['Min wage']['2014-01-01':] Out[5]: 2014-01-01 5210 2015-01-01 5580 2016-01-01 6030 Name: Min wage, dtype: int64
  40. 40. pandas – plot In [6]: df['Min wage']['2010-01-01':].plot() Out[6]: <matplotlib.axes._subplots.AxesSubplot at 0x108705208> In [7]: import matplotlib.pyplot as plt In [8]: plt.show() 최저임금 http://www.index.go.kr/potal/main/EachDtlPageDetail.do?idx_cd=1492
  41. 41. pandas – 복수의 컬럼 선택, 정렬 In [1]: import pandas as pd In [2]: file = "https://raw.githubusercontent.com/sk8erchoi/csv-files/master/college _reg_fee_2015.csv" In [3]: df = pd.read_csv(file) In [4]: df[['Name', 'Avg']][:3] Out[4]: Name Avg 0 ICT폴리텍대학 2200 1 가톨릭상지대학교 5504 2 강동대학교 5725 In [5]: df[['Name', 'Avg']].sort(['Avg'], ascending=False).head(3) Out[5]: Name Avg 72 서울예술대학교 8101 18 계원예술대학교 7564 61 백제예술대학교 7486 • 2015년 전문대학 등록금 현황 http://khei-khei.tistory.com/1430
  42. 42. pandas – DataReader • Google, Yahoo 등에서 제공하는 데이터를 받아올 수 있음 In [1]: from datetime import datetime In [2]: import pandas.io.data as web In [3]: start, end = datetime(2015, 7, 17), datetime(2015, 7, 23) In [4]: samsungcnt = web.DataReader("000830.KS", "yahoo", start, end) In [5]: samsungcnt Out[5]: Open High Low Close Volume Adj Close Date 2015-07-17 70800 71800 61700 62100 14469100 62100 2015-07-20 61300 62200 59600 60000 4525300 60000 2015-07-21 60600 61100 59000 59200 2181400 59200 2015-07-22 59200 60400 59100 60100 2107200 60100 2015-07-23 59800 60100 58900 59100 1458300 59100 http://pandas.pydata.org/pandas-docs/stable/remote_data.html https://wikidocs.net/1913
  43. 43. matplotlib http://matplotlib.org/
  44. 44. matplotlib • 2D, 3D 플로팅 라이브러리 • LaTeX 형식의 라벨과 텍스트 사용 가능 • 그림(figure) 내의 각 요소를 제어할 수 있음 • 여러 형식으로 저장(PNG, PDF, SVG, …) • 대화식 혹은 일괄 작업 방식으로 사용할 수 있음 • MATLAB 방식 또는 객체 지향 방식으로 사용
  45. 45. pylab vs. matplotlib.pyplot pylab: MATLAB과 유사 from pylab import * plot([1,2,3,4]) ylabel('some numbers') show() matplotlib.pyplot: 객체 지향 import matplotlib.pyplot as plt plt.plot([1, 2, 3, 4]) plt.ylabel('some numbers') plt.show() http://matplotlib.org/users/pyplot_tutorial.html
  46. 46. matplotlib.pyplot – line style, axis import matplotlib.pyplot as plt plt.plot([1,2,3,4], [1,4,9,16], 'ro') plt.axis([0, 6, 0, 20]) plt.show() 선 스타일 • ro: 붉은 원 • b-: 파란 실선 • r--: 붉은 점선 • bs: 파란 사각형 • g^: 녹색 삼각형
  47. 47. matplotlib.pyplot – scatter import numpy as np import matplotlib.pyplot as plt x = np.random.randn(1000) y = np.random.randn(1000) plt.scatter(x, y) plt.show()
  48. 48. matplotlib.pyplot – figure, axes import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 5, 10) y = x ** 2 fig = plt.figure() axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) axes2 = fig.add_axes([0.2, 0.5, 0.4, 0.3]) axes1.plot(x, y, 'r') axes1.set_xlabel('x') axes1.set_ylabel('y') axes1.set_title('title') axes2.plot(y, x, 'g') axes2.set_xlabel('y') axes2.set_ylabel('x') axes2.set_title('insert title') fig.show() http://nbviewer.ipython.org/github/jrjohansson/scientific-python-lectures/blob/master/Lecture-4-Matplotlib.ipynb
  49. 49. matplotlib.pyplot – subplots, step, bar import matplotlib.pyplot as plt import numpy as np n = np.array([0, 1, 2, 3, 4, 5]) fig, axes = plt.subplots(nrows=1, ncols=2) axes[0].step(n, n**2, lw=2) axes[0].set_title("step") axes[1].bar(n, n**2, align="center", width=0.5, alpha=0.5) axes[1].set_title("bar") plt.show()
  50. 50. More • Polar • Histogram • Colormap • Contour • 3D (Surface, Wireframe) • 참고 자료 • Beginner’s Guide http://matplotlib.org/users/beginner.html • http://nbviewer.ipython.org/github/jrjohansson/scientific-python- lectures/blob/master/Lecture-4-Matplotlib.ipynb

×