🐍Python/Pandas

[Python] 파이썬 νŒλ‹€μŠ€(Pandas) - 데이터 μ •λ ¬ sort_value(), sort_index()λ©”μ†Œλ“œ

루리야ㅑ 2023. 11. 17. 18:11
λ°˜μ‘ν˜•

사진: Unsplash 의 Jiachen Lin

νŒλ‹€μŠ€μ—μ„œ λ°μ΄ν„°ν”„λ ˆμž„μ„ μ •λ ¬ν•˜λŠ” λ°μ—λŠ” sort_values()와 sort_index()λΌλŠ” 두 κ°€μ§€ λ©”μ†Œλ“œκ°€ μžˆλ‹€. 각각의 λ©”μ†Œλ“œλŠ” λ‹€μ–‘ν•œ μ •λ ¬ μ˜΅μ…˜μ„ μ œκ³΅ν•΄ 데이터λ₯Ό μ›ν•˜λŠ” λŒ€λ‘œ μ •λ ¬ν•  수 μžˆλ‹€.

μ•„λž˜μ˜ λ°μ΄ν„°λ‘œ 두 κ°€μ§€ λ©”μ†Œλ“œλ₯Ό ν™•μΈν•΄λ³΄μž.

>> df = pd.DataFrame({'Employee ID':[111, 222, 333, 444],
                   'Employee Name':['Chanel', 'Steve', 'Mitch', 'Bird'],
                   'Salary [$/h]':[35, 29, 38, 20],
                   'Years of Experience':[3, 4 ,9, 1]})
>> df

 

sort_values() μ‚¬μš©ν•˜κΈ°

이 λ©”μ†Œλ“œλŠ” λ°μ΄ν„°ν”„λ ˆμž„μ„ νŠΉμ • μ—΄(column)의 값을 κΈ°μ€€μœΌλ‘œ μ •λ ¬ν•  λ•Œ μ‚¬μš©λœλ‹€. 주둜 by λ§€κ°œλ³€μˆ˜λ₯Ό ν™œμš©ν•΄ μ •λ ¬ 기쀀이 λ˜λŠ” 열을 선택할 수 μžˆλ‹€.

  • by: μ •λ ¬ν•  기쀀이 λ˜λŠ” μ—΄(column)의 이름을 λ‚˜νƒ€λ‚΄λŠ” λ§€κ°œλ³€μˆ˜μ•„λ‹€. 리슀트둜 μ—¬λŸ¬ 열을 μ§€μ •ν•  μˆ˜λ„ μžˆλ‹€.
  • ascending: μ •λ ¬ 방식을 κ²°μ •ν•˜λŠ”λ°, 기본값은 True둜 μ˜€λ¦„μ°¨μˆœμ΄κ³ , False둜 μ„€μ •ν•˜λ©΄ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬λœλ‹€.
  • ignore_index: 기본값은 False둜, True둜 μ„€μ •ν•˜λ©΄ μƒˆλ‘œμš΄ 인덱슀λ₯Ό 생성해쀀닀.

μœ„ λ°μ΄ν„°μ—μ„œ κ²½λ ₯을 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.

>> df['Years of Experience'].sort_values() # 컬럼만 μ •λ ¬
3    1
0    3
1    4
2    9
Name: Years of Experience, dtype: int64

그리고 ν–‰ 전체λ₯Ό νŠΉμ • 컬럼 κΈ°μ€€μœΌλ‘œ μ •λ ¬ν•œλ‹€.

>> df.sort_values('Years of Experience')

 

κ²½λ ₯을 λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.

>> df.sort_values('Years of Experience', ascending= False)

 

length μ»¬λŸΌμ„ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.

>> df.sort_values('length', ascending= False)

 

μ •λ ¬ 쑰건이 μ—¬λŸ¬ 개일 λ•ŒλŠ” sort_values ν•¨μˆ˜μ— 리슀트둜 μ—¬λŸ¬ μ»¬λŸΌμ„ λ„£μ–΄ μ •λ ¬ν•  수 μžˆλ‹€.

lengthλ₯Ό λ‚΄λ¦ΌνŒŒμˆœμœΌλ‘œ μ •λ ¬ν•˜λ˜, μˆ«μžκ°€ κ°™μœΌλ©΄, 이름을 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.

>> df.sort_values(['length','Employee Name'],ascending=[False,True])

 

sort_index() μ‚¬μš©ν•˜κΈ°

이 λ©”μ†Œλ“œλŠ” 인덱슀λ₯Ό κΈ°μ€€μœΌλ‘œ λ°μ΄ν„°ν”„λ ˆμž„μ„ μ •λ ¬ν•  λ•Œ μ‚¬μš©λœλ‹€.. 주둜 λ°μ΄ν„°ν”„λ ˆμž„μ˜ μΈλ±μŠ€μ— 따라 μ •λ ¬ν•  λ•Œ μœ μš©ν•˜λ‹€. λͺ‡ κ°€μ§€ μ€‘μš”ν•œ λ§€κ°œλ³€μˆ˜λŠ” μ•„λž˜μ™€ κ°™λ‹€.

  • axis: 기본값은 0으둜 ν–‰(row)을 κΈ°μ€€μœΌλ‘œ μ •λ ¬ν•˜λŠ” 것이고, 1둜 μ„€μ •ν•˜λ©΄ μ—΄(column)을 κΈ°μ€€μœΌλ‘œ μ •λ ¬ν•΄.
  • ascending: μ •λ ¬ 방식을 κ²°μ •ν•˜λŠ”λ°, 기본값은 True둜 μ˜€λ¦„μ°¨μˆœμ΄κ³ , False둜 μ„€μ •ν•˜λ©΄ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ 정렬돼.

λ¨Όμ € μœ„μ˜ μΈλ±μŠ€κ°€ μ •λ ¬λ˜μ§€ μ•Šμ€ sort_values ν•¨μˆ˜λ₯Ό μ μš©ν•œ 데이터 ν”„λ ˆμž„μ„ λ³€μˆ˜μ— λ„£λŠ”λ‹€.
그리고 μƒˆλ‘œμš΄ λ³€μˆ˜μ— sort_index()μ μš©ν•œλ‹€. μ΄λ•Œ ascending 속성에 False  값을 μ£Όμ–΄ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.

>> df2=df.sort_values(['length','Employee Name'],ascending=[False,True])
>> df2.sort_index(ascending=[False])

λ°˜μ‘ν˜•