{"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":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-04-03T02:09:57.389502Z","iopub.execute_input":"2023-04-03T02:09:57.392599Z","iopub.status.idle":"2023-04-03T02:09:57.415915Z","shell.execute_reply.started":"2023-04-03T02:09:57.392435Z","shell.execute_reply":"2023-04-03T02:09:57.414502Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Reduce memory useage: use how-to-get-32gb-ram file or run following code","metadata":{}},{"cell_type":"code","source":"dtypes = {\"session_id\": 'int64',\n          \"index\": np.int16,\n          \"elapsed_time\": np.int32,\n          \"event_name\": 'category',\n          \"name\": 'category',\n          \"level\": np.int8,\n          \"page\": np.float16,\n          \"room_coor_x\": np.float16,\n          \"room_coor_y\": np.float16,\n          \"screen_coor_x\": np.float16,\n          \"screen_coor_y\": np.float16,\n          \"hover_duration\": np.float32,\n          \"text\": 'category',\n          \"fqid\": 'category',\n          \"room_fqid\": 'category',\n          \"text_fqid\": 'category',\n          \"fullscreen\": np.int8,\n          \"hq\": np.int8,\n          \"music\": np.int8,\n          \"level_group\": 'category'\n          }\n# Specify the list of columns you are using\nuse_col = ['session_id', 'index', 'elapsed_time', 'event_name', 'name', 'level', 'page', 'room_coor_x', 'room_coor_y', \n           'screen_coor_x', 'screen_coor_y', 'hover_duration', 'text', 'fqid', 'room_fqid', 'text_fqid', 'level_group']\ndf = pd.read_csv('/kaggle/input/predict-student-performance-from-game-play/train.csv', dtype=dtypes, usecols=use_col)\nmem_usg = df.memory_usage().sum() / 1024 ** 2\nprint(\"Memory usage became: \", mem_usg, \" MB\")","metadata":{"execution":{"iopub.status.busy":"2023-04-03T02:07:52.874193Z","iopub.execute_input":"2023-04-03T02:07:52.875073Z","iopub.status.idle":"2023-04-03T02:09:44.335147Z","shell.execute_reply.started":"2023-04-03T02:07:52.875031Z","shell.execute_reply":"2023-04-03T02:09:44.334027Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Useful Notebooks:\n#### 1. Game Room Click EDA https://www.kaggle.com/code/cdeotte/game-room-click-eda\n#### 2. Student perf EDA https://www.kaggle.com/code/janmpia/student-perf-eda-feature-engineering\n#### 3. Session start time EDA https://www.kaggle.com/code/janmpia/session-start-time-eda\n","metadata":{}},{"cell_type":"code","source":"df_sessions =  pd.read_csv(\"/kaggle/input/predict-student-performance-from-game-play/train.csv\", dtype = dtypes)\ndf_sessions.head()","metadata":{"execution":{"iopub.status.busy":"2023-04-03T02:33:46.632759Z","iopub.execute_input":"2023-04-03T02:33:46.633194Z","iopub.status.idle":"2023-04-03T02:35:12.819678Z","shell.execute_reply.started":"2023-04-03T02:33:46.633158Z","shell.execute_reply":"2023-04-03T02:35:12.818634Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_sessions =  pd.read_csv(\"/kaggle/input/predict-student-performance-from-game-play/train.csv\", dtype = dtypes)\ndrop = ['num_events','lots_events','few_events','has_finished','last_elapsed_time','long_session','short_session','Unnamed: 0']\ndf_accuracy = pd.read_csv('/kaggle/input/student-perf-eda-feature-engineering/df_sessions.csv').drop(columns = drop)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def feature_eng(df_sessions):\n    df_final = pd.DataFrame()\n    df_final['session_id'] = df_sessions['session_id'].unique()\n    df_final['year'] = df_final['session_id'].apply(lambda x: int(str(x)[:2])).astype(np.uint8)\n    df_final['month'] = df_final['session_id'].apply(lambda x: int(str(x)[2:4]) + 1).astype(np.uint8)\n    df_final['weekday'] = df_final['session_id'].apply(lambda x: int(str(x)[4:6])).astype(np.uint8)\n    df_final['hour'] = df_final['session_id'].apply(lambda x: int(str(x)[6:8])).astype(np.uint8)\n    df_final['minute'] = df_final['session_id'].apply(lambda x: int(str(x)[8:10])).astype(np.uint8)\n    df_final['second'] = df_final['session_id'].apply(lambda x: int(str(x)[10:12])).astype(np.uint8)\n    df_final['ms'] = df_final['session_id'].apply(lambda x: int(str(x)[12:15])).astype(np.uint16)\n    df_final['noise'] = df_final['session_id'].apply(lambda x: int(str(x)[15:17])).astype(np.uint8)\n    return df_final\n\ndf_final = feature_eng(df_sessions)\ndf_final = df_final.set_index(['session_id'])\ndf_final.index.get_level_values('session_id')\nday_map = {0: 'monday', 1: 'tuesday', 2:'wednesday', 3:'thursday', 4:'friday', 5:'saturday', 6:'sunday'}\ndf_final = pd.merge(df_accuracy, df_final, on= 'session_id')\n#df_final.weekday = df_final.weekday.map(day_map)\ndf_final.head()","metadata":{},"execution_count":null,"outputs":[]}]}