ABC부트캠프 데이터 탐험가 과정

[3일차] ABC 부트캠프 파이썬 환경구축 및 기초지식 다지기

hwibeenjeong 2024. 7. 8. 23:07

비가 와서 그런지 차가 엄청 막혔다.

지난주 오리엔테이션과 ESG 데이를 뒤로하고 이제 본격적으로 파이썬 기초부터 데이터 분석의 첫걸음을 딛는 날이다. 비가 정말 많이 오고, 차도 정말 많이 막혀서 지각하면 어쩌나 조마조마했지만 다행히 제시간에 맞게 도착했다 :)

1. 환경 구축 및 주피터 노트북 사용 방법

1-1. 환경 구축

 앞으로 사용할 환경은 아나콘다이다. 아나콘다를 사용하는 이유는 각종 라이브러리들과 주피터 노트북 등 앞으로 할 활동에 도움이 되는 많은 기능들을 지원하기 때문에 사용한다. 다른 언어도 아니고 파이썬을 사용하는 이유는 다음과 같다.

    1. 직관적이며, 사용에 용이하다.

    2. 다양한 곳에 사용된다.

    3. 풍부한 커뮤니티를 보유하고 있다.

 먼저, 아나콘다를 설치하는 과정이다.

https://www.anaconda.com/download/success

아나콘다 공식 홈페이지에 가게 되면 윈도우, 맥, 리눅스를 지원하고 있고, 내 노트북 환경은 윈도우이기 때문에 윈도우 버전으로 다운로드하였다. 

 

아나콘다를 다운 받고, 실행한 뒤 안내에 따라 설치하면 된다. 설치 도중 환경 변수를 설정할 것이냐고 물어보는데 만약 설정한다고 하지 못했을 경우 환경변수를 설정해줘야 한다. 설치가 완료되면 주피터 노트북을 포함한 기능들을 사용할 수 있고, 우리는 주피터 노트북을 사용해서 개발할 예정이다.

 

1-2. 주피터 노트북 사용법

 주피터 노트북은 셀 단위로 코드를 작성할 수 있고, 각종 단축키를 지원한다. 먼저 주피터 노트북은 명령모드와 수정모드가 있고, 셀의 모드에 따라 사용할 수 있는 단축키가 달라진다.

명령모드 A 현재 셀 위에 새로운 셀 생성
B 현재 셀 아래에 새로운 셀 생성
상, 하 방향키 셀 간 이동
D, D 현재 셀 삭제
M 현재 셀을 Markdown(문서 작성) 형식으로 변경
Y 현재 셀을 Code(명령어 작성) 형식으로 변경
수정모드 Tab 들여쓰기 혹은 코드 자동 완성
Shift + Tab 들여쓰기 취소 혹은 명령어 도움말 표시
Ctrl + / 일괄 주석 처리 및 주석 해제

 

위와 같이 두 가지의 모드를 변환하며 사용할 수 있다. 셀을 실행하는 방법에는

    1. Shift + Enter : 현재 셀 실행 후 다음 셀로 이동

    2. Ctrl + Enter : 현재 셀 실행 후 현재 셀에 대기

두 가지 방법이 있다.

 

 지금까지 환경 구축 및 주피터 노트북 사용법을 간단히 살펴보았고, 다음은 파이썬에 대한 기초 지식이다.

2. 기초 지식

(주석, 입출력, 변수와 상수, 자료형 , 형변환 , 연산자, 포맷팅, 인덱스와 슬라이싱)

 

0. 들어가기 앞서

파이썬은 인터프리터 언어이다. 인터프리터 언어란 컴퓨터가 코드를 한 줄 씩 읽으며 코드를 실행한다. 이와 반대로 컴파일 언어가 있다. 컴파일 언어는 코드가 실행되기 전 컴파일러가 코드를 모두 검사한 후 문제가 없을 시 코드가 실행된다. 각각의 언어에는 장단점이 있지만 파이썬은 인터프리터 언어를 기반으로 했다는 점을 알아두면 좋을 것 같다.

1. 주석

 컴퓨터가 알아봐야 할 내용과 컴퓨터는 알아보지 못해도 우리가 메모처럼 코드를 설명하는 내용을 포함하는 경우가 있을 것이다. 이때, 우리는 주석을 사용한다.

주석은 실행이 되지 않고 print문만 출력이 되는 것을 알 수 있다.

프로그래밍 언어별로 주석 처리하는 방법은 다르지만 파이썬에서는 '#'을 사용한다. 주피터 사용법에 대해서 알아봤을 때 'Ctrl + /'를 사용하면 주석처리를 할 수 있다. 한 줄을 주석 처리하고 싶을 때 '#'을 사용하고, 여러 줄을 주석 처리하고 싶을 땐 삼중 따옴표를 사용하면 된다. 주피터 노트북에서는 여러 줄을 드래그한 후 'Ctrl + /'하면 여러 줄을 한 줄 주석처리 해줘서 한 번에 여러 줄을 주석 처리할 수 있다.

 

2. 입출력

입출력은 입력과 출력을 말하는 것으로, 입력은 우리가 컴퓨터에게 데이터를 제공하는 기능을 하고, 출력은 컴퓨터에서 계산한 결과 값을 우리가 볼 수 있게 표시해 주는 것이다.

 2-1. 입력

  input 함수를 이용해 변수에 데이터를 할당한다.

  예시로 input 함수를 이용해 성별을 입력 받고, gender라는 변수에 입력된 문자열을 할당하게 된다. 이때 유의해야 할 점이 있다. input 함수를 이용해서 입력받은 값들은 문자열로 저장되기 때문에 만약 정수 혹은 실수를 입력하고 싶다면, 입력 전후로 형 변환을 해줘야 한다. 

 2-2. 출력

  우리가 주로 사용하는 출력문에는 print문이 있다. 하지만 주피터 노트북과 같은 대화형 개발 환경에서 사용할 수 있는 display()도 있다. 주로 사용하는 print문은 정수형을 포함한 실수형, 문자열, 리스트, 튜플 등 다양한 자료형을 지원한다.

print와 주피터 노트북의 display 모두 출력 기능을 하는 함수임을 기억해두면 좋을 것 같다.

 

3. 변수와 상수

3-1. 변수

 프로그래밍을 하다 보면 값을 계산하고, 계산한 결과를 다시 값에 저장하는 상황이 자주 온다. 이때 사용하는 것이 변수이다. 변수는 쉽게 말하면 값을 저장할 수 있는 메모리 공간을 이야기한다. 파이썬이 아닌 Java 혹은 C언어 기반의 언어들은 변수를 선언하는 과정과 초기화하는 과정이 나뉘어 있다. 변수의 선언이란 값이 들어갈 수 있게 자료형을 지정해 주고 주소를 지정해 주는 작업을 이야기한다. 그리고 변수를 초기화해 줌으로써 변수에 값을 넣는다. 

//C#
int x;
x = 10;

 

 C#을 예로 든다면, int x;가 변수를 선언하는 부분, x = 10;이 실제로 x라는 공간에 10이라는 값을 집어넣는 과정이다. 하지만 파이썬에서는 선언과 초기화가 동시에 일어난다.

#Python
x = 10

 파이썬은 변수를 생성하는 과정에서 변수에 할당되는 자료형에 따라 변수의 자료형이 결정이 되기 때문에 이와 같은 차이가 발생하게 된다. 

 

 변수를 생성할 때 중요한 건 자료형도 중요하겠지만 변수의 이름이 중요하다. 변수의 이름은 변수에 저장되는 값의 속성을 나타낼 수 있어야 한다. 그렇기 때문에 변수의 명명규칙도 알아보자. 변수의 이름을 만들 때 중요한 점은 상수가 아닌 이상 변수 이름의 시작은 소문자로 시작하는 것이 관례이다.

  • 카멜 표기법: 두 번째 이상 단어의 첫 번째 글자를 대문자로 표기법 (ex helloWorld)
  • 스네이크 표기법: 단어와 단어 사이를 언더바('_')로 연결하는 표기법 (ex hello_world)
  • 헝가리안 표기법: 변수의 접두어에 자료형을 명시해주는 표기법 (ex iHelloWorld)

헝가리안 표기법의 경우 자료형마다 접두어로 붙는 글자가 달라진다.

접두어 데이터 타입 접두어 데이터 타입 접두어 데이터 타입 접두어 데이터 타입
b byte, boolean c int, short(크기) d, db double dw double word
n int, short l long ld long double qw quad word
i int, short(인덱스) f float w word ch char

 파이썬을 포함한 프로그래밍 언어에서 주로 사용되는 자료형들에 대한 헝가리안 표기법이다.

 

 각종 표기법을 제외한 유의 사항들이 있다. 

  • 영문 대/소문자를 구별할 것.
  • 특수문자는 오직 언더바('_')만을 사용할 것.
  • 숫자를 사용할 순 있지만, 숫자로 시작해서는 안되고, 변수명 중간에만 사용할 것.
  • 공백을 사용하지 않을 것.

3-2. 상수

상수에 대한 정확한 정의는 없지만 변수 명의 모든 글자를 대문자로 사용한다면 해당 변수를 상수로 사용하는 것이 관행이다.

PI = 3.14

다음과 같이 모든 글자가 대문자인 것을 확인할 수 있다. 앞서 말했듯이 상수에 대한 정확한 정의가 없기 때문에 예시의 PI 변수를 수정할 수 있다.

 

4. 자료형

4-1. 정수 (Integer)

 정수형은 음수와 0을 포함한 자연수에 해당된다. 

x = 10
y = 20
z = 30

 

4-2. 실수 (Float)

 실수는 소수점을 가지고 있는 수를 이야기한다. 실수의 영어명을 보면 float임을 알 수 있는데, 부동소수점(floating point)의 float를 가져온 말이다. 여기서 부동소수점이란 浮動(떠돌아다닌다)라는 한자를 가지고 있듯, 소수점의 위치가 고정되어 있는 것이 아닌 그 위치를 나타내는 수를 따로 적는 것으로 표현한다는 의미를 가지고 있다. 

a = 1.0
b = 2.0
c = 3.0

 

4-3. 문자열 (String)

 문자열은 문자들의 집합을 의미하며, text sequence types라고도 이야기 하는데 sequence가 붙는 이유는 나중에 인덱스와 슬라이싱에 대해 알아볼 때 자세히 알아보도록 하자.

a = "hello"
b = "world"

문자열 간에 덧셈 연산과, 곱셈 연산이 가능하다. 이 부분도 연산자에 대해 알아볼 때 자세히 알아보자.

 

4-4. 부울대수 (Boolean)

 참(True)과 거짓(False)으로 나타낼 수 있는 자료형이다.  파이썬에서 사용하는 부울 대수는 첫 글자를 대문자로 작성한다. 부울 대수 또한 연산이 가능하기 때문에 나중에 자세히 알아보자. 부울 대수는 기본 전제가 True이지만, 일부 값에 대해서는 False로 설정한다. 여기서 말한 일부 값은 숫자와 개수가 0으로 취급될 수 있으면 False인 것이다. 만약 숫자로 수치화할 수 없으면 개수, 길이로 따진다.

True    #참
False   # 거짓

 

5. 연산자

5-1. 사칙연산

 파이썬에서 사용되는 다수의 연산자는 이항 연산자이다. 좌항과 연산자, 우항 형식으로 나타낼 수 있다. 사칙 연산자는 우리가 흔히 사용하는 덧셈, 뺄셈, 나눗셈, 곱셈이 해당된다.

1 + 2   # 결과 값: 3
2 - 1   # 결과 값: 1
2 * 3   # 결과 값: 6
20 / 4  # 결과 값: 5

 

5-2. 대입연산

 대입 연산자는 등호를 포함한 연산자를 의미한다.

a = 2
b = 3
c = 50

a += 1    # a: 3,   b: 3,   c: 50 수를 더한 후 대입
b -= 1    # a: 3,   b: 2,   c: 50 수를 뺀 후 대입
a *= 2    # a: 6,   b: 2,   c: 50 수를 곱한 후 대입
b /= 2    # a: 6,   b: 1.0, c: 50 수를 나눈 후 대입
c //= 2   # a: 6,   b: 1.0, c: 25 수를 나눈 후 그 몫만 대입
c %= 5    # a: 6,   b: 1.0, c: 0  수를 나눈 후 그 나머지만 대입
a **= 3   # a: 216, b: 1.0, c: 0  수를 제곱한 후 대입

 

5-3. 비교연산

 비교 연산자는 이름 그대로 좌항과 우항을 비교하는 연산자를 의미한다. 연산의 결과는 부울 대수로 표현할 수 있다.

a = 10
b = 20

a > b    # 결과 값: False   a는 b보다 크다
a < b    # 결과 값: True    a는 b보다 작다
a == b   # 결과 값: False   a와 b는 같다
a != b   # 결과 값: True    a와 b는 같지 않다
a <= b   # 결과 값: True    a는 b보다 작거나 같다
a >= b   # 결과 값: False   a는 b보다 크거나 같다

 

5-4. 논리연산

 논리 연산은 부울 대수 간의 연산을 할 수 있게 해준다. 부울 대수 간 연산을 지원할 뿐더러 비교 연산 간의 연산을 할 수 있게 해준다. 논리 연산은 세 종류가 있다. AND, OR, NOT 연산이 있다. 

  • AND연산
  True (참) False (거짓)
True (참) True (참) False (거짓)
False (거짓) False (거짓) False (거짓)
  • OR연산
  True (참) False (거짓)
True (참) True (참) True (참)
False (거짓) True (참) False (거짓)
  • NOT연산
  NOT 연산
True True (참) False (거짓)
False (거짓) True (참)

 

위의 표와 같이 AND, OR, NOT 연산은 부울 대수 간의 관계에 따라 참과 거짓이 나뉜다. AND연산자와 OR 연산자는 이항 연산자로 항을 두 개 가지고 있지만, NOT연산자는 단항 연산자로 한 개의 항만을 가지고 있다.

True and False  # 결과 값: False
True  or False  # 결과 값: True
not True        # 결과 값: False

논리 연산자의 예시는 위와 같다.

 

5-5. 문자열의 연산

 문자열의 연산을 지원하는 프로그래밍 언어가 있고, 지원하지 않는 언어도 있지만, 파이썬의 문자열은 연산이 가능하다. 

  • 덧셈 연산 (Concatenate)
a = "hello"
b = "world"
a + b   # 결과 값: helloworld
  • 곱셈 연산 (Repeat)
a = "Ha"
a * 3   # 결과 값: HaHaHa

 

문자열의 덧셈 연산은 두 개의 문자열을 서로 이어주는 역할을 하고, 문자열의 곱셈 연산은 반복하는 역할을 한다.

 

6. 포맷팅

파이썬에는 함수와 메서드가 있다. 이 둘의 차이점은 다음과 같다. 

  • 함수: 함수 이름을 통해 사용할 수 있다.
  • 메서드: 객체와 연관되어 사용된다. (사용하고자 하는 대상이 '.'으로 연결 되어 있어야 함)

함수는 독립적으로 사용할 수 있지만, 메서드의 경우 객체가 있어야 사용할 수 있다. 

 

문자열을 사용하다 보면 정해지지 않은 값으로 문자열을 완성해야하는 상황이 생긴다. 이때 사용할 수 있는 것이 문자열의 포맷팅이다. 아래의 예시를 보자.

# 포맷팅 방법 1
"나는 %s를 좋아합니다" % '고양이'

# 포맷팅 방법 2
"나는 {}를 좋아합니다".format('고양이')

# 포맷팅 방법 3
f"나는 {'고양이'}를 좋아합니다"

세 가지의 포맷팅 방법 모두 출력은 동일하다. 각 방법들의 특징에 대해 살펴보자면, 첫 번째 포맷팅 방법은 고전적인 방법이라고 할 수 있다. C 기반의 포맷팅 방법으로 '%'뒤에 s가 붙으면 문자열, d가 붙으면 정수, f가 붙으면 실수 등 다양한 자료형을 사용할 수 있다. 두 번째 방법은 내가 주로 사용하는 방법이다. 중괄호를 이용하여 자리를 만들어 놓고, .format() 메서드를 사용하여 빈 자리를 채울 수 있게 해준다. 마지막 방법은 f-string을 사용하는 방법이다. 이 방법은 중괄호 안에서 연산이 가능하다는 점이다. 물론, 두 번째 방법에서도 .format() 메서드 안에서 문자열의 연산이 가능하지만, 세 번재 방법은 문자열 내에서 연산을 처리할 수 있어 가독성을 높인다.

 

7. 인덱스과 슬라이싱

인덱스은 찾고자 하는 요소의 자리를 찾는 것이다. 위에서 말했 듯이 문자열이 Sequence(순차적)인 이유도 문자열에 인덱스와 슬라이싱을 사용할 수 있기 때문이다. 인덱스는 요소가 자리한 위치를 나타내는 것이라면, 슬라이싱은 지정한 범위에 포함된 요소들을 나타내는 기능을 한다. 예제를 살펴보자.

text = "Hello World"
text[0]       # 결과 값: "H"
text[4]       # 결과 값: "o"

text[0:5:1]   # 결과 값: "Hello"

 

7-1. 인덱스

 문자열[정수] 형식의 인덱스는 정해진 '문자열'에 '정수' 번째 요소를 가져온다. 위의 예제 text[0]과 text[4]가 인덱스를 의미한다.

 

7-2. 슬라이싱

 문자열[시작점:끝점:단계] 형식의 슬라이싱은 정해진 '문자열'의 '시작점'을 포함하는 위치부터 '끝점'의 앞의 요소까지 '단계'를 넘어서 정해진 범위를 가져온다. 예제 text[0:5:1]은 0번째 요소를 포함한 위치부터 5번째 요소의 전인 4번째 요소까지를 나타내고, 마지막 1은 몇을 뛰어 넘을 것이냐 이다. 만약 단계의 숫자가 2이면 Hlo가 출력된다.

 

마치며...

지금까지 파이썬을 주 언어로 공부해왔지만, 제대로 배운 적은 드물었다.
이번 기회를 통해서 그 동안 쌓아온 전공 지식을 토대로 많은 것을 배워가고 싶다.