<jupyter_start><jupyter_text>[Module 1] 데이타 준비 (Prepare data file)* 이 노트북에서는 입력 데이타를 Forecast에 입력이 될 포맷으로 학습 (Train) 과 검증셋(Validation)으로 나누는 작업을 합니다. **자세한 과정을 알고 싶으시면 0.LookAt_RawData 노트북 을 실행 해주세요.** (Please refer to the 0.LookAt_RawData.ipynb if you see a process of handling a raw data file handled)    - 데이타는 아래 데이타 소스에서 train.csv 파일을 다운로드 받아서 data 폴더에 train.csv로 저장한 것을 사용 합니다.    - Data Source: Store Item Demand Forecasting Challenge,  https://www.kaggle.com/c/demand-forecasting-kernels-only/overview* 이 노트북은 약 3분 정도 소요 됩니다. **About 3 mins may be elapsed**<jupyter_code>import boto3
from time import sleep
import os
import pandas as pd
import json
import time
import pprint
import numpy as np<jupyter_output><empty_output><jupyter_text>Create Target Time Series File and Validation File- 실제 Raw 데이터를 Forecast에 들어갈 데이타 포맷으로 바꾸는 작업을 합니다.<jupyter_code>data_dir = 'data'
train_file_name = 'train.csv'
train_data = pd.read_csv(os.path.join(data_dir,train_file_name))
train_df = train_data.copy()
train_df = train_df.rename(columns={'item':'item_id'})
train_df = train_df.set_index('date')
train_df.store = train_df.store.astype(str)
train_df.item_id = train_df.item_id.astype(str)
train_df.index = pd.to_datetime(train_df.index, format = '%Y-%m-%d')
# train_df.index = train_df.index.strftime('%Y-%m-%d %H:%M:%S')
cols_order = ['item_id', 'store','sales']
train_df = train_df[cols_order]

train_df.head()
train_df.tail()<jupyter_output><empty_output><jupyter_text>Split into target file and validation file- 실제 데이타는 5년의 데이타가 있지만, 학습 속도를 빠르게 하기 위해서 2년치의 데이타만을 사용합니다. 2년 데이타에서 23개월은 학습 데이터로 사용을 하고 마지막 1개월은 검증 데이터로 사용 합니다.<jupyter_code>print(train_df.index.max())
print(train_df.index.min())
start_train_date = '2015-01-01' # Inclusive
end_train_date = '2017-12-01' # Inclusive
end_val_date = '2018-01-01' # Non-inclusive
stores_sales = train_df.copy()
target_stores_sales = stores_sales[stores_sales.index >= start_train_date]
target_stores_sales = target_stores_sales[target_stores_sales.index < end_train_date]
validation_stores_sales = stores_sales[stores_sales.index >= end_train_date]
validation_stores_sales = validation_stores_sales[validation_stores_sales.index < end_val_date]

target_stores_sales.info()
validation_stores_sales.info()<jupyter_output><class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 15500 entries, 2017-12-01 to 2017-12-31
Data columns (total 3 columns):
item_id    15500 non-null object
store      15500 non-null object
sales      15500 non-null int64
dtypes: int64(1), object(2)
memory usage: 484.4+ KB<jupyter_text>- CSV 파일에 학습과 검증셋의 데이타를 저장 합니다.<jupyter_code># With the data in a great state, save it off as a CSV
target_time_series_filename = "target_time_series.csv"
target_time_series_path = data_dir + "/" + target_time_series_filename
target_stores_sales.to_csv(target_time_series_path, header=False)
# With the data in a great state, save it off as a CSV
validation_time_series_filename = "validation_time_series.csv"
validation_time_series_path = data_dir + "/" + validation_time_series_filename
validation_stores_sales.to_csv(validation_time_series_path, header=False)<jupyter_output><empty_output><jupyter_text>- 다음 노트북에서 사용을 하기 위해서, 이 노트북에서 저장한 변수를 디스크에 저장을 합니다.만약 아래의 코드에 에러가 발생을 했다고 하면, 이 노트북을 처음부터 다시 실행 해주세요.<jupyter_code>%store target_time_series_filename
%store target_time_series_path
%store target_stores_sales
%store validation_time_series_filename
%store validation_time_series_path
%store validation_stores_sales

%store start_train_date 
%store end_train_date 
%store end_val_date<jupyter_output>Stored 'target_time_series_filename' (str)
Stored 'target_time_series_path' (str)
Stored 'target_stores_sales' (DataFrame)
Stored 'validation_time_series_filename' (str)
Stored 'validation_time_series_path' (str)
Stored 'validation_stores_sales' (DataFrame)
Stored 'start_train_date' (str)
Stored 'end_train_date' (str)
Stored 'end_val_date' (str)
{'fraction_non_alphanumeric': 0.09456688877498719, 'fraction_numerical': 0.021271143003587904, 'mean_word_length': 6.623046875, 'pattern_counts': {'":': 0, '<': 22, '<?xml version=': 0, '>': 22, 'https://': 1, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '124277', 'license': 'MIT', 'n_tokens_mistral': 1769, 'n_tokens_neox': 1851, 'n_words': 354, 'path': 'StoreItemDemand/.ipynb_checkpoints/1.Prepare_Data_File-checkpoint.ipynb', 'repo_name': 'jihys/startup-forecast-workshop', 'size': '3902'}