Data Engineering/데이터 분석

데이터프레임(Data Frame) 연산

12.tka 2020. 5. 29. 18:07
728x90

이번 글에서는 데이터프레임 연산에 대해서 알아보고자 한다.

 

데이터프레임은 여러 시리즈가 모인 것이므로 시리즈 연산을 확장하는 개념으로 이해하는 것이 좋다.

행/열 인덱스를 기준으로 정렬하고 일대일 대응되는 원소끼리 연산을 처리한다.

 

데이터프레임 연산은 크게 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을 원소로만 갖는 데이터프레임이 반환된다.

 

실행 결과

728x90

'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