logo

[pandas-basic] 정렬

판다스에서 정렬을 하는 방법을 알아보겠습니다.

import pandas as pd

df = pd.read_excel('census.xlsx')
 

오름차순 정렬

1, 2, 3, 4, ...와 같이 점점 커지는 순서대로 정렬하는 것을 오름차순 정렬이라고 합니다. 아래는 age 열을 기준으로 오름차순 정렬을 합니다.

df.sort_values('age')
ageworkclassfnlwgteducationeducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_countryincome
1231817Private12736611th7Never-marriedSalesOwn-childWhiteFemale008United-States<=50K
631217Private13275511th7Never-marriedSalesOwn-childWhiteMale0015United-States<=50K
3092717Private10847011th7Never-marriedOther-serviceOwn-childBlackMale0017United-States<=50K
................................................
510490Private52386Some-college10Never-marriedOther-serviceNot-in-familyAsian-Pac-IslanderMale0035United-States<=50K
896390?77053HS-grad9Widowed?Not-in-familyWhiteFemale0435640United-States<=50K
1021090Self-emp-not-inc282095Some-college10Married-civ-spouseFarming-fishingHusbandWhiteMale0040United-States<=50K

32561 rows × 15 columns

여러 개의 열을 기준으로 정렬을 할 수도 있습니다. 아래는 먼저 age열, 다음으로 fnlwgt 열을 기준으로 정렬을 하는 예입니다.

df.sort_values(['age', 'fnlwgt'])
ageworkclassfnlwgteducationeducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_countryincome
1859317Private1975211th7Never-marriedOther-serviceOwn-childBlackFemale0025United-States<=50K
3195917Private24090HS-grad9Never-marriedExec-managerialOwn-childWhiteFemale0035United-States<=50K
2120017Private2505110th6Never-marriedOther-serviceOwn-childWhiteMale0016United-States<=50K
................................................
407090Private31398611th7Never-marriedHandlers-cleanersOwn-childWhiteMale0040United-States<=50K
662490Private31398611th7Married-civ-spouseCraft-repairHusbandWhiteMale0040United-States<=50K
3169690?313986HS-grad9Married-civ-spouse?HusbandWhiteMale0040United-States>50K

32561 rows × 15 columns

 

내림차순 정렬

9, 8, 7, ...와 같이 점점 작아지는 순서대로 정렬하는 것을 내림차순 정렬이라고 합니다. 내림차순 정렬을 하려면 ascending=False를 추가해줍니다.

df.sort_values('age', ascending=False)
ageworkclassfnlwgteducationeducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_countryincome
540690Private51744Masters14Never-marriedExec-managerialNot-in-familyBlackMale0050United-States>50K
662490Private31398611th7Married-civ-spouseCraft-repairHusbandWhiteMale0040United-States<=50K
2061090Private206667Masters14Married-civ-spouseProf-specialtyWifeWhiteFemale0040United-States>50K
................................................
1919017Private2957112th8Never-marriedHandlers-cleanersOwn-childWhiteMale0015United-States<=50K
1920617Private18306610th6Never-marriedOther-serviceOwn-childWhiteFemale0025United-States<=50K
2495417Private16096811th7Never-marriedAdm-clericalOwn-childWhiteMale0016United-States<=50K

32561 rows × 15 columns

 

오름차순과 내림차순을 섞기

여러 개의 열을 기준으로 정렬을 할 때, 각각 오름차순과 내림차순을 정할 수 있습니다. ascending에 정렬의 기준이 되는 열의 순서대로 True라고 해주면 오름차순, False라고 해주면 내림차순 정렬이 됩니다. 아래 예는 age는 오름차순, fnlwgt는 내림차순으로 정렬하는 예입니다.

df.sort_values(
    ['age', 'fnlwgt'],
    ascending=[
        True,  # age는 오름차순 정렬
        False  # fnlwgt는 내림차순 정렬
    ])
ageworkclassfnlwgteducationeducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_countryincome
2337317?80631611th7Never-married?Own-childWhiteFemale0020United-States<=50K
2716717Private72171210th6Never-marriedOther-serviceOwn-childWhiteMale0015United-States<=50K
766317?65927311th7Never-married?Own-childBlackFemale0040Trinadad&Tobago<=50K
................................................
897390Private46786Bachelors13Married-civ-spouseSalesHusbandWhiteMale9386015United-States>50K
1199690Private40388Bachelors13Never-marriedExec-managerialNot-in-familyWhiteMale0055United-States<=50K
1173190?39824HS-grad9Widowed?Not-in-familyWhiteMale40104United-States<=50K

32561 rows × 15 columns

Previous
참/거짓으로 선택