본문 바로가기
데이터분석과 AI/빅데이터 분석기사

[빅데이터분석기사 실기][작업형1] 슬라이싱

by 우공80 2023. 6. 17.
728x90
슬라이싱

슬라이싱은 목록, 문자열 또는 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를 이용한 데이터프레임 접근

[빅데이터분석기사 실기][작업형1] iloc와 loc를 이용한 데이터프레임 접근

1. loc와 iloc의 차이 - 행 loc는 index에 직접 접근하며, iloc는 index의 순서를 따릅니다. import pandas as pd # 데이터 생성 data = { 'Car': ['Corolla', 'Civic', 'Accord', 'Sonata', 'Optima'], 'Manufacturer': ['Toyota', 'Honda', 'Hon

woogong80.tistory.com

 


 
※ 위 내용은 "빅데이터 분석기사 실기 준비를 위한 캐글 놀이터"를 따라가며 공부한 내용입니다.
https://www.kaggle.com/datasets/agileteam/bigdatacertificationkr

Big Data Certification KR

빅데이터 분석기사 실기 (Python, R tutorial code)

www.kaggle.com

 

728x90

댓글