이번 장에서는 자료를 넣을 수 있는 상자인 변수와 파이썬에서 지원하는 자료형(데이터 타입)에 대해 알아보겠습니다.
변수
앞 장에서 파이썬을 이용해 간단한 연산을 해봤습니다. 만일 12340의 1/2, 1/4, 1/5을 각각 궇하려면 어떻게 하면 될까요? 앞에서 배운 방법으로 각각을 다음과 같이 연산하면 됩니다.
In : 12340 * 1/2
Out : 6170.0
In : 12340 * 1/4
Out : 3085.0
In : 12340 * 1/5
Out : 2468.0
보다시피 매번 연산할 때마다 12340을 반복적으로 썼습니다. 이런 간단한 연산에서도 숫자를 반복해서 입력해야 할 경우 매번 같은 숫자를 입력하는 것은 매우 귀찮은 일입니다. 위의 예에서 숫자 12340을 어떤 상자에 넣고 이름을 붙인 후 이 이름을 부를 때마다 상자에 넣은 숫자가 나온다면 편리할 것입니다. 이처럼 숫자와 같은 자료(data)를 넣을 수 있는 상자를 변수(variable)라 하고 상자에 붙인 이름을 변수명(혹은 변수 이름)이라고 합니다. 실제로 변수는 컴퓨터의 임시 저장 공간(메모리)에 저장됩니다.
파이썬에서는 등호(=)를 이용해 변수에 자료를 넣습니다.(할당합니다.) 즉, '변수명 = data' 같은 형태로 사용합니다. 만약 자료가 숫자라면 data에 숫자를 쓰면 되고 문자열이라면 문자열을 쓰면 됩니다. 여기서 변수명과 등호, 등호와 data 사이의 공백은 무시됩니다. 즉, 공백은 있든 없든 상관없습니다. 데이터가 할당된 변수를 이용하려면 그냥 변수명만 쓰면 됩니다.
그럼 데이터를 변수에 할당하고 활용해보겠습니다. 먼저 숫자 12340을 변수명이 abc인 변수에 할당하고 활용하는 예를 살펴보겠습니다.
In : abc=12340
print(abc)
Out : 12340
변수에 자료를 할당한 경우 print(변수명)으로 변수명에 할당한 값을 출력할 수 있습니다. 또한 print(변수명)을 이용하지 않더라도 변수명을 실행해 변수에 할당된 값을 출력할 수도 있습니다.
다음 코드를 살펴보겠습니다.
In : abc=12340
Out : 12340
이제 값(12340)을 할당한 변수 abc를 이용해 앞에서 했던 계산을 그대로 해보겠습니다.
In : print(abc * 1/2)
print(abc * 1/4)
print(abc * 1/5)
Out : 6170.0
3085.0
2468.0
앞에서 숫자 12340을 쓰는 대신 변수 abc를 이용해 연산하고 출력했습니다. 일일이 숫자를 입력하지 않아도 되니 편합니다. 결과는 변수를 이용하지 않을 때와 같습니다. 각 연산에 변수 abc가 숫자 12340으로 대치돼 계산됐기 때문입니다. 이것이 변수를 이용하는 이유입니다.
※변수명을 만드는 규칙
-변수명은 문자, 숫자, 밑줄 기호(_)를 이용해 만듭니다.
-숫자로 시작하는 변수명을 만들 수 없습니다.
-대소문자를 구분합니다.
-공백을 포함할 수 없습니다.
-밑줄 이외의 기호는 변수에 이용할 수 없습니다.
-다음과 같은 예약어(Reserved word)는 변수명으로 이용할 수 없습니다.
None, True, False, and, as, assert, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in is, lambda, nonlocal, not, or pass, raise, return, try, while, with, yield
문자열
이번에는 자료형 중 문자열에 대해 알아보겠습니다. 문자열은 문자의 나열을 의미하는데, 파이썬에서는 따옴표로 둘러싸인 문자의 집합입니다. 앞에서 print('Hello Python!!')을 실행할 때 문자열을 이용해봤지만 여기서 좀 더 자세히 알아보겠습니다.
문자열 만들기
문자열을 표시하기 위해 문자열 시작과 끝에 큰따옴표(")나 작은따옴표(')를 지정합니다. 둘 중 어떤것을 사용해도 되지만 양쪽에는 같은 기호를 이용해야 합니다. 즉, 큰따옴표로 시작했으면 큰따옴표로 끝내야 합니다. 시작과 끝의 따옴표가 같지 않으면 오류가 발생합니다. 주피터 노트북에서는 시작 따옴표를 입력하면 끝 따옴표가 자동으로 생성돼 이러한 오류가 발생하는 것을 줄여줍니다.
다음은 문자열 표시에 큰따옴표와 작은따옴표를 이용한 예입니다.
In : print("String Test")
Out : String Test
In : print('String Test')
Out : String Test
이제 문자열을 변수에 저장한 후 print()함수로 출력하는 예를 살펴보겠습니다.
In : string1 = "String Test 1"
string2 = 'String Test 2'
print(string1)
print(string2)
Out : String Test 1
String Test 2
위의 예는 큰따옴표나 작은따옴표로 감싼 문자열을 변수에 할당한 후 변수를 print()로 출력하는 예입니다. 이렇게 변수를 할당한 문자열의 타입(type)은 무엇일까?
In : type(string1)
Out : str
출력 결과는 str입니다. 변수 string1과 string2에 할당한 데이터의 타입이 문자열(string)인 것을 의미합니다.
문자열 안에 큰따옴표나 작은따옴표도 포함하려면 어떻게 해야 할까? 문자열에 큰따옴표를 포함하려면 문자열을 작은따옴표로 감싸고 작은따옴표를 포함하려면 큰따옴표로 감싸면 됩니다.
In : string3 = 'This is a "double" quotation test'
string4 = "This is a 'single' quotation test"
print(string3)
print(string4)
Out : This is a "double" quotation test
This is a 'single' quotation test
만약 문자열에 큰따옴표와 작은따옴표를 모두 포함하고 싶거나 문장을 여러 행 넣고 싶거나 입력한 그대로 출력하고 싶을때는 문자열 전체를 삼중큰따옴표(""")나 삼중 작은따옴표(''')로 감싸면 됩니다.
In : long_string1 = '''[삼중 작은따옴표를 사용한 예]
파이썬에는 삼중 따옴표로 여러 행의 문자열을 입력할 수 있습니다.
큰따옴표(")와 작은따옴표(')도 입력할 수 있습니다. '''
long_string2 = """[삼중 큰따옴표를 사용한 예]
파이썬에는 삼중 따옴표로 여러 행의 문자열을 입력할 수 있습니다.
큰따옴표(")와 작은따옴표(')도 입력할 수 있습니다. """
print(long_string1)
print(long_string2)
Out : [삼중 작은따옴표를 사용한 예]
파이썬에는 삼중 따옴표로 여러 행의 문자열을 입력할 수 있습니다.
큰따옴표(")와 작은따옴표(')도 입력할 수 있습니다.
[삼중 작은따옴표를 사용한 예]
파이썬에는 삼중 따옴표로 여러 행의 문자열을 입력할 수 있습니다.
큰따옴표(")와 작은따옴표(')도 입력할 수 있습니다.
문자열 다루기
문자열에는 더하기 연산자(+)와 곱하기 연산자(*)를 이용할 수 있습니다. 더하기 연산자(+)는 문자열끼리 연결(concatenation)해 문자열을 하나로 만들고 곱ㅎ하기 연산자(*)는 곱한 만큼 문자열을 반복합니다.
In : a='Enjoy'
b='python!'
c=a+b
print(c)
Out : Enjoy python!
In : print(a * 3)
Out : Enjoy Enjoy Enjoy
이처럼 문자열을 합치고 반복하는 것 외에 문자열을 처리하는 다양한 방법이 있습니다. 이것에 대해서는 "문자열과 텍스트 파일 데이터 다루기"에서 좀 더 상세하게 알아보겠습니다.
리스트
지금까지 숫자, 문자열, 불 데이터 타입에 대해 알아봤습니다. 이런 데이터 타입은 데이터를 하나씩만 처리할 수 있습니다. 하지만 때때로 데티러를 묶어 놓으면 처리하기가 편할 때가 있습니다. 예를 들면, 학교에서 학생의 과목별(국어, 영어, 수학, 과학 등) 시험 점수를 처리한다거나 학급별로 학생의 이름을 지정할 때 데이터를 묶어서 관리하면 편합니다. 이렇게 할 수 있는 것이 바로 리스트(List)입니다. 먼저 리스트 타입의 데이터를 생성하는 방법을 알아보고 그다음으로 다양한 리스트 메서드를 사용해 리스트를 다루는 방법을 알아보겠습니다.
리스트 만들기
리스트는 대괄호([ ])를 이용해 만듭니다. 대괄호 안에 올 수 있는 항복(혹은 요소)의 데이터 타입은 다양합니다. 숫자, 문자열, 불, 리스트 등을 넣을 수 있습니다. 또한 나중에 설명할 튜플, 세트, 딕셔너리도 넣을 수 있습니다. 리스트를 만들 때 각 항목의 데이터 타입은 같지 않아도 됩니다. 데이터는 입력한 순서대로 지정되며 항목은 콤마(,)로 구분합니다. 또한 대괄호 안에 아무것도 쓰지 않으면 빈 리스트가 만들어집니다. 빈 리스트에는 데이터는 없지만 데이터 형태는 리스트입니다. 리스트를 만드는 몇 가지 예를 들어보겠습니다. 우선 어떤 학급의 1번 학생의 국어, 영어, 수학, 과학 점수가 각각 90,95,85,80점이라고 할 때 이 ㅎ학생의 점수를 다음과 같이 리스트로 만들어서 변수에 할당할 ㅅ ㅜ있습니다.
In : student1 = [90,95,85,80]
student1
Out : [90, 95, 85, 80]
위의 결과를 보면 변수 student1에 각 과목의 점수가 순서대로 입력됐습니다. 이제 type() 함수를 이용해 변수 student1의 데이터 타입을 확인해보겠습니다.
In : type(student1)
Out : list
위의 결과를 보면 변수 student1에 할당된 데이터의 타입은 리스트입니다. 리스트 타입의 데이터가 할당된 변수(리스트 변수)의 구조는 앞에서부터 0,1,2,3 입니다.
따라서 리스트에서 각 항목은 '변수명[i]'로 지정할 수 있습니다. 여기서 i를 리스트 변수의 인덱스(index)라고 합니다. 만약 N개의 항목이 있는 리스트 타입의 데이터가 있다면 인덱스 i의 범위는 0부터 'N-1' 까지입니다. 즉 첫 번째 요소는 '변수명[0]', 두 번째 요소는 '변수명[1]', 그리고 세번째요소는 '변수명[2]', 이렇게 인덱스의 숫자가 증가하다가 마지막 요소는 '변수명[N-1]'이 됩니다. 마지막 항목은 '변수명[-1]'로도 지정할 수 있습니다.
변수 student1에서 첫 번째, 두 번째, 마지막 항목을 출력하려면 다음과 같이 코드를 실행합니다.
In : student1[0]
Out : 90
In : student1[1]
Out : 95
In : student1[-1]
Out : 80
리스트의 특정 항목을 변경하려면 다음과 같이 '변수명[i] = new_data'를 이용해 리스트 변수에서 인덱스 i 항목을 new_data로 변경할 수 있습니다.
다음은 리스트 변수 student1에서 두 번째 항목을 새로운 데이터로 할당하고 리스트 변수를 출력했습니다.
In : student1[1] = 100
student1
Out : [ 90, 100, 85, 80]
위의 결과를 보면 두 번째 요소의 값이 95에서 100으로 변경된 것을 알 수 있습니다.
출처 : 데이터분석을 위한 파이썬 철저 입문 中