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

ruriruriya

[Python] ํŒŒ์ด์ฌ ํŒ๋‹ค์Šค(Pandas) - ํ•จ์ˆ˜ ๋งŒ๋“ค์–ด ์ ์šฉํ•˜๋Š” apply()๋ฉ”์†Œ๋“œ ๋ณธ๋ฌธ

๐ŸPython/Pandas

[Python] ํŒŒ์ด์ฌ ํŒ๋‹ค์Šค(Pandas) - ํ•จ์ˆ˜ ๋งŒ๋“ค์–ด ์ ์šฉํ•˜๋Š” apply()๋ฉ”์†Œ๋“œ

๋ฃจ๋ฆฌ์•ผใ…‘ 2023. 11. 17. 17:49
๋ฐ˜์‘ํ˜•

์‚ฌ์ง„: Unsplash ์˜ Stone Wang

apply()๋Š” ํŒ๋‹ค์Šค์—์„œ Series๋‚˜ DataFrame์— ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ํ•จ์ˆ˜๋ฅผ ๊ฐ ํ–‰์ด๋‚˜ ์—ด์— ์ ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„๋ž˜ ๋ฐ์ดํ„ฐ๋กœ apply() ๋ฉ”์†Œ๋“œ๋ฅผ ์ ์šฉํ•ด๋ณด์ž.

>> df

 

์ฒซ๋ฒˆ ์งธ, ํ•จ์ˆ˜๋งŒ๋“ค๊ธฐ

#### ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ์ˆœ์„œ ๊ผญ ๊ธฐ์–ตํ•˜์ž! ์ด๋ ‡๊ฒŒ ๊ธฐ์–ตํ•˜๋ฉด ํ•จ์ˆ˜ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข€๋” ์‰ฌ์›Œ์ง„๋‹ค.
1. ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๋ถ€๋ถ„์„ ๋จผ์ € ์ž‘์„ฑํ•œ๋‹ค.

2. ํ˜ธ์ถœ๋ถ€๋ถ„์„ ์ฐธ๊ณ ํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค.

# ์‹œ๊ธ‰์ด 30 ์ด์ƒ์ด๋ฉด, 'A' ๊ทธ๋ฃน์ด๋ผ ํ•˜๊ณ ,์‹œ๊ธ‰์ด 30๋ณด๋‹ค ์ž‘์œผ๋ฉด, 'B' ๊ทธ๋ฃน์ด๋ผ๊ณ  ํ•˜๊ฒ ๋‹ค.์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ group์„ ๋งŒ๋“ค์–ด์„œ ์ €์žฅํ•˜์‹œ์˜ค.

๋จผ์ € ํ˜ธ์ถœํ•  ํ•จ์ˆ˜๋ช…๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์จ์„œ ์ถœ๋ ฅ ๋‚ด์šฉ์„ ์˜ˆ์ธกํ•ด๋ณธ๋‹ค.

grouping(35)

# 'A' ์ถœ๋ ฅ
grouping(29)

# 'B' ์ถœ๋ ฅ

๊ทธ ๋‹ค์Œ if๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์‹œ๊ธ‰์ด 30๋ณด๋‹ค ์ด์ƒ์ด๋ฉด 'A' ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” 'B'๋กœ ๋ฆฌํ„ดํ•œ๋‹ค๊ณ  ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค.

>> def grouping(salary):
   if salary >= 30 :
     return 'A'
   else :
     return 'B'
 

๊ทธ ๋‹ค์Œ ์•„๊นŒ ์˜ˆ์ธกํ•ด๋’€๋˜ ํ•จ์ˆ˜์— ๋งค๊ฐœ๊ฐ’์„ ๋‹ค์‹œ ๋„ฃ์–ด๋ณด๊ณ  Run ํ•ด๋ณธ๋‹ค.

>> grouping(35)
A
>> grouping(29)
B

๊ทธ๋Ÿผ ๊ฐ’์ด ์ž˜ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋‘๋ฒˆ ์งธ, ํ•จ์ˆ˜ ์ ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต

apply ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด๊ฐ€ ๋งŒ๋“  ํ•จ์ˆ˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ ๊ฐ€๊ณตํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
 
>> df['Salary [$/h]'].apply(grouping)
0    A
1    B
2    A
3    B
Name: Salary [$/h], dtype: object

 

๊ทธ๋ฆฌ๊ณ  ๊ฐ€๊ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ํ•ด๋‹น ์นผ๋Ÿผ์œผ๋กœ ๋Œ€์ž…์‹œ์ผœ์ฃผ๋ฉด
๊ฐ€๊ณต๋œ ๋ฐ์ดํ„ฐ๋กœ ๋ฐ”๋€ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

>> df['group'] = df['Salary [$/h]'].apply(grouping)
>> df

๋ฐ˜์‘ํ˜•