{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":84493,"databundleVersionId":9871156,"sourceType":"competition"}],"dockerImageVersionId":30822,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import polars as pl\nimport numpy as np\nimport warnings\nwarnings.filterwarnings(\"ignore\")\nfrom pathlib import Path\n\nDATA_DIR = Path('/kaggle/input/jane-street-real-time-market-data-forecasting')\nN_PARTITION = 10\n\ntrain_parquets = [DATA_DIR / f\"train.parquet/partition_id={i}/part-0.parquet\" for i in range(N_PARTITION)]\n\nprint('loading data')\nn = len(train_parquets)\ndataframes = {}\nfor item in range(n):\n    pl_train = pl.read_parquet(train_parquets[item])\n    for symbol_id in pl_train.get_column(\"symbol_id\").unique():\n        #read the data one symbol at a time in polars dataframe\n        df_symbol_id = pl_train.filter((pl.col('symbol_id') == symbol_id))\n        if not symbol_id in dataframes:\n            dataframes[symbol_id] = pl.DataFrame()\n        #now concat\n        dataframes[symbol_id] = pl.concat([dataframes[symbol_id], df_symbol_id], how=\"vertical\")\n    #print(train_parquets[item])\n\n\n\n\nnew_array = []\nfor item in sorted(dataframes):\n    data = dataframes[item]\n    time_steps_per_day = data.group_by(\"date_id\").count().sort('date_id')\n    time_steps_per_day = time_steps_per_day.rename({\"count\": \"max_time_id\"})\n    temp = time_steps_per_day.group_by(\"max_time_id\").count().sort('max_time_id')\n    t = []\n    t.append(item)\n    for i in range(len(temp)):\n        t.append(np.array(temp)[i].tolist())\n    new_array.append(t)\nnew_array","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2024-12-29T05:46:53.402178Z","iopub.execute_input":"2024-12-29T05:46:53.402577Z","iopub.status.idle":"2024-12-29T05:48:13.803633Z","shell.execute_reply.started":"2024-12-29T05:46:53.402547Z","shell.execute_reply":"2024-12-29T05:48:13.802750Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"new_array = []\nfor item in sorted(dataframes):\n    data = dataframes[item]\n    time_steps_per_day = data.group_by(\"date_id\").count().sort('date_id')\n    time_steps_per_day = time_steps_per_day.rename({\"count\": \"max_time_id\"})\n    temp = time_steps_per_day.group_by(\"max_time_id\").count().sort('max_time_id')\n    t = []\n    t.append(item)\n    for i in range(len(temp)):\n        t.append(np.array(temp)[i].tolist())\n    new_array.append(t)\nnew_array  #symbol_id, (no: of timesteps in a day, count of days with these many timesteps),.....","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-29T05:49:28.246043Z","iopub.execute_input":"2024-12-29T05:49:28.246443Z","iopub.status.idle":"2024-12-29T05:49:32.998941Z","shell.execute_reply.started":"2024-12-29T05:49:28.246398Z","shell.execute_reply":"2024-12-29T05:49:32.998072Z"}},"outputs":[],"execution_count":null}]}