자료구조 - 리스트, 튜플, 딕셔너리, 세트, 데이터프레임
[목차]
0. 여는 말
1. 리스트 (list) & 튜플 (tuple)
2. 딕셔너리 (dictionary)
3. 세트 (set)
4. 데이터프레임 (dataframe)
5. 맺는 말
0. 여는 말
지난 글에서는 '낱개 데이터'의 형태 (자료형) 4가지에 대해 알아보았는데요 (이전 글 참조),
자료형(데이터타입) - 정수형(int), 실수형(float), 문자열(str), 부울형(boolean)
[목차] 0. 여는 말 1. 정수형 (int) 2. 실수형 (float) 3. 문자열형 (str) 4. 부울형 (boolean) 5. 맺는 말 0. 여는 말 이번 글에서 다룰 내용은 엑셀(Excel)을 좀 다뤄보신 분들이라면 한 번 쯤은 경험해 보신 적.
lifeisstruggle.tistory.com
이번 글에서는 그것들 여러 개가 한 곳에 모였을 때, 그것들을 관리하는 '그릇'에 해당하는 자료구조에 대해 알아보려 합니다.
자료구조들 중 가장 자주 쓰이는 5가지 - 리스트, 튜플, 딕셔너리, 세트, 데이터프레임 - 에 대하여 설명해 보겠습니다.
바로 글 시작하겠습니다!
1. 리스트 (list) & 튜플 (tuple)
두 개념은 공통점과 차이점을 중심으로 비교하며 설명하는 것이 좋을 것 같아 함께 묶어서 설명하려 합니다.
리스트와 튜플은 다양한 자료형의 여러 데이터를 하나로 묶어줄 수 있다는 공통점을 가집니다.
한편 차이점으로는 크게 2가지 정도가 있는데요,
첫째, 일단 표기법이 다릅니다. 리스트는 대괄호('[ ]')로 표기하는 반면 튜플은 소괄호('( )')로 표기합니다.
둘째, '수정 가능 여부'가 다릅니다. 리스트는 수정이 가능한 가변적 자료 구조인 반면, 튜플은 한 번 만들어지면 수정이 불가한 불변적 자료 구조입니다. 이해를 돕기 위해 아래에 예시를 하나 첨부합니다 :)
실제로 사용하실 때에는 추후 수정 작업 여부에 따라 데이터 수정 가능성이 있다면 리스트를, 수정 가능성이 없고 오히려 의도치 않은 데이터 변화 가능성을 원천 봉쇄하고 싶다면 튜플을 선택하여 사용하시면 되겠습니다.
2. 딕셔너리 (dictionary)
말 그대로 사전(dictionary)과 같은 구조입니다.
이 글을 읽으시는 대부분의 독자 분들께서 사전 (영한, 한영 등)을 한 번 쯤은 사용해 보셨을 것 같은데요,
사전을 쓴다는 것은 '내가 찾으려는 단어(기준)가 있고, 그것을 기준으로 번역된 단어나 정보(결과값)를 찾는다'는 말과 같다고 할 수 있습니다.
(예를 들면, 한영사전은 내가 원하는 한글 단어에 매칭되는 영어 단어를 결과값으로 보여주고, 백과사전은 내가 원하는 키워드에 대한 정보를 결과값으로 보여줍니다)
딕셔너리도 이와 동일한 구조를 가지며, 이 때 기준이 되는 단어를 key, 그에 매칭되는 정보를 value 라고 부릅니다.
이러한 구조적 특성 때문에 인덱스(index)로 데이터를 찾는 리스트나 튜플과는 다르게, 딕셔너리에서는 키(key) 값을 기준으로 데이터를 찾을 수 있습니다.
참고로, 나중에 크롤링에 대해서 설명할 때 JSON 이라는 데이터 포맷 (자료 구조)이 등장할 텐데, 그것과 딕셔너리는 형태가 동일합니다.
3. 세트 (set)
세트는 중괄호('{ }')로 표현하며, 집합과 같은 개념이라고 보시면 됩니다.
그래서 리스트/튜플과 달리, 중복된 데이터가 들어가면 자동으로 중복 제거가 된다는 점이 주요한 차이점입니다.
또한, 집합이기 때문에 데이터에 순서가 없다는 점도 또 하나의 특징입니다. 순서가 없다는 것은 '몇 번째 요소'라는 개념이 존재하지 않는다는 뜻이며, 다시 말해 인덱싱 등의 방법을 통한 조회가 불가능하다는 것입니다.
마지막으로, 집합이기 때문에 교집합, 합집합, 차집합 등의 연산을 손쉽게 수행할 수 있습니다.
4. 데이터프레임 (dataframe)
표와 동일한 형태의 자료구조입니다.
주로 Pandas 라이브러리의 DataFrame 메쏘드 (method)를 활용하여 만들 수 있는 자료구조입니다.
행과 열이 존재한다는 것이 타 자료구조들과의 주요한 차이점이며, 딕셔너리의 key값들을 각각 하나의 열로 간주하여 데이터프레임으로 변환할 수 있습니다.
5. 맺는 말
이번 글에서는 자주 쓰이는 자료구조 5가지에 대하여 알아보았습니다.
자료구조 역시 series, array 등 다양한 것들이 더 많이 있지만, 그런 것들은 새로 보시게 될 때마다 '이런 것도 있구나' 정도로 넘어 가셔도 큰 문제는 없을 것이라고 생각합니다. 앞서 말씀 드린 5개 정도만 잘 알고 계셔도 대부분의 경우 불편함은 없으실 거에요 :)
다음 글에서는 경로 설정에 대하여 얘기해보려 합니다. 경로 설정에 대한 지식이 그 자체로 큰 효과를 기대하기를 어려울 수 있으나, 이 부분이 탄탄하면 나중에 파일을 불러오거나 저장할 때 더 수월하게 작업이 가능하실 거라고 생각합니다.
(화려한 기술은 아니지만 그것을 제대로 구사하기 위한 기본기 스탯 같은 느낌이라고 봐 주시면 될 것 같아요)
상세 내용으로는 절대경로/상대경로가 무엇인지, 그리고 ' / ', ' ./ ', ' ../ ' 등의 표기가 무엇을 의미하는지에 대해 설명해 보려 합니다. 해당 개념들을 익히시고 나면, 작업 시 기준이 되는 위치를 맞춤형으로 설정하시거나 파일을 불러오고 내보내는 등의 작업을 하실 때 좀 더 수월해질 것이라 예상합니다.
그러면 오늘 글은 여기서 마치겠습니다.
오늘도 긴 글 읽으시느라 고생 많으셨습니다!
우리들의 스트러글(struggle)하는 현생, 화이팅입니다!