๊ด€๋ฆฌ ๋ฉ”๋‰ด

ruriruriya

[Python] ํŒŒ์ด์ฌ ํŒ๋‹ค์Šค(Pandas) - ๋ฐ์ดํ„ฐ ์ •๋ ฌ sort_value(), sort_index()๋ฉ”์†Œ๋“œ ๋ณธ๋ฌธ

๐Ÿ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])

๋ฐ˜์‘ํ˜•