Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python pandas로 여러 열을 기준으로 CSV 파일 정렬하는 방법

여러 열을 기준으로 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)으로 배치된 것을 확인할 수 있습니다. 이처럼 첫 번째 열의 값이 중복될 때 두 번째 열이 정렬 순서를 결정하는 것이 여러 열 기준 정렬의 핵심입니다.