개요

요즘 파이썬이 아주 Hot하다. 언어 그 자체로도 쓰임새가 높으며 특히 머신러닝이나 데이터 분석쪽에서 널리 활용된다. 해당 포스팅은 개발자의 시각에서 파이썬을 Datacamp를 통해 처음 익히며 도움이 될만한 내용을 정리한 내용이다. 따라서 프로그래밍을 처음 접하는 사용자들을 위한 배경지식이 일부 생략되어있을 수는 있다. 하지만, 파이썬은 컴퓨터공학 비전공자들도 널리 사용하는 언어인 만큼 크게 어려운 내용은 없다. 앞으로도 꾸준히 파이썬을 익히는데로 내용을 정리하여 포스팅 할 예정이다. 글의 기조는 개발자가 배우는 R 강의와 같은 맥락이 될 것이다.

글의 방향성

본글은 파이썬의 모든 요소를 세세하게 설명하는 것이 아니라 필요한 것만 빠르게 익히는고 다른것들은 나중에 찾아볼 수 있는 능력을 기르는데 목적이 있다. 이유는 데이터마이닝/머신러닝이라는 목적성을 가지고 보통 파이선을 접할텐데 이분들이 언어를 시간을 쏟기보다는 데이터 모델링 등 보다 중요한 부분에 집중하는게 낫다고 생각한다. 따라서 독자들이 이 관점에서 조금이라도 도움이 되었으면 하기 때문이다.

한줄 요약 하자면

아래의 코드 Snippet들을 시간날대 들여다 봐도 좋고 (아니면) 그때 그때 필요할때 찾아보면서 쓰면 된다.

====================================================================================

Chapter 1: 기본

파이썬 언어의 가장 기본적인 부분 몇가지를 짚고 넘어가자.

Print

출력은 아래와 같이 가능하다.

print(7 + 10)
print(4 ** 2) # 제곱 표현

문자열 처리

문자열은 다른언어들과 마찬가지로 할당 할 수 있다.

# Create a variable desc
desc = "compound interest"

문자열 concat

문자열 붙이기도 다른 언어들과 동일하다.

# Assign sum of desc and desc to doubledesc
doubledesc = desc + desc

# Print out doubledesc
print(doubledesc)

Boolean 처리

Boolean은 대소문자를 구별하여 True 또는 False로 입력하여야 한다.

# Create a variable profitable
profitable = True

type 확인

파이썬은 인터프리터 언어이기 때문에 혹시 소스코드 보다가 해당 변수가 어떤 값인지 잘 모를때는 Print해보는게 제일 직관적이다. 이때 어떤 형식으로 데이터 type이 구성되었는지는 type으로 찾아보면 된다.

# Several variables to experiment with
savings = 100
factor = 1.1
desc = "compound interest"

# Assign product of factor and savings to year1
year1 = savings * factor

# Print the type of year1
print(type(year1))

타입 캐스팅

아래와 같이 타입 캐스팅이 가능하다.

# Definition of pi_string
pi_string = "3.1415926"

# Convert pi_string into float: pi_float
pi_float =  (float(pi_string))

Chapter 2: 파이썬 리스트

파이썬에서 자주 사용하는 리스트에 대해 간단히 알아보자.

리스트 생성

리스트는 아래와 같이 생성 가능하다.

# area variables (in square meters)
hall = 11.25
kit = 18.0
liv = 20.0
bed = 10.75
bath = 9.50

# Create list areas
areas = [hall, kit, liv, bed, bath]

# Print areas
print (areas)

타입을 섞은 리스트

파이썬에서 리스트는 type을 섞어서도 만들 수 있다.

# area variables (in square meters)
hall = 11.25
kit = 18.0
liv = 20.0
bed = 10.75
bath = 9.50

# Adapt list areas
areas = ["hallway", hall,"kitchen", kit, "living room",liv,"bedroom" ,bed, "bathroom",bath]

# Print areas
print(areas)

Nested 리스트

리스트를 type을 섞어서 만들수 있으니 당연히 리스트 안에 다른 리스트를 담을 수도 있다.

# area variables (in square meters)
hall = 11.25
kit = 18.0
liv = 20.0
bed = 10.75
bath = 9.50

# house information as list of lists
house = [["hallway", hall],
         ["kitchen", kit],
         ["living room", liv],
         ["bedroom", bed],
         ["bathroom", bath]]

# Print out house
print(house)

# Print out the type of house
print(type(house))

부분 리스트

리스트의 Element에 접근 할 때는 다른 언어의 배열이나 리스트 Index처럼 0값부터 사용하면 된다.

하나 유의할 점은 -를 붙으면 리스트의 끝에서 부터 Element를 접근 할 수 있는데 이때는 값이 1부터 시작한다. 즉, 제일 마지막 Element는 -1이다.

# Create the areas list
areas = ["hallway", 11.25, "kitchen", 18.0, "living room", 20.0, "bedroom", 10.75, "bathroom", 9.50]

# Print out second element from areas
print(areas[1])

# Print out last element from areas
print(areas[-1])

# Print out the area of the living room
print(areas[5])

리스트 slicing

파이썬에서는 연속된 부분 리스트 Element를 지정하는 것을 Slicing이라고 부른다. 이때의 문법은 괄호를 기준으로 [시작Index:종료Index] 이고 시작Index는 포함하고, 종료 Index는 포함하지 않는다.

# Create the areas list
areas = ["hallway", 11.25, "kitchen", 18.0, "living room", 20.0, "bedroom", 10.75, "bathroom", 9.50]

# Use slicing to create downstairs
downstairs = areas[0:6]
#print(downstairs)

# Use slicing to create upstairs
upstairs = areas[-4:]

# Print out downstairs and upstairs
print(downstairs)
print(upstairs)    

위의 코드의 slicing 표현은 아래와 동일하다.

# Alternative slicing to create downstairs
downstairs = areas[:6]

# Alternative slicing to create upstairs
upstairs = areas[-4:]

리스트 Append

아래와 같이 리스트 Append가 가능하다.

# Create the areas list and make some changes
areas = ["hallway", 11.25, "kitchen", 18.0, "chill zone", 20.0,
         "bedroom", 10.75, "bathroom", 10.50]

# Add poolhouse data to areas, new list is areas_1
areas_1 = areas+ ["poolhouse", 24.5]

리스트 Deep copy

자바와 같이 파이썬은 리스트를 다룰때 Call By Reference로 동작하는데 아래와 같이 Deep Copy를 수행 할 수 있다.

# Create list areas
areas = [11.25, 18.0, 20.0, 10.75, 9.50]

# Create areas_copy
# 이렇게 하면 Deep Copy가 일어난다.
areas_copy = areas[:]

# Change areas_copy
areas_copy[0] = 5.0

# Print areas
print(areas)

Chapter 3: 함수

파이썬의 기본 함수들을 살펴보자.

String 메서드

문자열 type의 내장함수를 메서드로 자바와 비슷하게 사용 할 수 있다. 궁금하면 문자열 type에서 뒤에 .을 입력하여 자동완성을 이용하여 살펴보면 될듯 하다.

# string to experiment with: room
room = "poolhouse"

# Use upper() on room: room_up
room_up = room.upper()

# Print out room and room_up
print(room)
print(room_up)

# Print out the number of o's in room
print(room.count("o"))

List 메서드

리스트 메서드도 필요한 기본 메서드들을 내장하고 있다.

# Create list areas
areas = [11.25, 18.0, 20.0, 10.75, 9.50]

# Print out the index of the element 20.0
print(areas.index(20.0))

# Print out how often 14.5 appears in areas
print(areas.count(14.5))

패키지 import

파이썬은 수많은 유용한 패키지를 가지고 있다. 이를 활용 할 때는 import 기능을 이용하면 된다.

# Definition of radius
r = 0.43

# Import the math package
import math

# Calculate C
C = 2 * math.pi * r

# Calculate A
A = math.pi * r ** 2

# Build printout
print("Circumference: " + str(C))
print("Area: " + str(A))

Selective import

패키지에서 일부 필요한 메서드면 import 할때는 from math import radians 형식으로 사용 할 수 있다.

# Definition of radius
r = 192500

# Import radians function of math package
from math import radians

# Travel distance of Moon over 12 degrees. Store in dist.
dist = r * radians(12)

# Print out dist
print(dist)    

Chapter 4: Numpy

파이썬 사용에서 빼놓을 수 없는 패키지 numpy에 대해 간단히 알아보자.

Numpy 배열

기존의 파이썬 리스트를 numpy array 로 변환 할 수 있다.

# Create list baseball
baseball = [180, 215, 210, 210, 188, 176, 209, 200]

# Import the numpy package as np
import numpy as np

# Create a numpy array from baseball: np_baseball
np_baseball = np.array(baseball)

# Print out type of np_baseball
print (type(np_baseball))

# height and weight are available as a regular lists

Numpy 조작

numpy는 아래와 같은 조작이 가능하다.

# Import numpy
import numpy as np

# Calculate the BMI: bmi
np_height_m = np.array(height) * 0.0254
np_weight_kg = np.array(weight) * 0.453592
bmi = np_weight_kg / np_height_m ** 2

# Create the light array
light = bmi < 21

# Print out light
print(light)

# Print out BMIs of all baseball players whose BMI is below 21
print(bmi[light])    

Subsetting NumPy Arrays

numpy도 파이썬 리스트와 같이 부분 집합을 손쉽게 얻어낼 수 있다.

# height and weight are available as a regular lists

# Import numpy
import numpy as np

# Store weight and height lists as numpy arrays
np_weight = np.array(weight)
np_height = np.array(height)

# Print out the weight at index 50
print(weight[50])

# Print out sub-array of np_height: index 100 up to and including index 110
print(np_height[100:111])

2차원 Numpy 배열

아래와 같은 형태로 2차원 배열로 많이 사용한다.

# Create baseball, a list of lists
baseball = [[180, 78.4],
            [215, 102.7],
            [210, 98.5],
            [188, 75.2]]

# Import numpy
import numpy as np

# Create a 2D numpy array from baseball: np_baseball
np_baseball = np.array(baseball)

# Print out the type of np_baseball
print(type(np_baseball))

# Print out the shape of np_baseball
print(np_baseball.shape)

2차원 Subsetting

2차원도 마찬가지로 Subsetting이 가능하다.

# baseball is available as a regular list of lists

# Import numpy package
import numpy as np

# Create np_baseball (2 cols)
np_baseball = np.array(baseball)

# Print out the 50th row of np_baseball
print(np_baseball[49,:])

# Select the entire second column of np_baseball: np_weight
np_weight = (np_baseball[:,1])

# Print out height of 124th player
print (np_baseball[:,0][123])

기초 통계

차후 더 다루겠지만 numpy를 이용하면 평균값, 중간값 등을 손쉽게 얻어 낼 수 있다.

# np_baseball is available

# Import numpy
import numpy as np

# Create np_height from np_baseball
np_height = np_baseball[:,0]

# Print out the mean of np_height
print(np.mean(np_height))

# Print out the median of np_height
print(np.median(np_height))