아... 쉽지 않다.

 

파이썬도 힘든데, Khaiii를 사용하기 위해서 리눅스를 해야 한다니...

여차 저차 해서 윈도우에서 우분투도 깔고, 우분투에서 Khaiii도 설치했다.

 

Khaiii 테스트까지 잘했는데, 본격적으로 해보려고 했는데, 윈도우10의 파일을 우분투로 어떻게 옮기는지에서 막혔다.

윈도우 탐색기에서 파일을 복사해서 우분투 파일에 옮긴 후 jupyter notebook에서 파일을 열려고 하니 permission error(권한 문제)가 발생했다. 

 

 

csv로 바꿔서도 시도해봤고, "pd.read_excel('./data/Q3_sample.xlsx', engine='xlrd')" 이런 방법도 사용해봤는데 모두 권한 문제에서 자유롭지 못했다. 

 

원도우 탐색기를 이용해서 파일을 우분투 폴더로 옮기면 권한 문제가 생긴다는 것을 알게 되었다.

 

또다시 끝을 모를 검색이 시작되었다. 시도했다가 실패한 방법은 다음과 같다.

1. WinSCP 설치

  - 윈도우10에 WinSCP를 설치하고 우분투의 IP를 이용해서 접근하는 우분투로 접근한 후 파일을 전송하는 방법인데, 우분투 쪽에 방화벽 등과 관련된 설정이 필요한데, 잘 안돼서 실패했다.

 

2. 우분투에 크롬 설치 후 구글 드라이브로 직접 접근

  - 크롬은 성공적으로 설치했으나 터미널에서 크롬창 띄우는 것을 실패해서 포기했다.

# 크롬 드라이버 다운로드
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

sudo dpkg -i google-chrome-stable_current_amd64.deb
# 이렇게 하면 오류 발생
# error processing package google-chrome-stable (--install):
# dependency problems - leaving unconfigured

sudo apt-get install libappindicator1
# 다른 오류 발생
# E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

sudo apt-get -f install
# 우분투가 깡통이라 그런지 어마무시하게 설치함
# 0 upgraded, 158 newly installed, 0 to remove and 2 not upgraded.

sudo dpkg -i google-chrome-stable_current_amd64.deb
# 이제 됨

google-chrome
# 드디어!! 우분투에서 크롬을 띄울 수 있는것인가!!

# 에러발생... 그래 이렇게 쉬울리 없어...
# (google-chrome:3809): Gtk-WARNING **: 00:51:33.827: cannot open display:

xhost +si:localuser:root
xhost +si:localuser:userid
xhost +
# xhost:  unable to open display ""
# 모두 같은 에러 발생

# 안해 안해!!!!

 

3.  wget 으로 구글 드라이브 직접 접근

  - 이건 제일 처음 시도했었는데 실패해서 다른 방법들 해보다가 다시 wget으로 돌아옴

# wget 시도
wget https://drive.google.com/open?id=1dhNvuN이하생략

# 오오오! 다운로드 받았데!!
2020-01-06 00:06:54 (1021 KB/s) - ‘open?id=1dhNvuN_oBiqeWJU_pQxqHojz77kCkGnc’ saved [184119]

# 근데 다운로드된 파일이름이 왜 이따구야. 난 엑셀파일을 받으라고 했다고.
ls
'open?id=1dhNvuN이하생략'

# 안해. 안해!!

 

- 그런데, 돌고 돌아 다른 방법을 찾았다.

# 100MB 이하 파일을 구글 드라이브에서 우분투로 다운로드하는 새로운 방법
wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=공유ID' -O FILENAME

# 공유ID입력하고
# 마지막 FILENAME 자리에 우분투에 저장하고 싶은 파일 이름 입력

# 100BM 이상 파일인 경우(실제로 해보지는 않음)
wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=FILEID" -O FILENAME && rm -rf /tmp/cookies.txt

 

 

 

 

야호! 드디어 성공이다.

고마워 Anjan 형! 

출처 : https://medium.com/@acpanjan/download-google-drive-files-using-wget-3c2c025a8b99?

 

2020.01.06. 코리

 

 

 

 

 

jupyter notebook DLL load failed 지정된 프로시저를 찾을 수 없습니다

 

 

파이썬을 3.6에서 3.7로 업그레이드하는 과정에서 seaborn import error가 발생하여 오랜 시간 동안 고생했다. 수많은 검색을 통해 아나콘다를 지우고 재설치하고를 반복하며 헤맸는데, 에러 메시지에 답이 있었다. 

 

아나콘다 재설치를 통해 파이썬 업그레이드(3.6 -> 3.7)를 시도했다. 모든 것이 잘 흘러갔지만, seaborn을 import하는 단계에서 import error를 마주하게 되었다. 에러 메시지는 항상 설렌다.

 

 

 

 

 

위와 같은 오류 메시지는 사라져서 다른 패키지(numpy, matplotlib 등)들과 seaborn을 함께 import해서 오류난 메지지가 아래와 같다.

ImportError                               Traceback (most recent call last)
<ipython-input-2-d2e7a3f2c9b4> in <module>
      2 import numpy as np
      3 import matplotlib.pyplot as plt
----> 4 import seaborn as sns
      5 get_ipython().run_line_magic('matplotlib', 'inline')

~\Anaconda3\lib\site-packages\seaborn\__init__.py in <module>
      4 
      5 # Import seaborn objects
----> 6 from .rcmod import *
      7 from .utils import *
      8 from .palettes import *

~\Anaconda3\lib\site-packages\seaborn\rcmod.py in <module>
      3 import functools
      4 import matplotlib as mpl
----> 5 from . import palettes, _orig_rc_params
      6 
      7 

~\Anaconda3\lib\site-packages\seaborn\palettes.py in <module>
     10 from .external.six.moves import range
     11 
---> 12 from .utils import desaturate, set_hls_values, get_color_cycle
     13 from .colors import xkcd_rgb, crayons
     14 

~\Anaconda3\lib\site-packages\seaborn\utils.py in <module>
      5 
      6 import numpy as np
----> 7 from scipy import stats
      8 import pandas as pd
      9 import matplotlib as mpl

~\Anaconda3\lib\site-packages\scipy\stats\__init__.py in <module>
    377 from __future__ import division, print_function, absolute_import
    378 
--> 379 from .stats import *
    380 from .distributions import *
    381 from .morestats import *

~\Anaconda3\lib\site-packages\scipy\stats\stats.py in <module>
    180 import scipy.special as special
    181 from scipy import linalg
--> 182 from . import distributions
    183 from . import mstats_basic
    184 from ._stats_mstats_common import (_find_repeats, linregress, theilslopes,

~\Anaconda3\lib\site-packages\scipy\stats\distributions.py in <module>
      8 from __future__ import division, print_function, absolute_import
      9 
---> 10 from ._distn_infrastructure import (entropy, rv_discrete, rv_continuous,
     11                                     rv_frozen)
     12 

~\Anaconda3\lib\site-packages\scipy\stats\_distn_infrastructure.py in <module>
     22 
     23 # for root finding for discrete distribution ppf, and max likelihood estimation
---> 24 from scipy import optimize
     25 
     26 # for functions of continuous distributions (e.g. moments, entropy, cdf)

~\Anaconda3\lib\site-packages\scipy\optimize\__init__.py in <module>
    389 
    390 from .optimize import *
--> 391 from ._minimize import *
    392 from ._root import *
    393 from ._root_scalar import *

~\Anaconda3\lib\site-packages\scipy\optimize\_minimize.py in <module>
     28 from ._trustregion_krylov import _minimize_trust_krylov
     29 from ._trustregion_exact import _minimize_trustregion_exact
---> 30 from ._trustregion_constr import _minimize_trustregion_constr
     31 
     32 # constrained minimization

~\Anaconda3\lib\site-packages\scipy\optimize\_trustregion_constr\__init__.py in <module>
      2 
      3 
----> 4 from .minimize_trustregion_constr import _minimize_trustregion_constr
      5 
      6 __all__ = ['_minimize_trustregion_constr']

~\Anaconda3\lib\site-packages\scipy\optimize\_trustregion_constr\minimize_trustregion_constr.py in <module>
      2 import time
      3 import numpy as np
----> 4 from scipy.sparse.linalg import LinearOperator
      5 from .._differentiable_functions import VectorFunction
      6 from .._constraints import (

~\Anaconda3\lib\site-packages\scipy\sparse\linalg\__init__.py in <module>
    114 from .dsolve import *
    115 from .interface import *
--> 116 from .eigen import *
    117 from .matfuncs import *
    118 from ._onenormest import *

~\Anaconda3\lib\site-packages\scipy\sparse\linalg\eigen\__init__.py in <module>
      9 from __future__ import division, print_function, absolute_import
     10 
---> 11 from .arpack import *
     12 from .lobpcg import *
     13 

~\Anaconda3\lib\site-packages\scipy\sparse\linalg\eigen\arpack\__init__.py in <module>
     20 from __future__ import division, print_function, absolute_import
     21 
---> 22 from .arpack import *

~\Anaconda3\lib\site-packages\scipy\sparse\linalg\eigen\arpack\arpack.py in <module>
     43 __all__ = ['eigs', 'eigsh', 'svds', 'ArpackError', 'ArpackNoConvergence']
     44 
---> 45 from . import _arpack
     46 import numpy as np
     47 import warnings

ImportError: DLL load failed: 지정된 프로시저를 찾을 수 없습니다.

 

구글과 stack overflow에 많은 검색을 해서 다음과 같은 솔루션을 발견했지만 모두 실패했다.

- 아나콘다 삭제 후 재설치

- 아나콘다 재설치 시 관리자 권한으로 실행

- 커맨드 창에서 seaborn 삭제 및 재설치 (conda로 하기, pip으로 하기)

- 환경변수에 path 추가하기

- 아나콘다 홈페이지에서 seaborn 검색해서 DLL 파일 다운로드 받아  내 컴에 복사하기

- 등등등

 

 

위 많은 방법들이 모두 실패했다.

 

한 가지 재미있는 이상한 현상은 내가 원하는 폴더에서 jupyter notebook을 실행하면 seaborn import error가 발생하는데, "시작 - Anaconda3 - Jupyter Notebook(Anaconda3)"를 관리자 권한으로 실행하면 seaborn import error가 나타나지 않았다. 그래서 권한 쪽 문제라고 생각하고 시간을 낭비했다.

 

 

해결방법은 numpy, scipy 삭제 후 재설치였다.

사실 위 import error 메시지를 잘 살펴보면 scipy에 뭔가 문제가 있음이 나타난다. 에러 메시지가 무슨 말인지 잘 모르겠지만 유난히 scipy 관련 내용이 많다.

 

---> 7 from scipy import stats
---> 24 from scipy import optimize
---> 4 from scipy.sparse.linalg import LinearOperator


scipy 재설치를 권장하는 솔루션을 제시한 사람이 numpy도 함께 해줄 것을 권장했다.

cmd 창에서 다음의 방법으로 numpy와 scipy를 삭제 및 재설치할 수 있다.

 

 

conda remove --force numpy, scipy
pip install numpy
pip install scipy

 

삭제할 때 --force 옵션의 역할은 다음과 같다. "Forces removal of a package without removing packages that depend on it. Using this option will usually leave your environment in a broken and inconsistent state"

 

-출처 : https://stackoverflow.com/questions/38459186/conda-uninstall-one-package-and-one-package-only

 

 

 

 

numpy와 scipy를 삭제하고 다시 설치 후 두근거리는 마음으로 seaborn을 import 해보았다.

 

 

성공했다. 고생했어. 토닥토닥. 

2020.01.05. 코리.

 

 

 

참고한 사이트

- https://stackoverflow.com/questions/54083514/how-to-fix-importerror-dll-load-failed-the-specified-procedure-could-not-be-f

- https://stackoverflow.com/questions/54957065/importerror-dll-load-failed-import-seaborn-failed-only-works-with-conda-ro

- https://stackoverflow.com/questions/55641510/seaborn-import-as-sns-importerror-dll-load-failed-the-specified-module-coul

- https://community.powerbi.com/t5/Desktop/Error-with-SEABORN/td-p/690652

 

 

빅데이터에 대한 관심이 많았지만 관련 지식이 전혀 없는 상황에서 인터넷 검색으로는 궁금증을 해소할 수 없어서 대학원진학을 생각했었다. 대학원 진학을 처음 생각한 후 1~2년 정도 고민 후에 진학을 결정했다. 

 

빅데이터경영MBA 과정에 입학하기 전에 나의 상태는 다음과 같았다.

- 빅데이터에 대한 사전지식이 거의 없었다.

- 다룰 수 있는 통계프로그램은 없었다.

- 일상 업무에서는 한글과 MS-OFFICE 제품만 다뤘다.

- 균과 분산, 표준편차, 정규분포 등 수학적 용어들도 20여년 전 고등학교를 졸업하며 잊었다.

- 코딩이라는 말은 들어봤지만, 뭔지 몰랐다. 프로그래밍 언어는 당연히 몰랐다.

 

 

빅데이터를 통해 통찰력(insight)를 찾을 수 있고, 과거 데이터를 활용해서 미래를 예측할 수 있는 것에 매력을 느꼈다.

 

 

국민대학교 이외에 이화여대, 경의대, 연세대, 카이스트, 서강대, 고려대, 성균관대, 충북대 등 많은 대학원에 빅데이터 과정이 있었지만, 국민대 과정은 다음의 내용이 매력적이었다.

 

- 토요일 집중 수업

- 아무나 지원가능 (위 언급된 대학원 중 일부는 협약을 맺은 기업 임직원만 지원할 수 있음)

- 우리나라 최초로 빅데이터 과정을 개설

- 알찬 교육과정 - 힘들다는 이야기임

- 장학금

 

 

 

면접

 

면접은 무난했다. 1인당 5~10분 정도 진행되었는데, 면접관은 3명이었다. '자기소개'와 '지원한 이유'에 대한 질문이 있었다. 정량적 분석에 대한 개념과 기술(프로그래밍)이 부족하면 과정을 이수하는데 어려움이 있을 거라는 경고(?)도 있었다. 아마 나의 이력을 보고 사전 경고를 한 것으로 생각된다.

 

압박없이 나에 대한 이야기와 MBA에서 배우고 싶은 포부 등을 밝히는 면접이라서 떨어지는 사람이 없을 것이라 생각했는데, 떨어진 사람도 있다는 이야기를 들었다. 실제 경영대학원 전체 지원자 191명 중 144명만 합격했다. 경영대학원내 모든 학과들이 포함된 것이고 등록포기한 사람들도 포함된 숫자이지만, 생각보다는 탈락자가 많다.

 

 

 

수업

 

나와 같이 프로그래밍과 통계 분야에 사진 지식과 기술이 부족한 경우, 토요일 하루 동안 진행된 수업을 복습하지 않으면 따라가기 힘들다. 학기 당 4과목이 진행되므로, 월요일부터 목요일까지 하루에 한 과목씩 복습이 반드시 필요하다. 

 

함께 공부하는 동기 중에 나와 같은 사람도 많이 있었고, 잘하는 분들이 도와주시기에 큰 도움이 된다.(동기사랑 나라사랑)

 

새로운 학문과 기술을 습득하는데 지칠때 쯤이면, 달콤한 방학이 찾아온다.

하지만 방학에 너무 놓고 쉬어버리면 다음학기가 힘들어 진다. R과 Python같은 언어에 대한 학습은 지속적으로 필요하다.

 

 

 

강의

 

강의는 학기별 4과목 중 전임교원(교수님) 1명과 외부전문가 3명이 각 1과목을 담당하고 있다. 전임교원의 수업은 주로 학문(이론+실습)에 관련된 것들이고, 외부전문가 수업은 언어 프로그래밍과 같은 기술적인 부분이다. MBA 과정인 것을 감안하면 적절하다고 생각된다.

 

과목당 90분 수업에 10분 휴식, 점심시간 70분으로 진행된다.

 

강의는 대부분 PPT나 프로그래밍 실습을 통해 진행되기에 따로 교재를 펴 놓고 진도를 나가는 방식은 아니다. 강의에 도움되는 도서를 안내해주므로 필요시 구입하면 된다.

 

오랜만에 다양한 과제와 중간/기말고사를 만나 크게 당황하지만, 과제는 집단지성의 힘으로 함께 해쳐나갈 수 있다.(동기사랑 나라사랑)

 

 

 

 

등록금

 

매학기 등록금은 5,820,000원이다. 1학기에는 입학금 1,029,000원이 별도이다.

1학기에는 6,849,000원이 들고, 2학기부터는 5,820,000원이 든다. 문론 입학금과 등록금은 매년 인상될 수 있다.

 

 

 

 

장학금

 

나름 다양한 장학금 제도가 있다. 자세한 내용은 국민대 경영대학원 홈페이지에서 찾아볼 수 있다.

 

홈페이지에 없는, 잘 알려지지 않은 장학금도 있다.

그 중 하나가 면접일 당일에만 신청할 수 있는 "신입생 추천자 장학금"이다.

이 장학금은 재학생 및 졸업생이 신입생을 추천하는 경우, 주어지는 장학금이다. 금액이 얼마인지는 공개되어 있지 않다. 면접일 당일에만 신청할 수 있다.

 

 

 

2018.11.13. 코리.

 

 

 

 

 

 

파이썬에서 기본으로 사용되는 할당연사자(Assignment Operators)는 등호(=)이다. 등호는 등호 오른쪽의 값을 왼쪽으로 할당한다.

 

파이썬에는 등호를 응용한 다양한 할당연사자가 존재한다. 그 종류는 다음과 같다.

 

 할당연산자

기능 

 =

 왼쪽 변수에 오른쪽 값을 할당한다.

a = b 는

a = b 를 의미함

 +=

 왼쪽 변수에 오른쪽 값을 더하고 그 결과를 왼쪽 변수에 할당한다.

a += b

a = a+b 를 의미함

 -=

 왼쪽 변수에 오른쪽 값을 빼고 그 결과를 왼쪽 변수에 할당한다.

a -= b 는

a = a-b 를 의미함

 *=

 왼쪽 변수에 오른쪽 값을 곱하고 그 결과를 왼쪽 변수에 할당한다.

a *= b 는

a = a*b 를 의미함

 /=

 왼쪽 변수에 오른쪽 값을 나누고 그 결과를 왼쪽 변수에 할당한다.

a /= b는

a = a/b 를 의미함

 %=

 왼쪽 변수에 오른쪽 값을 나눈 후 그 나머지를 왼쪽 변수에 할당한다.

a %= b 는

a = a%b 를 의미함

 //=

 왼쪽 변수에 오른쪽 값을 나눈 후 그 몫을 왼쪽 변수에 할당한다.

a //= b 는

a = a//b 를 의미함

 **=

 왼쪽 변수에 오른쪽 값을 제곱하고 그 결과를 왼쪽 변수에 할당한다.

a **= b 는

a = a**b 를 의미함

 

 

위 할당 연산자들을 실행해보면 다음과 같은 결과를 얻을 수 있다.

 

 

1. =

>>> a = 5

>>> b = 3 

>>> print(a, b)

(5, 3) ## a에 5가, b에 3이 할당됨

 

 

2. +=

>>> a, b = 5, 3 

>>> a += b ## a = a+b

>>> print(a, b) 

(8, 3) ## a(5)에 b(3)을 더한 값을 a에 할당하므로, a가 8로 변경됨

 

3. -=

>>> a, b = 5, 3 

>>> a -= b ## a = a-b

>>> print(a, b) 

(2, 3) ## a(5)에 b(3)을 뺀 값을 a에 할당하므로, a가 2로 변경됨

 

 

4. *=

>>> a, b = 5, 3 

>>> a *= b ## a = a*b

>>> print(a, b) 

(15, 3) ## a(5)에 b(3)을 곱한 값을 a에 할당하므로, a가 15로 변경됨

 

5. /=

>>> a, b = 5, 3 

>>> a /= b ## a = a/b

>>> print(a, b) 

(1, 3) ## a(5)에 b(3)을 나눈 값을 a에 할당하므로, a가 1로 변경됨

       ## a와 b의 자료형(type)이 정수(int)이므로, 나눈 5/3의 결과가 정수인 1로 나타난다.

 

>>> type(a)

int

 

>>> type(b)

int

 

>>> a, b = 5.0, 3.0 ## a와 b의 자료형을 실수(float)로 입력 

>>> a /= b ## a = a/b

>>> print(a, b) 

(1.6666666666666667, 3.0) ## 데이터가 실수로 입력되니 소수점까지 표현됨

 

>>> type(a)

float

 

>>> type(b)

float

 

 

6. %=

>>> a, b = 5.0, 3.0 ## a와 b의 자료형을 실수(float)로 입력 

>>> a %= b ## a = a%b (나머지 구하기)

>>> print(a, b) 

 

(2.0, 3.0)

 

 

7. //=

>>> a, b = 5.0, 3.0 ## a와 b의 자료형을 실수(float)로 입력 

>>> a //= b ## a = a//b (몫 구하기)

>>> print(a, b) 

 

(1.0, 3.0)

 

 

8. **=

>>> a, b = 5, 3  

>>> a **= b ## a = a**b (5의 3제곱)

>>> print(a, b) 

 

(125, 3)

 

 

 

2018.09.11. 코리.

 

 




파이썬에서 다룰 수 있는 자료형(data type)은 크게 숫자, 문자, 그리고 변수가 있다. 



숫자


숫자는 다시 정수(int - integer)와 실수(float)로 구분된다. 

- 정수 : -2, -1, 0, 1, 2 등

- 실수 : 3.14, -3.14, 3.14e5 등


파이썬에서 숫자의 사칙연산은 일반 계산기의 것과 유사하다.


1. 더하기

>>>5 + 2

7


2. 빼기

>>>5 - 2

3


3. 곱하기

>>>5 * 2

10


4. 제곱

>>>5 ** 2

25


5. 나누기

>>>5 / 2

2.5


6. 몫

>>>5 // 2

2


7. 나머지

>>>5 % 2

1




변수


문자에 대한 설명에 앞서 "변수"에 대해 살펴보자. 변수(variable)이란 파이썬을 포함한 프로그래밍에서 특정 값에 이름표를 붙인 것이다.


1. 파이썬에서 변수할당(이름표 붙이기)은 등호(=)를 이용한다.

   - 아래에서 숫자 1에 one 이라는 변수를 할당(이름표를 붙이고)하고, 숫자 2에 two라는 변수를 할당했다.

   - 그리고 one을 입력 및 실행하면 숫자 1이, two를 입력 및 실행하면 숫자 2가 출력된다.

>>>one = 1

>>>two = 2


>>> one

1


>>> two

2



2. 변수와 문자열의 차이

   - "one = 1"이라는 변수를 지정한 후, print를 활용한 출력문에 하나는 one, 다른 하나는 "one"를 입력한다

   - print(one)은 변수 one의 값인 1을 출력한다.

   - print("one")은 문자열 one를 출력한다.

>>>one = 1

>>>print(one)

>>>print("one")


1

one



3. 변수 이름 짓기 규칙

   - 파이썬의 변수는 알파벳 대문자, 알파벳 소문자, 숫자, 언더바( _ ), 한글, 한자 등을 사용할 수 있음

   - 알파벳 대문자와 소문자는 구별함. 즉, 변수 ABC와 abc는 다른 변수임

   - 첫 글자를 숫자로 시작할 수 없다. (예 : 1number, 1_num 등 사용하면 SyntaxErrror 출력됨)

   - 공백, 특수문자, 문장부호를 변수이름으로 사용할 수 없음



4. 변수 덮어쓰기

   - 값이 2번 이상 할당된 변수가 있으면, 가장 마지막에 할당된 값으로 덮어쓰여진다.

   - one 변수는 1 이라는 값이 할당되었지만, one 변수에 10을 다시 할당하면서 값이 덮어쓰여졌다.

>>>one = 1

>>>one = 10

>>>print(one)


10


   - 변수끼리 계산에 의해서도 값이 덮어쓰여진다.

   - 아래 계산을 거치면서 one 변수의 값이 1에서 2로 변경되었다.

>>>one = 1

>>>one = one + 1

>>>print(one)


2




5. 동시에 여러 변수 지정하기

>>>one, two = 1, 2

>>>print(one)

>>>print(two)


1

2



6. 변수 값 교환하기

>>>one, two = 1, 2

>>>one, two = two, one

>>>print(one)

>>>print(two)


2

1



7. Name Error

   - 값이 할당되지 않은(이름표가 붙지 않은) 변수를 실행시키면, NameError가 발생한다.

>>>three


NameError                                 Traceback (most recent call last)

<ipython-input-9-1e7720a3460b> in <module>()

----> 1 three


NameError: name 'three' is not defined



8. 변수 삭제하기

   -  더 이상 쓸모없는 변수는 내장함수 del을 사용해서 지울 수 있다.

   -  변수 two를 삭제한 후 two를 출력하고자 하니, NameError가 발생했다.

>>>del two

>>>print(two)


NameError                                 Traceback (most recent call last)

<ipython-input-10-d32c19b2d22e> in <module>()

      1 del two

----> 2 print(two)


NameError: name 'two' is not defined





문자


1. 문자는 따옴표를 사용해서 만들 수 있다. 

   - 큰 따옴표( " )와 작은 따옴표( ' ) 모두 사용 가능하다.

   - 하나의 문자열은 동일한 따옴표로 시작하고 끝내야 한다. (큰 따옴표와 작은 따옴표를 혼용해서는 안된다)

>>>text_1 = "welcome to python world"

>>>text_2 = ', my friend'



2. 큰 따옴표 안에 또 따옴표 쓰이는 경우

   - 아래 text_3을 실행하면 SyntaxError가 발생한다.

>>>text_3 = "my friend say, "welcome to python world" "


  File "<ipython-input-11-82fa2feae37a>", line 1

    text_3 = "my friend say, "welcome to python world" "

                                    ^

SyntaxError: invalid syntax



3. 따옴표 안에 또 따옴표가 필요한 경우 사용 방법

   - 큰 따옴표 안에 작은 따옴표를 사용한다.

   - 이스케이프 코드( \역슬러쉬(\) )를 사용한다.

   - 연속된 큰 따옴표 3개(""") 사이에 기입된 내용은 모두 문자열로 인식된다. 

>>>text_3 = "my friend say, 'welcome to python world' "

>>>text_3 = "my friend say, \"welcome to python world\"

>>>text_3 = """ 

                 "my friend say, "welcome to python world" "

                 """



4. 문자열 연산

   - 덧셈으로 문자열을 더하고, 곱셈으로 문자열을 반복할 수 있다.

   - 문자열 곱셈은 줄 긋기 등으로 활용할 수 있다.

>>>text_1 = "welcome to python world"

>>>text_2 = ', my friend'

>>>text_1 + text_2


'welcome to python world, my friend'



>>>'go' * 3


'gogogo'



>>>'=' * 30


'=============================='



5. Format

   - 문자열에 원하는 값을 입력하기 위해 Format을 이용할 수 있다.

>>>'Hello { }, welcome to { } world' .format('John', 'python')


'Hello John, welcome to python world'



>>>who = 'John'

>>>what = 'python'

>>>'Hello {name1}, welcome to {name2} world' .format(name1=who, name2=what)


'Hello John, welcome to python world'


   - 파이썬 3.6부터는 .format()을 대신하여 f' '를 사용할 수 있다.

>>>who = 'John'

>>>what = 'python'

>>>f 'Hello {who}, welcome to {what} world'



6. 문자열 인덱싱(indexing)

   - 문자열에서 특정 글자에 접근하는 방식을 인덱싱(indexing)이라 한다.

   - 중괄호( [ ] )를 사용해서 문자열의 특정 글자 순서를 지정함으로써 인덱싱 할 수 있다.

   - 첫 글자의 순서는 0 으로 시작한다.

   - 가장 마지막 글자의 순서는 -1 로 지정할 수 있다.

   - 공백도 글자수에 포함된다.

>>>text_2 = 'my friend'

>>>text_2[0], text_2[1], text_2[2], text_2[3]


('m', 'y', ' ', 'f')



>>>text_2 = 'my friend'

>>>text_2[-1], text_2[-2], text_2[-3], text_2[-4]


('d', 'n', 'e', 'i')



7. 문자열 슬라이싱(slicing)

   - 문자열에서 인덱싱을 활용하여 문자를 범위로 선택하는 것을 슬라이싱(slicing)이라 한다.

   - 중괄호( [ ] )와 콜론( : )을 사용해서 문자열 인덱싱으로 범위를 지정한다.

   - 편이상 0과 마지막 숫자를 생략할 수 있다. (예 : text_2[:2] )

>>>text_2 = 'my friend'

>>>text_2_1 = text_2[0:2]

>>>text_2_2 = text_2[3:9]


>>>print(text_2_1)

>>>print(text_2_2)


my

friend



8. 문자열에서 사용되는 함수

   - join 함수 : 문자열을 원하는 글자로 더한다.

   - split 함수 : 문자열을 원하는 글자로 나눈다.

   - strip 함수 : 문자열 앞뒤의 공백을 지운다. 문자열 내부의 공백은 지우지 않는다.

   - replace 함수 : 문자열의 특정 글자를 다른 글자로 바꾼다.

   - in 함수 : 문자열 안에 해당 글자가 있는지 확인

   - not in 함수 : 문자열 안에 해당 글자가 없는지 확인

   - count 함수 : 특정 글자가 문자열에 몇번 사용되었는지 확인

   - find 함수 : 문자열에서 특정 글자나 단어의 위치를 확인

   - index 함수 : 문자열에서 특정 글자의 위치정보 확인

   - capitalize : 문자열의 첫 글자를 대문자로 변환

   - lower : 모든 글자를 소문자로 변환

   - upper : 모든 글자를 대문자료 변환

   - startswith : 해당 문자열이 특정 글자로 시작되는지 확인

   - endswith : 해당 문자열이 특정 글자로 끝나는지 확인

>>>"-".join('my friend')

'm-y- -f-r-i-e-n-d'


>>>'welcome to python world' .split(' ')

'welcome', 'to', 'python', 'world'


>>>'     my   friend     ' .strip()

'my   friend'


>>>'pithon world' .replace('pi', 'py')

'python world'


>>>text_4 = 'Hello John, welcome to python world'

>>>'python' in text_4

True


>>>'python' not in text_4

False


>>>text_4.count('o')

6


>>>text_4.find('to')

20


>>>text_4.index('p')

23


>>>text_2 = 'my Friend'

>>>print( text_2.capitalize() )

My Friend


>>>print( text_2.lower() )

my friend


>>>print( text_2.upper() )

MY FRIEND


>>>text_4 = 'Hello John, welcome to python world'

>>>text_4.startswith('Hello')

True


>>>text_4 = 'Hello John, welcome to python world'

>>>text_4.endswith('python')

False




자료형 변환


1. 정수로 변환

   - 실수를 정수로 변환

   - 문자형 숫자를 정수로 변환

>>>int(3.14)

3


>>>int('314') * 100

31400


2. 실수로 변환

   - 정수를 실수로 변환

   - 문자열을 실수로 변환

>>>float(3)

3.0


>>>float('3.14') / 10

0.314


3. 문자열로 변환

   - 숫자(정수, 실수)를 포함한 값들을 문자열로 변환

>>>str(3.14)

'3.14'




2018.09.05. 코리. 



 

 

 

파이썬을 사용함에 있어 가장 기본인 모드 변경과 셀 조작하는 방법에 대한 포스팅하고자 한다. 간단하지만 처음 jupyter notebook을 켰을 때 생기는 막막한 마음을 달래줄 수 있다. 

 

 

 

<그림1> 파이썬 모드 변경

 

파이썬(python)에는 모드가 명령모드와 편집모드 2가지 있다. 위 그림에 파란색 테두리가 명령모드이고, 녹색 테두리가 편집모이다.

셀에 어떠한 명령을 내리고 싶을 때 명령모드를 사용하고, 코드를 입력하고 편집할 때 편집모드를 사용한다.

 

명령모드에서 편집모드로 이동하는 단축키는 엔터(enter)키 이고, 반대로 편집모드에서 명령모드로 이동하는 단축키는 ESC키 이다. 

 

 

 

<그림2> 파이썬 셀 조작하기

 

파이썬(python)에서는 하나의 라인을 "셀"이라고 부른다. 셀을 추가하고, 삭제하고, 복사하고, 합치는 방법이 있다. 이런 셀 조작은 <그림1>에서 살펴본 "명령모드"에서 가능하다는 점을 유념해야 한다.

 

1. 셀 추가하기

   - 셀을 추가하기 위해서는 추가할 위치(기준 셀)을 선택해야 한다.

   - <그림2>에서 2번 셀을 기준으로 선택(마우스 클릭)한 경우

   - 키보드에서 a 를 누르면 "기준 셀 위"에 셀(라인)이 추가된다.

   - 키보드에서 b 를 누르면 "기준 셀 아래"에 셀(라인)이 추가된다.

 

2. 셀 제거하기

   - 제거하고자 하는 셀을 선택(마우스 클릭) 한 후

   - 키보드에서 x 를 누르면 해당 셀(라인)이 삭제된다.

   - 제거한 셀을 다시 살리고자 한다면 키보드에서 z 를 누른다.

 

3. 셀 복사하고 붙여넣기

   - 복사할 셀을 선택(마우스 클릭) 한 후

   - 키보드에서 c 를 눌러서 복사한다.

   - 복사한 셀을 붙여넣기 위해서는 붙여 넣을 기준이 되는 셀을 선택한 후

   - 키보드에서 v 를 누르면 기준 셀 아래에 붙여 넣어진다.

   - 키보드에서 shift + v 를 누르면 기준 셀 위에 붙여 넣어진다.

 

4. 셀 이동하기

   - 이동하고 싶은 셀을 선택한 후 방향키(화살표)로 셀을 이동시킬 수 있다.

 

5. 셀 합치기

   - 합치고 싶은 셀을 선택한다. <그림2>에서 3, 4번 셀을 선택한다.

   - 키보드에서 shift + m 을 누르면 선택된 셀을 합칠 수 있다.

   - 합쳐진 결과가 5번째 셀에 나타나 있다.

 

 

 

여기에 추가로 셀에 입력된 내용을 실행하는 "코드 실행"은 키보드에서 shift + enter 를 누르는 것이다. 코드 실행은 명령모드가 아닌 "편집모드"에서 실행해야 한다.

 

그리고 코드를 실행했는데, 무한루프에 빠졌거나, 결과가 너무 많이 나와서 중간에 커널을 강제로 멈추고 싶다면, 키보드에서 ctrl + c 를 눌러야 한다.

 

 

기본적인 파이썬(주피터 노트북) 사용방법을 알아보았다.

 

 

2018.09.04. 코리. 

 

 

+ Recent posts