Pandas DataFrame의 모든 행에 함수 적용

Samreena Aslam 2023년1월30일
  1. Pandas apply() 함수의 기본 구문
  2. Pandas DataFrame의 각 행에 lambda 기능 적용
  3. Pandas DataFrame의 각 행에 NumPy 함수 적용
  4. 인수를 사용하여 Pandas DataFrame의 각 행에 사용자 정의 함수 적용
  5. 인수 없이 Pandas DataFrame의 각 행에 사용자 정의 함수 적용
Pandas DataFrame의 모든 행에 함수 적용

Pandas는 더 쉬운 방법으로 데이터 분석 및 조작 작업을 수행하기 위한 방대한 클래스 및 함수 목록을 제공하는 파이썬 라이브러리입니다. 우리는 행과 열의 형태로 판다 DataFrame의 데이터를 조작합니다. 따라서 대부분의 경우 원하는 결과를 얻으려면 각 행이나 열에 적절한 함수를 적용해야 합니다.

이 기사에서는 pandas DataFrame의 모든 행에 기능을 적용하기 위해 pandas를 사용하는 방법을 탐구합니다. 또한 lambda 함수, 사용자 정의 함수, NumPy 함수와 같은 다양한 함수를 pandas DataFrame의 각 행에 적용하는 방법을 보여줍니다.

Pandas apply() 함수의 기본 구문

다음 기본 구문은 팬더 apply() 함수를 적용하는 데 사용됩니다.

DataFrame.apply(function, axis, args=())

위의 구문에서 함수는 각 행에 적용됩니다.를 참조하십시오. axisDataFrame에서 함수가 적용되는 인수입니다. 기본적으로 axis 값은 0입니다. 함수가 모든 행에 적용되는 경우 axis=1 값. args는 함수에 전달된 튜플 또는 인수 목록을 나타냅니다.

pandas apply() 함수를 사용하여 DataFrame의 모든 행에 다른 함수를 쉽게 적용할 수 있습니다. 다음 나열된 방법은 이 목표를 달성하는 데 도움이 됩니다.

Pandas DataFrame의 각 행에 lambda 기능 적용

DataFrame의 각 행에 람다 함수를 적용하기 위해 dataframe.apply() 함수에서 DataFrame의 첫 번째 인수로 lambda 함수를 사용하고 axis=1DataFrame 두 매개변수의 첫 번째 매개변수.

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

팬더는 모든 행에 기능을 적용합니다 - numpy

인수를 사용하여 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

팬더는 모든 행에 기능을 적용합니다 - 사용자 정의

관련 문장 - Pandas DataFrame