νμ΄μ¬ λ§μ€ν°νκΈ° : apply(), map(), applymap() ν¨μ
μλ³Έ κ²μκΈ: https://velog.io/@euisuk-chung/νμ΄μ¬-λ§μ€ν°νκΈ°-apply-map-applymap-ν¨μ
νμ΄μ¬ νλ€μ€ μ¬ν
νλ€μ€(Pandas)
λ λ§€μ° λ€μν ν¨μμ λ©μλλ₯Ό μ 곡νκΈ° λλ¬Έμ μ²μ μ¬μ©νλ©΄ ν·κ°λ¦΄ μ μλ ν¨μλ€μ΄ λ§μ΅λλ€.
μ΄λ² ν¬μ€νΈμμλ apply()
, applymap()
, map()
, reduce()
μ κ°μ ν·κ°λ¦΄ μ μλ ν¨μλ€μ μ€μ¬μΌλ‘ κ°λ¨ν κ°λ
κ³Ό μμ λ₯Ό μκ°ν΄λ³΄λλ‘ νκ² μ΅λλ€.
-
apply()
apply()
λ©μλλ μ리μ¦(Series)λ λ°μ΄ν°νλ μ(DataFrame)μ κ° μμμ ν¨μλ₯Ό μ μ©νμ¬ κ²°κ³Όλ₯Ό λ°νν©λλ€. λ°μ΄ν°νλ μμμλ ν(axis=0) λλ μ΄(axis=1)μ κΈ°μ€μΌλ‘ ν¨μλ₯Ό μ μ©ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ λ°μ΄ν°νλ μμ΄ μλ€κ³ κ°μ ν΄λ΄
μλ€.
1
2
3
4
5
6
7
8
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
})
μ΄ λ°μ΄ν°νλ μμμ κ° μ΄μ ν©μ ꡬνκ³ μ νλ€λ©΄ λ€μκ³Ό κ°μ΄ apply()
λ©μλλ₯Ό μ¬μ©ν μ μμ΅λλ€.
1
2
col_sum = df.apply(np.sum, axis=0)
print(col_sum)
μ μ½λλ apply()
λ©μλλ₯Ό μ¬μ©νμ¬ κ° μ΄μ ν©μ κ³μ°νκ³ col_sum
λ³μμ μ μ₯ν©λλ€. np.sum
ν¨μλ₯Ό 첫 λ²μ§Έ μΈμλ‘ μ λ¬νκ³ , axis=0
μ λ λ²μ§Έ μΈμλ‘ μ λ¬νμ¬ μ΄μ κΈ°μ€μΌλ‘ ν¨μλ₯Ό μ μ©ν©λλ€. μΆλ ₯ κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
1
2
3
4
A 6
B 15
C 24
dtype: int64
-
applymap()
applymap()
λ©μλλ λ°μ΄ν°νλ μ(DataFrame)μ λͺ¨λ μμμ ν¨μλ₯Ό μ μ©νμ¬ κ²°κ³Όλ₯Ό λ°νν©λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ λ°μ΄ν°νλ μμ΄ μλ€κ³ κ°μ ν΄λ΄
μλ€.
1
2
3
4
5
6
7
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
})
μ΄ λ°μ΄ν°νλ μμ λͺ¨λ μμμ 2λ₯Ό κ³±νκ³ μ νλ€λ©΄ λ€μκ³Ό κ°μ΄ applymap()
λ©μλλ₯Ό μ¬μ©ν μ μμ΅λλ€.
1
2
df2 = df.applymap(lambda x: x * 2)
print(df2)
μ μ½λλ applymap()
λ©μλλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°νλ μμ λͺ¨λ μμμ λλ€(lambda) ν¨μλ₯Ό μ μ©νκ³ , κ²°κ³Όλ₯Ό df2
λ³μμ μ μ₯ν©λλ€. λλ€ ν¨μλ μ
λ ₯κ°μ 2λ₯Ό κ³±νμ¬ λ°νν©λλ€. μΆλ ₯ κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
1
2
3
4
A B C
0 2 8 14
1 4 10 12
2 6 12 18
μ΄λ²μλ λ€λ₯Έ μμλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€. λ€μκ³Ό κ°μ λ°μ΄ν°νλ μμ΄ μλ€κ³ κ°μ ν΄λ΄ μλ€.
1
2
3
4
5
6
7
import pandas as pd
df = pd.DataFrame({
'A': ['apple', 'banana', 'cherry'],
'B': ['dog', 'cat', 'bird'],
'C': [1, 2, 3]
})
μ΄ λ°μ΄ν°νλ μμ λ¬Έμμ΄ λ°μ΄ν°λ₯Ό λͺ¨λ λλ¬Έμλ‘ λ³κ²½νκ³ μ νλ€λ©΄ λ€μκ³Ό κ°μ΄ applymap()
λ©μλλ₯Ό μ¬μ©ν μ μμ΅λλ€.
1
2
df2 = df.applymap(lambda x: str(x).upper() if isinstance(x, str) else x)
print(df2)
μ μ½λλ applymap()
λ©μλλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°νλ μμ λͺ¨λ μμμ λλ€(lambda) ν¨μλ₯Ό μ μ©νκ³ , κ²°κ³Όλ₯Ό df2
λ³μμ μ μ₯ν©λλ€. λλ€ ν¨μλ λ¬Έμμ΄ λ°μ΄ν°μ λν΄μλ λλ¬Έμλ‘ λ³κ²½νκ³ , κ·Έλ μ§ μμ κ²½μ°μλ κ·Έλλ‘ λ°νν©λλ€. isinstance(x, str)
λ λ³μ x
κ° λ¬Έμμ΄(str)μΈμ§ νμΈνλ μ½λμ
λλ€. μΆλ ₯ κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
1
2
3
4
A B C
0 APPLE DOG 1
1 BANANA CAT 2
2 CHERRY BIRD 3
-
map()
μ΄μ΄μ νΌλνκΈ° μ¬μ΄ ν¨μλ‘ map()
κ³Ό replace()
λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
map()
λ©μλλ μ리μ¦(Series)μμ μ¬μ©ν μ μλ λ©μλμ
λλ€. μ리μ¦μ κ° μμμ ν¨μλ₯Ό μ μ©νμ¬ κ²°κ³Όλ₯Ό λ°νν©λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ μ리μ¦κ° μλ€κ³ κ°μ ν΄λ΄
μλ€.
1
2
3
import pandas as pd
s = pd.Series(['cat', 'dog', 'bird'])
μ΄ μ리μ¦μ κ° λ¬Έμμ΄ λ°μ΄ν°μ κΈΈμ΄λ₯Ό ꡬνκ³ μ νλ€λ©΄ λ€μκ³Ό κ°μ΄ map()
λ©μλλ₯Ό μ¬μ©ν μ μμ΅λλ€.
1
2
s2 = s.map(lambda x: len(x))
print(s2)
μ μ½λλ map()
λ©μλλ₯Ό μ¬μ©νμ¬ μ리μ¦μ κ° μμμ λλ€(lambda) ν¨μλ₯Ό μ μ©νκ³ , κ²°κ³Όλ₯Ό s2
λ³μμ μ μ₯ν©λλ€. λλ€ ν¨μλ μ
λ ₯κ°μ κΈΈμ΄λ₯Ό λ°νν©λλ€. μΆλ ₯ κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
1
2
3
4
0 3
1 3
2 4
dtype: int64
-
replace()
replace()
λ©μλλ λ°μ΄ν°νλ μ(DataFrame)μ΄λ μ리μ¦(Series)μμ μ¬μ©ν μ μλ λ©μλμ
λλ€. λ°μ΄ν°νλ μμ΄λ μ리μ¦μ κ°μ λ€λ₯Έ κ°μΌλ‘ κ΅μ²΄ν©λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ μ리μ¦κ° μλ€κ³ κ°μ ν΄λ΄
μλ€.
1
2
3
import pandas as pd
s = pd.Series([1, 2, 3])
μ΄ μ리μ¦μ κ°μ λ€λ₯Έ κ°μΌλ‘ κ΅μ²΄νκ³ μ νλ€λ©΄ λ€μκ³Ό κ°μ΄ replace()
λ©μλλ₯Ό μ¬μ©ν μ μμ΅λλ€.
1
2
s2 = s.replace({1: 'apple', 2: 'banana', 3: 'cherry'})
print(s2)
μ μ½λλ replace()
λ©μλλ₯Ό μ¬μ©νμ¬ μ리μ¦μ κ° 1μ βappleβ, κ° 2λ₯Ό βbananaβ, κ° 3μ βcherryβλ‘ κ΅μ²΄νκ³ , κ²°κ³Όλ₯Ό s2
λ³μμ μ μ₯ν©λλ€. κ΅μ²΄ν κ°μ λμ
λ리(dictionary) ννλ‘ μ λ¬ν©λλ€. μΆλ ₯ κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
1
2
3
4
0 apple
1 banana
2 cherry
dtype: object
λμ
λ리μ ν€(key)λ κ΅μ²΄ν κ°μ, κ°(value)μ μλ‘μ΄ κ°μΌλ‘ μ§μ ν©λλ€. μ΄λ κ² replace()
λ©μλλ₯Ό μ¬μ©νλ©΄ λ°μ΄ν°νλ μμ΄λ μ리μ¦μ κ°μ μ½κ² κ΅μ²΄ν μ μμ΅λλ€.