Pandas DataFrame의 모든 행에 함수 적용
-
Pandas
apply()
함수의 기본 구문 -
Pandas
DataFrame
의 각 행에lambda
기능 적용 -
Pandas
DataFrame
의 각 행에NumPy
함수 적용 -
인수를 사용하여 Pandas
DataFrame
의 각 행에 사용자 정의 함수 적용 -
인수 없이 Pandas
DataFrame
의 각 행에 사용자 정의 함수 적용
Pandas는 더 쉬운 방법으로 데이터 분석 및 조작 작업을 수행하기 위한 방대한 클래스 및 함수 목록을 제공하는 파이썬 라이브러리입니다. 우리는 행과 열의 형태로 판다 DataFrame
의 데이터를 조작합니다. 따라서 대부분의 경우 원하는 결과를 얻으려면 각 행이나 열에 적절한 함수를 적용해야 합니다.
이 기사에서는 pandas DataFrame
의 모든 행에 기능을 적용하기 위해 pandas를 사용하는 방법을 탐구합니다. 또한 lambda
함수, 사용자 정의 함수, NumPy
함수와 같은 다양한 함수를 pandas DataFrame
의 각 행에 적용하는 방법을 보여줍니다.
Pandas apply()
함수의 기본 구문
다음 기본 구문은 팬더 apply()
함수를 적용하는 데 사용됩니다.
DataFrame.apply(function, axis, args=())
위의 구문에서 함수는 각 행에 적용됩니다.를 참조하십시오. axis
는 DataFrame
에서 함수가 적용되는 인수입니다. 기본적으로 axis
값은 0
입니다. 함수가 모든 행에 적용되는 경우 axis=1
값. args
는 함수에 전달된 튜플 또는 인수 목록을 나타냅니다.
pandas apply()
함수를 사용하여 DataFrame
의 모든 행에 다른 함수를 쉽게 적용할 수 있습니다. 다음 나열된 방법은 이 목표를 달성하는 데 도움이 됩니다.
Pandas DataFrame
의 각 행에 lambda
기능 적용
DataFrame
의 각 행에 람다 함수를 적용하기 위해 dataframe.apply()
함수에서 DataFrame
의 첫 번째 인수로 lambda
함수를 사용하고 axis=1
을 DataFrame
두 매개변수의 첫 번째 매개변수.
DataFrame
의 모든 행에 lambda
함수를 적용하는 방법을 보려면 다음 예제를 시도하십시오.
예제 코드:
import pandas as pd
import numpy as np
from IPython.display import display
# List of Tuples data
data = [
(1, 34, 23),
(11, 31, 11),
(22, 16, 21),
(33, 32, 22),
(44, 33, 27),
(55, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe before applying lambda function: ", sep="\n")
display(dataframe)
# Apply a lambda function to each row by adding 10
new_dataframe = dataframe.apply(lambda x: x + 10, axis=1)
print("Modified New Dataframe by applying lambda function on each row:")
display(new_dataframe)
출력:
Original Dataframe before applying lambda function:
A B C
0 1 34 23
1 11 31 11
2 22 16 21
3 33 32 22
4 44 33 27
5 55 35 11
Modified Dataframe by applying lambda function on each row:
A B C
0 11 44 33
1 21 41 21
2 32 26 31
3 43 42 32
4 54 43 37
5 65 45 21
Pandas DataFrame
의 각 행에 NumPy
함수 적용
dataframe.apply()
에 인수로 전달된 NumPy
함수를 사용할 수도 있습니다. 다음 예에서는 NumPy
함수를 모든 행에 적용하고 각 값의 제곱근을 계산합니다.
예제 코드:
import pandas as pd
import numpy as np
from IPython.display import display
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a numpy function to every row by taking square root of each value
new_dataframe = dataframe.apply(np.sqrt, axis=1)
print("Modified Dataframe by applying numpy function on each row:", sep="\n")
display(new_dataframe)
if __name__ == "__main__":
main()
출력:
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying numpy function on each row:
A B C
0 1.414214 1.732051 2.000000
1 1.732051 2.236068 3.162278
2 6.633250 4.000000 1.414214
3 7.416198 5.656854 3.464102
4 7.745967 5.744563 5.196152
5 8.774964 5.916080 3.316625
인수를 사용하여 Pandas DataFrame
의 각 행에 사용자 정의 함수 적용
또한 사용자 정의 함수를 일부 인수와 함께 dataframe.apply
의 매개변수로 전달할 수도 있습니다. 다음 예에서는 args=[2]
인수를 사용하여 사용자 정의 함수를 전달했습니다. 각 행 값 계열에 2를 곱합니다.
다음 예를 참조하십시오.
예제 코드:
import pandas as pd
import numpy as np
from IPython.display import display
def multiplyData(x, y):
return x * y
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a user defined function with arguments to each row of Pandas dataframe
new_dataframe = dataframe.apply(multiplyData, axis=1, args=[2])
print(
"Modified Dataframe by applying user defined function on each row of pandas dataframe:",
sep="\n",
)
display(new_dataframe)
if __name__ == "__main__":
main()
출력:
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying user defined function on each row of pandas dataframe:
A B C
0 4 6 8
1 6 10 20
2 88 32 4
3 110 64 24
4 120 66 54
5 154 70 22
인수 없이 Pandas DataFrame
의 각 행에 사용자 정의 함수 적용
인수 없이 모든 행에 사용자 정의 함수를 적용할 수도 있습니다. 다음 예를 참조하십시오.
예제 코드:
import pandas as pd
import numpy as np
from IPython.display import display
def userDefined(x):
return x * 4
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a user defined function without arguments to each row of Pandas dataframe
new_dataframe = dataframe.apply(userDefined, axis=1)
print(
"Modified Dataframe by applying user defined function on each row of pandas dataframe:",
sep="\n",
)
display(new_dataframe)
if __name__ == "__main__":
main()
출력:
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying user defined function on each row of pandas dataframe:
A B C
0 8 12 16
1 12 20 40
2 176 64 8
3 220 128 48
4 240 132 108
5 308 140 44