소개

이 노트북은 제이크 반더플라스(Jake VanderPlas)의 A Whirlwind Tour of Python(OReilly Media, 2016)를 기반으로 만들어졌습니다. 이 내용은 CC0 라이센스를 따릅니다. 전체 노트북의 목록은 https://github.com/rickiepark/WhirlwindTourOfPython 에서 볼 수 있습니다.

| 목차 | 파이썬 코드를 실행하는 법 >

 

교육용과 스크립팅 언어로 1980년대 후반에 고안된 파이썬은 이제 학계와 산업계에 걸쳐 많은 프로그래머, 엔지니어, 연구자, 데이터 과학자들에게 필수적인 도구가 되었습니다. 데이터 위주 과학 분야를 위한 무료 공개 툴을 만들고 돕는데 열정적인 한 천문학자로서 저는 파이썬이 매일 매일 부딪히는 여러 종류의 문제들을 해결하는 데 거의 완벽한 도구라는 것을 알게 되었습니다. 대규모 천문학 데이터셋에서 단서를 찾거나, 웹에서 데이터를 스크래핑하고 조작하거나 또는 매일하는 연구 작업들을 자동화합니다.

파이썬의 매력은 작업 영역에 맞는 많은 도구들이 있는 생태계로 인한 편리함은 물론 파이썬 그 자체의 간단함과 아름다움에 있습니다. 예를 들어, 과학 컴퓨팅과 데이터 과학 분야에서 대부분의 파이썬 코드는 안정적이고 유용한 다음과 같은 패키지들 위에 구축되어 있습니다:

  • NumPy는 다차원 데이터 배열을 위한 효율적인 저장과 연산을 제공합니다.
  • SciPy는 적분과 보간(interpolation) 같은 방대한 양의 수학적 도구를 포함합니다.
  • Pandas는 데이터의 조작, 필터링, 그룹핑, 변환을 위한 강력한 메서드를 가진 DataFrame 객체를 제공합니다.
  • Matplotlib은 출판 가능한 퀄리티의 그래프와 이미지를 만들기 위한 편리한 인터페이스를 제공합니다.
  • Scikit-Learn은 인기있는 일관된 인터페이스로 머신러닝 알고리즘을 데이터에 적용하기 위한 도구를 제공합니다.
  • IPython/Jupyter는 인터랙티브하고 실행가능한 문서를 생성하는 기능은 물론 탐색적 분석에 유용한 향상된 터미널과 인터랙티브한 노트북 환경을 제공합니다. 예를 들어, 이 리포트 원고는 모두 주피터 노트북으로 작성되었습니다.

이들과 동반되는 수 많은 다른 도구와 패키지들 모두 중요합니다. 여러분이 처리해야 할 과학적 또는 데이터 분석적 작업이 있다면 아마도 누군가가 패키지를 만들어 놓았을 가능성이 높습니다.

그러나 이런 데이터 과학 생태계의 파워를 이용하려면 먼저 파이썬 언어 자체에 친숙해져야 합니다. MATLAB, IDL, R, Java, C++ 같은 언어에 대해 (이따끔 매우 넓게) 알고 있는 학생이나 동료들이 아주 기초가 아니라 컴퓨팅 언어에 대한 사전 지식을 감안해서 파이썬에 대한 간단하지만 폭 넓은 소개를 담은 자료를 찾는 것을 자주 목격합니다. 이 글이 바로 그 부분을 채우려고 합니다.

그래서 이 리포트는 프로그래밍에 대한 폭 넓은 안내나 파이썬 언어의 완벽한 소개를 목적으로 하지 않습니다. 그런 것을 찾는다면 Resources for Learning에 나열된 추천 목록을 참고하세요. 대신 여기서는 파이썬의 핵심적인 문법과 의미, 내장 데이터 타입과 구조, 함수 정의, 제어 구문 그외 언어의 여러 측면을 빠르게 둘러 보겠습니다. 이 글의 목적은 독자들이 조금 전 설명한 데이터 과학 패키지들을 탐험하기 위한 견고한 기초를 갖추게 하는 것입니다.

설치와 실용적 고려사항

윈도우즈, 리눅스, 맥에 상관없이 파이썬과 과학 컴퓨팅을 위한 라이브러리들을 설치하는 것은 쉽습니다. 이 섹션에서 컴퓨터 셋팅할 때 고려해야할 몇 가지 내용을 소개합니다.

파이썬2 vs 파이썬3

이 리포트는 파이썬 2.x 시리즈와는 호환되지 않는 개선된 파이썬3의 문법을 사용합니다. 파이썬 3.0이 2008년에 처음 출시되었지만 비교적 더디게 적용되어 왔습니다. 특히 과학과 웹 개발 커뮤니티가 그렇습니다. 이런 이유는 주로 필수적인 패키지와 툴킷들이 새로운 언어의 내부 구조와 호환되도록 하는데 시간이 걸리기 때문이었습니다. 그러나 2014년 초부터 데이터 과학 생태계의 중요한 대부분의 패키지들의 안정 버전이 파이썬 2와 3에서 모두 완전히 호환되었습니다. 그러므로 이 책은 새로운 파이썬 3의 문법을 사용합니다. 그렇더라도 이 책에 있는 코드의 많은 부분은 여전히 파이썬2에서 수정없이 작동시킬 수 있습니다. 파이썬2와 호환되지 않는 문법이 있는 경우 가능한 명확하게 언급하도록 노력하겠습니다.

conda를 사용한 설치

파이썬을 설치하는 방법이 여러가지가 있지만 제가 추천하는 한 가지는 – 특히 위에서 언급한 데이터 과학 도구들을 사용하려고 할 때 – 크로스 플랫폼 아나콘다(Anaconda) 배포판입니다. 아나콘다 배포판에는 두 가지 종류가 있습니다:

  • Miniconda는 파이썬 인터프리터와 conda로 불리는 명령행 도구를 함께 제공합니다. conda는 리눅스 사용자에게 친숙한 aptyum과 유사한 크로스 플랫폼 파이썬 패키지 매니저입니다.
  • Anaconda는 파이썬과 conda를 모두 포함하고 있으고 과학 컴퓨팅을 위한 패키지들을 번들로 포함하고 있습니다.

아나콘다에 포함된 어떤 패키지도 미니콘다에서 수동으로 설치할 수 있으므로 미니콘다로 시작할 것을 추천합니다.

시작하려면 미니콘다 패키지를 다운받아 설치합니다(파이썬3 버전을 선택했는지 확인하세요). 그리고 나서 Jupyter를 설치합니다:

[~]$ conda install jupyter

콘다 환경을 만들고 사용하는 등의 conda에 대한 더 자세한 설명은 앞의 미니콘다 패키지 문서 링크를 참고하세요.

파이썬의 선(Zen)

파이썬 매니아들은 파이썬이 얼마나 직관적이고 아름답고 재미있는지를 자주 언급합니다. 저도 이에 동의하지만 아름다움, 직관, 재미는 익숙함과 함께 동반되는 경우가 많다는 것을 알고 있고 그래서 다른 언어와 친숙한 사람들에게 이런 감정은 조금 잘난척하는 것으로 보일 수 있습니다. 그럼에도 불구하고 여러분이 파이썬을 접할 기회가 있다면 아마 이런 느낌을 받게될 것이라고 생각합니다. 그리고 많은 파이썬의 코딩 관례가 생겨난 이 프로그래밍 철학을 정말 알고 싶다면 파이썬 인터프리터에 숨은 작은 기능을 참고하세요. 눈을 감고 몇 분간 명상을 하고나서 import this를 입력하세요:

import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
  • 아름다운 것이 보기 싫은 것보다 좋다.
  • 명시적인 것이 암묵적인 것보다 좋다.
  • 간단한 것이 복합적인 것보다 좋다.
  • 복합적인 것이 복잡한 것보다 좋다.
  • 수평한 것이 중첩된 것보다 좋다.
  • 희소한 것이 밀집된 것보다 좋다.
  • 가독성이 중요하다.
  • 규칙을 무시할 만큼 특별한 경우는 없다.
  • 하지만 실용성이 순수함보다 우선한다.
  • 에러가 조용히 넘어가서는 안된다.
  • 명시적으로 조용히 만든 경우는 제외한다.
  • 모호함을 만났을 때 추측의 유혹을 거부해라.
  • 하나의 — 가급적 딱 하나의 — 확실한 방법이 있어야 한다.
  • 하지만 네덜란드 사람(귀도)이 아니라면 처음에는 그 방법이 명확하게 보이지 않을 수 있다.
  • 지금 하는 것이 안하는 것보다 좋다.
  • 하지만 안하는 것이 이따금 지금 당장 하는 것보다 좋을 때가 있다.
  • 설명하기 어려운 구현이라면 좋은 아이디어가 아니다.
  • 설명하기 쉬운 구현이라면 좋은 아이디어다.
  • 네임스페이스는 아주 좋으므로 더 많이 사용하자!

이런 생각으로 파이썬 언어에 대한 여행을 시작해 보겠습니다.

 

| 목차 |파이썬 코드를 실행하는 법 >

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

w

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.