본문 바로가기
판다스/기초 파이썬

[python] 3.6. 인덱싱과 슬라이싱

by 김판다t 2024. 11. 5.

데이터 분석 입문을 위한 기초적인 파이썬 내용을 다룹니다. 데이터 분석은 주로 파이썬의 라이브러리인 판다스를 활용해 이루어지며, 이를 위해 기본적인 파이썬 개념에 대한 이해가 필요합니다. 하지만 이것은 파이썬을 완벽하게 숙달해야 한다는 의미는 아닙니다. 그렇기에 판다스와 데이터 분석에 입문할 수 있도록 핵심 파이썬 개념을 간략하게 제공할 것입니다.

 

 

3.6. 인덱싱과 슬라이싱

자료형 단원이지만, 자료형을 깊이 이해하기 위해 인덱싱과 슬라이싱은 필수적이므로 이 단원에서 다뤄 보겠습니다. 인덱싱과 슬라이싱은 데이터를 선택하고 조작하는 데 매우 유용합니다. 인덱싱은 특정 위치의 단일 원소를 추출할 때 사용되며, 슬라이싱은 범위 내의 여러 원소를 한 번에 추출할 때 사용됩니다. 두 방법 모두 인덱스를 이용해 원하는 원소를 선택합니다.

 

인덱스

 

인덱스(integer location index)는 문자열이나 배열 내에서 각 원소의 위치를 나타내는 고유 번호입니다. 첫 번째 원소에는 0이 부여되며, 이후 순차적으로 정수가 증가합니다. 음수 인덱스도 존재하며, 마지막 원소에는 -1이 부여되고, 그 이전 원소에는 차례로 음의 정수가 할당됩니다.

인덱싱

 

인덱싱은 특정 위치의 단일 원소를 추출하는 기법입니다. 대상에 대괄호를 사용하여 인덱스를 입력하면 해당 위치의 원소가 반환됩니다. 리스트를 예로 들어 설명하겠습니다.

첫 번째 원소는 인덱스 0을 가지며, 이후 순차적으로 1, 2, 3 순서로 인덱스가 할당됩니다. 리스트에서 대괄호 안에 특정 위치의 인덱스를 입력하면 해당 위치의 원소가 반환됩니다. 또한 음수 인덱스를 사용하면 리스트의 끝에서부터 원소를 참조할 수 있어 마지막에 가까운 원소를 선택할 때 편리합니다.

 
슬라이싱

 

슬라이싱은 범위 내의 여러 원소를 한 번에 추출하는 기법입니다. 슬라이싱 구문은 a[start:end:step]의 형식으로 작성되며, step이 생략되어 a[start:end] 형식으로 사용할 수 있습니다. 지정된 범위에서 시작 인덱스는 포함되지만, 마지막 인덱스는 포함되지 않습니다. 예를 들어, a[1:3]은 인덱스 1부터 3 이전까지의 원소를 추출하므로 [5, 4]가 반환됩니다.

 

슬라이싱의 시작 또는 끝 지점을 생략할 수도 있습니다. a[:3]는 리스트의 처음부터 인덱스 3 이전까지 가져오며, a[4:]는 인덱스 4부터 마지막까지 가져옵니다. 리스트 전체를 슬라이싱하고자 할 때는 a[:]를 사용하면 모든 원소를 반환합니다.

 

슬라이싱에서는 양수 인덱스와 음수 인덱스를 혼용할 수도 있습니다. 예를 들어, a[2:-1]과 같이 사용하면 인덱스 2부터 -1 이전까지의 원소를 선택하므로 [4, 7, 8]이 반환됩니다. 인덱스 2부터 -1까지의 슬라이싱 개념이 직관적으로 받아들이기 어려울 수 있지만, 음수 인덱스도 위치만 나타낸다고 생각하면 보다 쉽게 이해할 수 있습니다. 양수와 음수 인덱스를 조합하여 리스트의 특정 부분을 편리하게 선택할 수 있습니다.

 

step을 사용하여 추출할 원소의 간격 조정

 

슬라이싱할 때 step을 지정하면 특정 간격을 두고 요소를 선택할 수 있습니다. 슬라이싱 구문은 a[start:end:step] 형식으로 작성되며, step 값은 선택된 요소 간의 간격을 의미합니다. 예를 들어, a[2:5]는 [4, 7, 8]을 반환하지만, a[2:5:2]는 2칸 간격으로 원소를 선택하므로 [4, 8]만 반환됩니다.

 

step 값에 음수를 입력하면 리스트를 역순으로 반환할 수 있습니다. 예를 들어 step에 -1을 설정하여 a[::-1] 형태로 사용하면 리스트의 마지막 원소부터 처음 요소까지 역순으로 반환됩니다. 이 기법은 문자열을 뒤집을 때도 자주 사용됩니다. 

# 리스트 반전 
a = [2, 5, 4, 7, 8, 1]
print(a[::-1])
[1, 8, 7, 4, 5, 2] # 출력

 

 

판다스에서 인덱싱과 슬라이싱

 

※ 판다스는 기초 파이썬과 직접 관련이 없으므로, 추후 판다스를 학습한 후에 확인하셔도 됩니다.

판다스에서도 인덱싱과 슬라이싱은 중요한 기법이므로 반드시 익혀 두는 것이 좋습니다. step을 활용해 역순으로 변환하는 방법도 종종 사용됩니다. 다만, 판다스에는 인덱스가 별도로 존재하기 때문에, 부여된 순번을 단순히 인덱스(interger location index)라고 지칭하지 않고 '인티저 로케이션 인덱스'라고 하거나 줄여서 '로케이션'이라고 지칭합니다.


 

유튜브에서 판다스 강의 중입니다.

https://www.youtube.com/@KimPandas