{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"## 9.2 향후 판매량 예측 경진대회 탐색적 데이터 분석¶","metadata":{"papermill":{"duration":0.024117,"end_time":"2021-09-11T07:42:47.610822","exception":false,"start_time":"2021-09-11T07:42:47.586705","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"## 9.2.1 데이터 둘러보기","metadata":{}},{"cell_type":"code","source":"import pandas as pd\n\n# 데이터 경로\ndata_path = '/kaggle/input/competitive-data-science-predict-future-sales/'\n\nsales_train = pd.read_csv(data_path + 'sales_train.csv')\nshops = pd.read_csv(data_path + 'shops.csv')\nitems = pd.read_csv(data_path + 'items.csv')\nitem_categories = pd.read_csv(data_path + 'item_categories.csv')\ntest = pd.read_csv(data_path + 'test.csv')\nsubmission = pd.read_csv(data_path + 'sample_submission.csv')","metadata":{"papermill":{"duration":2.855857,"end_time":"2021-09-11T07:42:50.493438","exception":false,"start_time":"2021-09-11T07:42:47.637581","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-03-05T06:42:35.029784Z","iopub.execute_input":"2022-03-05T06:42:35.030145Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### sales_train 데이터","metadata":{"papermill":{"duration":0.023678,"end_time":"2021-09-11T07:42:50.54258","exception":false,"start_time":"2021-09-11T07:42:50.518902","status":"completed"},"tags":[]}},{"cell_type":"code","source":"sales_train.head()","metadata":{"papermill":{"duration":0.050468,"end_time":"2021-09-11T07:42:50.617023","exception":false,"start_time":"2021-09-11T07:42:50.566555","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sales_train.info(show_counts=True)","metadata":{"papermill":{"duration":0.397857,"end_time":"2021-09-11T07:42:51.039998","exception":false,"start_time":"2021-09-11T07:42:50.642141","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### shops 데이터","metadata":{"papermill":{"duration":0.024635,"end_time":"2021-09-11T07:42:51.089586","exception":false,"start_time":"2021-09-11T07:42:51.064951","status":"completed"},"tags":[]}},{"cell_type":"code","source":"shops.head()","metadata":{"papermill":{"duration":0.038858,"end_time":"2021-09-11T07:42:51.15363","exception":false,"start_time":"2021-09-11T07:42:51.114772","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"shops.info()","metadata":{"papermill":{"duration":0.040148,"end_time":"2021-09-11T07:42:51.219816","exception":false,"start_time":"2021-09-11T07:42:51.179668","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### items 데이터","metadata":{"papermill":{"duration":0.02549,"end_time":"2021-09-11T07:42:51.272867","exception":false,"start_time":"2021-09-11T07:42:51.247377","status":"completed"},"tags":[]}},{"cell_type":"code","source":"items.head()","metadata":{"papermill":{"duration":0.039263,"end_time":"2021-09-11T07:42:51.338491","exception":false,"start_time":"2021-09-11T07:42:51.299228","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"items.info()","metadata":{"papermill":{"duration":0.045408,"end_time":"2021-09-11T07:42:51.409909","exception":false,"start_time":"2021-09-11T07:42:51.364501","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### item_categories 데이터","metadata":{"papermill":{"duration":0.026293,"end_time":"2021-09-11T07:42:51.464626","exception":false,"start_time":"2021-09-11T07:42:51.438333","status":"completed"},"tags":[]}},{"cell_type":"code","source":"item_categories.head()","metadata":{"papermill":{"duration":0.038888,"end_time":"2021-09-11T07:42:51.529988","exception":false,"start_time":"2021-09-11T07:42:51.4911","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"item_categories.info()","metadata":{"papermill":{"duration":0.042862,"end_time":"2021-09-11T07:42:51.599736","exception":false,"start_time":"2021-09-11T07:42:51.556874","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 테스트 데이터","metadata":{"papermill":{"duration":0.027033,"end_time":"2021-09-11T07:42:51.654956","exception":false,"start_time":"2021-09-11T07:42:51.627923","status":"completed"},"tags":[]}},{"cell_type":"code","source":"test.head()","metadata":{"papermill":{"duration":0.039968,"end_time":"2021-09-11T07:42:51.722226","exception":false,"start_time":"2021-09-11T07:42:51.682258","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 데이터 병합","metadata":{"papermill":{"duration":0.027577,"end_time":"2021-09-11T07:42:51.777761","exception":false,"start_time":"2021-09-11T07:42:51.750184","status":"completed"},"tags":[]}},{"cell_type":"code","source":"train = sales_train.merge(shops, on='shop_id', how='left')\ntrain = train.merge(items, on='item_id', how='left')\ntrain = train.merge(item_categories, on='item_category_id', how='left')\n\ntrain.head()","metadata":{"papermill":{"duration":1.410432,"end_time":"2021-09-11T07:42:53.216199","exception":false,"start_time":"2021-09-11T07:42:51.805767","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 피처 요약표 만들기\n","metadata":{"papermill":{"duration":0.028144,"end_time":"2021-09-11T07:42:53.273543","exception":false,"start_time":"2021-09-11T07:42:53.245399","status":"completed"},"tags":[]}},{"cell_type":"code","source":"def resumetable(df):\n    print(f'데이터 세트 형상: {df.shape}')\n    summary = pd.DataFrame(df.dtypes, columns=['데이터 타입'])\n    summary = summary.reset_index()\n    summary = summary.rename(columns={'index': '피처'})\n    summary['결측값 개수'] = df.isnull().sum().values\n    summary['고윳값 개수'] = df.nunique().values\n    summary['첫 번째 값'] = df.loc[0].values\n    summary['두 번째 값'] = df.loc[1].values\n    \n    return summary","metadata":{"papermill":{"duration":0.045257,"end_time":"2021-09-11T07:42:53.347191","exception":false,"start_time":"2021-09-11T07:42:53.301934","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"resumetable(train)","metadata":{"papermill":{"duration":3.205732,"end_time":"2021-09-11T07:42:56.597966","exception":false,"start_time":"2021-09-11T07:42:53.392234","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 9.2.2 데이터 시각화","metadata":{"papermill":{"duration":0.029142,"end_time":"2021-09-11T07:42:56.660787","exception":false,"start_time":"2021-09-11T07:42:56.631645","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"### 일별 판매량","metadata":{"papermill":{"duration":0.029501,"end_time":"2021-09-11T07:42:56.719566","exception":false,"start_time":"2021-09-11T07:42:56.690065","status":"completed"},"tags":[]}},{"cell_type":"code","source":"import seaborn as sns\nimport matplotlib as mpl\nimport matplotlib.pyplot as plt\n%matplotlib inline\n\nsns.boxplot(y='item_cnt_day', data=train);","metadata":{"papermill":{"duration":2.263614,"end_time":"2021-09-11T07:42:59.013178","exception":false,"start_time":"2021-09-11T07:42:56.749564","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 상품 가격","metadata":{"papermill":{"duration":0.030111,"end_time":"2021-09-11T07:42:59.074223","exception":false,"start_time":"2021-09-11T07:42:59.044112","status":"completed"},"tags":[]}},{"cell_type":"code","source":"sns.boxplot(y='item_price', data=train);","metadata":{"papermill":{"duration":1.291327,"end_time":"2021-09-11T07:43:00.401743","exception":false,"start_time":"2021-09-11T07:42:59.110416","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 그룹화","metadata":{"papermill":{"duration":0.030393,"end_time":"2021-09-11T07:43:00.462796","exception":false,"start_time":"2021-09-11T07:43:00.432403","status":"completed"},"tags":[]}},{"cell_type":"code","source":"group = train.groupby('date_block_num').agg({'item_cnt_day': 'sum'})\ngroup.reset_index() # 인덱스 재설정","metadata":{"papermill":{"duration":0.103389,"end_time":"2021-09-11T07:43:00.596827","exception":false,"start_time":"2021-09-11T07:43:00.493438","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 월별 판매량","metadata":{"papermill":{"duration":0.031113,"end_time":"2021-09-11T07:43:00.659695","exception":false,"start_time":"2021-09-11T07:43:00.628582","status":"completed"},"tags":[]}},{"cell_type":"code","source":"mpl.rc('font', size=13)\nfigure, ax = plt.subplots() \nfigure.set_size_inches(11, 5)\n\n# 월별 총 상품 판매량\ngroup_month_sum = train.groupby('date_block_num').agg({'item_cnt_day': 'sum'})\ngroup_month_sum = group_month_sum.reset_index()\n\n# 월별 총 상품 판매량 막대그래프\nsns.barplot(x='date_block_num', y='item_cnt_day', data=group_month_sum)\n# 그래프 제목, x축 라벨, y축 라벨명 설정\nax.set(title='Distribution of monthly item counts by date block number',\n       xlabel='Date block number', \n       ylabel='Monthly item counts');","metadata":{"papermill":{"duration":0.625596,"end_time":"2021-09-11T07:43:01.316916","exception":false,"start_time":"2021-09-11T07:43:00.69132","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 상품분류별 판매량","metadata":{"papermill":{"duration":0.032102,"end_time":"2021-09-11T07:43:01.381471","exception":false,"start_time":"2021-09-11T07:43:01.349369","status":"completed"},"tags":[]}},{"cell_type":"code","source":"figure, ax= plt.subplots() \nfigure.set_size_inches(11, 5)\n\n# 상품분류별 총 상품 판매량\ngroup_cat_sum = train.groupby('item_category_id').agg({'item_cnt_day': 'sum'})\ngroup_cat_sum = group_cat_sum.reset_index()\n\n# 총 판매량이 10,000개를 초과하는 상품분류만 추출\ngroup_cat_sum = group_cat_sum[group_cat_sum['item_cnt_day'] > 10000]\n\n# 상품분류별 총 상품 판매량 막대그래프\nsns.barplot(x='item_category_id', y='item_cnt_day', data=group_cat_sum)\nax.set(title='Distribution of total item counts by item category id',\n       xlabel='Item category ID', \n       ylabel='Total item counts')\nax.tick_params(axis='x', labelrotation=90) # x축 라벨 회전","metadata":{"papermill":{"duration":0.909324,"end_time":"2021-09-11T07:43:02.323389","exception":false,"start_time":"2021-09-11T07:43:01.414065","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 상점별 판매량","metadata":{"papermill":{"duration":0.033112,"end_time":"2021-09-11T07:43:02.389763","exception":false,"start_time":"2021-09-11T07:43:02.356651","status":"completed"},"tags":[]}},{"cell_type":"code","source":"figure, ax= plt.subplots() \nfigure.set_size_inches(11, 5)\n\n# 상점별 총 상품 판매량\ngroup_shop_sum = train.groupby('shop_id').agg({'item_cnt_day': 'sum'})\ngroup_shop_sum = group_shop_sum.reset_index()\n\ngroup_shop_sum = group_shop_sum[group_shop_sum['item_cnt_day'] > 10000]\n\n# 상점별 총 상품 판매량 막대그래프\nsns.barplot(x='shop_id', y='item_cnt_day', data=group_shop_sum)\nax.set(title='Distribution of total item counts by shop id',\n       xlabel='Shop ID', \n       ylabel='Total item counts')\nax.tick_params(axis='x', labelrotation=90)","metadata":{"papermill":{"duration":0.891601,"end_time":"2021-09-11T07:43:03.314547","exception":false,"start_time":"2021-09-11T07:43:02.422946","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]}]}