콘텐츠로 건너뛰기

데이터프레임 정렬 방법과 예시: sort dataframe

[

pandas 정렬: Python에서 데이터 정렬하는 방법

시작하기 전에

이 튜토리얼에서는 .sort_values().sort_index()를 사용하여 데이터프레임을 효율적으로 정렬하는 방법을 배울 것입니다.

이 튜토리얼을 완료한 후에는 다음을 할 수 있습니다:

  • 하나 이상의 열의 값에 따라 pandas 데이터프레임을 정렬하는 방법
  • ascending 매개변수를 사용하여 정렬 순서를 변경하는 방법
  • index를 사용하여 데이터프레임을 **.sort_index()**를 이용해 정렬하는 방법
  • 정렬 중에 누락된 데이터를 다루는 방법
  • inplaceTrue로 설정하여 데이터프레임을 위치에 따라 정렬하는 방법

pandas 정렬 메소드 시작하기

빠른 복습으로, 데이터프레임은 행과 열로 구성된 2차원 데이터 구조입니다. pandas의 정렬 메소드는 데이터프레임의 행 또는 열에 있는 값에 따라 데이터를 정렬하는 데 사용됩니다. 정렬은 특정 열의 값을 오름차순 또는 내림차순으로 정렬하여 데이터의 구조를 변경합니다.

우리는 여기서 하나의 열, 여러 개의 열, 인덱스, , 누락된 데이터, 데이터프레임 수정의 정렬을 배우게 됩니다.

다음 섹션에서는 데이터프레임을 정렬하기 전에 사용할 데이터셋을 준비하는 방법부터 시작합니다.

데이터셋 준비하기

판다스 라이브러리가 설치되어 있지 않은 경우 다음 명령어로 설치할 수 있습니다:

pip install pandas

데이터프레임을 생성하기 전에 pandas를 가져와야 합니다. 아래와 같이 import pandas as pd를 사용하여 pandas를 가져옵니다. 이는 pandas를 사용할 때 pd라는 별명을 사용하게 됩니다:

import pandas as pd

실제 데이터를 생성하기 위해 다음 코드를 사용할 수 있습니다:

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 20, 35, 30],
'Salary': [50000, 60000, 80000, 70000]}
df = pd.DataFrame(data)
print(df)

위의 코드는 두 개의 열(이름, 나이, 급여)과 네 개의 행을 가지는 데이터프레임을 생성합니다. print(df)를 사용하여 데이터프레임을 출력하여 확인할 수 있습니다.

이제 데이터셋을 준비했으니 다음으로는 .sort_values().sort_index() 메소드를 사용하여 데이터를 정렬하는 방법에 대해 알아보겠습니다.

.sort_values()에 익숙해지기

.sort_values() 메소드는 특정 열의 값을 기준으로 데이터프레임을 정렬하는 데 사용됩니다. 예를 들어, 아래의 코드는 Age 열을 기준으로 데이터프레임을 오름차순으로 정렬합니다:

sorted_df = df.sort_values('Age')
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
1 Bob 20 60000
0 Alice 25 50000
3 David 30 70000
2 Charlie 35 80000

데이터프레임이 Age 열을 기준으로 오름차순으로 정렬되었습니다.

정렬 순서를 변경하려면 ascending 매개변수를 사용하면 됩니다. ascending=False로 설정하면 정렬 순서가 내림차순으로 변경됩니다:

sorted_df = df.sort_values('Age', ascending=False)
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
2 Charlie 35 80000
3 David 30 70000
0 Alice 25 50000
1 Bob 20 60000

데이터프레임이 Age 열을 기준으로 내림차순으로 정렬되었습니다.

.sort_values() 메소드는 항상 원본 데이터프레임을 변경하지 않고 새로운 정렬된 데이터프레임을 반환합니다.

.sort_index()에 익숙해지기

.sort_index() 메소드는 데이터프레임을 인덱스를 기준으로 정렬하는 데 사용됩니다. 기본적으로 오름차순으로 정렬되며, ascending 매개변수를 사용하여 정렬 순서를 변경할 수 있습니다.

아래의 코드는 Name 열을 인덱스로 사용하여 데이터프레임을 정렬합니다:

sorted_df = df.sort_index()
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
0 Alice 25 50000
1 Bob 20 60000
2 Charlie 35 80000
3 David 30 70000

데이터프레임이 인덱스를 기준으로 오름차순으로 정렬되었습니다.

정렬 순서를 변경하려면 ascending=False로 설정하면 내림차순으로 정렬됩니다:

sorted_df = df.sort_index(ascending=False)
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
3 David 30 70000
2 Charlie 35 80000
1 Bob 20 60000
0 Alice 25 50000

데이터프레임이 인덱스를 기준으로 내림차순으로 정렬되었습니다.

이제 .sort_values().sort_index() 메소드를 사용하여 데이터프레임을 하나의 열, 여러 개의 열, 인덱스, 열에 따라 정렬하는 방법을 상세히 알아보겠습니다.

하나의 열 기준으로 데이터프레임 정렬하기

오름차순으로 열을 기준으로 정렬하기

.sort_values() 메소드를 사용하여 데이터프레임을 하나의 열을 기준으로 정렬할 수 있습니다. 아래의 코드는 Age 열을 기준으로 데이터프레임을 오름차순으로 정렬합니다:

sorted_df = df.sort_values('Age')
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
1 Bob 20 60000
0 Alice 25 50000
3 David 30 70000
2 Charlie 35 80000

Age 열을 기준으로 데이터프레임이 오름차순으로 정렬되었습니다.

정렬 순서 변경하기

정렬 순서를 변경하려면 ascending 매개변수를 사용하면 됩니다. 아래의 코드는 Age 열을 기준으로 데이터프레임을 내림차순으로 정렬합니다:

sorted_df = df.sort_values('Age', ascending=False)
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
2 Charlie 35 80000
3 David 30 70000
0 Alice 25 50000
1 Bob 20 60000

Age 열을 기준으로 데이터프레임이 내림차순으로 정렬되었습니다.

정렬 알고리즘 선택하기

.sort_values()는 기본적으로 quicksort 알고리즘을 사용하여 데이터프레임을 정렬합니다. 하지만 몇몇 경우에는 다른 알고리즘을 사용하여 정렬하는 것이 더 효율적입니다. sort_values() 메소드의 kind 매개변수를 사용하여 정렬 알고리즘을 선택할 수 있습니다.

다음 예시는 데이터프레임을 mergesort 알고리즘을 사용하여 정렬하는 방법을 보여줍니다:

sorted_df = df.sort_values('Age', kind='mergesort')
print(sorted_df)

동일한 결과가 나오지만, mergesort 알고리즘이 quicksort보다 더 효율적인 경우가 있을 수 있습니다.

하나의 열을 기준으로 데이터프레임을 정렬하는 방법에 대해 알아보았습니다. 이제 다음으로 넘어가 여러 개의 열을 기준으로 데이터프레임을 정렬하는 방법에 대해 알아보겠습니다.

여러 개의 열 기준으로 데이터프레임 정렬하기

흔히 데이터프레임을 정렬할 때 하나의 열만 사용하는 것보다는 여러 개의 열을 사용하는 경우가 많습니다. 이 섹션에서는 여러 개의 열을 기준으로 데이터프레임을 정렬하는 방법을 다루겠습니다.

여러 개의 열을 오름차순으로 정렬하기

.sort_values() 메소드를 사용하여 여러 개의 열을 오름차순으로 정렬하는 방법은 간단합니다. 아래의 코드는 Salary 열을 기준으로 데이터프레임을 오름차순으로 정렬하고, 동일한 값이 있는 경우 Age 열을 기준으로 정렬합니다:

sorted_df = df.sort_values(['Salary', 'Age'])
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
0 Alice 25 50000
1 Bob 20 60000
3 David 30 70000
2 Charlie 35 80000

Salary를 기준으로 오름차순으로 정렬되고, 동일한 값이 있는 경우 Age를 기준으로 정렬됩니다.

정렬 열 순서 변경하기

여러 개의 열을 기준으로 데이터프레임을 정렬할 때, 정렬 열의 순서를 변경할 수 있습니다. 아래의 코드는 Age를 기준으로 오름차순으로 정렬하고, 동일한 값이 있는 경우 Salary를 기준으로 정렬합니다:

sorted_df = df.sort_values(['Age', 'Salary'])
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
1 Bob 20 60000
0 Alice 25 50000
3 David 30 70000
2 Charlie 35 80000

Age를 기준으로 오름차순으로 정렬되고, 동일한 값이 있는 경우 Salary를 기준으로 정렬됩니다.

여러 개의 열을 내림차순으로 정렬하기

여러 개의 열을 내림차순으로 정렬하는 것도 가능합니다. 아래의 코드는 Salary를 기준으로 내림차순으로 정렬하고, 동일한 값이 있는 경우 Age를 기준으로 내림차순으로 정렬합니다:

sorted_df = df.sort_values(['Salary', 'Age'], ascending=[False, False])
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
2 Charlie 35 80000
3 David 30 70000
0 Alice 25 50000
1 Bob 20 60000

Salary를 기준으로 내림차순으로 정렬되고, 동일한 값이 있는 경우 Age를 기준으로 내림차순으로 정렬됩니다.

여러 개의 열에 대해 다른 정렬 순서로 정렬하기

때로는 여러 개의 열에 대해 다른 정렬 순서로 정렬해야 할 수도 있습니다. 아래의 코드는 Salary를 기준으로 오름차순으로 정렬하고, 동일한 값이 있는 경우 Age를 기준으로 내림차순으로 정렬합니다:

sorted_df = df.sort_values(['Salary', 'Age'], ascending=[True, False])
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
0 Alice 25 50000
1 Bob 20 60000
3 David 30 70000
2 Charlie 35 80000

Salary를 기준으로 오름차순으로 정렬되고, 동일한 값이 있는 경우 Age를 기준으로 내림차순으로 정렬됩니다.

여러 개의 열을 기준으로 데이터프레임을 정렬하는 방법에 대해 알아보았습니다. 이제 다음으로 넘어가 데이터프레임을 인덱스를 기준으로 정렬하는 방법에 대해 알아보겠습니다.

데이터프레임의 인덱스를 기준으로 정렬하기

.sort_index() 메소드를 사용하여 데이터프레임을 인덱스를 기준으로 정렬할 수 있습니다.

인덱스를 오름차순으로 정렬하기

.sort_index() 메소드를 사용하여 데이터프레임을 인덱스를 기준으로 정렬하는 방법은 간단합니다. 기본적으로 오름차순으로 정렬됩니다:

sorted_df = df.sort_index()
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
0 Alice 25 50000
1 Bob 20 60000
2 Charlie 35 80000
3 David 30 70000

데이터프레임이 인덱스를 기준으로 오름차순으로 정렬되었습니다.

인덱스를 내림차순으로 정렬하기

.sort_index() 메소드를 사용하여 데이터프레임을 인덱스를 기준으로 내림차순으로 정렬하는 방법도 가능합니다:

sorted_df = df.sort_index(ascending=False)
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
3 David 30 70000
2 Charlie 35 80000
1 Bob 20 60000
0 Alice 25 50000

데이터프레임이 인덱스를 기준으로 내림차순으로 정렬되었습니다.

여기서는 인덱스를 기준으로 데이터프레임을 정렬하는 방법에 대해 알아보았습니다. 이제 다음으로 넘어가 데이터프레임의 열을 정렬하는 방법에 대해 알아보겠습니다.

데이터프레임의 열을 정렬하기

데이터프레임의 열을 정렬하는 방법은 다소 다릅니다. 열을 정렬할 때는 .sort_values() 대신 .sort_index() 메소드를 사용해야 합니다.

데이터프레임 axis로 작업하기

데이터프레임의 열을 정렬하려면 axis 매개변수를 사용하여 작업해야 합니다. axis=0은 행을 따라 작업하고, axis=1은 열을 따라 작업합니다. 열을 정렬하기 위해서는 axis=1를 사용합니다.

아래의 코드는 데이터프레임의 열을 오름차순으로 정렬합니다:

sorted_df = df.sort_index(axis=1)
print(sorted_df)

아래는 출력 예시입니다:

Age Name Salary
0 25 Alice 50000
1 20 Bob 60000
2 35 David 80000
3 30 Harald 70000

데이터프레임의 열이 알파벳 순서로 오름차순으로 정렬되었습니다.

열 레이블을 사용하여 정렬하기

열을 정렬할 때 정렬 순서를 변경하려면 .sort_index() 메소드와 동일한 방식을 사용합니다. 아래의 코드는 열을 내림차순으로 정렬합니다:

sorted_df = df.sort_index(axis=1, ascending=False)
print(sorted_df)

아래는 출력 예시입니다:

Salary Name Age
0 50000 Alice 25
1 60000 Bob 20
2 80000 Harald 35
3 70000 David 30

열이 내림차순으로 정렬되었습니다.

데이터프레임의 열을 정렬하는 방법에 대해 알아보았습니다. 이제 다음으로 넘어가 데이터프레임에서 누락된 데이터를 다룰 때의 정렬 방법에 대해 알아보겠습니다.

pandas에서 누락된 데이터 정렬하기

정렬 시에 누락된 데이터를 다루는 방법은 중요한 요소입니다. pandas는 누락된 데이터를 처리할 때 유연성을 제공합니다.

.sort_values()에서 na_position 매개변수 이해하기

.sort_values() 메소드는 누락된 데이터를 어떻게 처리할지를 지정하는 na_position 매개변수를 사용합니다. 기본적으로 na_position='last'로 설정되어 있습니다. 이는 누락된 데이터를 가장 나중에 정렬된 데이터로 처리합니다.

아래의 코드는 Salary 열을 기준으로 데이터프레임을 정렬하고, 누락된 데이터를 마지막에 처리합니다:

sorted_df = df.sort_values('Salary', na_position='last')
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
0 Alice 25 50000
1 Bob 20 60000
3 David 30 70000
2 NaN 35 80000

누락된 데이터인 NaN은 가장 나중에 정렬된 데이터로 처리되었습니다.

.sort_values() 메소드의 na_position 매개변수를 first로 설정하면 누락된 데이터를 가장 처음에 처리할 수 있습니다. 아래의 코드는 Salary 열을 기준으로 데이터프레임을 정렬하고, 누락된 데이터를 처음에 처리합니다:

sorted_df = df.sort_values('Salary', na_position='first')
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
2 NaN 35 80000
0 Alice 25 50000
1 Bob 20 60000
3 David 30 70000

누락된 데이터인 NaN은 가장 처음에 정렬된 데이터로 처리되었습니다.

.sort_index()에서 na_position 매개변수 이해하기

.sort_index() 메소드는 na_position 매개변수를 사용하여 누락된 인덱스를 어떻게 처리할지 지정할 수 있습니다. 기본적으로 na_position='last'로 설정되어 있습니다.

아래의 코드는 데이터프레임을 인덱스를 기준으로 정렬하고, 누락된 인덱스를 마지막에 처리합니다:

sorted_df = df.sort_index(na_position='last')
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
0 Alice 25 50000
1 Bob 20 60000
2 NaN 35 80000
3 David 30 70000

누락된 인덱스인 2는 가장 나중에 정렬된 인덱스로 처리되었습니다.

.sort_index() 메소드의 na_position 매개변수를 first로 설정하면 누락된 인덱스를 가장 처음에 처리할 수 있습니다. 아래의 코드는 데이터프레임을 인덱스를 기준으로 정렬하고, 누락된 인덱스를 처음에 처리합니다:

sorted_df = df.sort_index(na_position='first')
print(sorted_df)

아래는 출력 예시입니다:

Name Age Salary
2 NaN 35 80000
0 Alice 25 50000
1 Bob 20 60000
3 David 30 70000

누락된 인덱스인 2는 가장 처음에 정렬된 인덱스로 처리되었습니다.

누락된 데이터를 다루는 방법에 대해 알아보았습니다. 이제 다음으로 넘어가 정렬 메소드를 사용하여 데이터프레임을 수정하는 방법을 알아보겠습니다.

정렬 메소드를 사용하여 데이터프레임 수정하기

.sort_values().sort_index() 메소드는 기본적으로 새로운 정렬된 데이터프레임을 반환합니다. 하지만 .sort_values()inplace=True 매개변수와 .sort_index()inplace=True 매개변수를 사용하여 데이터프레임을 변경할 수 있습니다.

.sort_values()를 사용하여 데이터프레임 수정하기

.sort_values() 메소드의 inplace=True 매개변수를 사용하여 데이터프레임을 변경할 수 있습니다. 아래의 코드는 Age 열을 기준으로 데이터프레임을 오름차순으로 정렬하고, 데이터프레임 자체를 변경합니다:

df.sort_values('Age', inplace=True)
print(df)

아래는 출력 예시입니다:

Name Age Salary
1 Bob 20 60000
0 Alice 25 50000
3 David 30 70000
2 Charlie 35 80000

.sort_values() 메소드를 호출하면 데이터프레임이 자체적으로 변경됩니다. df는 이제 정렬된 데이터프레임을 가리키도록 업데이트되었습니다.

.sort_index()를 사용하여 데이터프레임 수정하기

.sort_index() 메소드의 inplace=True 매개변수를 사용하여 데이터프레임을 변경할 수 있습니다. 아래의 코드는 데이터프레임을 인덱스를 기준으로 오름차순으로 정렬하고, 데이터프레임 자체를 변경합니다:

df.sort_index(inplace=True)
print(df)

아래는 출력 예시입니다:

Name Age Salary
0 Alice 25 50000
1 Bob 20 60000
2 Charlie 35 80000
3 David 30 70000

.sort_index() 메소드를 호출하면 데이터프레임이 자체적으로 변경됩니다. df는 이제 정렬된 데이터프레임을 가리키도록 업데이트되었습니다.

정렬 메소드를 사용하여 데이터프레임을 수정하는 방법에 대해 알아보았습니다. 여기까지 데이터프레임을 정렬하는 방법을 상세히 알아보았습니다. 이제 마무리하겠습니다.

결론

이 튜토리얼에서는 pandas 정렬 메소드에 대해 배우고, 데이터프레임을 정렬하는 다양한 방법을 알아보았습니다. 이제 당신은 데이터프레임을 하나 이상의 열, 여러 개의 열, 인덱스, 열에 따라 정렬하는 방법을 알고 있습니다. 또한 누락된 데이터를 다루는 방법과 정렬 메소드를 사용하여 데이터프레임을 수정하는 방법에 대해서도 알아보았습니다.

이 튜토리얼의 내용을 바탕으로 pandas를 사용하여 데이터를 정렬하는 데 도움이 되었기를 바랍니다. 감사합니다!

주의사항