IT/Python

[파이썬] indexing / slicing

초코-모찌 2024. 3. 11. 18:00
728x90
파이썬에서 인덱싱과 슬라이싱은 데이터를 효과적으로 조작하고 다루는 데 매우 중요한 기술입니다. 이 기능들을 사용하여 리스트, 튜플, 문자열 등의 시퀀스형 자료 구조를 다룰 수 있습니다.

 

1. 인덱싱(Indexing)

파이썬에서 데이터를 접근하는 기초적인 방법

데이터 프레임에서 특정 행 또는 열에 접근하여 데이터를 선택하는 방법

 

 

인덱싱 특징

  1. 앞에서부터 시작하면 인덱스는 0부터 시작
  2. 뒤에서부터 시작하면 인데스는 -1부터 시작

"Hello World" 라는 문자가 있습니다. 이를 변수 a에 저장 한다면 아래와 같이 번호가 매겨져 있을 것입니다.

 

 

이를 보고 알 수 있는 것은, "파이썬은 0부터 숫자를 센다." 입니다.

  • a[0] = 'H'
  • a[3] = 'l'
  • a[11] = '!'
  • a[-1] = '!'

이렇듯 a[번호]를 통해 문자열 안의 특정한 값을 뽑아낼 수 있습니다.

 

 

데이터 프레임에서의 인덱싱

데이터프레임에서는 .loc[], .iloc[]을 통해 특정 행 또는 열에 접근할 수 있습니다. .loc[]은 인덱스 이름을 기반으로, .iloc[]은 숫자 인덱스를 기반으로 데이터에 접근합니다.

import pandas as pd

# 데이터프레임 생성
data = {'Name': ['John', 'Anna', 'Peter', 'Linda'],
        'Age': [28, 35, 45, 32],
        'City': ['New York', 'Paris', 'London', 'Berlin']}
df = pd.DataFrame(data)

# 첫 번째 행에 접근
print(df.loc[0])

 

 

2. 슬라이싱(Slicing)

슬라이싱이란?

시퀀스 데이터에서 일부분을 잘라내는 것을 의미합니다. 데이터프레임에서는 특정 행이나 열을 선택하여 추출하는 데 사용합니다.

  • 시작 인덱스는 포함
  • 끝 인덱스는 포함 X
my_list = [10, 20, 30, 40, 50]
print(my_list[1:4])   # [20, 30, 40]

print(my_list[:3])    # [10, 20, 30]
print(my_list[2:])    # [30, 40, 50]

new_list = my_list[:]  # 리스트를 복사

 

슬라이싱 스텝

세 번째 인자인 스텝을 사용하여 인덱스의 간격을 지정할 수 있습니다.

print(my_list[::2])   # [10, 30, 50]

 

음수 스텝

리스트를 역순으로 슬라이싱할 수 있습니다.

print(my_list[::-1])  # [50, 40, 30, 20, 10]

 

 

데이터 추출과 조작을 위한 슬라이싱

데이터 분석에서 조건에 따라 데이터를 선택해야 하는 경우가 있습니다. 이를 위해 불리언 인덱싱과 조건을 활용할 수 있습니다.

# Age가 30 이상인 행 선택
print(df[df['Age'] >= 30])

# 'Age' 열에서 30세 이상인 행의 'Name' 열 선택
print(df.loc[df['Age'] >= 30, 'Name'])

 

또한, NumPy를 사용하여 다차원 배열을 다룰 때도 슬라이싱이 유용합니다. 다차원 배열에서는 각 차원별로 슬라이싱이 가능합니다.

import numpy as np

# 2차원 배열 생성
arr = np.array([[1, 2, 3],
                [4, 5, 6],
                [7, 8, 9]])

# 첫 번째 열 선택
print(arr[:, 0])

# 두 번째 행 선택
print(arr[1, :])

 

 

 
728x90
반응형