Pandas DataFrame DataFrame.sort_values() 함수

Suraj Joshi 2023년1월30일
  1. pandas.DataFrame.sort_values()의 구문 :
  2. 예제 코드: 단일 열을 기준으로 Pandas pandas.DataFrame.sort_values()로 DataFrame 정렬
  3. 예제 코드: 여러 열을 기준으로 Pandas DataFrame.sort_values()를 사용하여 DataFrame 정렬
  4. 예제 코드: Pandas DataFrame.sort_values()를 사용하여 내림차순으로 DataFrame 정렬
  5. 예제 코드: Pandas DataFrame.sort_values()와 함께NaN을 먼저 넣어 DataFrame 정렬
Pandas DataFrame DataFrame.sort_values() 함수

Pandas DataFrame.sort_values() 메서드는 호출자DataFrame을 오름차순 또는 인덱스를 따라 지정된 열의 값을 기준으로 내림차순.

pandas.DataFrame.sort_values()의 구문 :

DataFrame.sort_values(
    by,
    axis=0,
    ascending=True,
    inplace=False,
    kind="quicksort",
    na_position="last",
    ignore_index=False,
)

매개 변수

by 정렬 할 이름 또는 이름 목록
axis 행(axis=0) 또는 열(axis=1)을 따라 정렬
ascending 오름차순(ascending = True) 또는 내림차순(ascending = False)으로 정렬
inplace 부울. True이면 호출자DataFrame을 제자리에서 수정합니다.
kind 사용할 정렬 알고리즘입니다. 기본값:quicksort
na_position 시작 (na_position = first) 또는 끝 (na_position = last)에NaN 값을 입력하십시오.
ignore_index 부울. True인 경우 원본 DataFrame의 색인이 무시됩니다. 기본값은 색인이 사용됨을 의미하는 False입니다.
버전 1.0.0의 새로운 기능

반환

inplaceTrue이면 정렬 된DataFrame을 반환합니다. 그렇지 않으면 None.

예제 코드: 단일 열을 기준으로 Pandas pandas.DataFrame.sort_values()로 DataFrame 정렬

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Price'])
print("After Sorting:")
print(sorted_df)

출력:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
       Date  Sales  Price
1  April-11    300      1
2  April-12    400      2
5  April-16    300      2
0  April-10    200      3
4  April-14    300      3
3  April-13    200      4

DataFrame dfPrice열의 값에 따라 오름차순 (기본값)으로 정렬합니다.

정렬 된DataFrame의 색인은 원래DataFrame과 동일하게 유지됩니다.

정렬 된DataFrame에 새 인덱스 열을 포함하려면ignore_index (버전 1.0.0에서 도입)를True로 설정할 수 있습니다.

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]

df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
print("Before Sorting:")
print(df)
sorted_df = df.sort_values(by=["Price"], ignore_index=True)
print("After Sorting:")

출력:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-11    300      1
1  April-12    400      2
2  April-16    300      2
3  April-10    200      3
4  April-14    300      3
5  April-13    200      4

여기서는ignore_index = True를 사용하여 새 인덱스를 행에 할당하고 원본DataFrame의 인덱스를 무시합니다.

예제 코드: 여러 열을 기준으로 Pandas DataFrame.sort_values()를 사용하여 DataFrame 정렬

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
df.sort_values(by=['Sales','Price'],
               ignore_index=True,
               inplace=True)
print("After Sorting:")
print(df)

출력:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-13    200      4
2  April-11    300      1
3  April-16    300      2
4  April-14    300      3
5  April-12    400      2

여기서는 먼저 Sales가 오름차순으로 정렬 된 다음 각 Sales에 대한 Price도 오름차순으로 정렬됩니다.

df에서200Sales 열의 가장 작은 값이고3Sales200에 대한Price 열의 가장 작은 값입니다.

따라서 Sales열에 200이 있고 Price3이있는 행이 맨 위로 이동합니다.

inplace = True로 인해sort_values()함수를 호출 한 후 원래DataFrame이 수정됩니다.

예제 코드: Pandas DataFrame.sort_values()를 사용하여 내림차순으로 DataFrame 정렬

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Sales'],
                         ignore_index=True,
                         ascending=False)
print("After Sorting:")
print(sorted_df)

출력:


Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-12    400      2
1  April-11    300      1
2  April-14    300      3
3  April-16    300      2
4  April-10    200      3
5  April-13    200      4

DataFrame dfSales열 값의 내림차순으로 정렬합니다.

400Sales열에서 가장 큰 값입니다. 따라서 항목은 맨 위로 이동하고 다른 행은 그에 따라 정렬됩니다.

예제 코드: Pandas DataFrame.sort_values()와 함께NaN을 먼저 넣어 DataFrame 정렬

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Price'],ignore_index=True,na_position='first')
print("After Sorting:")
print(sorted_df)

출력:

Before Sorting:
       Date  Sales  Price
0  April-10    200    NaN
1  April-11    300    1.0
2  April-12    400    2.0
3  April-13    200    4.0
4  April-14    300    3.0
5  April-16    300    NaN
After Sorting:
       Date  Sales  Price
0  April-10    200    NaN
1  April-16    300    NaN
2  April-11    300    1.0
3  April-12    400    2.0
4  April-14    300    3.0
5  April-13    200    4.0

기본적으로 NaN값은 정렬 후 DataFrame끝에 배치됩니다.

그러나na_position = first를 설정하면DataFrame의 시작 부분에NaN 값을 배치 할 수 있습니다.

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

관련 문장 - Pandas DataFrame