Kaggle은 데이터 사이언스에 뛰어난 사람들이 활약할 수 있도록 대회를 내놓는 유명한 곳이다. 평소 데이터 사이언스에도 관심이 있었는데 근처에 배울 수 있는 곳이 적어 스스로 공부하기로 마음 먹었다. Git에도 거창하게 스터디 진행 내용을 적었으니 1주마다 Velog라도 적으면서 나아가려고 한다.
이것저것 여러 블로그에서 본대로 처음부터 타이타닉 문제를 푼다는 생각을 했지만, 생각보다 손이 가지 않았다. 생각해보니 Python을 공부했던게 벌써 어언 3년이 지났었다. 어디서 좀 배우고 시작해야하나 싶었지만 어느날 이메일이 왔다.
호오... Kaggle에서 초보를 알아보고 자기네 사이트에서 기초 스킬을 쌓으라고 메일을 보낸 거였다. 고맙습니다. 하고 덥석 들어갔다.
들어가보니 처음부터 끝까지 줄글로 쭉 적혀있고, 중간중간 코드가 적혀있는 형태였다.
Python의 모티브는 영국 여성인 '몬티 파이썬'에서 따왔다고 한다. 위키에 쳐보니 몬티 파이썬은 '몬티 파이썬의 비행 서커스' 를 창시한 희극인인데 프로그래밍과 무슨 관련이 있는 인물인진 모르겠다.
그러고 나아가다보니 신기한 코드를 발견했다.
spam_amount = 4
viking_song = "Spam " * spam_amount
print(viking_song)
이게 뭘까? 어떤게 출력될 것 같은가? 요즈음엔 국비과정에서 배운 자바가 익숙한 나에겐 "Spam " * 4 가 무슨 값이 나오리라고는 생각조차 못했다.
답은 Spam Spam Spam Spam 이었다. ㄴㅇㄱ
연산자 오버로딩 기능을 사용해서 나타내주는 녀석이었디. 그 밖엔 if문에서 익숙한 중괄호 대신 콜론을 써서 코드블럭을 표현해 준다는 것과 연산자 중 특이한 녀석들이 있었다.
연산자 | 이름 | 내용 |
---|---|---|
a // b | 버림 나눗셈 | 말 그대로 나눈 후 소수점 버림 연산한다 |
a ** b | 지수 | 지수 곱셈 한다 |
외에는 min(1,2,3) 은 1이고 max(1,2,3) 은 3인 것, float(10)은 10.0이고 int(3.3)은 3이라는 기본적인 내용이 적혀있었다.
여길보면 알 수 있지만, 이제 step 1이 끝났고, step 7까지 쭉 나아가야한다. step 2는 함수, step 3는 if문과 제어하기 위한 boolean, step 4는 자료구조 중 List를 배우게 된다.
그런데 step 4 에서 imag 라는 신기한 함수를 보게 됐는데, 이건 허수부를 찾아주는 녀석이라고 한다. 외엔 list.append(매개변수)는 list 뒤에 자료를 더 붙여주기, list.index(매개변수) 순서 찾아주기 등 있었다. tuple과 차이점은 두가지 있었는데 1. tuple은 데이터 변경이 불가능하고, 2. 대괄호가 아닌 소괄호로 묶는다는 거였다. swap을 특이한 방식으로 진행하였는데, a=1 b=0 뒀을 때 a,b = b,a 만 적어줘도 swap이 된다는 거였다.
step 5는 반복문이다. print에 두 개의 매개변수를 쓰는건 처음봤는데, print(i, end=' ')하면 출력될 때마다 스페이스바가 뛰어나온다. print() 에 대한 모르는 것 중 하나였는데 end를 쓰지 않으면, print(end='\n')가 기본값이었다.
list와 for 조합은 생각 외로 다양하게 쓸 수 있었는데, 파이썬은 list 안에 직접 for문을 쓸 수도 있었다. 다음과 같이 num 을 정하기 위해 for-in-if 구문을 쓸 수도 있었다.
step 6 은 String 에 대한 이해를 높이는 내용이었다. startwith, endwith, split 등등 기본적으로 볼 수 있는 String 함수들이 있었다. 신선했던건 join 함수 였다.
join은 문자열이 있으면, 그 문자열 사이마다 지정된 문자를 넣는 함수였다. 또, sysout printf 대신 printf 에선 다음과 같은 형식을 썼다. 문자열에 .format을 붙여 출력하는 것이다. .format 의 매개변수를 한번만 출력할게 아니라 여러번 출력하고 싶을 땐 {0}, {1} 등 문자열을 넣어주게 되면 넣어줄 때마다 문자열에 첫번째와 두번째 매개변수를 넣어줄 수 있었다.
dictionaries는 중괄호를 사용하는데, Collection의 hashMap과 비슷한 형태로 생각할 수 있었다. 외에는 특별한게 없고 step 7은 라이브러리 쓰는 법이었다. 이 라이브러리를 쓰는 면에서 파이썬은 정말 특별했는데 변수에다 패키지를 넣을 수도 있다. 하지만, 보통 그 방식은 사용하지 않고 해당 라이브러리의 함수를 사용후 리턴값을 변수에 넣게된다.
이렇게 변수에다 numpy.ndrray 가 들어가게 되면 type 을 조사했을 때 해당 형태가 뜨게된다. 여기까지 오게되면 Learn Tutorial이 끝나게 되었다. 이제 Bonus : Titanic Tutorial로 갈 준비가 끝나게 되었다.
Bonus Titanic Tutorial은 좀 걸릴 것 같아서 따로 빼서 글을 써놓으려고 한다. 데이터 정리하는게 제법 재밌을 것 같다.