{"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":"### 라이브러리 확인","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nprint(\"Pandas version\", pd.__version__)","metadata":{"execution":{"iopub.status.busy":"2022-11-18T05:56:46.004439Z","iopub.execute_input":"2022-11-18T05:56:46.005504Z","iopub.status.idle":"2022-11-18T05:56:46.029779Z","shell.execute_reply.started":"2022-11-18T05:56:46.005348Z","shell.execute_reply":"2022-11-18T05:56:46.028715Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## RAPIDS - Data Science with GPU\n\n\nReference : https://rapids.ai/\n\ncudf : https://docs.rapids.ai/api/cudf/stable/\n\ncuml : https://docs.rapids.ai/api/cuml/stable/","metadata":{}},{"cell_type":"code","source":"import cudf\nprint(\"RAPIDS version\", cudf.__version__)","metadata":{"execution":{"iopub.status.busy":"2022-07-15T07:35:59.364746Z","iopub.execute_input":"2022-07-15T07:35:59.365155Z","iopub.status.idle":"2022-07-15T07:36:04.274707Z","shell.execute_reply.started":"2022-07-15T07:35:59.365119Z","shell.execute_reply":"2022-07-15T07:36:04.273648Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Load Transaction data\n\n- pandas로 데이터를 읽어온 뒤, 기본적인 데이터를 확인해봅니다.","metadata":{}},{"cell_type":"code","source":"# Load data (pandas version)\n# train = pd.read_csv(\"../input/h-and-m-personalized-fashion-recommendations/transactions_train.csv\",\n#                    dtype={'article_id' : str}, \n#                    parse_dates=[\"t_dat\"])\n# train","metadata":{"execution":{"iopub.status.busy":"2022-07-15T07:36:04.305346Z","iopub.execute_input":"2022-07-15T07:36:04.305788Z","iopub.status.idle":"2022-07-15T07:36:04.314201Z","shell.execute_reply.started":"2022-07-15T07:36:04.305752Z","shell.execute_reply":"2022-07-15T07:36:04.313267Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Check memory usage\n# mem_usage = train.memory_usage(deep=True).sum() / 1024 / 1024 / 1024\n# print(f\"Memory Usage : {mem_usage:.4} GiB\")","metadata":{"execution":{"iopub.status.busy":"2022-07-15T07:36:04.31538Z","iopub.execute_input":"2022-07-15T07:36:04.316006Z","iopub.status.idle":"2022-07-15T07:36:04.328053Z","shell.execute_reply.started":"2022-07-15T07:36:04.315969Z","shell.execute_reply":"2022-07-15T07:36:04.327125Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Reduce data size via cudf\n\nReference : https://www.kaggle.com/competitions/h-and-m-personalized-fashion-recommendations/discussion/308635","metadata":{}},{"cell_type":"code","source":"# Load data (cudf version)\ntrain = cudf.read_csv('../input/h-and-m-personalized-fashion-recommendations/transactions_train.csv')\n\n# customer_id 데이터를 식별가능한 선에서 더 적은 사이즈로 변환합니다.\ntrain['customer_id'] = train.customer_id.str[-16:].str.hex_to_int().astype('int64')\n# article_id를 더 작은 사이즈의 data type으로 변환합니다.\ntrain['article_id'] = train.article_id.astype('int32')\n# t_dat column은 시간 정보로 변환합니다.\ntrain.t_dat = cudf.to_datetime(train.t_dat)\n\n# 나머지 column들은 제외합니다.\ntrain = train[['t_dat','customer_id','article_id']]\n\n# I/O를 줄이기 위해서 parquet 타입으로 변환합니다.\ntrain.to_parquet('train.pqt', index=False)\ntrain","metadata":{"execution":{"iopub.status.busy":"2022-07-15T07:36:04.329605Z","iopub.execute_input":"2022-07-15T07:36:04.329955Z","iopub.status.idle":"2022-07-15T07:36:45.508377Z","shell.execute_reply.started":"2022-07-15T07:36:04.32992Z","shell.execute_reply":"2022-07-15T07:36:45.507462Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Check memory usage\nmem_usage = train.memory_usage(deep=True).sum() / 1024 / 1024 / 1024\nprint(f\"Memory Usage : {mem_usage:.4} GiB\")","metadata":{"execution":{"iopub.status.busy":"2022-07-15T07:36:45.51244Z","iopub.execute_input":"2022-07-15T07:36:45.512743Z","iopub.status.idle":"2022-07-15T07:36:45.524635Z","shell.execute_reply.started":"2022-07-15T07:36:45.512716Z","shell.execute_reply":"2022-07-15T07:36:45.523536Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import gc\ngc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-07-15T07:36:45.52611Z","iopub.execute_input":"2022-07-15T07:36:45.52727Z","iopub.status.idle":"2022-07-15T07:36:45.668973Z","shell.execute_reply.started":"2022-07-15T07:36:45.527229Z","shell.execute_reply":"2022-07-15T07:36:45.667967Z"},"trusted":true},"execution_count":null,"outputs":[]}]}