여러 열을 기준으로 CSV 정렬하기
pandas에서는 sort_values() 메서드를 사용하여 CSV 데이터를 여러 열을 기준으로 정렬할 수 있습니다. 여러 열을 기준으로 정렬한다는 것은, 첫 번째 열에 중복된 값이 있을 경우 그 순서가 두 번째 열의 값에 따라 결정된다는 의미입니다.
예를 들어 'Reg_Price'(등록 가격) 열을 기준으로 정렬하면 가격이 같은 행이 여러 개 나올 수 있는데, 이때 두 번째 기준인 'Car'(차종) 열의 알파벳 순서대로 다시 정렬됩니다.
1단계: CSV 파일 불러오기
먼저 입력 CSV 파일인 'SalesRecords.csv'를 읽어옵니다.
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesRecords.csv")2단계: 여러 열을 기준으로 정렬하기
이제 'Reg_Price'와 'Car' 두 개의 열을 기준으로 오름차순 정렬합니다.
dataFrame.sort_values(["Reg_Price","Car"], axis=0, ascending=True, inplace=True, na_position='first')
주요 매개변수 설명
- 첫 번째 인자(리스트): 정렬 기준이 될 열 이름들을 우선순위 순서대로 리스트에 담아 전달합니다.
- axis=0: 행(row) 방향으로 정렬함을 의미합니다.
- ascending=True: 오름차순으로 정렬합니다. 내림차순이 필요하면 False로 지정하거나, 열마다 다르게 [True, False] 형태로 설정할 수도 있습니다.
- inplace=True: 새 DataFrame을 반환하지 않고 원본 DataFrame을 직접 수정합니다.
- na_position='first': 결측값(NaN)을 정렬 결과의 맨 앞에 배치합니다. 맨 뒤에 배치하려면 'last'로 지정합니다.
전체 예제 코드
다음은 위 과정을 모두 포함한 완성된 코드입니다.
import pandas as pd
# 입력 CSV 파일을 읽어 DataFrame 생성
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesRecords.csv")
print("\n입력 CSV 파일 = \n", dataFrame)
# 여러 열을 기준으로 정렬
dataFrame.sort_values(["Reg_Price","Car"], axis=0, ascending=True, inplace=True, na_position='first')
print("\n정렬된 CSV 파일 (여러 열 기준) = \n", dataFrame)실행 결과
위 코드를 실행하면 아래와 같은 출력을 얻을 수 있습니다.
입력 CSV 파일 =
Car Date_of_Purchase Reg_Price
0 BMW 10/10/2020 1000
1 Lexus 10/12/2020 750
2 Audi 10/17/2020 750
3 Jaguar 10/16/2020 1500
4 Mustang 10/19/2020 1100
5 Lamborghini 10/22/2020 1000
정렬된 CSV 파일 (여러 열 기준) =
Car Date_of_Purchase Reg_Price
2 Audi 10/17/2020 750
1 Lexus 10/12/2020 750
0 BMW 10/10/2020 1000
5 Lamborghini 10/22/2020 1000
4 Mustang 10/19/2020 1100
3 Jaguar 10/16/2020 1500결과 분석
출력 결과를 보면 'Reg_Price'가 750으로 동일한 Audi와 Lexus는 두 번째 기준인 'Car' 열의 알파벳 순서(Audi → Lexus)대로 정렬되었습니다. 마찬가지로 가격이 1000으로 같은 BMW와 Lamborghini도 차종 이름 순(BMW → Lamborghini)으로 배치된 것을 확인할 수 있습니다. 이처럼 첫 번째 열의 값이 중복될 때 두 번째 열이 정렬 순서를 결정하는 것이 여러 열 기준 정렬의 핵심입니다.