이번 글에서는 데이터프레임 연산에 대해서 알아보고자 한다.
데이터프레임은 여러 시리즈가 모인 것이므로 시리즈 연산을 확장하는 개념으로 이해하는 것이 좋다.
행/열 인덱스를 기준으로 정렬하고 일대일 대응되는 원소끼리 연산을 처리한다.
데이터프레임 연산은 크게 2가지가 존재한다.
1. 데이터프레임 vs 숫자
2. 데이터프레임 vs 데이터프레임
데이터프레임 vs 숫자
데이터프레임과 숫자 연산: DataFrame 객체 + 연산자(+, -, *, /) + 숫자
시리즈 vs 숫자 연산과 똑같다. 데이터프레임에 어떤 숫자를 더하면 모든 원소에 숫자를 더한다. 덧셈, 뺄셈, 곱셈, 나눗셈 모두 가능하며 기존 데이터프레임의 형태를 그대로 유지한 채 원소 값만 새로운 계산 값으로 바뀐다. 새로운 데이터프레임 객체로 반환되는 점에 유의한다.
Seaborn 라이브러리에서 제공하는 데이터 셋 중에서 타이타닉('titanic') 데이터 셋을 사용하였다. 타이타닉 데이터 셋은 타이타닉호 탑승자에 대한 인적 사항과 구조 여부 등을 정리한 자료이다. load_dataset() 함수로 불러오면 된다.
import pandas as pd
import seaborn as sns
titanic = sns.load_dataset('titanic')
df = titanic.loc[:, ['age', 'fare']]
# 첫 5행만표시
print(df.head())
print('\n')
# 데이터프레임에 숫자 10 더하기
addition = df + 10
# 첫 5행만 표시
print(addition.head())
titanic에 들어있는 데이터가 너무 많기 때문에 head를 사용해서 첫 5행만 나타내었다. loc는 df.loc[행 인덱싱 값, 열 인덱싱 값] 형태로 사용하며 'age', 'fare' 열만 가져왔다.
데이터프레임 모든 값에 10이 더해졌다.
데이터프레임 vs 데이터프레임
각 데이터프레임의 같은 행, 열 위치에 있는 원소끼리 계산한다. 시리즈 연산과 마찬가지로 어느 한쪽에 원소가 존재하지 않거나 NaN 이면 연산 결과는 NaN으로 처리된다.
import pandas as pd
import seaborn as sns
titanic = sns.load_dataset('titanic')
df = titanic.loc[:, ['age', 'fare']]
# 마지막 5행만표시
print(df.tail())
print('\n')
# 데이터프레임에 숫자 10 더하기
addition = df + 10
# 마지막 5행만 표시
print(addition.tail())
subtraction = addition - df
print(subtraction.tail())
df에 10을 더해서 새로운 데이터프레임을 만든다. 그리고 새로 만든 프레임에서 df를 빼면, 숫자 10을 원소로만 갖는 데이터프레임이 반환된다.
'Data Engineering > 데이터 분석' 카테고리의 다른 글
T-test (T검정) (0) | 2020.09.02 |
---|---|
상관 분석 (0) | 2020.09.02 |
외부 파일 읽어오기 - 2 (Excel, JSON) (0) | 2020.05.29 |
외부 파일 읽어오기- 1 (CSV) (0) | 2020.05.29 |
시리즈(Series) 연산 (0) | 2020.05.29 |