1. 산술 연산과 데이터 정렬
서로 겹치는 index가 없을 경우 데이터는 NaN값이 된다. 산술 연산 시 누락된 값은 전파된다.
ex) NaN + 숫자 = NaN
NaN이 포함된 데이터를 연산하기 위한 방법으로 메서드를 사용하고 인자로 fill_value값을 전달하는 방법이 있다.
fill_value인자는 reindex를 사용할때도 사용할 수 있다.
df1 = pd.DataFrame(np.arange(9).reshape((3,3)), columns=list('bcd'),
index= ['ohio','texas','colorado'])
df1
Out[7]:
b c d
ohio 0 1 2
texas 3 4 5
colorado 6 7 8
df2 = pd.DataFrame(np.arange(12).reshape((4,3)), columns=list('bde'),
index= ['utah','ohio','texas','oraegon'])
df2
Out[9]:
b d e
utah 0 1 2
ohio 3 4 5
texas 6 7 8
oraegon 9 10 11
df1 + df2
Out[10]:
b c d e
colorado NaN NaN NaN NaN
ohio 3.0 NaN 6.0 NaN
oraegon NaN NaN NaN NaN
texas 9.0 NaN 12.0 NaN
utah NaN NaN NaN NaN
메서드 사용을 통한 연산
df1 = pd.DataFrame(np.arange(9).reshape((3,3)), columns=list('abc'))
df2 = pd.DataFrame(np.arange(12).reshape((4,3)), columns=list('abc'))
df1
Out[26]:
a b c
0 0 1 2
1 3 4 5
2 6 7 8
df2
Out[27]:
a b c
0 0 1 2
1 3 4 5
2 6 7 8
3 9 10 11
# 일반 산술연산
df1 + df2
Out[28]:
a b c
0 0.0 2.0 4.0
1 6.0 8.0 10.0
2 12.0 14.0 16.0
3 NaN NaN NaN
# 메서드 사용 연산
df1.add(df2,fill_value = 0)
Out[29]:
a b c
0 0.0 2.0 4.0
1 6.0 8.0 10.0
2 12.0 14.0 16.0
3 9.0 10.0 11.0
메서드 | 설명 |
add, radd | 덧셈(+)을 위한 메서드 |
sub, rsub | 뺄셈(-)을 위한 메서드 |
div, rdiv | 나눗셈(/)을 위한 메서드 |
floordiv, rfloordiv | 소수점 내림(//)연산을 위한 메서드 |
pow, rpow | 멱승(**)을 위한 메서드 |
Series와 DataFrame의 연산
브로드 캐스팅 : 2차원 배열에서 1차원 배열의 연산을 실행하게 되면 각 로우에 대해 한 번씩만 수행하게 된다.
df2 = pd.DataFrame(np.arange(12).reshape((4,3)), columns=list('abc'))
df2
Out[42]:
a b c
0 0 1 2
1 3 4 5
2 6 7 8
3 9 10 11
ser = df2.loc[0]
ser
Out[40]:
a 0
b 1
c 2
Name: 0, dtype: int32
df2 - ser
Out[41]:
a b c
0 0 0 0
1 3 3 3
2 6 6 6
3 9 9 9
series의 색인과 dataframe의 컬럼이 맞지 않는다면 nan값으로 표시된다.
ser = pd.Series(range(3),index=['a','b','f'])
ser
Out[45]:
a 0
b 1
f 2
dtype: int64
df2 - ser
Out[46]:
a b c f
0 0.0 0.0 NaN NaN
1 3.0 3.0 NaN NaN
2 6.0 6.0 NaN NaN
3 9.0 9.0 NaN NaN
만약 row값에 대해 연산을 수행하고 싶다면 선슐 연산 메서드를 사용하면 된다.
df2
Out[47]:
a b c
0 0 1 2
1 3 4 5
2 6 7 8
3 9 10 11
ser1 = df2['c']
ser1
Out[49]:
0 2
1 5
2 8
3 11
Name: c, dtype: int32
df2.sub(ser1,axis = 'index')
Out[50]:
a b c
0 -2 -1 0
1 -2 -1 0
2 -2 -1 0
3 -2 -1 0
2. 함수 적용과 매핑
배열의 각 원소에 적용되게 하는 메서드 적용하기
'python3' 카테고리의 다른 글
파이썬(Python3) Pandas 핵심 기능(1) (2) | 2023.01.10 |
---|---|
파이썬(Python) Pandas 자료구조(Series, DataFrame) (0) | 2023.01.09 |
파이썬(Python3) 7가지 별 찍기 (0) | 2023.01.07 |
파이썬(Python3) 구구단 출력 프로그램 (0) | 2023.01.07 |