문제 개요
판다스(Pandas) 시리즈에 저장된 문자열 요소들을 내림차순으로 정렬하는 프로그램을 작성해 보겠습니다.
입력 – 다음과 같은 시리즈가 있다고 가정합니다.
0 abdef
1 ijkl
2 Abdef
3 oUijl
출력 – 모든 요소를 내림차순으로 정렬한 결과는 다음과 같습니다.
3 oUijl
1 ijkl
0 abdef
2 Abdef
해결 방법
이 문제는 다음 두 단계만 거치면 간단히 해결할 수 있습니다.
- 리스트 데이터를 사용해 시리즈를 생성합니다.
- sort_values() 메서드에 ascending=False 옵션을 지정하여 내림차순으로 정렬합니다.
data.sort_values(ascending=False)
sort_values()는 기본적으로 오름차순(ascending=True)으로 동작하기 때문에, 내림차순 정렬을 원한다면 반드시 ascending=False를 명시해야 합니다.
전체 코드 예제
import pandas as pd
l = ["abdef", "ijkl", "Abdef", "oUijl"]
data = pd.Series(l)
print("원본 시리즈:\n", data)
print(data.sort_values(ascending=False))
실행 결과
3 oUijl
1 ijkl
0 abdef
2 Abdef
정렬 결과가 이렇게 나오는 이유
문자열 정렬은 아스키(ASCII) 코드 값을 기준으로 수행됩니다. 대문자 'A'의 코드 값(65)은 소문자 'a'의 코드 값(97)보다 작기 때문에, 내림차순 정렬에서는 대문자로 시작하는 문자열이 가장 마지막에 위치하게 됩니다. 그래서 'Abdef'가 결과의 맨 아래에 배치된 것입니다.
마무리
이처럼 판다스 시리즈의 정렬은 sort_values() 메서드 하나로 손쉽게 처리할 수 있습니다. ascending 매개변수의 True/False 값만 바꾸면 오름차순과 내림차순을 자유롭게 전환할 수 있으므로, 데이터 분석 시 숫자형·문자형 데이터를 모두 유연하게 정렬할 수 있습니다.