슬라이싱은 목록, 문자열 또는 pandas DataFrame과 같은 시퀀스에서 데이터의 특정 부분 또는 하위 집합을 추출하는 방법입니다. 이를 통해 시퀀스 내의 위치에 따라 다양한 요소에 액세스 할 수 있습니다. 다음은 다양한 슬라이싱의 예입니다.
리스트를 사용했지만, ndarray도 동일하게 슬라이싱이 가능합니다.
1. 기본 슬라이싱
슬라이싱은 '[start:end]' 표기법을 사용하여 수행됩니다. 여기서 'start'는 포함할 첫 번째 요소의 인덱스이고 'end'는 제외할 첫 번째 요소의 인덱스입니다. 그 결과 start는 포함되지만, end는 포함되지 않습니다.
예시를 보겠습니다.
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sliced_list = my_list[2:6]
index는 0부터 시작하므로 이 예에서 my_list[2:6]은 인덱스 2에서 인덱스 6까지(포함하지 않음) 요소를 포함하는 리스트를 반환합니다. 결과 sliced_list는 [3, 4, 5, 6]이 됩니다.
2. 문자열 슬라이싱
my_string = "Hello, World!"
sliced_string = my_string[7:12]
문자열에 대해서도 슬라이싱이 가능합니다. 이 예에서 my_string[7:12]은 인덱스 7에서 인덱스 12까지(포함하지 않음) 문자를 추출합니다. 결과 sliced_string은 "World"가 됩니다.
3. DataFrame 슬라이싱(pandas)
import pandas as pd
data = {'Name': ['John', 'Jane', 'Alice', 'Bob'],
'Age': [25, 30, 28, 35],
'City': ['New York', 'London', 'Paris', 'Tokyo']}
df = pd.DataFrame(data)
sliced_df = df[1:3]
여기서 df[1:3]은 인덱스 1과 2(0 기반 인덱싱의 행 2와 3)가 있는 행을 포함하는 새 DataFrame을 반환합니다. 결과 sliced_df는 다음과 같습니다.
Name Age City
1 Jane 30 London
2 Alice 28 Paris
4. step을 이용하기
순차적으로 인덱싱하지 않고, 일부를 건너뛰도록 단계 값을 지정할 수도 있습니다. [start:end:step] 형식으로 step을 지정하면, step번째 요소만 선택합니다.
아래 예시를 보겠습니다.
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sliced_list = my_list[1:8:2]
이 예에서 my_list[1:8:2]는 단계 값 2로 인덱스 1에서 인덱스 8까지(포함하지 않음) 요소를 추출합니다. 즉, 지정된 범위 내에서 두 번째 요소를 선택한다는 의미입니다. 결과 sliced_list는 [2, 4, 6, 8]이 됩니다.
5. 음수 인덱스 사용하기
다음은 슬라이싱에서 빼기(-) 기호를 사용하는 방법을 보여주는 예입니다.
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sliced_list = my_list[-5:-2]
이 예에서 my_list[-5:-2]는 끝에서 5번째 요소에서 끝에서 2번째 요소까지(포함하지 않음) 요소를 추출합니다. 결과 sliced_list는 [6, 7, 8]이 됩니다.
음수 인덱스는 리스트의 끝에서 거꾸로 계산됩니다. 따라서 '-1'은 마지막 요소를 나타내고 '-2'는 마지막에서 두 번째 요소를 나타내는 식입니다. 슬라이싱에서 음수 인덱스를 사용하면 처음이 아닌 끝에서 리스트의 일부를 쉽게 추출할 수 있습니다.
이 기능은 리스트의 끝을 기준으로 요소에 액세스해야 하거나 리스트의 정확한 길이를 모를 때 유용합니다. 끝에서 인덱스를 명시적으로 계산하지 않고 하위 집합을 추출하는 편리한 방법을 제공합니다.
음수 인덱스로 목록 분할:단계 값은 슬라이스에 포함할 요소 사이의 증분을 지정합니다. 이 경우 인덱스 1, 3, 5 및 7의 요소를 선택합니다(다른 모든 요소 건너뛰기).
슬라이싱은 데이터의 하위 집합을 추출하고 조작하는 유연한 방법을 제공하여 시퀀스의 특정 부분 또는 데이터 집합의 하위 집합으로 작업할 수 있도록 합니다.
6. 역순으로 인덱싱 하기
슬라이싱을 사용하여 목록의 순서를 역순으로 가져올 수 있습니다. 이 때는 step에 음수를 사용합니다.
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
reverse_sorted_list = my_list[::-1]
이 예에서 my_list[::-1]은 -1의 단계 값으로 전체 리스트를 슬라이스 합니다. 마지막 요소부터 시작하여 각 단계마다 역방향으로 진행한다는 의미입니다. 결과 reverse_sorted_list는 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]이 됩니다.
음수 단계 값을 사용하면 사용된 시작 및 종료 인덱스에 관계없이 항상 순서가 반대로 됩니다.
슬라이싱은 데이터를 다루는 데 있어 가장 기본이 되므로 반드시 숙지가 필요합니다.
데이터프레임을 다룰 때는 iloc, loc를 사용하는데, 이때도 슬라이싱이 중요하게 사용합니다.
iloc, loc는 아래 글을 참고하세요
2023.06.06 - [데이터분석과 AI/빅데이터 분석기사] - [빅데이터분석기사 실기][작업형1] iloc와 loc를 이용한 데이터프레임 접근
※ 위 내용은 "빅데이터 분석기사 실기 준비를 위한 캐글 놀이터"를 따라가며 공부한 내용입니다.
https://www.kaggle.com/datasets/agileteam/bigdatacertificationkr
'데이터분석과 AI > 빅데이터 분석기사' 카테고리의 다른 글
[빅데이터분석기사 실기][작업형3]카이제곱 검정(적합도 검정, 독립성 검정)+피셔의 정확검정 (0) | 2023.06.22 |
---|---|
[빅데이터분석기사 실기][작업형1] 모듈, 함수 이름과 사용법이 생각나지 않을 때, dir, help, __all__ (0) | 2023.06.18 |
[빅데이터분석기사 실기][작업형1] imputer로 결측치 처리하기 (0) | 2023.06.16 |
[빅데이터분석기사 실기][작업형1] pd.melt(), pd.pivot_table()로 데이터 프레임 변형하기 (0) | 2023.06.16 |
[빅데이터분석기사 실기][작업형1] Shift로 데이터 이동하기 (0) | 2023.06.09 |
댓글