본문 바로가기
AI/- Library

[Pandas] 연산 방법 정리

by Yoojacha 2023. 2. 16.

데이터 세팅

a1 = [60, 84, 80]
a2 = [77, 62, 95]
a3 = [61, 97, 72]

# 2차원 배열
df_data = [a1, a2, a3]
other_data = [[1,10,100],[2,20,200],[3,30,300]]

cols = ["국어", "영어", "수학"]
rows = ['a','b','c']

df = pd.DataFrame(data=df_data, index=rows, columns=cols)
other = pd.DataFrame(data=other_data,index=rows,columns=cols)

연산 메소드

# 왼쪽 -> 오른쪽 더하기
df.add(other, axis='columns', level=None, fill_value=None)
# 오른쪽 -> 왼쪽 더하기
df.radd(other, axis='columns', level=None, fill_value=None)

# 왼쪽 -> 오른쪽 빼기
df.sub(other, axis='columns', level=None, fill_value=None)
# 오른쪽 -> 왼쪽 빼기
df.rsub(other, axis='columns', level=None, fill_value=None)

# 왼쪽 -> 오른쪽 곱하기
df.mul(other, axis='columns', level=None, fill_value=None)
# 오른쪽 -> 왼쪽 곱하기
df.rmul(other, axis='columns', level=None, fill_value=None)

# 왼쪽 -> 오른쪽 나눗셈
df.div(other, axis='columns', level=None, fill_value=None)
# 오른쪽 -> 왼쪽 나눗셈
df.rdiv(other, axis='columns', level=None, fill_value=None)

# 왼쪽 -> 오른쪽 나머지
display(df.mod(other, axis='columns', level=None, fill_value=None))
# 오른쪽 -> 왼쪽 나머지
display(df.rmod(other, axis='columns', level=None, fill_value=None))

# 왼쪽 -> 오른쪽 거듭제곱
display(df.pow(other, axis='columns', level=None, fill_value=None))
# 오른쪽 -> 왼쪽 거듭제곱
display(df.rpow(other, axis='columns', level=None, fill_value=None))

col = ['col1','col2']
row = ['row1','row2']
data1 = [[1,2],[3,4]]
data2 = [[5,6],[7,8]]
df1 = pd.DataFrame(data=data1)
df2 = pd.DataFrame(data=data2)

# 행렬곱
df1.dot(other=df2)
#        col1   col2
# row1  Aa+bc  Ab+Bd
# row2  Ca+Dc  Cb+Dd

숫자 처리 방법

# 반올림
DataFrame.round(decimals=0, args, kwargs)

# 합계
DataFrame.sum(axis=None, skipna=None, level=None, numeric_only=None, min_count=0, kwargs)

# 곱
DataFrame.prod(axis=None, skipna=None, level=None, numeric_only=None, min_count=0, kwargs)
DataFrame.product(axis=None, skipna=None, level=None, numeric_only=None, min_count=0, kwargs)

# 절댓값
DataFrame.abs( )

# 전치
DataFrame.transpose(args, copy=False)
DataFrame.T(args, copy=False)

# 순위
DataFrame.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False)

# 차이 [이산]
DataFrame.diff(periods=1, axis=0)

# 차이 [백분률]
DataFrame.pct_change(periods=1, fill_method='pad', limit=None, freq=None, kwargs)

# 누적 계산
DataFrame.expanding(min_periods=1, center=None, axis=0, method='single')

# 기간이동 계산
DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None, method='single')

# 그룹화 계산
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=NoDefault.no_default, observed=False, dropna=True)

# 지수가중함수
DataFrame.ewm(com=None, span=None, halflife=None, alpha=None, min_periods=0, adjust=True, ignore_na=False, axis=0, times=None, method='single')

댓글