다음달 판매 예측
2024. 10. 2. 18:00ㆍ데이터분석
프로젝트 개요
과거 3개월치 판매 데이터를 기반으로 4월 판매량을 예측하고,
안전재고와 현재고를 고려하여 필요 생산 수량 값 산출함으로써 재고 관리의 효율성을 높이는 것이 목표.
기술 스택
- 프로그래밍 언어: Python
- 라이브러리: Pandas, NumPy, Scikit-Learn, OpenPyXL
- 모델링 기법: 선형 회귀 (Linear Regression)
프로젝트 상세 설명
데이터 분석 및 초기 계산값 활용
- 데이터 로드 및 정리: Excel 파일에서 데이터를 불러와 필요한 열을 정리하고,
결측치를 제거하여 분석에 적합한 데이터셋을 생성 - 엑셀 계산값 활용: Excel에서 판매 이동평균과 안전재고를 미리 계산하여 Python에서 추가로 활용
더보기

=STDEV(D3:F3)*SQRT(K3)*T3
' D3:F3 1M, 2M, 3M 판매량
' K3 리드타임
' T3 결품목표

4월 판매량 예측
- 모델 학습: Scikit-Learn의 LinearRegression을 사용하여 1, 2, 3월 데이터를 기반으로 선형 회귀 모델을 학습.
- 4월 예측 값 계산: 학습된 모델을 통해 4월 판매량을 예측하고, 예측 값을 각 제품에 대해 저장.
안전재고 및 재고 수준 적용
- 최종 조정 값 계산: 예측한 4월 판매량에 각 제품의 안전재고를 더하고, 현재 재고 수준을 빼서 최종 조정 값을 계산.
- 조정 기준 적용: 계산된 최종 값이 0보다 작으면 0으로 설정하여, 재고 부족 상태를 방지할 수 있도록 조정.
더보기

코드
# 각 제품에 대해 4월 예측 값 및 안전재고와 현재고를 적용한 최종 값 계산
for index, row in New_DF.iterrows():
y_all = np.array([row['1M'], row['2M'], row['3M']]).reshape(-1, 1)
# 모델 학습 (전체 데이터를 사용)
model = LinearRegression().fit(X_all, y_all)
# 4월 예측 값 계산
predicted_sales = model.predict(np.array([[4]]))[0][0]
# 안전재고 더하고 현재고 빼기
adjusted_value = predicted_sales + row['안전재고'] - row['현재고']
# 최종 조정 값이 0보다 작으면 0으로 설정
adjusted_value = max(0, adjusted_value)
# 결과 저장
results.append({
'제품코드': row['제품코드'],
'Predicted 4M Sales': predicted_sales,
'Safety Stock (T)': row['안전재고'],
'Current Stock (G)': row['현재고'],
'Final Adjusted Value': adjusted_value
})
# 결과를 DataFrame으로 변환하여 상위 5개만 출력
results_df = pd.DataFrame(results)
print(results_df.head(5))
결과

결과 저장 및 시각화
- 결과 저장: 최종 결과를 DataFrame 형태로 정리하고, 엑셀 파일에 저장하여 재고 관리에 활용할 수 있도록 결과저장
더보기

코드
# 기존 엑셀 파일 불러오기
wb = openpyxl.load_workbook("C:\\Users\\KOPO\\Desktop\\SALES_DATA.xlsx")
ws = wb["4M예측"]
# 4월 예측 값(M열 3행부터)과 계산된 값(N열 3행부터) 기록
for idx, row in results_df.iterrows():
ws.cell(row=idx + 3, column=13, value=row['Predicted 4M Sales']) # M열 (13번째 열)
ws.cell(row=idx + 3, column=14, value=row['Final Adjusted Value']) # N열 (14번째 열)
# 엑셀 파일 저장
wb.save("C:\\Users\\KOPO\\Desktop\\SALES_DATA_4Mpred.xlsx")
print("예측 값과 계산된 값이 엑셀 파일에 저장되었습니다.")
결과

결과 및 고찰
- 정확한 예측 기반 재고 관리:
과거 3개월 데이터를 바탕으로 4월 판매량을 예측하여, 보다 정확한 재고 예측 및 관리가 가능해졌습니다. - 재고 조정 최적화: 엑셀에서 미리 계산된 안전재고와 현재 재고 수준을 활용한 최종 조정 값을 통해 불필요한 재고를 줄이는 효율적인 재고 관리 방안을 마련했습니다.
단순 평균 대신 성형 회귀를 사용하여 데이터의 전체적인 추세를 더 잘 파악할수 있었습니다.
단순 평균이나 이동 평균을 사용하면 특정 구간의 평균 값을 얻을 수 있지만,
시간에 따른 변화 방향을 제대로 반영하지 못하는 한계가 있습니다.
선형회귀는 데이터의 전반적인 상승이나 하락 경향을 고려하여 예측 값을 계산하기 때문에 단순 평균보다 더 현실적인 결과를 제공합니다.
하지만 이번 분석에서는 월별 변화가 3개월 치 데이터에 한정되어 있어 전체적인 추세를 충분히 파악했는지에 대한 아쉬움이 남습니다. 다음에는 더 많은 데이터를 활용하여 더욱 신뢰도 높은 분석을 시도해 보려고 합니다
'데이터분석' 카테고리의 다른 글
판매 건수를 통한 서버 최적화 (0) | 2024.10.12 |
---|---|
판매율 기반 군집 (0) | 2024.10.11 |
Boston 범죄데이터 분석 (0) | 2024.09.30 |
제품 판매 데이터 분석 (0) | 2024.07.22 |