{"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":"code","source":"\n# import polars as pl\nimport pandas as pd\nfrom tqdm import tqdm","metadata":{"_uuid":"b78e51a9-dbfe-4fdc-a10c-94f707a64a2d","_cell_guid":"7938f56a-96c8-49b9-8a1b-1351301f1fb4","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2022-11-27T13:10:42.548310Z","iopub.execute_input":"2022-11-27T13:10:42.548765Z","iopub.status.idle":"2022-11-27T13:10:42.555130Z","shell.execute_reply.started":"2022-11-27T13:10:42.548723Z","shell.execute_reply":"2022-11-27T13:10:42.554098Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Loading files**","metadata":{"_uuid":"d6640846-4f40-494d-9009-88a151d31233","_cell_guid":"64248866-b429-4403-a50c-03199efda282","trusted":true}},{"cell_type":"code","source":"train = pd.read_parquet('../input/otto-full-optimized-memory-footprint/train.parquet')\ntest = pd.read_parquet('../input/otto-full-optimized-memory-footprint/test.parquet')","metadata":{"execution":{"iopub.status.busy":"2022-11-27T13:10:58.984909Z","iopub.execute_input":"2022-11-27T13:10:58.985410Z","iopub.status.idle":"2022-11-27T13:11:21.075083Z","shell.execute_reply.started":"2022-11-27T13:10:58.985372Z","shell.execute_reply":"2022-11-27T13:11:21.073914Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_test = pd.concat([train, test])","metadata":{"execution":{"iopub.status.busy":"2022-11-27T13:16:48.599989Z","iopub.execute_input":"2022-11-27T13:16:48.601072Z","iopub.status.idle":"2022-11-27T13:16:53.604635Z","shell.execute_reply.started":"2022-11-27T13:16:48.601026Z","shell.execute_reply":"2022-11-27T13:16:53.603355Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"top20 = train_test.groupby('aid') \\\n                  .ts.count() \\\n                  .sort_values(ascending=False) \\\n                  .head(20) \\\n                  .to_list()","metadata":{"execution":{"iopub.status.busy":"2022-11-27T13:21:22.765803Z","iopub.execute_input":"2022-11-27T13:21:22.766774Z","iopub.status.idle":"2022-11-27T13:21:43.599675Z","shell.execute_reply.started":"2022-11-27T13:21:22.766728Z","shell.execute_reply":"2022-11-27T13:21:43.598393Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Let's get top 20 results for each type","metadata":{"_uuid":"787069ee-e4a0-4489-b2e2-119c27ad8a04","_cell_guid":"6f218afe-c4b2-489a-b402-17e3560de314","trusted":true}},{"cell_type":"code","source":"# top20_clicks = train_df[train_df.type == 'clicks'].groupby('aid').ts.count().sort_values(ascending=False).head(20)\n# top20_carts = train_df[train_df.type == 'carts'].groupby('aid').ts.count().sort_values(ascending=False).head(20)\n# top20_orders = train_df[train_df.type == 'orders'].groupby('aid').ts.count().sort_values(ascending=False).head(20)","metadata":{"_uuid":"c3507cdc-b8c4-4d5a-ab6f-606766cde89b","_cell_guid":"5157512a-8404-453a-a2ba-aeb5d46cf18e","collapsed":false,"execution":{"iopub.status.busy":"2022-11-17T12:29:13.779559Z","iopub.execute_input":"2022-11-17T12:29:13.779900Z","iopub.status.idle":"2022-11-17T12:29:16.606011Z","shell.execute_reply.started":"2022-11-17T12:29:13.779870Z","shell.execute_reply":"2022-11-17T12:29:16.604958Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# top20_orders.index","metadata":{"_uuid":"27e449fe-68d9-4e57-a63f-05b886008e79","_cell_guid":"aaf704f1-3ddd-44d8-94f8-785f93876c8c","collapsed":false,"execution":{"iopub.status.busy":"2022-11-17T12:29:16.607438Z","iopub.execute_input":"2022-11-17T12:29:16.607770Z","iopub.status.idle":"2022-11-17T12:29:16.614363Z","shell.execute_reply.started":"2022-11-17T12:29:16.607741Z","shell.execute_reply":"2022-11-17T12:29:16.613575Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# top20_clicks = list(top20_clicks.index)\n# top20_clicks_str = \" \".join(map(str,top20_clicks))\n\n# top20_carts = list(top20_carts.index)\n# top20_carts_str = \" \".join(map(str,top20_carts))\n\n# top20_orders = list(top20_orders.index)\n# top20_orders_str = \" \".join(map(str,top20_orders))","metadata":{"_uuid":"ac26c087-1ad4-4a0d-bbaf-aa5e4d6ec712","_cell_guid":"d9ed2063-5cca-44c1-9e65-309edb08d3fb","collapsed":false,"execution":{"iopub.status.busy":"2022-11-17T12:29:16.615731Z","iopub.execute_input":"2022-11-17T12:29:16.616042Z","iopub.status.idle":"2022-11-17T12:29:16.626690Z","shell.execute_reply.started":"2022-11-17T12:29:16.616012Z","shell.execute_reply":"2022-11-17T12:29:16.625501Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Information from test_df","metadata":{"_uuid":"f5de0e41-c43d-483d-9e2a-cd3140da3e25","_cell_guid":"67462888-6c14-4c0a-80a8-76278569cd3e","trusted":true}},{"cell_type":"code","source":"# test_df_clicks = test_df[test_df.type == 'clicks']\n# test_df_carts = test_df[test_df.type == 'carts']\n# test_df_orders = test_df[test_df.type == 'orders']","metadata":{"_uuid":"1c9269bd-1e13-40d6-911c-bd0084d2c2a8","_cell_guid":"caf45f09-cad7-40cc-8e02-d36c3d120c1e","collapsed":false,"execution":{"iopub.status.busy":"2022-11-17T12:29:16.656508Z","iopub.execute_input":"2022-11-17T12:29:16.656876Z","iopub.status.idle":"2022-11-17T12:29:16.707175Z","shell.execute_reply.started":"2022-11-17T12:29:16.656841Z","shell.execute_reply":"2022-11-17T12:29:16.706365Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# pred_df_clicks = test_df_clicks.sort_values([\"session\", \"type\", \"ts\"]).groupby([\"session\"]).apply(\n#     lambda x: x.tail(20).aid.tolist()\n# )\n# pred_df_carts = test_df_carts.sort_values([\"session\", \"type\", \"ts\"]).groupby([\"session\"]).apply(\n#     lambda x: x.tail(20).aid.tolist()\n# )\n# pred_df_orders = test_df_orders.sort_values([\"session\", \"type\", \"ts\"]).groupby([\"session\"]).apply(\n#     lambda x: x.tail(20).aid.tolist()\n# )\n\n# pred_df = test_df.sort_values([\"session\", \"type\", \"ts\"]).groupby([\"session\"]).apply(\n#     lambda x: x.tail(20).aid.tolist()\n# )","metadata":{"_uuid":"b2699b63-aff5-4e0c-ad3a-91c99079579d","_cell_guid":"188d8798-8b7f-4434-9242-8fd4fe333733","collapsed":false,"execution":{"iopub.status.busy":"2022-11-17T12:29:16.710467Z","iopub.execute_input":"2022-11-17T12:29:16.711071Z","iopub.status.idle":"2022-11-17T12:29:20.241281Z","shell.execute_reply.started":"2022-11-17T12:29:16.711035Z","shell.execute_reply":"2022-11-17T12:29:20.240266Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred_df = test.sort_values([\"session\", \"type\", \"ts\"]).groupby([\"session\"]).apply(\n    lambda x: x.tail(20).aid.tolist()\n)","metadata":{"execution":{"iopub.status.busy":"2022-11-27T13:25:03.243023Z","iopub.execute_input":"2022-11-27T13:25:03.243541Z","iopub.status.idle":"2022-11-27T13:28:14.904424Z","shell.execute_reply.started":"2022-11-27T13:25:03.243503Z","shell.execute_reply":"2022-11-27T13:28:14.900793Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred_df","metadata":{"_uuid":"c52bb31c-1287-415e-93c9-9b8688f20450","_cell_guid":"a12a0cd8-2140-4295-811c-402cbfe45179","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2022-11-27T13:28:18.562033Z","iopub.execute_input":"2022-11-27T13:28:18.562500Z","iopub.status.idle":"2022-11-27T13:28:18.574676Z","shell.execute_reply.started":"2022-11-27T13:28:18.562458Z","shell.execute_reply":"2022-11-27T13:28:18.573525Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# clicks_pred_df = pd.DataFrame(pred_df_clicks.add_suffix(\"_clicks\"), columns=[\"labels\"]).reset_index()\n# orders_pred_df = pd.DataFrame(pred_df_orders.add_suffix(\"_orders\"), columns=[\"labels\"]).reset_index()\n# carts_pred_df = pd.DataFrame(pred_df_carts.add_suffix(\"_carts\"), columns=[\"labels\"]).reset_index()\n\nclicks_pred_df = pd.DataFrame(pred_df.add_suffix(\"_clicks\"), columns=[\"labels\"]).reset_index()\norders_pred_df = pd.DataFrame(pred_df.add_suffix(\"_orders\"), columns=[\"labels\"]).reset_index()\ncarts_pred_df = pd.DataFrame(pred_df.add_suffix(\"_carts\"), columns=[\"labels\"]).reset_index()","metadata":{"_uuid":"8cfd1971-6b3d-462e-87fc-abc0c8ceefab","_cell_guid":"36f573dd-255d-4ed8-93fc-1e3c5df2f379","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2022-11-27T13:28:30.557268Z","iopub.execute_input":"2022-11-27T13:28:30.558068Z","iopub.status.idle":"2022-11-27T13:28:34.440527Z","shell.execute_reply.started":"2022-11-27T13:28:30.558026Z","shell.execute_reply":"2022-11-27T13:28:34.439421Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"clicks_pred_df","metadata":{"execution":{"iopub.status.busy":"2022-11-27T13:28:41.980173Z","iopub.execute_input":"2022-11-27T13:28:41.981112Z","iopub.status.idle":"2022-11-27T13:28:41.999344Z","shell.execute_reply.started":"2022-11-27T13:28:41.981070Z","shell.execute_reply":"2022-11-27T13:28:41.998006Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Adding top 20 from train_df for each type","metadata":{"_uuid":"3572efe2-ae59-4089-8db0-101f111f72d1","_cell_guid":"9576556b-c9b0-455d-a658-b446f562b225","trusted":true}},{"cell_type":"code","source":"clicks_pred_df['labels'] = clicks_pred_df.labels.apply(lambda x: (x + top20)[:20])\nclicks_pred_df['labels'] = clicks_pred_df.labels.apply(lambda x: \" \".join(map(str,x)))\n\norders_pred_df['labels'] = orders_pred_df.labels.apply(lambda x: (x + top20)[:20])\norders_pred_df['labels'] = orders_pred_df.labels.apply(lambda x: \" \".join(map(str,x)))\n\ncarts_pred_df['labels'] = carts_pred_df.labels.apply(lambda x: (x + top20)[:20])\ncarts_pred_df['labels'] = carts_pred_df.labels.apply(lambda x: \" \".join(map(str,x)))","metadata":{"_uuid":"8a347bf9-3779-4f86-8d57-7a61b1e3e5e6","_cell_guid":"44fd91dd-0863-47bd-b32b-730a031399e0","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2022-11-27T13:29:20.702309Z","iopub.execute_input":"2022-11-27T13:29:20.702770Z","iopub.status.idle":"2022-11-27T13:29:52.129899Z","shell.execute_reply.started":"2022-11-27T13:29:20.702734Z","shell.execute_reply":"2022-11-27T13:29:52.128841Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"clicks_pred_df","metadata":{"_uuid":"ac7f89e8-9bfd-4110-80ad-2a9e522b49d4","_cell_guid":"eda862ec-17af-429f-b470-cc980626e939","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2022-11-27T13:29:57.860408Z","iopub.execute_input":"2022-11-27T13:29:57.861068Z","iopub.status.idle":"2022-11-27T13:29:57.874718Z","shell.execute_reply.started":"2022-11-27T13:29:57.861023Z","shell.execute_reply":"2022-11-27T13:29:57.873374Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred_df = pd.concat(\n    [clicks_pred_df, orders_pred_df, carts_pred_df]\n)\npred_df.columns = ['session_type', 'labels']","metadata":{"_uuid":"a6ebcf7b-df05-4a2a-8317-e9fe9770ddd3","_cell_guid":"6fdd96b8-bf40-4cff-b2b6-b5348613f790","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2022-11-27T13:31:46.599352Z","iopub.execute_input":"2022-11-27T13:31:46.600087Z","iopub.status.idle":"2022-11-27T13:31:46.911481Z","shell.execute_reply.started":"2022-11-27T13:31:46.600033Z","shell.execute_reply":"2022-11-27T13:31:46.910194Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred_df = pred_df.sort_values(by='session_type').reset_index()\npred_df = pred_df.drop('index', axis=1)\npred_df","metadata":{"_uuid":"9668258d-4148-4da6-8f9a-0de34d20d418","_cell_guid":"f34f55b1-3669-4e68-be7c-c04e4f43d075","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2022-11-27T13:31:49.964598Z","iopub.execute_input":"2022-11-27T13:31:49.965189Z","iopub.status.idle":"2022-11-27T13:31:57.685010Z","shell.execute_reply.started":"2022-11-27T13:31:49.965156Z","shell.execute_reply":"2022-11-27T13:31:57.684058Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Making submission","metadata":{"_uuid":"b1369192-8439-4cbf-bd9f-3d3c40ff6b79","_cell_guid":"6d7cd09d-04a5-4a04-ae69-cd8bcb0d2de4","trusted":true}},{"cell_type":"code","source":"pred_df.to_csv(\"submission.csv\", index=False)","metadata":{},"execution_count":null,"outputs":[]}]}