{"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":"# [分析過程與結果簡報](https://www.canva.com/design/DAFjUYvJl_A/6sxVKe_4jCKgQh8FFUA58Q/view?utm_content=DAFjUYvJl_A&utm_campaign=designshare&utm_medium=link&utm_source=publishsharelink)","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport plotly.express as px","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-05-19T11:47:20.021012Z","iopub.execute_input":"2023-05-19T11:47:20.021509Z","iopub.status.idle":"2023-05-19T11:47:24.939845Z","shell.execute_reply.started":"2023-05-19T11:47:20.021471Z","shell.execute_reply":"2023-05-19T11:47:24.938575Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 特徵\n* session_id - user_id \n* index - the index of the event for the session:一個user會有多個index\n* elapsed_time - how much time has passed (in milliseconds) between the start of the session and when the event was recorded - Time series\n* event_name - the name of the event type\n* name - the event name\n* level - what level of the game the event occurred in: 0~22\n* page - the page number of the event (刪除)\n* room_coor_x - the coordinates of the click in reference to the in-game room\n* room_coor_y - the coordinates of the click in reference to the in-game room\n* screen_coor_x - the coordinates of the click in reference to the player’s screen\n* screen_coor_y - the coordinates of the click in reference to the player’s screen\n* hover_duration - how long (in milliseconds) the hover happened for (刪除)\n* text - the text the player sees during this event (刪除)\n* fqid - the fully-qualified ID of the event (31%遺缺，刪除)\n* room_fqid - the fully-qualified ID of the room the event took place in\n* text_fqid - the fully-qualified ID of the (等同fqid+room_fqid，63%遺缺，刪除)\n* fullscreen - whether the player is in fullscreen mode(刪除)\n* hq - whether the game is in high-quality(刪除)\n* music - whether the game music is on or off(刪除)\n* level_group - which group of levels - and group of questions - this row belongs to (0-4, 5-12, 13-22)","metadata":{}},{"cell_type":"code","source":"X_train = pd.read_csv(\"/kaggle/input/predict-student-performance-from-game-play/train.csv\",\n                     usecols=['session_id', #user_id\n                              'index', \n                              'elapsed_time', \n                              'event_name', #event type\n                              'level',\n                              'room_fqid',\n                              'level_group'],\n                              nrows = 1000000) #共2000多萬筆資料，只使用100萬筆\ny_train = pd.read_csv(\"/kaggle/input/predict-student-performance-from-game-play/train_labels.csv\")","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:24.941978Z","iopub.execute_input":"2023-05-19T11:47:24.942602Z","iopub.status.idle":"2023-05-19T11:47:28.186055Z","shell.execute_reply.started":"2023-05-19T11:47:24.942563Z","shell.execute_reply":"2023-05-19T11:47:28.184967Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train.shape, y_train.shape","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:28.187957Z","iopub.execute_input":"2023-05-19T11:47:28.188358Z","iopub.status.idle":"2023-05-19T11:47:28.197101Z","shell.execute_reply.started":"2023-05-19T11:47:28.188315Z","shell.execute_reply":"2023-05-19T11:47:28.195952Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data = X_train.copy()\ntarget = y_train.copy()\ndata.elapsed_time = data.elapsed_time/60000 #從millsecond變分鐘\ndata.shape, target.shape","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:28.200651Z","iopub.execute_input":"2023-05-19T11:47:28.201471Z","iopub.status.idle":"2023-05-19T11:47:28.284535Z","shell.execute_reply.started":"2023-05-19T11:47:28.201407Z","shell.execute_reply":"2023-05-19T11:47:28.283337Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"### 因為選100萬筆資料近來，但最後一個人的資料可能不完整被我截掉，因此也扣除最後一個user的資料，最後剩999961筆資料\ndel_uncompleted_data = data.loc[data.session_id ==data.session_id.to_list()[-1]].index[0] #999961\ndata = data[:del_uncompleted_data]\ndata.shape","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:28.286077Z","iopub.execute_input":"2023-05-19T11:47:28.286955Z","iopub.status.idle":"2023-05-19T11:47:28.358101Z","shell.execute_reply.started":"2023-05-19T11:47:28.286873Z","shell.execute_reply":"2023-05-19T11:47:28.356830Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data.to_csv(\"/kaggle/working/predict-student-performance-from-game-play_smalltrain_data\", index=False)\ndata.head(3)","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:28.359826Z","iopub.execute_input":"2023-05-19T11:47:28.360392Z","iopub.status.idle":"2023-05-19T11:47:33.966730Z","shell.execute_reply.started":"2023-05-19T11:47:28.360346Z","shell.execute_reply":"2023-05-19T11:47:33.965509Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import re\n#target的session_id包含題目q1~q8，不好與data比對，因此新增一個user_id\ntarget[\"user_id\"] = target.session_id.str.split(\"_\", expand = True)[0]\ntarget[\"question\"] = target.session_id.str.split(\"_\", expand = True)[1]\ntarget[\"question\"] = target[\"question\"].apply(lambda x : re.sub(\"\\D\", \"\",x)) \n\ntarget[\"question\"] = pd.to_numeric(target[\"question\"])#轉為數值型別\ntarget[\"user_id\"] = pd.to_numeric(target[\"user_id\"])#轉為數值型別\ntarget.head(3)","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:33.968399Z","iopub.execute_input":"2023-05-19T11:47:33.969732Z","iopub.status.idle":"2023-05-19T11:47:38.616276Z","shell.execute_reply.started":"2023-05-19T11:47:33.969683Z","shell.execute_reply":"2023-05-19T11:47:38.614590Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"target.question.unique()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:38.617808Z","iopub.execute_input":"2023-05-19T11:47:38.618514Z","iopub.status.idle":"2023-05-19T11:47:38.637896Z","shell.execute_reply.started":"2023-05-19T11:47:38.618469Z","shell.execute_reply":"2023-05-19T11:47:38.636875Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data.session_id.nunique(), target.user_id.nunique() #target擁有的是2000萬筆資料的23562個玩家 但目前只取出50萬筆有885個玩家","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:38.641572Z","iopub.execute_input":"2023-05-19T11:47:38.642484Z","iopub.status.idle":"2023-05-19T11:47:38.794037Z","shell.execute_reply.started":"2023-05-19T11:47:38.642443Z","shell.execute_reply":"2023-05-19T11:47:38.793035Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#發現每個question的排序和data相同\ndata.session_id.unique()[:5] ==  target.user_id[:5]","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:38.799213Z","iopub.execute_input":"2023-05-19T11:47:38.799529Z","iopub.status.idle":"2023-05-19T11:47:38.815010Z","shell.execute_reply.started":"2023-05-19T11:47:38.799499Z","shell.execute_reply":"2023-05-19T11:47:38.813912Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#使target變成只有885個user\ntarget = pd.DataFrame(target.groupby(\"question\").apply(lambda x: x[:885]))\ntarget.index = np.arange(len(target.index))\n\ntarget.to_csv(\"/kaggle/working/predict-student-performance-from-game-play_smalltarget\", index=False)\ntarget.head(3)","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:38.816422Z","iopub.execute_input":"2023-05-19T11:47:38.816855Z","iopub.status.idle":"2023-05-19T11:47:38.926091Z","shell.execute_reply.started":"2023-05-19T11:47:38.816814Z","shell.execute_reply":"2023-05-19T11:47:38.925017Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data.shape, target.shape","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:38.927732Z","iopub.execute_input":"2023-05-19T11:47:38.928463Z","iopub.status.idle":"2023-05-19T11:47:38.936710Z","shell.execute_reply.started":"2023-05-19T11:47:38.928417Z","shell.execute_reply":"2023-05-19T11:47:38.935366Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data.session_id.nunique(), target.user_id.nunique()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:38.938980Z","iopub.execute_input":"2023-05-19T11:47:38.939480Z","iopub.status.idle":"2023-05-19T11:47:38.956362Z","shell.execute_reply.started":"2023-05-19T11:47:38.939426Z","shell.execute_reply":"2023-05-19T11:47:38.955395Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import gc\ngc.collect()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:38.960199Z","iopub.execute_input":"2023-05-19T11:47:38.960557Z","iopub.status.idle":"2023-05-19T11:47:39.089516Z","shell.execute_reply.started":"2023-05-19T11:47:38.960527Z","shell.execute_reply":"2023-05-19T11:47:39.087979Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# EDA","metadata":{}},{"cell_type":"code","source":"data.info()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:39.091293Z","iopub.execute_input":"2023-05-19T11:47:39.091810Z","iopub.status.idle":"2023-05-19T11:47:39.385864Z","shell.execute_reply.started":"2023-05-19T11:47:39.091769Z","shell.execute_reply":"2023-05-19T11:47:39.384556Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:39.387802Z","iopub.execute_input":"2023-05-19T11:47:39.388293Z","iopub.status.idle":"2023-05-19T11:47:39.686407Z","shell.execute_reply.started":"2023-05-19T11:47:39.388227Z","shell.execute_reply":"2023-05-19T11:47:39.685302Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 先拿第一位的資料來分析:","metadata":{}},{"cell_type":"code","source":"#先選一個user來看他的行為\ntemp_user_id = data.session_id[0]\ntemp_user_data = data.loc[data.session_id == temp_user_id]\ntemp_user_data ","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:39.688163Z","iopub.execute_input":"2023-05-19T11:47:39.688677Z","iopub.status.idle":"2023-05-19T11:47:39.713041Z","shell.execute_reply.started":"2023-05-19T11:47:39.688639Z","shell.execute_reply":"2023-05-19T11:47:39.711950Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#temp_user回答問題的資料\ntarget.loc[target.user_id == temp_user_id].sort_values(by=\"question\",ascending=True)","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:39.714607Z","iopub.execute_input":"2023-05-19T11:47:39.715207Z","iopub.status.idle":"2023-05-19T11:47:39.734325Z","shell.execute_reply.started":"2023-05-19T11:47:39.715166Z","shell.execute_reply":"2023-05-19T11:47:39.733304Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"temp_user_data.info()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:39.736107Z","iopub.execute_input":"2023-05-19T11:47:39.736524Z","iopub.status.idle":"2023-05-19T11:47:39.752416Z","shell.execute_reply.started":"2023-05-19T11:47:39.736482Z","shell.execute_reply":"2023-05-19T11:47:39.751031Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#三種level_group經常出現的位置有所不同\nfig = px.bar(temp_user_data, x=\"room_fqid\", color= \"level_group\")\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:39.754252Z","iopub.execute_input":"2023-05-19T11:47:39.754727Z","iopub.status.idle":"2023-05-19T11:47:41.193484Z","shell.execute_reply.started":"2023-05-19T11:47:39.754681Z","shell.execute_reply":"2023-05-19T11:47:41.191911Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"elapsed_time vs. index","metadata":{}},{"cell_type":"code","source":"px.scatter(temp_user_data, x = \"index\" ,y =\"elapsed_time\",\n           color=temp_user_data.level_group,\n           hover_name = temp_user_data.event_name)","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:41.195881Z","iopub.execute_input":"2023-05-19T11:47:41.196256Z","iopub.status.idle":"2023-05-19T11:47:41.305129Z","shell.execute_reply.started":"2023-05-19T11:47:41.196217Z","shell.execute_reply":"2023-05-19T11:47:41.304157Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"有兩個回答問題的checkpoint: \n1. index 164直接跳175 \n2. index 470直接跳512","metadata":{}},{"cell_type":"markdown","source":"# 全部人的資料:","metadata":{}},{"cell_type":"markdown","source":"# 1.是否有人未完成0~22個level?","metadata":{}},{"cell_type":"code","source":"data.session_id.nunique()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:41.306831Z","iopub.execute_input":"2023-05-19T11:47:41.307255Z","iopub.status.idle":"2023-05-19T11:47:41.322799Z","shell.execute_reply.started":"2023-05-19T11:47:41.307215Z","shell.execute_reply":"2023-05-19T11:47:41.321779Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#有人重複出現在checkpoint:在0~4多出8個，5~12多出6個，13~22多出4個，共18個\ndata[data.event_name ==\"checkpoint\"].level.value_counts() - 885","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:41.324050Z","iopub.execute_input":"2023-05-19T11:47:41.324345Z","iopub.status.idle":"2023-05-19T11:47:41.465809Z","shell.execute_reply.started":"2023-05-19T11:47:41.324317Z","shell.execute_reply":"2023-05-19T11:47:41.464154Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#取出重複出現的user\ncheckpoint_df = data[data.event_name == \"checkpoint\"]\nlen(checkpoint_df[checkpoint_df.duplicated(subset=[\"session_id\",\"event_name\", \"level_group\"], \n                                           keep=\"last\")]) #剛好18個，因此其他checkpoint沒有重複的玩家，都有完成3個checkpoint\ndup_checkpoint_df = checkpoint_df[checkpoint_df.duplicated(\n                    subset=[\"session_id\",\"event_name\", \"level_group\"], \n                    keep=False)]\ndup_checkpoint_df.groupby([\"session_id\"])[\"level_group\"].value_counts() \n#8位玩家在checkpoint的資料有重複","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:41.467976Z","iopub.execute_input":"2023-05-19T11:47:41.468457Z","iopub.status.idle":"2023-05-19T11:47:41.637584Z","shell.execute_reply.started":"2023-05-19T11:47:41.468405Z","shell.execute_reply":"2023-05-19T11:47:41.636485Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#畫出第一位重複玩的elapse_time vs. index \npx.scatter(data[data.session_id == 20100110332615344], x = \"index\" ,y =\"elapsed_time\",\n           color=data[data.session_id == 20100110332615344].level_group,\n           hover_name = data[data.session_id == 20100110332615344].event_name)\n#玩了兩次，而且在第二次到5~12關結束後沒有再繼續到13關","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:41.640219Z","iopub.execute_input":"2023-05-19T11:47:41.641363Z","iopub.status.idle":"2023-05-19T11:47:41.759231Z","shell.execute_reply.started":"2023-05-19T11:47:41.641317Z","shell.execute_reply":"2023-05-19T11:47:41.758199Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"有人玩超過一次，且第二次玩不一定會玩到結束","metadata":{}},{"cell_type":"code","source":"#建立一個所有玩家的重要資訊\nuser_info_df = pd.DataFrame({\"user_id\": data.session_id.unique(), \"playtime\":  data.groupby(\"session_id\")[\"elapsed_time\"].agg(\"max\"),\n               \"event_nb\": data.groupby(\"session_id\")[\"index\"].agg(\"max\"),\n               \"score\": target.groupby(\"user_id\")[\"correct\"].agg(\"sum\")}).reset_index(drop=True)\n\nuser_info_df","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:41.760246Z","iopub.execute_input":"2023-05-19T11:47:41.760516Z","iopub.status.idle":"2023-05-19T11:47:41.831107Z","shell.execute_reply.started":"2023-05-19T11:47:41.760489Z","shell.execute_reply":"2023-05-19T11:47:41.829961Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#重複玩的玩家資訊\nuser_info_df[user_info_df.user_id.isin(dup_checkpoint_df.session_id)]","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:41.834562Z","iopub.execute_input":"2023-05-19T11:47:41.835461Z","iopub.status.idle":"2023-05-19T11:47:41.850113Z","shell.execute_reply.started":"2023-05-19T11:47:41.835402Z","shell.execute_reply":"2023-05-19T11:47:41.848609Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"比較重複玩和未重複玩的playtime, event_nb, score 是否有顯著差異","metadata":{}},{"cell_type":"code","source":"my_dict = {'play_again': user_info_df[user_info_df.user_id.isin(dup_checkpoint_df.session_id)].playtime,\n           'not_play_again': user_info_df[(~user_info_df.user_id.isin(dup_checkpoint_df.session_id))\n                                         &(user_info_df.playtime < user_info_df.playtime.quantile(0.5))].playtime}\nfig, ax = plt.subplots()\nax.boxplot(my_dict.values())\nax.set_xticklabels(my_dict.keys())\nax.set_ylabel(\"playtime\")\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:41.861895Z","iopub.execute_input":"2023-05-19T11:47:41.862213Z","iopub.status.idle":"2023-05-19T11:47:42.111158Z","shell.execute_reply.started":"2023-05-19T11:47:41.862181Z","shell.execute_reply":"2023-05-19T11:47:42.110103Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from scipy import stats\nleveneTestRes = stats.levene(user_info_df[user_info_df.user_id.isin(dup_checkpoint_df.session_id)].playtime\n                             , user_info_df.playtime < user_info_df.playtime.quantile(0.5), center='mean') #levene法齐性检验\nprint(f\"{leveneTestRes.pvalue:.5f}\") #變異數不同質->welch’s t-test \n\ntind = stats.ttest_ind(a = user_info_df[user_info_df.user_id.isin(dup_checkpoint_df.session_id)].playtime,\n                       b =user_info_df.playtime < user_info_df.playtime.quantile(0.5),\n                       equal_var=False)\nprint(tind.pvalue) #顯著不同","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:42.113158Z","iopub.execute_input":"2023-05-19T11:47:42.114168Z","iopub.status.idle":"2023-05-19T11:47:42.130039Z","shell.execute_reply.started":"2023-05-19T11:47:42.114127Z","shell.execute_reply":"2023-05-19T11:47:42.128648Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"my_dict = {'play_again': user_info_df[user_info_df.user_id.isin(dup_checkpoint_df.session_id)].score,\n           'not_play_again': user_info_df[(~user_info_df.user_id.isin(dup_checkpoint_df.session_id))].score}\nfig, ax = plt.subplots()\nax.boxplot(my_dict.values())\nax.set_xticklabels(my_dict.keys())\nax.set_ylabel(\"score\")\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:42.131825Z","iopub.execute_input":"2023-05-19T11:47:42.132373Z","iopub.status.idle":"2023-05-19T11:47:42.354099Z","shell.execute_reply.started":"2023-05-19T11:47:42.132331Z","shell.execute_reply":"2023-05-19T11:47:42.353165Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"leveneTestRes = stats.levene(user_info_df[user_info_df.user_id.isin(dup_checkpoint_df.session_id)].score\n                             ,  user_info_df[(~user_info_df.user_id.isin(dup_checkpoint_df.session_id))].score\n                             , center='mean') #levene法齐性检验\n\ntind = stats.ttest_ind(a = user_info_df[user_info_df.user_id.isin(dup_checkpoint_df.session_id)].score,\n                       b =user_info_df[(~user_info_df.user_id.isin(dup_checkpoint_df.session_id))].score\n                       ,equal_var=True)\nprint(f\"{leveneTestRes.pvalue:.5f}\") #變異數同質\nprint(tind.pvalue) #有顯著不同","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:42.355597Z","iopub.execute_input":"2023-05-19T11:47:42.355986Z","iopub.status.idle":"2023-05-19T11:47:42.371920Z","shell.execute_reply.started":"2023-05-19T11:47:42.355940Z","shell.execute_reply":"2023-05-19T11:47:42.370560Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"my_dict = {'play_again': user_info_df[user_info_df.user_id.isin(dup_checkpoint_df.session_id)].event_nb,\n           'not_play_again': user_info_df[(~user_info_df.user_id.isin(dup_checkpoint_df[\"index\"]))&\n                                          (user_info_df.event_nb < user_info_df.event_nb.quantile(0.5))].event_nb}\nfig, ax = plt.subplots()\nax.boxplot(my_dict.values())\nax.set_xticklabels(my_dict.keys())\nax.set_ylabel(\"event_nb\")\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:42.374163Z","iopub.execute_input":"2023-05-19T11:47:42.374602Z","iopub.status.idle":"2023-05-19T11:47:42.587737Z","shell.execute_reply.started":"2023-05-19T11:47:42.374558Z","shell.execute_reply":"2023-05-19T11:47:42.586728Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"leveneTestRes = stats.levene(user_info_df[user_info_df.user_id.isin(dup_checkpoint_df.session_id)].event_nb\n                             ,  user_info_df[(~user_info_df.user_id.isin(dup_checkpoint_df[\"index\"]))&\n                                          (user_info_df.event_nb < user_info_df.event_nb.quantile(0.5))].event_nb\n                             , center='mean') #levene法齐性检验\n\ntind = stats.ttest_ind(a =user_info_df[user_info_df.user_id.isin(dup_checkpoint_df.session_id)].event_nb,\n                       b =user_info_df[(~user_info_df.user_id.isin(dup_checkpoint_df[\"index\"]))&\n                                          (user_info_df.event_nb < user_info_df.event_nb.quantile(0.5))].event_nb\n                       ,equal_var=False)\nprint(f\"{leveneTestRes.pvalue:.5f}\") #變異數不同質\nprint(tind.pvalue) #有顯著不同","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:42.589495Z","iopub.execute_input":"2023-05-19T11:47:42.589912Z","iopub.status.idle":"2023-05-19T11:47:42.609257Z","shell.execute_reply.started":"2023-05-19T11:47:42.589873Z","shell.execute_reply":"2023-05-19T11:47:42.607836Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"重複玩的與未重複玩的playtime、score、event_nb皆有顯著差異。\n重複玩的score比未重複玩的要來得低。","metadata":{}},{"cell_type":"code","source":"#完兩次的人score越高 event_nb越低\nuser_info_df[user_info_df.user_id.isin(dup_checkpoint_df.session_id)].plot.scatter(x = \"score\", y=\"event_nb\")\nplt.xticks(np.arange(1,19))\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:42.611458Z","iopub.execute_input":"2023-05-19T11:47:42.611846Z","iopub.status.idle":"2023-05-19T11:47:42.972243Z","shell.execute_reply.started":"2023-05-19T11:47:42.611808Z","shell.execute_reply":"2023-05-19T11:47:42.971232Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 2.遊戲時間與答對題數的關聯","metadata":{}},{"cell_type":"code","source":"#平均在一個半小時完成遊戲、發生約1000多次事件、平均得分為12\nuser_info_df.loc[:, [\"playtime\", \"event_nb\",\"score\"]].describe()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:42.973970Z","iopub.execute_input":"2023-05-19T11:47:42.974339Z","iopub.status.idle":"2023-05-19T11:47:43.002940Z","shell.execute_reply.started":"2023-05-19T11:47:42.974300Z","shell.execute_reply":"2023-05-19T11:47:43.001703Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#playtime\npx.box(user_info_df.playtime)","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:43.004719Z","iopub.execute_input":"2023-05-19T11:47:43.005469Z","iopub.status.idle":"2023-05-19T11:47:43.110953Z","shell.execute_reply.started":"2023-05-19T11:47:43.005424Z","shell.execute_reply":"2023-05-19T11:47:43.109959Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"long_time_player = user_info_df[user_info_df.playtime > 91].sort_values(by=\"playtime\").tail()\nlong_time_player","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:43.112490Z","iopub.execute_input":"2023-05-19T11:47:43.113337Z","iopub.status.idle":"2023-05-19T11:47:43.128803Z","shell.execute_reply.started":"2023-05-19T11:47:43.113297Z","shell.execute_reply":"2023-05-19T11:47:43.127560Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"short_time_player = user_info_df[user_info_df.playtime < 91].sort_values(by=\"playtime\").head()\nshort_time_player","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:43.130587Z","iopub.execute_input":"2023-05-19T11:47:43.130989Z","iopub.status.idle":"2023-05-19T11:47:43.147067Z","shell.execute_reply.started":"2023-05-19T11:47:43.130947Z","shell.execute_reply":"2023-05-19T11:47:43.145779Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#long_time\nplt.figure(figsize = (12,6))\nplt.subplot(2,2,1)\nplt.plot(data[data.session_id == long_time_player.user_id.iloc[-1]][\"index\"],\n        data[data.session_id == long_time_player.user_id.iloc[-1]].elapsed_time)\nplt.xlabel(\"index\")\nplt.ylabel(\"elapsed_time\")\nplt.subplot(2,2,2)\nplt.plot(data[data.session_id == long_time_player.user_id.iloc[-2]][\"index\"],\n        data[data.session_id == long_time_player.user_id.iloc[-2]].elapsed_time)\nplt.xlabel(\"index\")\nplt.ylabel(\"elapsed_time\")\n#short_time\nplt.subplot(2,2,3)\nplt.plot(data[data.session_id ==short_time_player.user_id.iloc[0]][\"index\"],\n        data[data.session_id == short_time_player.user_id.iloc[0]].elapsed_time)\nplt.xlabel(\"index\")\nplt.ylabel(\"elapsed_time\")\nplt.subplot(2,2,4)\nplt.plot(data[data.session_id ==short_time_player.user_id.iloc[1]][\"index\"],\n        data[data.session_id == short_time_player.user_id.iloc[1]].elapsed_time)\nplt.xlabel(\"index\")\nplt.ylabel(\"elapsed_time\")\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:43.149046Z","iopub.execute_input":"2023-05-19T11:47:43.149494Z","iopub.status.idle":"2023-05-19T11:47:43.723546Z","shell.execute_reply.started":"2023-05-19T11:47:43.149453Z","shell.execute_reply":"2023-05-19T11:47:43.722306Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"那些遊戲時間比較久的玩家，是因為在遊戲中中斷動作，持續一段時間後才又回到遊戲。因此event不一定會比遊戲時間短的玩家要多。","metadata":{}},{"cell_type":"code","source":"#刪除離群值後 發現得分越高 使用的時間越低\nplaytime_nb_vs_score = user_info_df[user_info_df.playtime < 91].groupby(\"score\")[\"playtime\"].agg(\"mean\").reset_index()\nplaytime_nb_vs_score.plot.scatter(x=\"score\",y =\"playtime\")\nplt.xticks(np.arange(1,19))\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:43.725299Z","iopub.execute_input":"2023-05-19T11:47:43.725712Z","iopub.status.idle":"2023-05-19T11:47:43.989316Z","shell.execute_reply.started":"2023-05-19T11:47:43.725669Z","shell.execute_reply":"2023-05-19T11:47:43.988137Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"playtime_nb_vs_score.corr()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:43.991059Z","iopub.execute_input":"2023-05-19T11:47:43.991736Z","iopub.status.idle":"2023-05-19T11:47:44.005823Z","shell.execute_reply.started":"2023-05-19T11:47:43.991695Z","shell.execute_reply":"2023-05-19T11:47:44.004058Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 3.  遊戲事件與答對題數的關聯","metadata":{}},{"cell_type":"code","source":"#event_nb\npx.box(user_info_df.event_nb)","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:44.007720Z","iopub.execute_input":"2023-05-19T11:47:44.008334Z","iopub.status.idle":"2023-05-19T11:47:44.077497Z","shell.execute_reply.started":"2023-05-19T11:47:44.008286Z","shell.execute_reply":"2023-05-19T11:47:44.076482Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#刪除離群值後 ，發現動作越多 得分越低\nevent_nb_vs_score = user_info_df[user_info_df.event_nb<1819].groupby(\"score\").agg({\"event_nb\": \"mean\"}).reset_index()\nevent_nb_vs_score.plot.scatter(x=\"score\",y =\"event_nb\")\nplt.xticks(np.arange(1,19))\nplt.show()\nprint(event_nb_vs_score.corr())","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:44.079068Z","iopub.execute_input":"2023-05-19T11:47:44.079742Z","iopub.status.idle":"2023-05-19T11:47:44.341005Z","shell.execute_reply.started":"2023-05-19T11:47:44.079703Z","shell.execute_reply":"2023-05-19T11:47:44.339748Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#劃分高適建和低事件數玩家\nmore_event = user_info_df[user_info_df.event_nb > 1819].sort_values(by=\"event_nb\")\nlittle_event = user_info_df[user_info_df.event_nb < 1819].sort_values(by=\"event_nb\")\n# print(len(more_event), len(little_event))\n\n#取more_event 和little_event各一位，發現事件集中在naviagetion click 和 person_click\nMORE = data[data.session_id == more_event.user_id.iloc[0]].event_name.value_counts()\nLITTLE = data[data.session_id == (little_event.user_id.iloc[0])].event_name.value_counts()\npx.bar(pd.DataFrame({\"more_event\":MORE,\n                    \"little_event\":LITTLE}))","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:44.342987Z","iopub.execute_input":"2023-05-19T11:47:44.343406Z","iopub.status.idle":"2023-05-19T11:47:44.433529Z","shell.execute_reply.started":"2023-05-19T11:47:44.343364Z","shell.execute_reply":"2023-05-19T11:47:44.432198Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#某一高事件玩家 幾乎每個事件都比另一低事件玩家 多2-4倍\nMORE / LITTLE","metadata":{"execution":{"iopub.status.busy":"2023-05-19T12:04:50.116223Z","iopub.execute_input":"2023-05-19T12:04:50.116967Z","iopub.status.idle":"2023-05-19T12:04:50.126237Z","shell.execute_reply.started":"2023-05-19T12:04:50.116918Z","shell.execute_reply":"2023-05-19T12:04:50.124867Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 在約相同遊戲時間下，高遊戲事件的玩家比低遊戲事件玩家，所點擊次數高出許多\nplt.figure(figsize = (8,3))\nplt.subplot(1,2,1)\nplt.plot(data[data.session_id == more_event.user_id.iloc[-1]][\"index\"],\n       data[data.session_id == more_event.user_id.iloc[-1]].level)\nplt.title(\"more_event\")\nplt.xlabel(\"index\")\nplt.ylabel(\"elapsed_time\")\nplt.subplot(1,2,2)\nplt.plot(data[data.session_id == little_event.user_id.iloc[0]][\"index\"],\n        data[data.session_id == little_event.user_id.iloc[0]].level)\nplt.title(\"little_event\")\nplt.xlabel(\"index\")\nplt.ylabel(\"elapsed_time\")","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:46.551857Z","iopub.execute_input":"2023-05-19T11:47:46.554559Z","iopub.status.idle":"2023-05-19T11:47:46.980911Z","shell.execute_reply.started":"2023-05-19T11:47:46.554504Z","shell.execute_reply":"2023-05-19T11:47:46.979753Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 取出每個Event類別，Event數越高，是否答題表現也越差?","metadata":{}},{"cell_type":"code","source":"#每個event 和 score 的 相關係數\nEVENT = ['cutscene_click', 'person_click', 'navigate_click',\n       'observation_click', 'notification_click', 'object_click',\n       'object_hover', 'map_hover', 'map_click', 'checkpoint',\n       'notebook_click']\ntmp_df = data.copy()\ntmp_list = []\nfor col_name in EVENT:\n    tmp_df[col_name] = (data.event_name == col_name).astype(\"int32\") # True and False => 0、1\n    tmp = tmp_df.groupby([\"session_id\"])[col_name].agg(\"sum\")\n    tmp_list.append(tmp)\ntmp_df = pd.concat(tmp_list, axis = 1)\ntmp_df","metadata":{"execution":{"iopub.status.busy":"2023-05-19T12:12:12.986728Z","iopub.execute_input":"2023-05-19T12:12:12.987139Z","iopub.status.idle":"2023-05-19T12:12:14.823297Z","shell.execute_reply.started":"2023-05-19T12:12:12.987101Z","shell.execute_reply":"2023-05-19T12:12:14.822211Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 皆為低度負相關，最小出現在map_click為-0.5。 猜測玩家的map_click數越高，表現越差，是因為玩家越不清楚需要完成任務地點在哪。\ntmp_df = tmp_df.reset_index().drop(\"session_id\", axis = 1)\ntmp_df[\"score\"] = user_info_df.score\n\nimport seaborn as sns\nplt.figure(figsize=(10, 6))\nsns.heatmap(tmp_df.corr(), annot = True,  vmin=-1)","metadata":{"execution":{"iopub.status.busy":"2023-05-19T12:12:26.490430Z","iopub.execute_input":"2023-05-19T12:12:26.491522Z","iopub.status.idle":"2023-05-19T12:12:28.078323Z","shell.execute_reply.started":"2023-05-19T12:12:26.491477Z","shell.execute_reply":"2023-05-19T12:12:28.077181Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#playtime vs. event: 集中在左下角，玩的時間越短，發生的事件也越少\npx.scatter( user_info_df[(user_info_df.event_nb < 1819) & (user_info_df.playtime < 91)], \n           x= \"event_nb\",\n            y= \"playtime\")","metadata":{"execution":{"iopub.status.busy":"2023-05-19T13:09:42.325680Z","iopub.execute_input":"2023-05-19T13:09:42.326471Z","iopub.status.idle":"2023-05-19T13:09:42.393253Z","shell.execute_reply.started":"2023-05-19T13:09:42.326430Z","shell.execute_reply":"2023-05-19T13:09:42.392300Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#低度正相關\nuser_info_df[(user_info_df.event_nb < 1819) & (user_info_df.playtime < 91)].loc[:, [\"event_nb\",\"playtime\"]].corr()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T13:39:05.180712Z","iopub.execute_input":"2023-05-19T13:39:05.181099Z","iopub.status.idle":"2023-05-19T13:39:05.199735Z","shell.execute_reply.started":"2023-05-19T13:39:05.181062Z","shell.execute_reply":"2023-05-19T13:39:05.198622Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 4. 答題時間與答對題數的關聯","metadata":{}},{"cell_type":"code","source":"level4_checkpoint = data[(data.event_name ==\"checkpoint\") & (data.level==4)].drop_duplicates(subset=\"session_id\", keep=\"first\")\nlevel5 = data.iloc[level4_checkpoint.index +1]\nlevel4_checkpoint_elapsed_time = level5[\"elapsed_time\"].reset_index(drop=True) - level4_checkpoint.elapsed_time.reset_index(drop=True)\n# level4_checkpoint_elapsed_time\nlevel12_checkpoint = data[(data.event_name ==\"checkpoint\") & (data.level==12)].drop_duplicates(subset=\"session_id\", keep=\"first\")\nlevel13 = data.iloc[level12_checkpoint.index +1]\nlevel12_checkpoint_elapsed_time = level13[\"elapsed_time\"].reset_index(drop=True) - level12_checkpoint.elapsed_time.reset_index(drop=True)\n# level12_checkpoint_elapsed_time\nans_time = level4_checkpoint_elapsed_time + level12_checkpoint_elapsed_time","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:51.317979Z","iopub.execute_input":"2023-05-19T11:47:51.318406Z","iopub.status.idle":"2023-05-19T11:47:51.594866Z","shell.execute_reply.started":"2023-05-19T11:47:51.318364Z","shell.execute_reply":"2023-05-19T11:47:51.593859Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"px.box(ans_time)","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:51.596425Z","iopub.execute_input":"2023-05-19T11:47:51.596996Z","iopub.status.idle":"2023-05-19T11:47:51.668450Z","shell.execute_reply.started":"2023-05-19T11:47:51.596955Z","shell.execute_reply":"2023-05-19T11:47:51.667239Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"user_info_df[\"ans_time\"] = ans_time\nuser_info_df.head()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:51.671099Z","iopub.execute_input":"2023-05-19T11:47:51.672224Z","iopub.status.idle":"2023-05-19T11:47:51.687129Z","shell.execute_reply.started":"2023-05-19T11:47:51.672180Z","shell.execute_reply":"2023-05-19T11:47:51.685751Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"short_ans_time = user_info_df[user_info_df.ans_time < 12.9].sort_values(by=\"ans_time\").head()\nshort_ans_time","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:51.688799Z","iopub.execute_input":"2023-05-19T11:47:51.689336Z","iopub.status.idle":"2023-05-19T11:47:51.707605Z","shell.execute_reply.started":"2023-05-19T11:47:51.689269Z","shell.execute_reply":"2023-05-19T11:47:51.706398Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#觀察離群值\nlong_ans_time = user_info_df[user_info_df.ans_time > 12.9].sort_values(by=\"ans_time\").tail()\nlong_ans_time","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:51.709164Z","iopub.execute_input":"2023-05-19T11:47:51.709906Z","iopub.status.idle":"2023-05-19T11:47:51.727162Z","shell.execute_reply.started":"2023-05-19T11:47:51.709857Z","shell.execute_reply":"2023-05-19T11:47:51.725948Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#正常作答回答\npx.line(data[data.session_id==20100213263066652], x=\"index\",y=\"elapsed_time\", color=\"level_group\")","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:51.728763Z","iopub.execute_input":"2023-05-19T11:47:51.729085Z","iopub.status.idle":"2023-05-19T11:47:51.820733Z","shell.execute_reply.started":"2023-05-19T11:47:51.729055Z","shell.execute_reply":"2023-05-19T11:47:51.819578Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#回答時間過長，但點擊數量沒有比較多，回答時間過長的原因不是在嘗試其他答案，而是中途離開遊戲。\npx.line(data[data.session_id==20100117123192490], x=\"index\",y=\"elapsed_time\", color=\"level_group\")","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:51.822036Z","iopub.execute_input":"2023-05-19T11:47:51.823199Z","iopub.status.idle":"2023-05-19T11:47:51.897838Z","shell.execute_reply.started":"2023-05-19T11:47:51.823157Z","shell.execute_reply":"2023-05-19T11:47:51.896761Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#刪除ans_time的離群值後，發現答對題數越多者，回答時間也越短\npx.scatter(user_info_df[user_info_df.ans_time < 12.9].groupby(\"score\").agg({\"ans_time\": \"mean\"}))","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:51.899254Z","iopub.execute_input":"2023-05-19T11:47:51.899757Z","iopub.status.idle":"2023-05-19T11:47:51.965709Z","shell.execute_reply.started":"2023-05-19T11:47:51.899715Z","shell.execute_reply":"2023-05-19T11:47:51.964531Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#答對題數越多者，作答時間也越短。相關係數為-0.96\nuser_info_df[user_info_df.ans_time < 12.9].groupby(\"score\").agg({\"ans_time\": \"mean\"}).reset_index().corr()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T13:00:58.905334Z","iopub.execute_input":"2023-05-19T13:00:58.906110Z","iopub.status.idle":"2023-05-19T13:00:58.922226Z","shell.execute_reply.started":"2023-05-19T13:00:58.906063Z","shell.execute_reply":"2023-05-19T13:00:58.921024Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc.collect()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:51.967363Z","iopub.execute_input":"2023-05-19T11:47:51.967734Z","iopub.status.idle":"2023-05-19T11:47:52.112558Z","shell.execute_reply.started":"2023-05-19T11:47:51.967697Z","shell.execute_reply":"2023-05-19T11:47:52.111334Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#遊戲時間越高答題時間越久\nplaytime_vs_anstime = user_info_df[(user_info_df.ans_time <user_info_df.ans_time.quantile(0.75)) & (user_info_df.playtime <user_info_df.playtime.quantile(0.75))]\nplt.scatter(playtime_vs_anstime.ans_time,playtime_vs_anstime.playtime)\nplt.xlabel(\"ans_time\")\nplt.ylabel(\"play_time\")\nplt.legend()\nplt.show() ","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:52.114378Z","iopub.execute_input":"2023-05-19T11:47:52.115217Z","iopub.status.idle":"2023-05-19T11:47:52.355440Z","shell.execute_reply.started":"2023-05-19T11:47:52.115176Z","shell.execute_reply":"2023-05-19T11:47:52.354244Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#低度正相關\nplaytime_vs_anstime.loc[:,[\"playtime\", \"ans_time\"]].corr()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T13:38:12.919104Z","iopub.execute_input":"2023-05-19T13:38:12.919816Z","iopub.status.idle":"2023-05-19T13:38:12.934732Z","shell.execute_reply.started":"2023-05-19T13:38:12.919774Z","shell.execute_reply":"2023-05-19T13:38:12.933298Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 5.  答對題數與預測建模的關聯","metadata":{}},{"cell_type":"code","source":"# 答對或答錯的題目數\nans_correct_or_not = pd.DataFrame()\nQ = dict(target.groupby(\"question\")[\"correct\"].value_counts()).keys()\nres = list(zip(*Q))\nQ = res[0]\nA = res[1]\nans_correct_or_not[\"question\"] = Q\nans_correct_or_not[\"question\"] = ans_correct_or_not[\"question\"].apply(lambda x: str(x))\nans_correct_or_not[\"ans\"] = A\nans_correct_or_not[\"count\"] =dict(target.groupby(\"question\")[\"correct\"].value_counts()).values()\nans_correct_or_not.head()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T13:35:00.277348Z","iopub.execute_input":"2023-05-19T13:35:00.278295Z","iopub.status.idle":"2023-05-19T13:35:00.304757Z","shell.execute_reply.started":"2023-05-19T13:35:00.278241Z","shell.execute_reply":"2023-05-19T13:35:00.303518Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 10 13 15 錯的比對的多\nfig = px.bar(ans_correct_or_not, \n             x=\"question\", \n             y=\"count\",\n             color=\"ans\", text_auto=True)\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T13:35:01.363381Z","iopub.execute_input":"2023-05-19T13:35:01.364401Z","iopub.status.idle":"2023-05-19T13:35:01.431277Z","shell.execute_reply.started":"2023-05-19T13:35:01.364357Z","shell.execute_reply":"2023-05-19T13:35:01.430228Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 6.去過的地方(room_fqid)與答對題數的關聯","metadata":{}},{"cell_type":"code","source":"data.room_fqid.unique()","metadata":{"execution":{"iopub.status.busy":"2023-05-19T13:14:35.883102Z","iopub.execute_input":"2023-05-19T13:14:35.884121Z","iopub.status.idle":"2023-05-19T13:14:35.992824Z","shell.execute_reply.started":"2023-05-19T13:14:35.884076Z","shell.execute_reply":"2023-05-19T13:14:35.991597Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# -0.55 低度負相關。每個玩家的room_fqid越高，代表越不清楚遊戲指示，當他要找線索時，去到了越多不必要的地方。\nnp.corrcoef(data.groupby([\"session_id\"]).room_fqid.agg(\"count\") ,user_info_df.score)","metadata":{"execution":{"iopub.status.busy":"2023-05-19T11:47:52.358167Z","iopub.execute_input":"2023-05-19T11:47:52.359482Z","iopub.status.idle":"2023-05-19T11:47:52.475050Z","shell.execute_reply.started":"2023-05-19T11:47:52.359436Z","shell.execute_reply":"2023-05-19T11:47:52.473697Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Conclusion","metadata":{}},{"cell_type":"markdown","source":"![image.png](attachment:f7cbc358-aebd-447e-b960-4a150b9755b8.png)","metadata":{},"attachments":{"f7cbc358-aebd-447e-b960-4a150b9755b8.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAhYAAAGDCAYAAAB3BFm+AAAgAElEQVR4nOzde2xc93kn/O85Z85cybnwJlESbVNJ1W0EyIAJIanjN+7uH28MM2i0BbaJkODd1ohjeWO1QTZQFAtuUAiSXSFrpKWykeMi2ywcKOm777t0YQbuH1vEbmr/IYwBq682qdKIjocWKVKcK2fmzMy5vH+MhuZlLr8zc4Zz+36AADF5OPMTL3OeeX7P8/wkXS9aICIiInKA3OkFEBERUf9gYEFERESOYWBBREREjmFgQURERI5hYEFERESOYWBBREREjmFgQURERI5hYEFERESOYWBBREREjmFgQURERI5hYEFERESOYWBBREREjmFgQURERI5hYEFERESOYWBBREREjmFgQURERI5hYEFERESOYWBBREREjmFgQURERI5hYEFERESOYWBBREREjmFgQURERI5hYEFERESOYWBBREREjmFgQURERI5hYEFERESOYWBBREREjmFgQURERI5hYEFERESOYWBBREREjmFgQURERI5hYEFERESOYWBBREREjmFgQURERI5hYEFERESOYWBBREREjmFgQURERI5hYEFERESOYWBBREREjmFgQURERI5hYEFERESOYWBBREREjmFgQURERI5hYEHkkMXFRXzucycRjUbrXpdIJPDkk1/G/PyrbV1PNBrFk09+GYlEoq3PQ0S0lavTCyByUuVmfeLEZ3d9LpFI4MyZb2B2drbq57dec+rUU5iZmWlqDefOPVf148ePH8e5c9/c9fG5uctYXV3DuXPfhNfrbeo5nTI3dxkLCz+te03l3+H1eoWun519HKdPP+PkMomoizGwoL4yNjaGubnLAHYHF5FIBKdOPYVLl76NBx88hunp6V1f/8Ybb2L//kkcPXq06TVcuHC+blCSz+e3/fdnPjOLixefx/Ly8q41aZqGCxeex7Vr13Y9ztYbvJPqPW4lCNqqVuBQWTsRDRYGFtRXHnnkkzh48ADOnn0WU1OHdt3gjx49iiNHjuC11xZ23QwTiQQWFhZw6tRTe5o5mJycxP79k1XXVLHz5j0//yqi0XeQSCTxZ3/2Z4jFlmo+/smTX6j68UYBEBFRMxhYUN+Znp7GyZOfx5UrL+HSpb8AAJw5841dN99KCv/Uqadw4sRn8corP0IstlR1K2Pnu/h6mYRa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"}}}]}