728x90
누적합(Cumulative Sum)은 데이터의 원소들을 순차적으로 더해가며 누적된 합을 계산하는 연산입니다. 이전까지의 모든 데이터 값을 현재 데이터 값과 함께 더하여 누적된 결과를 생성합니다. 누적합은 데이터의 추이와 누적적인 변화를 파악하는 데 유용하며, 데이터의 누적적인 변화를 시각화하거나 특정 시점까지의 누적된 값을 계산하는 데 사용될 수 있습니다.
누적합은 다양한 분야에서 사용됩니다. 다음과 같이 몇 가지 예시가 있습니다.
- 금융 분야: 주식 가격, 지수 등의 시계열 데이터에서 누적합을 계산하여 총 수익률, 누적 수익 등을 파악할 수 있습니다.
- 판매 분야: 매출 데이터에서 일별, 월별, 연도별 누적 매출을 계산하여 총 매출액 추이를 확인할 수 있습니다.
- 생산 분야: 생산량이나 생산 비용 데이터에서 누적합을 계산하여 누적 생산량, 누적 비용 등을 파악할 수 있습니다.
- 시계열 데이터 분석: 시계열 데이터에서 추세(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
728x90
'데이터분석과 AI > 빅데이터 분석기사' 카테고리의 다른 글
[빅데이터분석기사 실기][작업형1] 상관관계 구하기 (0) | 2023.05.28 |
---|---|
[빅데이터분석기사 실기][작업형1] 표준화와 정규화 (0) | 2023.05.27 |
[빅데이터분석기사 실기][작업형1] 값을 대체하기 (replace) (0) | 2023.05.26 |
[빅데이터분석기사 실기][작업형1] 분위수 구하고 값을 대체하기 (np.quantile(), np.clip()) (0) | 2023.05.26 |
[빅데이터분석기사 실기][작업형1] 결측치 제거 및 그룹화 (0) | 2023.05.24 |
댓글