소개
Pandas 정렬 데이터 실습에 오신 것을 환영합니다! 정렬은 데이터 분석의 기본적인 작업입니다. 데이터를 정리하여 읽고, 이해하고, 분석하기 쉽게 만들어 줍니다. 최고값 또는 최저값을 찾거나 단순히 데이터를 논리적인 순서로 배열해야 할 때, Pandas 는 작업을 완료할 수 있는 강력하고 유연한 도구를 제공합니다.
이 실습에서는 Pandas 의 주요 정렬 방법을 배우게 됩니다.
sort_values(): 하나 이상의 열 값을 기준으로 DataFrame 을 정렬합니다.sort_index(): 인덱스를 기준으로 DataFrame 을 정렬합니다.reset_index(): 정렬 작업 후 인덱스를 재설정합니다.
이 실습이 끝나면 분석 요구에 맞게 데이터를 배열하는 데 능숙해질 것입니다. 시작해 봅시다!
sort_values 를 사용하여 단일 열로 DataFrame 정렬
이 단계에서는 가장 일반적인 정렬 작업, 즉 단일 열의 값을 기준으로 DataFrame 을 정렬하는 방법을 배웁니다. 이를 위해 sort_values() 메서드를 사용합니다. by 매개변수는 정렬하려는 열을 지정하는 데 사용됩니다.
먼저 왼쪽에 있는 파일 탐색기를 사용하여 ~/project 디렉토리에 있는 main.py 파일을 엽니다. 이 파일에는 샘플 DataFrame 이 미리 채워져 있습니다.
이제 Age 열을 기준으로 DataFrame 을 정렬하기 위해 다음 코드를 main.py 끝에 추가합니다.
## --- Step 1: Sort by a single column ---
df_sorted_by_age = df.sort_values(by='Age')
print("\nDataFrame sorted by Age:")
print(df_sorted_by_age)
이제 전체 main.py 파일은 다음과 같이 보일 것입니다.
import pandas as pd
## Create a sample DataFrame for our exercises
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [25, 22, 25, 28, 22],
'Score': [85, 91, 88, 79, 91]
}
df = pd.DataFrame(data)
print("Original DataFrame:")
print(df)
## --- Step 1: Sort by a single column ---
df_sorted_by_age = df.sort_values(by='Age')
print("\nDataFrame sorted by Age:")
print(df_sorted_by_age)
결과를 보려면 터미널에서 스크립트를 실행합니다.
python3 main.py
원본 DataFrame 과 그 뒤에 나이순으로 오름차순 정렬된 새 DataFrame 이 표시됩니다.
예상 출력:
Original DataFrame:
Name Age Score
0 Alice 25 85
1 Bob 22 91
2 Charlie 25 88
3 David 28 79
4 Eve 22 91
DataFrame sorted by Age:
Name Age Score
1 Bob 22 91
4 Eve 22 91
0 Alice 25 85
2 Charlie 25 88
3 David 28 79
여러 열을 오름차순으로 정렬
이 단계에서는 여러 열을 기준으로 DataFrame 을 정렬하는 방법을 배웁니다. 이는 첫 번째 정렬 열에 동점 (tie) 이 있을 때 두 번째 정렬 기준을 적용하려는 경우에 유용합니다.
여러 열을 기준으로 정렬하려면 sort_values() 메서드의 by 매개변수에 열 이름 목록을 전달합니다. Pandas 는 목록의 첫 번째 열을 기준으로 정렬하고, 그 다음 두 번째 열을 사용하여 동점을 해결하는 식으로 작동합니다.
DataFrame 을 먼저 Age를 기준으로, 그 다음 Score를 기준으로 정렬해 보겠습니다. 다음 코드를 main.py 파일 끝에 추가합니다.
## --- Step 2: Sort by multiple columns ---
df_sorted_multiple = df.sort_values(by=['Age', 'Score'])
print("\nDataFrame sorted by Age and then Score:")
print(df_sorted_multiple)
이제 스크립트를 다시 실행하여 변경 사항을 확인합니다.
python3 main.py
출력에 새로운 섹션이 표시됩니다. Age가 22 인 두 행이 이제 Score를 기준으로 정렬된 것을 확인합니다 (점수가 91 인 Eve 뒤에 점수가 91 인 Bob 이 오는 것은 안정적인 순서이기 때문입니다). Age가 25 인 행에도 동일하게 적용됩니다.
예상 출력 (새로운 부분만 표시):
...
DataFrame sorted by Age and then Score:
Name Age Score
1 Bob 22 91
4 Eve 22 91
0 Alice 25 85
2 Charlie 25 88
3 David 28 79
ascending=False 를 사용하여 내림차순으로 정렬
이 단계에서는 정렬 방향을 제어하는 방법을 배웁니다. 기본적으로 sort_values()는 오름차순으로 정렬합니다. ascending 매개변수를 사용하여 이를 변경할 수 있습니다.
- 내림차순으로 정렬하려면
ascending=False로 설정합니다. - 여러 열을 기준으로 정렬할 때, 불리언 (boolean) 목록을 전달하여 각 열에 대해 다른 순서를 지정할 수 있습니다. 예:
ascending=[True, False].
DataFrame 을 Age를 기준으로 오름차순으로, Score를 기준으로 내림차순으로 정렬해 보겠습니다. 이를 통해 각 연령 그룹 내에서 가장 높은 점수를 받은 사람을 찾을 수 있습니다. 다음 코드를 main.py 파일 끝에 추가합니다.
## --- Step 3: Sort in descending and mixed order ---
df_sorted_mixed = df.sort_values(by=['Age', 'Score'], ascending=[True, False])
print("\nDataFrame sorted by Age (asc) and Score (desc):")
print(df_sorted_mixed)
스크립트를 실행하여 결과를 관찰합니다.
python3 main.py
출력에서 나이 22 세에 해당하는 행을 살펴봅니다. Eve 와 Bob 모두 점수가 91 점이므로 순서가 변경되지 않을 수 있습니다. 나이 25 세의 경우, 점수를 내림차순으로 정렬했기 때문에 Charlie (Score 88) 가 Alice (Score 85) 보다 먼저 나타납니다.
예상 출력 (새로운 부분만 표시):
...
DataFrame sorted by Age (asc) and Score (desc):
Name Age Score
1 Bob 22 91
4 Eve 22 91
2 Charlie 25 88
0 Alice 25 85
3 David 28 79
sort_index 를 사용하여 인덱스 정렬
이 단계에서는 DataFrame 을 인덱스별로 정렬하는 방법을 배웁니다. sort_values() 작업을 수행한 후에는 DataFrame 의 인덱스가 뒤섞입니다. 이전 출력에서 이를 확인할 수 있습니다 (예: 인덱스는 1, 4, 2, 0, 3입니다).
sort_index() 메서드를 사용하면 인덱스 레이블을 기준으로 DataFrame 을 정렬할 수 있으며, 인덱스가 단순한 범위였다면 원래 순서를 복원합니다.
이전 단계의 결과 (df_sorted_mixed) 를 가져와 인덱스별로 정렬해 보겠습니다. 다음 코드를 main.py 파일 끝에 추가합니다.
## --- Step 4: Sort by index ---
## The previous result (df_sorted_mixed) has a jumbled index. Let's sort it by index.
df_reordered_by_index = df_sorted_mixed.sort_index()
print("\nDataFrame re-sorted by index:")
print(df_reordered_by_index)
스크립트를 실행합니다.
python3 main.py
DataFrame 이 이제 인덱스 (0, 1, 2, 3, 4) 별로 정렬되어 원래 행 순서가 효과적으로 복원되었음을 확인할 수 있습니다.
예상 출력 (새로운 부분만 표시):
...
DataFrame re-sorted by index:
Name Age Score
0 Alice 25 85
1 Bob 22 91
2 Charlie 25 88
3 David 28 79
4 Eve 22 91
reset_index 를 사용하여 정렬 후 인덱스 재설정
이 마지막 단계에서는 DataFrame 의 인덱스를 재설정하는 방법을 배웁니다. 정렬 후에는 인덱스가 더 이상 0 부터 시작하는 깔끔한 순차 범위가 아닙니다. sort_index()를 사용하여 원래 순서를 복원할 수 있지만, 때로는 새로운 정렬 순서를 유지하면서 새롭고 순차적인 인덱스를 갖기를 원할 수 있습니다.
reset_index() 메서드가 이 목적에 완벽합니다. 현재 인덱스를 기본 정수 인덱스 (0, 1, 2, ...) 로 바꿉니다. drop=True 매개변수를 사용하여 이전 인덱스를 완전히 삭제하는 것이 일반적입니다. drop=True를 사용하지 않으면 이전 인덱스가 index라는 새 열로 추가됩니다.
정렬된 DataFrame 중 하나 (df_sorted_mixed) 를 가져와 인덱스를 재설정해 보겠습니다. 마지막 코드를 main.py에 추가합니다.
## --- Step 5: Reset index after sorting ---
## Let's take a sorted DataFrame and give it a new, clean index
df_with_reset_index = df_sorted_mixed.reset_index(drop=True)
print("\nSorted DataFrame with reset index:")
print(df_with_reset_index)
스크립트를 마지막으로 실행합니다.
python3 main.py
최종 출력을 관찰합니다. DataFrame 은 여전히 Age(오름차순) 및 Score(내림차순) 로 정렬되어 있지만, 인덱스는 이제 0 부터 4 까지의 깔끔한 순차열입니다.
예상 출력 (새로운 부분만 표시):
...
Sorted DataFrame with reset index:
Name Age Score
0 Bob 22 91
1 Eve 22 91
2 Charlie 25 88
3 Alice 25 85
4 David 28 79
요약
Pandas 정렬 데이터 랩을 완료하신 것을 축하드립니다! Pandas DataFrame 내에서 데이터를 구성하고 정렬하는 필수 기술을 익히셨습니다.
이 랩에서는 다음을 연습했습니다.
sort_values(by='column_name')을 사용하여 단일 열로 정렬하기.by매개변수에 리스트를 전달하여 여러 열로 정렬하기.ascending매개변수를 사용하여 정렬 방향 제어하기.sort_index()를 사용하여 인덱스를 정렬하여 원래 순서 복원하기.reset_index(drop=True)를 사용하여 정렬된 DataFrame 에 새롭고 깔끔한 인덱스 생성하기.
이러한 정렬 기법은 데이터 정리, 탐색 및 고급 분석 및 시각화를 위한 준비에 필수적입니다. 이러한 기술을 계속 연습하여 데이터 과학 여정에서 더욱 효율적이 되십시오.



