머신 러닝

[데이터과학 코세라 강의] (2주차) 데이터 과학을 위한 파이썬

마빈 Marvin 2022. 5. 19. 07:00

 

2주차 

이번 강의는 내가 원하던 기본적인 명령어들이 많아서 좋다. 평소에 막힐 때 마다 검색해서 귀찮았는데, 이번에 한 번에 정리해두는 것 같아서 좋다. 

 

아래 2주차 내용도 구글 colab 의 ipython 링크에 저장해두었다. 

 

아래 메모는 "치트시트" 처럼 눈으로 훑으면서 전체적인 내용을 파악하는데 도움이 된다. 정확히 파악하려면 ipython 연습 코드를 참조할 필요가 있다.

Lists and Tuples

Tuples

콤마와 괄호로 이루어져있다.

예: score = (5, 4, 3, 5, 2, 4, 3, 5)

tup = ('dance', 5, 2.4)

type(tup) = tuple

tup[0]: 'dance'

tup[2]: 2.4

tup[-2]:5

new_tup = tup + ('sing', 3.5): ('dance', 5, 2.4, 'sing', 3.5)

tup[0:2] = ('dance', 5)

len(tup) = 3

NOTE: tuple is immutable (바꿀 수 없다는 뜻인듯하다)

sort_score = sorted(score): [2, 3, 3, 4, 4, 5, 5, 5]

tuple 속에 tuple 을 넣을 수 있다. 

nested_tup = (5,4,('ed','tech'),(4,7),('song',(2,3))) 에서 nested_tup[-1] 은 ('song',(2,3)) 이다. 

nested_tup[-1][1] 은 (2,3)이다.

Lists

list 는 tuple 과 유사하지만, mutable (수정가능)하다. 

a = ["Ed Sheeran", 9.8, 3]

list 속에 또 다른 list 나 tuple 과 같은 데이터 형태도 포함시킬 수 있다. 

a[1] = 9.8

a[-1] = 3

a[1:3] = [9.8, 3]

a2 = a + ["Monica", 5] = ["Ed Sheeran", 9.8, 3, "Monica", 5]

 

 

a.extend(["cool",10]) 을 하면, a 가 ["Ed Sheeran", 9.8, 3, "cool", 10] 과 같이 변한다.

b = ["Jack", 1.3, 2]

b.append(["good",10]) = ["Jack", 1.3, 2,["good",10]]

c = ["sining", 4, 3.2] 에서 c 의 첫번째 원소를 바꾸고 싶다고 하자. 

c[0]="dancing" 을 하면, c 가 ["dancing",4,3.2] 로 변화한다. 

del(c[2]) 를 하면, c 가 ["dancing",4] 로 변한다. 

"Rock and Roll".split() = ["Rock", "and", "Roll"]

"TX,CA,NY,NJ".split(",") = ["TX", "CA","NY", "NJ"]

d = "5.4,7,4,5".split(",") 이후 type(d[1]) 을 해보니, str 으로 나온다. 

ALIASING

A1 = ["vegatable", 2, 3.8] 이후 A2 = A1 이라고 두었을 때, A2[0]="meat" 로 바꾸면, A1[0] 을 했을 떄, "meat" 가 출력된다. 

NOTE: "Aliasing" 이라는 개념인데, 처음 배운다. 

B1 = ["money", 3, 1.9] 이후 B2=B1[:] 이라고 할 때, B2[0] = "happiness" 로 바꾸어도, B1[0] 을 했을 때, "money" 가 변하지 않고 출력된다. 

 

Dictionaries

Dictionaries

List 는 index/element 의 조합이라면, dictionary 는 key/value 의 조합이다. 

{"x":4,"y":3} 에서 key 는 "x" 와 "y" 이고, element 는 4 와 3이다. 

yearborn = {"Ed Sheeran": 1991, "Charlie Puth" : 1991, "Billie Eilish": 2001} 

yearborn["Billie Eilish"] = 2001

여기에 yearborn["Ariana Grande"]=1993 을 추가할 수 있다.

del(yearborn["Charlie Puth"]) 를 하면 해당 케이스를 삭제 가능하다.

"Billie Eilish" in yearborn 은 True 를 출력하고

"Justin Bieber" in yearborn 은 False 를 출력한다.

yearborn.keys() 는 모든 키를 list 형태로 출력한다.

yearborn.values() 는 모든 값을 list 형태로 출력한다.

 

Sets

set 에는 list 나 tuple 처럼 서로 다른 인풋을 저장하지만 순서가 없는 특징이 있다. 

grocery = {"carrot", "yogurt", "water", "milk", "ice cream", "butter", "milk"} 를 입력하면, 중복된 값은 한 번만 나타난다. 

list 를 set 으로 변환시킬 수 있다. toDoList = ["writing", "software engineering", "data science", "python", "writing"]

toDoSet = set(toDoList) 을 하면, toDoSet 이 {'data science', 'python', 'software engineering', 'writing'} 와 같이 출력된다. (중복되내는 내용이 제거된다)

SetOperations 

toDoSet.add("cook") 의 연산을 하면 {'cook', 'data science', 'python', 'software engineering', 'writing'} 이 출력된다.

toDoSet.remove("data science") 을 하면, 집합에서 해당 항목이 삭제된다. 

"software engineering" in toDoSet 은 True 를 출력한다. 

"deep learning" in toDoSet 은 False 를 출력한다. 

toDoToday = {"writing", "data science", "research", "nap"} 으로 정의하고, 

toDoTomorrow = {"cooking", "nap", "machine learning", "data science", "meeting"} 으로 정의하자. 

두 집합의 교집합을 구하려면, toDoToday & toDoTomorrow 을 입력했을 때, {'data science, 'nap'} 이 출력된다. 

두 집합의 합집합을 구하려면, toDoToday.union(toDoTomorrow) 를 입력했을 때, {'cooking', 'data science', 'machine learning', 'meeting', 'nap', 'research', 'writing'} 이 출력된다. 

toDoYesterday = {"writing", "data science", "research"} 라 두면, 

toDoYesterday.issubset(toDoToday) 는 True 를 출력한다. 

To Do List 만들 때 set 커맨드가 유용할 것 같다. 

 

List 와 (key 가 존재하는) dictionary 가 헷갈렸는데, 이번 기회에 정리를 할 수 있었다. set 은 개발할 때 필요한 순간이 있을 것 같다 (예시를 들었던 to do list 앱).