이번 포스팅에서는 데이터 전처리, 데이터 인덱싱의 개념, 인덱싱 명령어 중 하나인 iloc과 loc에 대해 소개하겠습니다.
데이터 전처리(Data Preprocessing)
데이터 전처리는 데이터 분석 및 모델링을 위해 원시 데이터를 정제하고 변환하는 일련의 과정을 말합니다. 데이터 분석 프로젝트에서 반드시 거쳐야 하는 과정으로 데이터의 품질을 높이고 분석 및 모델링의 성능을 향상시키기 위해 필요합니다. 이 과정은 데이터 분석 결과와 인사이트 도출 등에 직접적인 영향을 미치기 때문에 시간이 꽤 걸리고 지루하다고 생각될지라도 중요합니다.
데이터 인덱싱(Indexing)
데이터 전처리의 과정 중 하나로, 데이터의 행을 고유하게 식별하거나 효율적인 데이터 참조를 위해 인덱스를 설정합니다. 즉 광범위한 데이터 속에서 중요한 정보를 찾아내기 위해 데이터를 자유자제로 가공하는 과정 중 하나로, 필요한 부분을 선택하는 것 입니다.
실습 준비
midterm.csv 다운로드
# 구글 드라이브 마운트
from google.colab import drive
drive.mount('/content/drive')
# 판다스 라이브러리
import pandas as pd
midterm = pd.read_csv('midterm.csv') # 파일 경로
midterm
인덱스를 특정한 변수로 바꾸기
set_index
사용방법
데이터프레임.set_index(’컬럼 변수명’)
midterm.set_index('name')
다음과 같이 입력하여 인덱스를 조금 더 의미 있는 변수로 바꿀 수 있습니다.
midterm
하지만 midterm을 다시 출력하면 원본 데이터가 나오는데요, set_index는 원본 데이터를 수정하지 않았기 때문입니다.
그래서 다음과 같이 원본 데이터에 수정된 데이터를 할당 연산자(=)를 통해 할당합니다.
midterm = midterm.set_index('name')
midterm
다시 출력하면 의도한대로 원본 데이터프레임이 수정되었습니다.
원본 데이터로 초기화하기
reset_index
midterm = midterm.reset_index()
midterm
마찬가지로 기존 데이터(set_index로 바뀐)에 초기화된 데이터를 원본데이터에 할당해야 합니다.
단, 이 작업은 한 번만 실행되어야 합니다.
다시 실행하면 다음과 같이 index가 컬럼에 추가되는 현상이 발생합니다.
iloc
iloc은 integer-location based indexing(정수 위치 기반 인덱싱)를 의미합니다. 말 그대로 정수로 데이터프레임에서 특정 데이터를 선택할 때 사용하는 명령어입니다. iloc은 행과 열의 인덱스를 사용하여 특정 위치에 있는 데이터를 선택할 수 있습니다. 인덱스는 0부터 시작하며, python에서 인덱스 슬라이싱을 하는 것과 유사합니다.
참고사항
콜론( : ) 앞에 숫자가 오지 않는 경우 0부터 인덱싱이 되며, 콜론 뒤에 숫자가 오지 않는 경우 콜론 이전 숫자부터 끝까지 인덱싱이 됩니다. 즉, 콜론만 존재하는 경우 처음(0)부터 끝까지를 의미하는 것입니다.
사용 방법
df.iloc[행 인덱스, 열 인덱스]
1. 단일 행 또는 열 선택
# 첫 번째 행 선택
midterm.iloc[0]
# 첫 번째 열 선택
midterm.iloc[:, 0]
2. 범위로 행 또는 열 선택
# 첫 번째부터 세 번째 행 선택
midterm.iloc[0:3]
# 첫 번째부터 세 번째 열 선택
midterm.iloc[:, 0:3]
3. 특정 행과 열 선택
# 첫 번째 행의 첫 번째 열 선택 = 1x1 영역 값 출력
midterm.iloc[0, 0]
# 첫 번째부터 두 번째 행의 첫 번째부터 두 번째 열 선택 = 3x3 영역 데이터프레임 출력
midterm.iloc[:2, :2]
4. 특정 규칙으로 선택
# 짝수 행 선택하기
midterm.iloc[::2]
loc
loc은 label-based indexing(라벨 기반 인덱싱)을 의미합니다. 즉, 행과 열의 라벨을 사용하여 데이터프레임 내 특정 데이터를 선택할 때 사용하는 명령어입니다. 이는 이름으로 데이터를 선택할 수 있으므로, 코드를 더 직관적이고 가독성 있게 작성할 수 있습니다.
참고사항
여기서 라벨(label)은 행 변수(0 1 2 3…) 열 변수(kor, math, english…)가 위치한 영역을 의미합니다.
사용 방법
df.loc[행 라벨, 열 라벨]
1. 단일 행 또는 열 선택
# '제훈'이라는 이름의 행 선택
midterm.loc['제훈']
# 'english'변수가 해당하는 열 선택
midterm.loc[:, 'english']
# 또는
midterm['english']
2. 범위로 행 또는 열 선택
# '철수'부터 '민지'까지 행 선택
midterm.loc['철수':'민지']
# 'math'부터 'science'까지 열 선택
midterm.loc[:, 'math':'science']
3. 특정 행과 열 선택
# '철수'의 'math'점수 확인하기
midterm.loc['철수', 'math']
# '철수'부터 '민지'까지의 행에서 'math'부터 'science'까지의 열 선택
midterm.loc['철수':'민지', 'math':'science']
이번 포스팅에서는 데이터 전처리와 데이터 인덱싱의 의미, 그리고 iloc과 loc 2가지 명령어를 소개하였는데요, 다음 포스팅에서는 특정 조건을 만족하는 영역을 선택하는 방법을 알아보겠습니다.
'파이썬을 활용한 데이터 분석 입문' 카테고리의 다른 글
[Python]데이터 전처리 - 데이터 정제(1) 결측치 처리 (0) | 2024.08.09 |
---|---|
[Python]데이터 전처리 - 데이터 인덱싱(2) 불린 인덱싱과 query (0) | 2024.08.08 |
데이터프레임을 이용한 데이터 조작 및 분석(3) - copy, 파생변수 만들기 (0) | 2024.08.06 |
데이터프레임을 이용한 데이터 조작 및 분석(2) - 5가지 명령어와 데이터를 수정하는 방법 (0) | 2024.08.05 |
데이터프레임을 이용한 데이터 조작 및 분석(1) - 시리즈(Series)와 데이터프레임(DataFrame)의 차이점, 외부 데이터를 불러오는 방법 (0) | 2024.08.04 |