본문 바로가기
데이터분석과 AI/빅데이터 분석기사

[빅데이터분석기사 실기][작업형1] 누적합 계산 및 결측치 채우기(cumsum, bfill)

by 우공80 2023. 5. 27.
728x90

누적합 계산 및 결측치 채우기

누적합(Cumulative Sum)은 데이터의 원소들을 순차적으로 더해가며 누적된 합을 계산하는 연산입니다. 이전까지의 모든 데이터 값을 현재 데이터 값과 함께 더하여 누적된 결과를 생성합니다. 누적합은 데이터의 추이와 누적적인 변화를 파악하는 데 유용하며, 데이터의 누적적인 변화를 시각화하거나 특정 시점까지의 누적된 값을 계산하는 데 사용될 수 있습니다.

누적합은 다양한 분야에서 사용됩니다. 다음과 같이 몇 가지 예시가 있습니다. 

  1. 금융 분야: 주식 가격, 지수 등의 시계열 데이터에서 누적합을 계산하여 총 수익률, 누적 수익 등을 파악할 수 있습니다.
  2. 판매 분야: 매출 데이터에서 일별, 월별, 연도별 누적 매출을 계산하여 총 매출액 추이를 확인할 수 있습니다.
  3. 생산 분야: 생산량이나 생산 비용 데이터에서 누적합을 계산하여 누적 생산량, 누적 비용 등을 파악할 수 있습니다.
  4. 시계열 데이터 분석: 시계열 데이터에서 추세(Trend)를 파악하기 위해 누적합을 사용할 수 있습니다.

예를 들어, 주식 가격 데이터에서 누적합을 계산하면 해당 기간 동안의 총 수익률을 알 수 있습니다. 또는 매출 데이터에서 누적합을 계산하여 특정 기간까지의 누적 매출액을 파악할 수 있습니다.

 

아래는 매출 데이터에서 누적 매출액을 구하는 예제입니다. 일부 결측치를 만들었고, 뒤의 값으로 채우도록 했습니다.

보통은 누적합 계산하기 전에 매출액에 대한 결측치를 채울거 같은데, 문제에서 누적합 만든 후 결측값을 채우는 것으로 나와서 그렇게 만들었습니다.

import pandas as pd
import numpy as np

# 데이터 생성
data = {'날짜': pd.date_range(start='2022-01-01', periods=10),
        '매출액': [100, 200, np.nan, 300, np.nan, 180, 220, np.nan, 320, 400]}

df = pd.DataFrame(data)

# 조건에 따른 누적합 계산 - 직접 계산
df_copy = df.copy()

df_sum = []
tmp = 0

for i in np.arange(0, len(df_copy)):
    if np.isnan(df_copy['매출액'][i]):
        df_sum.append(np.nan)
    else:
        tmp = tmp + df_copy['매출액'][i]
        df_sum.append(tmp)

print('직접계산: ',df_sum)
        
# 조건에 따른 누적합 계산 - cumsum() 함수 사용
df['누적매출액'] = df['매출액'].cumsum()

print('함수사용: ',df['누적매출액'].tolist())

# 결측치 처리 (뒤에 나오는 값으로 채움)
print(df.fillna(method='bfill'))

Output:

직접계산:  [100.0, 300.0, nan, 600.0, nan, 780.0, 1000.0, nan, 1320.0, 1720.0]
함수사용:  [100.0, 300.0, nan, 600.0, nan, 780.0, 1000.0, nan, 1320.0, 1720.0]
          날짜    매출액   누적매출액
0 2022-01-01  100.0   100.0
1 2022-01-02  200.0   300.0
2 2022-01-03  300.0   600.0
3 2022-01-04  300.0   600.0
4 2022-01-05  180.0   780.0
5 2022-01-06  180.0   780.0
6 2022-01-07  220.0  1000.0
7 2022-01-08  320.0  1320.0
8 2022-01-09  320.0  1320.0
9 2022-01-10  400.0  1720.0

위 코드에서 직접 계산한 부분은 누적합을 계산해주는 cumsum() 함수가 있는 것을 모르고 작성한 부분입니다.

시험에서는 cumsum() 함수를 사용하는 것이 좋겠습니다. 

 

※ 위 내용은 "빅데이터 분석기사 실기 준비를 위한 캐글 놀이터"를 따라가며 공부한 내용입니다. 

https://www.kaggle.com/datasets/agileteam/bigdatacertificationkr

 

Big Data Certification KR

빅데이터 분석기사 실기 (Python, R tutorial code)

www.kaggle.com

 

728x90

댓글