반응형
- 과거 내용
- Dataframe - 객체 간 연산
데이터를 원하는 데로 다룰 수 있어야 더 좋은 분석을 할 수 있다.
그렇기에 지금부터 Dataframe을 다루는 연습을 할 것이다.
- 원본 데이터
data=[[1,2],[3,4],[5,6]]
col=['col1','col2']
row=['row4','row5','row6']
df = pd.DataFrame(data=data, index=row, columns=col)
출력
col1 col2
row4 1 2
row5 3 4
row6 5 6
1. 더하기
#스칼라 값 더하기
df=df.add(1)
출력
col1 col2
row4 2 3
row5 4 5
row6 6 7
#데이터프레임 더하기
df2=pd.DataFrame(data=[[1],[2],[3]],index=['row4','row5','row6'],columns=['col1'])
df=df.add(df2)
출력
col1 col2
row4 2 NaN
row5 5 NaN
row6 8 NaN
#NaN값 없애기 - df=df.add(df2) 대신 아래 코드 작성
df=df.add(df2,fill_value=0)
출력
col1 col2
row4 2 2.0
row5 5 4.0
row6 8 6.0
2. 빼기
빼기는 더하기와 완전히 같다.
명령어만 add에서 sub를 사용해주면 된다.
3. 곱셈
#스칼라 곱
df=df.mul(2)
출력
col1 col2
row4 2 4
row5 6 8
row6 10 12
#객체 곱하기
df2=pd.DataFrame(data=[[1],[3],[5]],index=['row4','row5','row6'],columns=['col1'])
df=df.mul(df2,fill_value=0)
출력
col1 col2
row4 1 0.0
row5 9 0.0
row6 25 0.0
4. 나눗셈
나눗셈도 곱셈과 같다.
대신 명령어는 div를 사용한다.
참고로 나눗셈은 NaN 대신 inf라는 에러가 발생한다.
0으로 나눈 경우에도 inf가 발생해, 아래와 같이 해결한다.
#1로 채워넣어 0으로 나누지 않게 해 inf 에러를 없앰
df = df.div(df2,fill_value=1)
5. 나머지
#스칼라 값 나머지
df=df.mod(2)
출력
col1 col2
row4 1 0
row5 1 0
row6 1 0
#객체 간 나머지
df2=pd.DataFrame(data=[[2],[2],[2]],index=['row4','row5','row6'],columns=['col1'])
df=df.mod(df2,fill_value=1)
출력
col1 col2
row4 1 0.0
row5 1 0.0
row6 1 0.0
6. 거듭제곱
거듭제곱도 나머지와 똑같다.
다만 명령어는 pow를 사용한다.
df.pow(df2,fill_value=0)
이 경우에는 빈 값을 0으로 채워넣어
x^0이 되게 만들어 결과값을 1이 되게 한다.
7. 행렬곱
행렬의 곱을 pandas로 구현한다.
#데이터2개
df1=pd.DataFrame(data=[[1,2],[3,4]])
df2=pd.DataFrame(data=[[5,6],[7,8]])
출력
0 1
0 1 2
1 3 4
0 1
0 5 6
1 7 8
#두 행렬의 곱
df=df1.dot(df2)
출력
0 1
0 19 22
1 43 50
나도 행렬이 고등학교 교육과정에서 빠졌기에
이번에 인공지능수학 과목을 수강하면서 처음 배웠다.
위의 결과값은
(1*5+2*7) (1*6+2*8)
(3*5+4*7) (3*6+4*8) 와 같은 과정을 통해 구해진다.
'프로그래밍 > 파이썬' 카테고리의 다른 글
EDA - 1단계 : 데이터 다루기 - 함수 적용, 인덱싱 (1) | 2023.07.08 |
---|---|
EDA - 1단계 : 데이터 다루기 - 객체 내 연산 (1) | 2023.07.07 |
토이프로젝트 - (9) 다변량 선형 확률과정 - 3단계 (2) | 2023.06.29 |
데이터 분석 - 데이터 추출 및 자료 구조 다루기 (2) | 2023.01.21 |
[알고리즘] 백준 2644 파이썬 - 촌수계산 (1) | 2023.01.21 |