[Python] 05. Pandas 데이터프레임 데이터 인덱싱, 슬라이싱

판다스(Pandas) 데이터프레임의 데이터 인덱싱과 슬라이싱은 데이터프레임의 특정 부분에 접근하고 조작하는 방법을 제공합니다.
데이터프레임은 2차원 구조이기 때문에 행과 열의 인덱스를 사용하여 원하는 데이터에 접근할 수 있습니다.
이를 통해 데이터프레임의 일부를 선택하거나 조작할 수 있습니다.
아래에는 판다스 데이터프레임에서 데이터를 인덱싱하고 슬라이싱하는 주요 방법을 상세히 설명합니다.

열 인덱싱

단일 열 선택

df['열 이름'] 형식으로 해당 열을 선택합니다.
예를 들어, ‘name’ 열을 선택하는 방법은 다음과 같습니다.

name_column = df['name']

다중 열 선택

여러 개의 열을 선택하려면 열 이름을 리스트로 지정합니다.
예를 들어, ‘name’과 ‘age’ 열을 선택하는 방법은 다음과 같습니다.

columns = ['name', 'age']
selected_columns = df[columns]

행 인덱싱

단일 행 선택

df.loc[인덱스] 또는 df.iloc[인덱스] 형식으로 해당 행을 선택합니다.
loc는 라벨 기반 인덱싱을 사용하고, iloc은 위치 기반 인덱싱을 사용합니다.
예를 들어, 인덱스 0에 해당하는 행을 선택하는 방법은 다음과 같습니다.

row = df.loc[0]

다중 행 선택

여러 개의 행을 선택하려면 인덱스를 리스트로 지정합니다.
예를 들어, 인덱스 0과 2에 해당하는 행을 선택하는 방법은 다음과 같습니다.

rows = [0, 2]
selected_rows = df.loc[rows]

행과 열 동시 인덱싱

df.loc[행 인덱스, 열 인덱스] 형식으로 행과 열을 동시에 선택합니다.
예를 들어, 인덱스 0과 1에 해당하는 행의 ‘name’ 열을 선택하는 방법은 다음과 같습니다.

selected_data = df.loc[[0, 1], 'name']

슬라이싱

행 슬라이싱

df[start:end] 형식으로 행을 슬라이싱합니다.
start는 시작 인덱스(포함), end는 끝 인덱스(제외)입니다.
예를 들어, 인덱스 0부터 2까지의 행을 선택하는 방법은 다음과 같습니다.

sliced_rows = df[0:3]  # 인덱스 0, 1, 2에 해당하는 행 선택

열 슬라이싱

df.loc[:, '시작 열':'끝 열'] 형식으로 열을 슬라이싱합니다.
예를 들어, ‘name’부터 ‘age’ 열까지의 열을 선택하는 방법은 다음과 같습니다.

sliced_columns = df.loc[:, 'name':'age']

특정 행과 열의 부분 데이터프레임 선택

df.loc[행 슬라이싱, 열 슬라이싱] 형식으로 특정 행과 열의 부분 데이터프레임을 선택할 수 있습니다.

조건에 따른 인덱싱

단일 조건에 따른 인덱싱

import pandas as pd

data = {'Name': ['John', 'Emma', 'Peter', 'Alice', 'Bob'],
        'Age': [25, 28, 30, 22, 32],
        'Gender': ['Male', 'Female', 'Male', 'Female', 'Male']}
df = pd.DataFrame(data)

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

출력 결과

   Name  Age  Gender
2  Peter   30    Male
4    Bob   32    Male

다중 조건에 따른 인덱싱

# 'Age'가 25 이상이고 'Gender'가 'Female'인 행 선택
selected_rows = df[(df['Age'] >= 25) & (df['Gender'] == 'Female')]
print(selected_rows)

출력 결과

   Name  Age  Gender
1  Emma   28  Female

특정 조건에 따른 열 선택

# 'Age'가 30 이상인 경우에만 'Name'과 'Gender' 열 선택
selected_columns = df.loc[df['Age'] >= 30, ['Name', 'Gender']]
print(selected_columns)

출력 결과

   Name Gender
2  Peter   Male
4    Bob   Male

조건에 따른 값을 변경

# 'Age'가 30 이상인 경우 'Age' 값을 40으로 변경
df.loc[df['Age'] >= 30, 'Age'] = 40
print(df)

출력 결과

   Name  Age  Gender
0   John   25    Male
1   Emma   28  Female
2  Peter   40    Male
3  Alice   22  Female
4    Bob   40    Male

조건에 따른 인덱싱을 사용하면 데이터프레임에서 원하는 조건을 충족하는 행 또는 열을 선택하거나 변경할 수 있습니다.
이를 통해 데이터프레임의 특정 부분에 대한 조작이 가능해집니다.
조건은 비교 연산자(>, <, >=, <=, ==, !=)를 사용하여 지정할 수 있으며, 여러 조건을 결합할 때에는 논리 연산자(&, |)를 사용합니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤