01-04. 나눗셈 (div, rdiv)
DataFrame.div(other, axis='columns', level=None, fill_value=None)
DataFrame.rdiv(other, axis='columns', level=None, fill_value=None)
개요
div함수는 DataFrame에 다른 데이터프레임이나, Series, 스칼라 등 데이터를 나누는 메서드입니다.
단순 df÷다른df 등의 계산과 차별화되는 것은 fill_value 인수를 통해 계산 불가한 값을 채워 넣는다는 것입니다.
rdiv의 경우 div의 경우에서 순서만 바꾼것입니다. 즉 div가 'df ÷ df2'라면 rdiv는 'df2 ÷ df'입니다.
div와 사용법이 동일하므로 예시는 생략합니다.
사용법
기본 사용법
df.div(other, axis='columns', level=None, fill_value=None)
other : 데이터프레임이나, Series, 스칼라 등 데이터가 올 수 있습니다. 나눌값입니다.
axis : 나눌 레이블을 설정합니다. 0은 행(index), 1은 열 입니다. ※Series일 경우 Index와 일치시킬 축
level : multiIndex에서 계산할 Index의 레벨입니다.
fill_value : NaN 값등의 누락 요소를 계산 전에 이 값으로 대체합니다.
예시
먼저, 간단한 3x3 짜리 DataFrame을 만들어 보겠습니다.
data = [[1,10,100],[2,20,200],[3,30,300]]
col = ['col1','col2','col3']
row = ['row1','row2','row3']
df = pd.DataFrame(data=data,index=row,columns=col)
print(df)
>>
col1 col2 col3
row1 1 10 100
row2 2 20 200
row3 3 30 300
스칼라 값 나누기
df.div(스칼라 값)의 경우 df / 스칼라값 과 같은 결과를 가집니다.
result = df.div(2)
print(result)
>>
col1 col2 col3
row1 0.5 5.0 50.0
row2 1.0 10.0 100.0
row3 1.5 15.0 150.0
result = df/2
print(result)
>>
col1 col2 col3
row1 0.5 5.0 50.0
row2 1.0 10.0 100.0
row3 1.5 15.0 150.0
다른 DataFrame객체를 나누기
df에 나눌 df2를 아래와 같이 만들어보겠습니다. 3x1 짜리 객체로 col1을 가집니다.
data2 = [[0],[2],[3]]
df2 = pd.DataFrame(data=data2,index=['row1','row2','row3'],columns=['col1'])
print(df2)
>>
col1
row1 0
row2 2
row3 3
이제 df에 df2를 div메서드를 통해 나눠보겠습니다.
df2에는 col2과 col3열이 없기 때문에 해당 열의 계산결과는 NaN으로 반환됩니다.
0으로 나눈 경우는 div/0 에러 대신 inf를 반환합니다.
result = df.div(df2)
print(result)
>>
col1 col2 col3
row1 inf NaN NaN
row2 1.0 NaN NaN
row3 1.0 NaN NaN
fill_value 인수를 통해 해당 오류를 출력 가능하도록 바꿔보도록 하겠습니다.
result = df.div(df2,fill_value=1)
print(result)
col1 col2 col3
row1 inf 10.0 100.0
row2 1.0 20.0 200.0
row3 1.0 30.0 300.0
df2에는 존재하지 않던 col2, col3의 요소들에 대해 fill_value값인 1으로 채워 넣은 뒤 계산을 진행하여
계산한 것을 확인할 수 있습니다.
'파이썬완전정복-Pandas DataFrame > 01. 객체간 연산' 카테고리의 다른 글
Pandas DataFrame 01-06. 거듭제곱 (pow, rpow) (0) | 2021.12.01 |
---|---|
Pandas DataFrame 01-05. 나머지 (mod, rmod) (0) | 2021.12.01 |
Pandas DataFrame 01-03. 곱셈 (mul, rmul) (0) | 2021.11.29 |
Pandas DataFrame 01-02. 뺄셈 (sub, rsub) (0) | 2021.11.28 |
Pandas DataFrame 01-01 덧셈(add, radd) (0) | 2021.11.28 |