본문 바로가기
스터디 열기

수요 패턴 읽기, 추세와 계절성

1. 수요 패턴 읽기, 추세와 계절성

4장에서 월별 매출 그래프를 여러 번 보았습니다. 1월 941만 원에서 시작해 12월 2,240만 원까지, 연말로 갈수록 쭉 올라가던 그 그래프입니다. 여기서는 그 그래프 앞에서 질문 하나를 던지며 시작합니다. 이 상승은 우연이었을까요, 아니면 패턴일까요?

우연이라면 내년에는 다르게 흘러갈 수 있으니 준비할 것이 없습니다. 패턴이라면 이야기가 달라집니다. 내년 연말도 바쁠 것이 거의 확실하고, 재고와 인력을 미리 준비해야 합니다. 데이터에 숨은 패턴을 읽는다는 것은 결국 미래를 준비하는 일입니다.

1.1 시간 데이터에 섞인 네 가지 패턴

시간 순서대로 기록된 데이터를 시계열(time series)이라고 부릅니다. 월별 매출, 일별 방문자 수, 매일 아침의 기온이 모두 시계열입니다. 시계열 안에는 서로 다른 성격의 패턴 네 가지가 겹쳐 있습니다. 기온에 빗대어 보면 이해가 쉽습니다.

패턴뜻기온으로 보면쇼핑몰로 보면
추세(Trend)장기적으로 오르거나 내리는 방향온난화로 기온이 해마다 상승매출이 해마다 성장
계절성(Seasonality)규칙적으로 반복되는 패턴여름은 덥고 겨울은 추움연말에 매출이 최고
주기(Cycle)규칙이 일정하지 않은 긴 파동몇 년 주기로 찾아오는 이상기후경기 호황과 불황
불규칙(Noise)설명되지 않는 우연한 변동갑작스러운 소나기우연히 급증한 하루

이 넷 가운데 초보자가 집중할 것은 추세와 계절성 두 가지입니다. 주기와 불규칙은 "그런 것도 있다" 정도로 알아두면 충분합니다.

1.2 시계열 분해

복잡해 보이는 시간 데이터를 추세, 계절성, 불규칙으로 쪼개 보는 기법을 시계열 분해(time series decomposition)라고 합니다. 4장에서 매출을 거래 수와 객단가로 분해했던 것처럼, 이번에는 시간 축을 따라 매출을 분해하는 셈입니다.

원본을 이렇게 쪼개면 "큰 방향"과 "반복되는 리듬"이 또렷하게 보입니다. 이 둘이 6장에서 배울 예측의 토대가 되고, 불규칙은 "무슨 일이 있었지?"라고 물어야 할 이상 신호를 찾는 단서가 됩니다.

1.3 추세, 사업의 큰 방향

추세는 사업이 성장 중인지 쇠퇴 중인지를 알려주는 가장 큰 그림입니다. 우리 데이터의 월별 매출을 다시 보겠습니다.

월123456789101112
매출(만 원)9411,1001,3961,5841,6131,1161,5061,3881,6721,7952,0722,240

6월과 8월에 잠깐 내려앉는 달이 있지만, 한 해 전체로 보면 1월 941만 원에서 12월 2,240만 원까지 꾸준히 올라갑니다. 이 쇼핑몰은 성장 중입니다. 이것이 추세입니다. 중간에 튀는 달 한두 개에 흔들리지 않고 큰 방향을 읽는 것이 핵심입니다.

1.4 계절성, 반복되는 리듬

계절성은 규칙적으로 반복되는 패턴입니다. 여름의 아이스크림, 겨울의 패딩, 연말의 선물 쇼핑처럼 매년 같은 시기에 같은 일이 벌어집니다. 우리 데이터에서는 11월과 12월에 매출이 가장 높고, 1월과 2월에 가장 낮습니다. 12월 매출은 1월의 2.4배이고, 하반기가 한 해 매출의 57.9%를 차지합니다. 연말 쇼핑 시즌이라는 계절성이 뚜렷합니다.

계절성을 알면 언제 바쁠지 미리 알 수 있습니다. 추세가 "우리는 어디로 가고 있는가"를 답한다면, 계절성은 "언제 준비해야 하는가"를 답합니다.

우리 데이터는 2024년 한 해뿐입니다. 엄밀하게 말하면 "매년 반복된다"는 계절성을 확인하려면 최소 2년치는 있어야 합니다. 연말 쇼핑 시즌은 업계의 상식과도 맞아떨어지므로 이 과정에서는 계절성으로 보고 진행하지만, 실무에서는 여러 해의 데이터로 반복 여부를 확인하는 것이 원칙입니다.

1.5 주기와 불규칙은 가볍게

주기는 계절성보다 긴 파동입니다. 몇 년에 걸친 경기 변동처럼 오르내리기는 하지만 간격이 일정하지 않습니다. 1년치 데이터로는 볼 수 없으니 지금은 이름만 알아두면 됩니다.

불규칙은 설명되지 않는 우연한 변동입니다. 갑작스러운 이벤트나 하루짜리 급증이 여기에 속합니다. 추세와 계절성을 걷어내고 남는 부분이라고 생각하면 됩니다. 이 나머지가 유난히 클 때 "그날 무슨 일이 있었지?"라고 조사하는 것이 이상 감지의 출발점입니다.

1.6 패턴별 대응

패턴을 읽는 이유는 그림을 예쁘게 그리기 위해서가 아닙니다. 패턴마다 할 수 있는 일이 따로 있습니다.

발견한 패턴할 수 있는 일
연말에 매출 최고 (계절성)재고를 미리 확보하고 인력을 추가 배치
매출 상승 추세성장에 맞춰 투자와 확장 계획
어느 날 갑자기 급증 (불규칙)이상 감지, "무슨 일이 있었지?" 조사

패턴을 알면 사후 대응이 아니라 사전 준비가 됩니다. 연말이 바쁠 것을 미리 알면 재고를 쌓아 두고, 성장 추세를 보면 확장을 계획합니다. 이것이 4장에서 배운 선행지표 관리와 같은 정신입니다. 결과가 나온 뒤에 놀라는 대신, 신호를 읽고 먼저 움직이는 것입니다.

1.7 Gemini로 우리 데이터의 패턴 찾기

이제 직접 찾아봅니다. Colab에 orders.csv를 올리고 Gemini에게 차례로 요청합니다.

월별 매출을 선그래프로 그리고, 상승/하락 추세가 있는지 알려줘

상승 추세가 있다는 답과 함께 우상향하는 선그래프가 나오면 정상입니다.

어느 달이 가장 높고 낮은지, 계절적인 패턴이 있는지 분석해줘

11월과 12월이 가장 높고 1월과 2월이 가장 낮다는 답, 그리고 연말 성수기라는 해석이 나옵니다.

요일별 매출 패턴도 있는지 확인해줘

이 질문은 조금 다른 결과를 줍니다. 요일별 매출은 화요일이 약 2,806만 원으로 가장 높고 일요일이 약 2,363만 원으로 가장 낮지만, 월별처럼 뚜렷한 차이는 아닙니다. Gemini가 "뚜렷한 요일 패턴은 없다"고 답할 수도 있습니다.

그것도 발견입니다. 모든 항목에 패턴이 있는 것은 아니고, "여기에는 패턴이 없다"는 것을 확인하는 것도 분석입니다. 요일별로 인력을 다르게 배치할 필요가 없다는 결론은 그 자체로 유용한 정보입니다.

월별로는 12월이 1월의 2.4배지만, 요일별로는 가장 큰 날과 작은 날의 차이가 1.2배뿐이다.

세 프롬프트의 결과를 직접 계산해 나란히 그린 그림입니다. 왼쪽 월별 매출은 6월(1,116만 원)과 8월(1,388만 원)에 잠깐 꺼지지만 1월 941만 원에서 12월 2,240만 원까지 오르는 방향이 분명합니다. 오른쪽은 1년치 매출을 요일별로 더한 것으로, 가장 많은 화요일(2,806만 원)과 가장 적은 일요일(2,363만 원)의 차이가 1.2배입니다. 왼쪽의 2.4배와 견주면 작은 차이입니다. 두 그래프의 세로축 단위가 다르다는 점도 함께 보세요. 요일별 값은 52주를 더한 합계라 월별 값보다 큽니다. Gemini가 그린 그래프의 세로축이 0에서 시작하지 않으면 요일 차이가 실제보다 크게 보일 수 있으니, 3장 4절의 '오해의 시각화'를 떠올려 축부터 확인합니다.

결과를 받았으면 3장에서 배운 검증 3질문을 적용하세요. 월별 매출 합계가 총매출 약 1.84억 원과 맞아떨어지는지, AI가 "매출"을 합계로 계산했는지 평균으로 계산했는지 물어보면 됩니다.

1.8 직접 해보기

  1. 위 세 프롬프트를 그대로 실행하고, 월별 매출 합계가 총매출과 일치하는지 검증해 봅니다.
  2. 카테고리별로 월별 매출 선그래프를 그려 달라고 요청해, 연말 상승이 모든 카테고리에서 나타나는지 특정 카테고리에서만 나타나는지 확인해 봅니다.
  3. 6월과 8월에 매출이 잠깐 떨어진 것은 네 가지 패턴 중 무엇에 가까운지 생각해 보고, 확인하려면 어떤 데이터가 더 필요할지 적어 봅니다.
  4. 매년 여름에 아이스크림이 잘 팔리는 것은 네 가지 패턴 중 무엇인지, 그 패턴을 알면 재고 관리에 어떻게 활용할 수 있는지 자기 말로 설명해 봅니다.

마지막 수정