이번 포스팅에서는 데이터를 특정 변수에 대해 정렬하는 방법과 여러 명령을 동시에 처리할 수 있는 메소드 체이닝에 대해 알아보겠습니다.
실습 준비
colab 실행
# gpa(grade point average) 평점 데이터 불러오기
gpa = pd.read_csv('/content/drive/MyDrive/Data/gpa.csv')
# student_id로 인덱스 만들기
gpa = gpa.set_index('student_id')
# 5줄만 출력하기
gpa.head()
정렬(Sorting)
정렬은 데이터프레임이나 시리즈의 데이터를 특정 기준에 따라 순서를 재배치하는 작업을 의미합니다. 정렬은 주로 데이터를 더 직관적으로 분석하거나 원하는 순서대로 표시할 때 사용됩니다.
정렬 방법
df.sort_values('변수 값')
오름차순
숫자나 문자, 날짜 등의 값을 작은 것부터 큰 순서대로 정렬하는 것을 의미합니다. 즉, 값이 점점 커지는 순서로 나열하는 것입니다.
# student_id를 기준으로 데이터 오름차순 정렬
gpa.sort_values('student_id')
# credit과 GPA를 기준으로 오름차순 정렬
gpa.sort_values(['credit', 'GPA'])
오름차순은 sort_values에 파라미터로 정렬할 기준인 변수 값을 넘겨주면 됩니다. 두 가지 이상의 변수 값을 기준으로 정렬시 리스트의 형태로 데이터를 넘겨주면 됩니다.
내림차순
숫자나 문자, 날짜 등의 값을 큰 것부터 작은 순서대로 정렬하는 것을 의미합니다. 즉, 값이 점점 작아지는 순서로 나열되는 방식입니다.
# student_id를 기준으로 데이터 내림차순 정렬
gpa.sort_values('student_id', ascending = False)
# credit과 GPA를 기준으로 내림차순 정렬
gpa.sort_values(['credit', 'GPA'], ascending = False)
이런식으로 뒤에 ascending 파라미터에 False를 넘겨주면 됩니다. 반대로 오름차순은 True를 넘겨주면 되겠죠?
메소드 체이닝(Method Chaining)
메소드 체이닝(Method Chaining)이란 하나의 객체에서 여러 메소드를 연속해서 호출할 수 있는 프로그래밍 기법을 말합니다. 메소드 체이닝을 사용하면 코드가 간결해지고, 한 줄에 여러 작업을 수행할 수 있어 가독성이 높아집니다. 메소드 체이닝의 기본 개념은 각 메소드가 호출된 후에 그 메소드가 작업을 수행하고, 그 결과로 원래 객체 자체나 다른 객체를 반환하여 다시 메소드를 호출할 수 있게 하는 것입니다.
이전 포스트에서 다루었던 이상치 제거와 연계하여 코드를 작성하겠습니다.
# credit 이상치 제거
# 1사분위수 구하기
Q1 = gpa['credit'].quantile(0.25)
# 3사분위수 구하기
Q3 = gpa['credit'].quantile(0.75)
# IQR 구하기
IQR = Q3 - Q1
# 하한선 구하기
lower_line = Q1 - 1.5 * IQR
# 상한선 구하기
upper_line = Q3 + 1.5 * IQR
# 정상 범위 조건
condition1 = (gpa['credit'] >= lower_line) & (gpa['credit'] <= upper_line)
# GPA 이상치 제거
# 1사분위수 구하기
Q1 = gpa['GPA'].quantile(0.25)
# 3사분위수 구하기
Q3 = gpa['GPA'].quantile(0.75)
# IQR 구하기
IQR = Q3 - Q1
# 하한선 구하기
lower_line = Q1 - 1.5 * IQR
# 상한선 구하기
upper_line = Q3 + 1.5 * IQR
# 정상 범위 조건
condition2 = (gpa['GPA'] >= lower_line) & (gpa['GPA'] <= upper_line)
먼저 이상치가 제거된 정상범위 데이터를 조건 형태로 저장합니다.
# 여러 명령어 동시에 수행하기
gpa[condition1 & condition2].sort_values(['credit', 'GPA'], ascending=False).head(10)
이런식으로 수행할 명령어 앞에 점(.)을 붙여 이상치 제거, 내림차순 정렬, 위에서 부터 10개 출력하기 명령어를 동시에 수행할 수 있습니다.
가독성을 높이는 법
# 명령어 단위로 나눠 가독성 높이기
gpa[condition1 & condition2] \\
.sort_values(['credit', 'GPA'], ascending=False) \\
.head(10)
명령어 단위로 역슬레시(\)를 붙이고 엔터키를 눌러 메소드 체이닝을 하는 방법도 있습니다. 지금은 명령어가 적어서 오히려 복잡해 보일 수 있지만, 명령어의 갯수가 늘어나면 명령어 단위로 코드를 확인할 수 있어 코드의 가독성을 높힐 수 있습니다. 주의할점은 역슬레시 뒤에 띄어쓰기 등 어떠한 작업 없시 엔터로 줄바꿈이 되어야 합니다.
메소드 체이닝을 통해 각 단계를 별도로 나누지 않고, 연속적으로 수행할 수 있어 코드가 더 직관적이고 읽기 쉬워집니다.
이번 포스팅에서는 sort_values()를 통해 데이터를 오름차순, 내림차순 정렬하는 방법과 코드를 간결하고 직관적이게 해주는 메소드 체이닝 기법에 대해 알아보았습니다. 모두 데이터 분석을 할 때 유용하게 사용할 수 있으므로 기억해두시면 좋을 것 같습니다.
'파이썬을 활용한 데이터 분석 입문' 카테고리의 다른 글
[Python]데이터 전처리 - 중복값 처리 (0) | 2024.08.16 |
---|---|
[Python]데이터 전처리 - 파생변수 만들기 (0) | 2024.08.14 |
[Python]데이터 전처리 - 데이터 정제(3) 이상치 처리 (0) | 2024.08.11 |
[Python]데이터 전처리 - 데이터 정제(2) 이상치 확인하기 (0) | 2024.08.10 |
[Python]데이터 전처리 - 데이터 정제(1) 결측치 처리 (0) | 2024.08.09 |