Pandas 데이터 프레임의 열에 제곱근 함수 적용
이 자습서에서는 지수 연산자 np.sqrt()
, lambda
및 apply()
함수를 사용하여 Pandas 데이터 프레임의 열에 제곱근 함수를 적용하는 방법을 설명합니다. 또한 .astype(int)
을 사용하여 정수 제곱근을 결정하는 방법을 배웁니다.
제곱근 소개
제곱근으로 이동하기 전에 제곱이 무엇이며 어떻게 계산할 수 있는지 이해해야 합니다. 그것부터 시작합시다.
수학에서 우리는 숫자의 제곱이 지정된 숫자를 그 자체로 곱하여 계산된다는 것을 배웠습니다(예: 3의 제곱 = 3x3 = 9
).
임의의 숫자 n
의 제곱은 n^2
로 쓸 수 있는 위첨자 2
로 표시됩니다. 다음 두 가지 속성을 충족해야 합니다.
- 지정된 숫자의 제곱은 부동 소수점 숫자 또는 정수일 수 있습니다.
- 두 개의 음수 곱이 양수를 생성하기 때문에 지정된 수의 제곱은 항상 양수입니다.
이제 우리는 제곱근을 배울 준비가 되었습니다. n^2
의 제곱근은 n
이며 √n
(n^(1/2)
으로도 표시됨)으로 표시됩니다.
다양한 과학 및 수학 기능에 유용합니다.
이제 우리는 제곱근에 대해 충분히 이해했습니다. Python을 사용하여 계산하는 방법, 특히 Pandas 데이터 프레임의 열에 제곱근 함수를 적용하는 방법을 알아보겠습니다.
Pandas 데이터 프레임의 열에 제곱근 함수 적용
다양한 접근 방식을 사용하여 제곱근 함수를 적용할 수 있습니다. 그 중 일부는 아래에 나와 있습니다. 그것들을 모두 사용하려면 데이터 프레임이 있어야 합니다. 예를 들어 다음과 같습니다.
import pandas as pd
data = {
"years": [2020, 2021, 2022],
"teams": ["Bears", "Packers", "Lions"],
"wins": [25, 10, 6],
"losses": [5, 5, 16],
}
df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)
df
여기에 pd.DataFrame()
을 사용하여 Python 데이터 프레임으로 변환될 키-값
쌍이 포함된 사전이 있습니다. 이 사전은 데이터와 열 이름의 배열을 매개변수로 사용합니다.
그런 다음 승리
및 손실
열의 합계를 포함하는 새 열 승리+손실
을 데이터 프레임에 추가합니다. 더 잘 이해하려면 다음 출력을 관찰하십시오.
연령 | 팀 | 승리 | 사상자 수 | 승+패 | |
---|---|---|---|---|---|
0 | 2020년 | 곰 | 25 | 5 | 30 |
1 | 2021년 | 패커 | 10 | 5 | 15 |
2 | 2022년 | 라이온스 | 6 | 16 | 22 |
이 데이터 프레임은 wins
, losses
및 wins+losses
열의 제곱근을 찾는 다음 메서드에서 사용됩니다.
방법 1: 지수 연산자를 사용하여 제곱근 계산
예제 코드:
import pandas as pd
data = {
"years": [2020, 2021, 2022],
"teams": ["Bears", "Packers", "Lions"],
"wins": [25, 10, 6],
"losses": [5, 5, 16],
}
df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)
df["sqrt(wins)"] = df[["wins"]] ** 0.5
df["sqrt(losses)"] = df[["losses"]] ** 0.5
df["sqrt(wins+losses)"] = df[["wins+losses"]] ** 0.5
df
출력:
연령 | 팀 | 승리 | 사상자 수 | 승+패 | sqrt(승) | sqrt(손실) | sqrt(승패) | |
---|---|---|---|---|---|---|---|---|
0 | 2020년 | 곰 | 25 | 5 | 30 | 5.000000 | 2.236068 | 5.477226 |
1 | 2021년 | 패커 | 10 | 5 | 15 | 3.162278 | 2.236068 | 3.872983 |
2 | 2022년 | 라이온스 | 6 | 16 | 22 | 2.449490 | 4.000000 | 4.690416 |
위의 코드는 지정된 데이터 프레임의 열을 반복하고 거듭제곱 연산자로 알려진 산술 연산자인 지수(**
)를 사용합니다.
우리는 이미 숫자 n
의 제곱근이 √n
으로 표시된다는 것을 배웠습니다. 이는 n^(1/2)
와 동일하며 파이썬에서는 n**0.5
로도 표시됩니다. 여기서 n
은 Pandas 데이터 프레임의 지정된 열의 각 값으로 대체됩니다.
방법 2: np.sqrt()
를 사용하여 제곱근 계산
예제 코드:
import pandas as pd
import numpy as np
data = {
"years": [2020, 2021, 2022],
"teams": ["Bears", "Packers", "Lions"],
"wins": [25, 10, 6],
"losses": [5, 5, 16],
}
df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)
df["sqrt(wins)"] = np.sqrt(df[["wins"]])
df["sqrt(losses)"] = np.sqrt(df[["losses"]])
df["sqrt(wins+losses)"] = np.sqrt(df[["wins+losses"]])
df
출력:
연령 | 팀 | 승리 | 사상자 수 | 승+패 | sqrt(승) | sqrt(손실) | sqrt(승패) | |
---|---|---|---|---|---|---|---|---|
0 | 2020년 | 곰 | 25 | 5 | 30 | 5.000000 | 2.236068 | 5.477226 |
1 | 2021년 | 패커 | 10 | 5 | 15 | 3.162278 | 2.236068 | 3.872983 |
2 | 2022년 | 라이온스 | 6 | 16 | 22 | 2.449490 | 4.000000 | 4.690416 |
이 코드 스니펫은 NumPy
라이브러리의 sqrt()
함수를 사용하고 있습니다. 이 함수는 제곱근을 결정해야 하는 입력 값의 배열을 사용합니다.
방법 3: 람다
식을 사용하여 제곱근 계산
예제 코드:
import pandas as pd
data = {
"years": [2020, 2021, 2022],
"teams": ["Bears", "Packers", "Lions"],
"wins": [25, 10, 6],
"losses": [5, 5, 16],
}
df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)
df["sqrt(wins)"] = df.transform(lambda x: (df[["wins"]] ** 0.5))
df["sqrt(losses)"] = df.transform(lambda x: (df[["losses"]]) ** 0.5)
df["sqrt(wins+losses)"] = df.transform(lambda x: (df[["wins+losses"]]) ** 0.5)
df
출력:
연령 | 팀 | 승리 | 사상자 수 | 승+패 | sqrt(승) | sqrt(손실) | sqrt(승패) | |
---|---|---|---|---|---|---|---|---|
0 | 2020년 | 곰 | 25 | 5 | 30 | 5.000000 | 2.236068 | 5.477226 |
1 | 2021년 | 패커 | 10 | 5 | 15 | 3.162278 | 2.236068 | 3.872983 |
2 | 2022년 | 라이온스 | 6 | 16 | 22 | 2.449490 | 4.000000 | 4.690416 |
여기서는 지정된 열의 제곱근을 결정하기 위해 지수(**
)와 함께 람다
표현식(함수)을 사용하고 있습니다. 코드의 실용성과 단순성을 선호하는 경우 람다
표현식을 사용합니다.
또한 transform()
메서드를 사용합니다. 이 메서드는 self
에서 변환된 항목/값으로 DataFrame
을 생성하는 함수를 호출합니다. self
와 동일한 길이를 포함하는 DataFrame
을 반환합니다.
방법 4: apply()
를 사용하여 제곱근 계산
예제 코드:
import pandas as pd
import numpy as np
data = {
"years": [2020, 2021, 2022],
"teams": ["Bears", "Packers", "Lions"],
"wins": [25, 10, 6],
"losses": [5, 5, 16],
}
df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)
df["sqrt(wins)"] = df[["wins"]].apply(np.sqrt)
df["sqrt(losses)"] = df[["losses"]].apply(np.sqrt)
df["sqrt(wins+losses)"] = df[["wins+losses"]].apply(np.sqrt)
df
출력:
연령 | 팀 | 승리 | 사상자 수 | 승+패 | sqrt(승) | sqrt(손실) | sqrt(승패) | |
---|---|---|---|---|---|---|---|---|
0 | 2020년 | 곰 | 25 | 5 | 30 | 5.000000 | 2.236068 | 5.477226 |
1 | 2021년 | 패커 | 10 | 5 | 15 | 3.162278 | 2.236068 | 3.872983 |
2 | 2022년 | 라이온스 | 6 | 16 | 22 | 2.449490 | 4.000000 | 4.690416 |
이 코드 펜스는 np.sqrt
를 매개변수로 사용하고 제곱근 값의 DataFrame
을 반환하는 Pandas 라이브러리의 apply()
메서드를 사용합니다.
위의 모든 접근법이 제곱근을 float
값으로 반환한다는 것을 눈치채셨을 것입니다. 정수 값으로 원하면 어떻게 될까요?
Pandas에서 .astype(int)
을 사용하여 정수 제곱근 결정
예제 코드:
import pandas as pd
import numpy as np
data = {
"years": [2020, 2021, 2022],
"teams": ["Bears", "Packers", "Lions"],
"wins": [25, 10, 6],
"losses": [5, 5, 16],
}
df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)
df["sqrt(wins)"] = df[["wins"]].apply(np.sqrt).astype(int)
df["sqrt(losses)"] = df[["losses"]].apply(np.sqrt).astype(int)
df["sqrt(wins+losses)"] = df[["wins+losses"]].apply(np.sqrt).astype(int)
df
출력:
연령 | 팀 | 승리 | 사상자 수 | 승+패 | sqrt(승) | sqrt(손실) | sqrt(승패) | |
---|---|---|---|---|---|---|---|---|
0 | 2020년 | 곰 | 25 | 5 | 30 | 5 | 2 | 5 |
1 | 2021년 | 패커 | 10 | 5 | 15 | 삼 | 2 | 삼 |
2 | 2022년 | 라이온스 | 6 | 16 | 22 | 2 | 4 | 4 |
마찬가지로 .astype(int)
를 다른 접근 방식과 함께 사용할 수 있습니다. 0
의 제곱을 찾는 것은 0
의 거듭제곱이 0
이기 때문에 오류가 발생하지 않지만 제곱근을 찾으려고 하면 ValueError
또는 NaN
이 발생할 수 있습니다. 음수의.