brunch

You can make anything
by writing

C.S.Lewis

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

2-4. Python에서 데이터 구조

Python 데이터 자료구조 

 앞서 변수를 선언할 때, 하나의 값을 하나의 변수에 선언하였다. 그러나 데이터 분석은 여러 개의 데이터를 가져와 분석하는 것이므로, 한 개 이상의 여러 데이터를 하나의 변수로 선언하여 값을 계산하거나 처리해야 한다. Python에서는 이렇게 여러 개의 데이터를 들고 다닐 수 있는 구조를 지원해 준다. 가장 기본적인 4가지의 구조가 있으며, 각 구조 별로 활용할 수 있는 내장 함수가 존재한다. 

그림 . 여러 가지 데이터 구조


1) List 리스트 구조 

가장 먼저 제일 많이 사용되는 리스트(list) 구조이다. 리스트 구조는 여러 개의 데이터를 담는 아주 기본적인 데이터 구조이다. 리스트 구조는 대괄호를 이용하여 선언한다. 

그림 . 리스트 구조를 변수로 선언

list구조는 서로 다른 타입의 데이터를 넣을 수 있으며, 데이터 간 순서가 존재한다. 그리고 한번 선언된 리스트에 새로운 데이터를 추가하거나 삭제, 수정이 가능하다. Python 내장함수를 이용해 리스트 내 값을 변경하는 작업이 가능하다. 데이터 분석에 있어서도 가장 많이 사용되는 데이터 구조 중 하나이다.  

 아래는 리스트 구조의 데이터를 순서에 따라 찾아오는 인덱싱(indexing)을 실시하였다. 앞서 문자열 처리에도 설명했듯이, 0번째부터 데이터 인덱싱을 할 수 있으며, 특정 범위의 데이터를 추출할 수 있다. 

그림 . 리스트 내 특정 위치에 있는 데이터를 인덱싱

그리고 역시 인덱싱으로 추출한 데이터를 다른 변수로 선언하여 사용할 수 있다. 아래의 코드는 list1 변수 내 리스트로부터 3번째 순서 뒤의 모든 데이터를 가져와, list2 변수로 선언한 모습이다.

그림 . 데이터 인덱싱 후 변수 선언

데이터를 리스트에서 추가/삭제하려면 아래와 같이 append와 remove함수를 활용할 수 있다. 아래 코드는 list3 변수에 과목명을 순서대로 선언하여, 새로운 데이터를 삽입하였다.

그림 . append( )함수를 이용해 데이터 추가

만일 특정위치에 데이터를 삽입하려고 하면, insert함수를 이용해 아래와 같이 데이터를 넣을 수 있다. 

그림 . insert( )함수를 이용해 특정 위치에 데이터 추가

데이터를 삭제할 땐, remove함수를 이용한다. 

그림 . remove( )함수를 이용해 특정 데이터를 삭제

해당 리스트의 데이터 개수를 확인하고자 할 땐, 문자열의 개수를 확인한 바와 같이 len() 함수를 사용한다. 이 함수는 리스트 자료구조 이외에도 여러 데이터 구조에 활용된다. 

그림 . len( )함수의 활용

리스트 구조는 가장 많이 활용되는 데이터 구조이다. 이후 데이터 분석을 진행할 때에도 전처리 하거나 코드를 간소화할 때, 많이 사용된다.


2) Tuple 튜플 구조 

 다음은 튜플(tuple)구조이다. 튜플 구조는 소괄호를 이용해 데이터를 선언한다. 

그림 . 튜플 구조를 변수로 선언

한번 선언된 튜플은 변경이 불가능한 독특한 특징을 가지고 있다. 대신 Packing과 Unpacking이라는 개념이 존재한다. Packing은 특정 데이터 구조를 선언하지 않고 여러 데이터를 하나의 변수로 선언할 때, 이 데이터를 Tuple 구조로 묶어준다. 

그림 . Packing을 이용한 튜플의 선언

그리고 거꾸로 하나의 튜플을 여러 개의 변수로 나누어 선언할 수 있다. 이를 Unpacking이라고 부른다. 아래 코드는 위에서 Packing 된 t2 튜플을 a, b, c 변수에 각각 나누어준 모습이다. 

그림 . Unpacking을 이용한 변수 나누기

튜플구조 내 데이터 간 서열은 존재한다. 따라서 리스트 구조와 같이 인덱싱이 가능하다. 

그림 . 튜플 구조 내 인덱싱

그러나 앞서 말했듯이 이미 선언된 튜플 구조에 새로운 데이터를 추가하거나 삭제하는 것은 불가능하다. 

그림 . 튜플에서 데이터 추가 삭제 시, 오류가 발생한다


3) Set 셋 구조 

 세 번째는 셋(Set) 구조이다. 셋은 집합형태 구조로써, 수학시간에 배운 밴다이어 그램을 생각하면 이해하기 쉽다. 수치형 데이터라도 데이터 간 서열이 존재하지 않으며 데이터의 중복이 허용되지 않는다. 셋은 중괄호 기호를 이용해 데이터를 선언한다.

그림 . 셋 구조를 변수로 선언

코드에도 보이듯이, 300이라는 숫자 값을 연속으로 입력했음에도 중복값이 모두 지워지고 셋 구조 내 원소들만 출력된다. 데이터가 원소형태로 데이터가 존재하다 보니, 집합 구조로 데이터의 집합 연산이 가능하다. 아래는 &기호와 |기호(Enter키 바로 위에 \기호를 shift 누르면 나온다.)를 이용해 두 개의 셋 구조에 대한 교집합 및 합집합 연산을 계산하였다.

그림 . 교집합과 합집합 연산

차집합연산 및 대상차집합(여집합) 연산도 가능하다. 

그림 . 차집합과 여집합 연산

데이터의 추가 삭제는 가능하다.


4) Dictionary 딕셔너리

 마지막은 딕셔너리(dictionary) 구조이다. 이 구조는 Key-Value 쌍을 이루는 독특한 형태를 취한다. 데이터 분석에서 알고리즘의 여러 기능을 조절하는 인자인 Parameter값을 바꾸거나, 수집한 데이터를 바탕으로 정형데이터(Dataframe)를 구성할 때 많이 사용된다. 딕셔너리 구조는 중괄호와 : 기호를 이용해 데이터를 선언한다.  

그림 . 딕셔너리 구조를 변수로 선언

딕셔너리는 데이터의 Key값을 찾으면 Value값을 찾는 형태로 인덱싱을 해줄 수 있다. 

그림 . 특정 Key값을 입력하여 Value값을 찾기

dict1 변수에 ‘이름’이라는 key를 찾으면, 거기에 쌍을 이루는 ‘홍길동’데이터가 찾아진다. 

모든 key값과 value값도 확인을 해볼 수 있다. 

그림 . Key값과 Value값들만 확인

 지금까지 Python에서 가장 기본적으로 사용되는 데이터 구조에 대하여 알아보았다. 데이터 분석을 진행할 때에도 위의 기본적인 4가지 구조에 대해 잘 알고 있다면, 데이터 전처리나 분석에 있어서 훨씬 효과적으로 분석을 진행할 수 있다. 


Python 온라인 수업 :

    데이터 타입 : https://youtu.be/3PKsdCujCyU


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

매거진의 이전글 2-3. 컴퓨터가 데이터를 다루는 방식
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari