brunch

You can make anything
by writing

C.S.Lewis

by 데이터 스테이션 Jun 14. 2023

2-3. 컴퓨터가 데이터를 다루는 방식

Python 데이터 타입, 자료형

- 변수 

 Python을 비롯한 프로그래밍 언어에서 데이터를 다룰 때, 데이터들을 그냥 직접 입력하기엔 너무 자료가 많거나, 비효율적이다. 컴퓨터 프로그래밍에서는 효율적이고 쉽게 데이터를 가져와 처리하고 연산하기 위해, ‘변수’라는 개념을 이용해 데이터를 다룬다. ‘변수’는 데이터를 담고 다니는 상자라고 생각하면 쉽다. 특정 데이터를 대표할 수 있는 약어로 줄여 표현하여, 2개 이상의 여러 데이터를 한꺼번에 들고 다니며 계산할 수 있다. 

그림 . 변수로 선언된 데이터

 위의 그림처럼, 데이터를 특정 원하는 이름으로 ‘선언’하여 데이터를 담고 다닐 수 있다. 이때, 오른쪽에 있는 데이터 자료가 왼쪽에 있는 값으로 들어간다. 따라서, data1이라는 변수는 100이라는 숫자를 가지고 있다는 것을 의미하고, data2라는 변수에는 500이라는 데이터가 있다는 것을 의미한다. 아래와 같이 두 변수를 더하거나 곱하면, 두 변수 안에 있는 값이 계산되어 결과가 도출된다. 

그림 . 변수 간 연산

 특정 값을 변수에 넣어 사용할 땐, 넣고 싶은 데이터를 오른쪽에 두고 등호기호(=)를 이용하여 왼쪽에 변수에 선언한다. 이때, 변수 명은 사용자가 원하는 형태로 선언이 가능하며, Python의 경우 한국어로도 변수 선언이 가능하다. 가급적이면 소문자로 시작하고 해당 데이터의 의미를 전달할 수 있는 간략한 형태로 표현한다. 변수를 선언하는 것은 특정 메모리에 데이터를 적재한다고도 볼 수 있다. (변수는 어떤 데이터를 저장하는 저장 공간을 의미하며, 그 저장공간은 컴퓨터에서 메모리로 불린다.) 그리고 앞으로는 변수를 활용하여 데이터 간 연산이나, 전처리를 진행하게 된다. 그럼 이번엔 데이터 타입에 대해 천천히 알아보자. 


 데이터 타입은 크게 2가지가 있다. 이는 Python 뿐만이 아니라 모든 영역에서 데이터를 이 두 가지 형태로 나눌 수 있다. 숫자로 이뤄져 있는 수치형 데이터(Numeric Data)와 문자 또는 항목으로 구성되어 있는 범주형 데이터(Categorical Data)이다. 각각 자료에 따라 세부항목으로 나눠지는데, 아래 표로 확인해 볼 수 있다. 

그림 . 데이터 타입

 Python에서는 데이터를 구분하기 위한 자료형이 존재한다. 역시 수치형 데이터와 범주형 데이터로 나눌 수 있는데, 수치형 자료는 대표적으로 3가지 형태로 나뉜다. 범주형 자료는 문자열 형태로 사용한다. Python에서는 type() 이라는 기능을 이용해 해당 데이터가 범주형 데이터(문자)인지 수치형 데이터 인지 구분할 수 있다. 

그림 . type( ) 함수를 이용하여, 데이터 타입확인

데이터 타입에 따른 Python에서의 표현은 아래의 표와 같다. 여기서 논리형이라는 데이터 타입이 존재하는데, 논리형은 컴퓨터의 언어구조를 바탕으로 발생한 데이터 타입이다. 

그림 . Python에서 데이터 타입 표현

 그럼 Jupyter Notebook으로 위의 Python 데이터 자료에 대한 여러 가지 기능 및 문법을 살펴보자. 먼저 숫자 데이터는 특정 기호 없이 사용할 수 있으며, 소수점을 갖는 실수형은 자동으로 Python이 변환하여 계산한다. 아래는 숫자형태 데이터에 대한 기본 연산이다.


- 수치형 자료

그림 . 연속형 자료 계산 연산자

 위에서 볼 수 있듯이, 나눗셈 연산의 경우 정수형태 데이터를 실수형으로 자동 변환 해 준다. 참고로 Python Code Mode 에서도 # 기호를 이용하여, 코드 내 주석을 작성할 수 있다. (Markdown) 


- 문자형 자료

문자 데이터를 사용할 때에는 따옴표를 하나 또는 두 개를 이용해, 아래와 같이 표현한다.

그림 . 문자형 자료 표현

숫자를 문자형태로 사용해야 하는 경우에도, 반드시 따옴표를 이용해 문자형 자료임을 밝혀 주어야 한다. 그리고 같은 문자형 데이터 자료끼리 연산이 가능하다. 문자형 데이터를 반복하여 써주고자 할 땐, 연속형 자료의 곱셈 기호를 이용하여 반복해 사용할 수 있다.

그림 . 문자 데이터 연산

 또 여러 가지 형태로 문자형 데이터를 처리할 수 있는데, 이때, Python 내장함수가 동원되어 데이터를 변환하거나 가공할 수 있다. 내장함수는 Python 자체로 사용할 수 있는 기본적인 함수 기능이다. 문자형 데이터의 경우, 실무에서 가공하거나 변환해야 하는 문제가 많이 발생한다. 데이터를 수집하는 단계에서 사람이 직접 데이터를 입력하는 경우, 같은 항목임에도 각 부서와 데이터마다 형식이 다른 경우가 많다. 그럴 때, 몇 가지 문자열 처리 함수를 알고 있으면 쉽게 데이터를 변환 및 가공할 수 있다. 

 먼저 문자형 데이터는 각 문자에 위치에 따라 순서가 정해져 있다. 따라서 특정 위치에 존재하는 문자를 가져올 수 있는데, 이를 인덱싱(Indexing, 특정 위치를 찾는 행위)이라고 부른다. 아래와 같이 특정문자를 하나의 변수로 선언하여, 각 문자의 위치를 이용해 데이터를 확인해 보자. 

그림 . 문자열 데이터의 인덱싱

 먼저 위와 같이 문자로 선언된 특정 변수 뒤에, 대괄호를 이용해 특정 위치의 문자를 출력할 수 있다. 그리고 위의 결과처럼, 컴퓨터에서 순서를 셀 때에는 0부터 시작하며 센다. 가장 첫 번째 오는 P 글자를 0번째 위치에 있는 문자로 인식하고 있다. 그리고 문자의 자료가 길 때에는 이 위치를 뒤에서부터 세어 줄 수 있다. 

그림 . 뒤에서 첫 번째 문자를 인덱싱 해 온 경우

음수 부호를 이용하여, 맨 마지막 글자를 출력한 모습이다. 뒤에서 위치를 셀 땐, -1부터 시작한다. 만일 특정 범위의 데이터를 추출하려면, : 기호를 이용하여 문자를 추출할 수 있다. 

그림 . 특정 범위의 문자를 인덱싱 해 온 경우

위의 코드는 0번째부터 6번째 전까지 문자를 찾아 출력하는 코드이다. 범위를 찾아 출력할 때, : 기호 뒤에 숫자는 포함하지 않고, 이전 숫자까지만 불러온다. 즉 [0:6]이라는 의미는 0번째부터 5번째까지만 데이터를 찾아서 가져온다. 처음부터 특정 위치의 데이터까지 불러올 땐, : 기호 앞에 0이라는 숫자를 생략하여 사용한다. 특정 위치의 데이터부터 쭉 뒤의 데이터를 추출할 때에도 뒤의 숫자를 생략하여 데이터를 찾을 수 있다. 

그림 . 첫 번째와 마지막으로부터 인덱싱을 한 경우

그리고 이런 문자형 자료의 글자 수를 확인할 땐, len( )이라는 내장함수를 활용한다. 이 함수는 데이터의 개수를 확인할 때에도 많이 사용되는 함수이다. 

그림 . len( )함수는 특정 문자나 데이터의 개수를 표현한다

‘Python Data’라는 문자는 띄어쓰기를 포함하여 총 11글자로 구성되어 있다는 것을 의미한다. 그리고 여러 내장함수를 이용해 문자데이터를 처리할 수 있는데, 아래 표를 참조하면 문자 데이터를 쉽게 처리할 수 있다.

그림 . 여러 가지 문자열 처리함수

가장 대표적으로 사용되는 몇 가지 예제를 살펴보면 아래와 같다. 

그림 . count( )함수는 특정 문자의 개수를 센다
그림 . find( ) / index( )함수는 특정 문자의 위치를 확인한다
그림 . join( )함수는 각 문자의 공백에 특정 기호를 삽입한다
그림 . replace( )함수는 특정 문자를 다른 문자로 대체한다
그림 . split( )함수는 특정 문자를 기준으로 데이터 셋을 분할한다

특히 replace함수와 split함수는 실제 데이터 전처리에서도 많이 사용된다. split함수의 경우 데이터 출력 결과가 [ ] 대괄호에 둘러 쌓여 출력된 것을 볼 수 있다. 이는 리스트라고 부르는 Python의 데이터 구조이다. 분할의 결과로 여러 개의 데이터가 나왔기 때문에, 여러 개의 데이터를 들고 다닐 수 있는 구조가 필요한 것이다.


- 논리형 자료 

 논리형 자료는 True(참) 또는 False(거짓)으로 데이터가 표현된다. 컴퓨터가 태어나고 발달하면서, 컴퓨터는 기본적으로 전기신호를 이용하여 언어체계를 구축했다. 즉 전기가 ‘있다(1)’ 또는 ‘없다(0)’ 이 두 가지 값을 이용해 계산이나 명령을 수행한다. 지금은 여러 프로그래밍 언어가 발달되면서 이진법을 이용해 컴퓨터에게 직접 명령을 내리지는 않지만 프로그램을 만들 때, 특정 조건에 따른 실행 구조를 만들 때 사용된다. 

그림 . 논리형 자료구조

논리연산 구조는 숫자 자료의 대소비교 및 데이터 값의 유/무를 판단한다. 

그림 . 수치형 자료의 대소 비교

숫자나 문자가 같은지 다른지 비교할 때에는 아래와 같이 등호 기호(=)를 두 번 써준다. 한 번만 쓰게 되면, 데이터를 변수로 선언한다는 의미가 되기 때문에 두 번 써주어 구분한다. 

그림 . 두 데이터의 대소 비교

그리고 같지 않은지 확인하고자 할 땐, != 기호를 사용한다. 이는 not의 의미를 나타내며, 두 데이터가 서로 다를 때 True, 같을 때 False를 출력한다. 

그림 . 두 데이터의 대소 비교

이렇게 논리형 자료까지 알아보았다. 그럼 다음엔 여러 개의 데이터를 넣고 다닐 수 있는 데이터 구조에 대해 알아보자. 


Python 온라인 수업 :

    데이터 타입 : https://youtu.be/gysgT8CDevE

    문자열 함수 : https://youtu.be/yGL_Hn3HdAk


Python 기초 온라인 전체 재생 목록 : https://youtube.com/playlist?list=PLhdHuKlSngGxL_R2g8OYFtsUKs-mMhRBs

매거진의 이전글 2-2. Jupyter Notebook 실행하기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari