From 5e99239692645d38978c220bf5a911181595bbac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8B=AE=E5=AD=90=E8=80=97=E8=80=97?= Date: Sat, 25 Oct 2025 00:09:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ASSISTment2009=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=9B=86=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assist09_analysis.ipynb | 2102 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 2102 insertions(+) create mode 100644 assist09_analysis.ipynb diff --git a/assist09_analysis.ipynb b/assist09_analysis.ipynb new file mode 100644 index 0000000..8d007ee --- /dev/null +++ b/assist09_analysis.ipynb @@ -0,0 +1,2102 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "edc68c17", + "metadata": {}, + "source": [ + "# AssistMent2009 数据集分析\n", + "\n", + "# 数据集简介\n", + "Skill builder 数据也称为掌握学习数据。该数据集来源于**技能训练**练习题组。当学生达到特定标准(通常设定为连续正确回答3道题)时,即被视为已掌握某项技能,此后系统将不再提供与该技能相关的题目。\n", + "\n", + "# 数据集列含义\n", + "- order_id:原始问题日志的ID\n", + "- assignmet:课程ID\n", + "- user_id:学生ID\n", + "- assistment_id:辅助问题ID\n", + " - 与问题 ID 类似。这是构建器中用户将看到的问题的 ID。如果一个问题包含多个主问题和/或支架问题,则与单个问题相关的一切内容均称为一个辅助任务,并具有相同的辅助任务 ID。如果您在问题日志中看到相同的辅助任务编号,则表明这些问题是同一整体问题下的多个主问题(或支架问题)。\n", + "- problem_id:问题ID\n", + " - 如果一个问题有多个主问题,则每个主问题将拥有不同的问题ID\n", + "- origin(0/1):区分主问题和支撑问题。\n", + " - 1表示主问题,0代表支撑问题\n", + " - 如果一个主问题带有支撑问题,且学生回答错误或请求将问题分解为步骤,则会创建一个名为“支撑问题”的新问题。这将在文件中生成单独的问题日志行,其中变量 original 设置为 0。\n", + "- correct(0/1):问题的回复是否正确\n", + " - 1表示第一尝试即正确,2表示第一次尝试错误或者请求了帮助\n", + " - 这一列通常是预测的目标。(补充说明:尼尔·赫弗南指出,虽然大多数情况下确实如此,但我们也有教师可以评分的作文题。尼尔认为,如果该数值为 0.25,这意味着教师给出了 4 分中的 1 分)\n", + "- attempt_count:尝试次数(学生输入答案的次数)\n", + "- ms_first_response:开始时间与学生首次操作(请求提示或输入答案)之间的时间间隔(单位:毫秒)\n", + "- tutor_mode:导师模式、测试模式和课后测试\n", + " - ASSISTment09数据集中只有tutor和test两种导师模式,且test模式的题目占比极少\n", + "- answer_type:问题答案的类型\n", + "- sequence_id:习题集的ID\n", + "- student_class_id:学生的班级ID\n", + "- position:问题在作业页面上的位置\n", + "- type:问题集的名称\n", + " - ASSISTment09数据集中只有一个问题集MasterySection\n", + "- base_sequence_id:用于标记习题集被复制的情况\n", + " - 当一个习题集被复制的时候,该值为被复制的习题集的ID\n", + "- skill_id:技能ID\n", + " - 在09数据集中,每个问题只与一个技能相关\n", + "- skill_name:技能名称\n", + " - 对于skill_builder数据集,同一条作答记录若对应有多个不同的技能,则该条记录会被复制多次,以保证每一行记录只对应一个技能\n", + "- teacher_id:教师ID\n", + "- school_id:学校ID\n", + "- hint_count:学生期间请求提示的次数\n", + "- hint_total:系统能够提供的提示总数\n", + "- overlap_time:学生完成该问题所用的时间(单位:毫秒)\n", + " - 在理想情况下,这应该为学生完成问题所花费的时间\n", + " - 在系统中,这个字段经常被错误计算,建议使用其他字段来间接计算\n", + "- template_id:ASSISTments的模板ID\n", + " - 具有相同模板ID的ASSISTments包含相似的问题\n", + "- answer_id:多选题答案的ID\n", + "- answer_text:填空题的答案文本\n", + "- first_action:学生首次操作的类型\n", + "- bottom_hint:\n", + " - 如果此项为空,说明学生未请求提示\n", + " - 对于支撑式问题,他们无法获得提示\n", + "- opportunity:学生在该技能上能够练习的次数\n", + " - 对于技能构建器数据集,同一数据记录中不同技能的机会分布在不同的行中。这意味着,如果学生回答了一道多技能题目,该记录会被复制多次,每次复制都会被标记为其中一种多技能,并附上相应的机会计数\n", + "- opportunity_original:学生在该技能上能够练习的次数(仅计算原始问题)\n", + "\n", + "# 补充说明\n", + "\n", + "## 主问题和支撑式问题\n", + "当学生在解决一个**主问题**时回答错误或者主动要求将问题分解成小步骤时,ASSISTment系统会提供**一个或多个支撑式问题**。\n", + "- 支撑式问题在数据集中使用*original*字段进行标记\n", + "- 学生通常不能在回答支撑式问题时获取提示\n", + "\n", + "## 导师模式\n", + "在数据集中*tutor_mode*列用于区分学生做题时系统处于导师(tutor)、测试(test_mode)、课前测试(pre_test)还是课后测试(post_test)。\n", + "在导师模式中,学生做题时可以获得即时反馈、提示或逐步辅导;在测试模式中,学生做题时系统不会给出任何反馈和指导信息。" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "1ed269cb", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Load the ASSISTments 2009 dataset\n", + "data = pd.read_csv(\n", + " \"data/assistment09/skill_builder_data_corrected.csv\",\n", + " low_memory=False,\n", + " encoding=\"latin1\",\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "92fcf75b", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.microsoft.datawrangler.viewer.v0+json": { + "columns": [ + { + "name": "index", + "rawType": "int64", + "type": "integer" + }, + { + "name": "order_id", + "rawType": "int64", + "type": "integer" + }, + { + "name": "assignment_id", + "rawType": "int64", + "type": "integer" + }, + { + "name": "user_id", + "rawType": "int64", + "type": "integer" + }, + { + "name": "assistment_id", + "rawType": "int64", + "type": "integer" + }, + { + "name": "problem_id", + "rawType": "int64", + "type": "integer" + }, + { + "name": "original", + "rawType": "int64", + "type": "integer" + }, + { + "name": "correct", + "rawType": "int64", + "type": "integer" + }, + { + "name": "attempt_count", + "rawType": "int64", + "type": "integer" + }, + { + "name": "ms_first_response", + "rawType": "int64", + "type": "integer" + }, + { + "name": "tutor_mode", + "rawType": "object", + "type": "string" + }, + { + "name": "answer_type", + "rawType": "object", + "type": "string" + }, + { + "name": "sequence_id", + "rawType": "int64", + "type": "integer" + }, + { + "name": "student_class_id", + "rawType": "int64", + "type": "integer" + }, + { + "name": "position", + "rawType": "int64", + "type": "integer" + }, + { + "name": "type", + "rawType": "object", + "type": "string" + }, + { + "name": "base_sequence_id", + "rawType": "int64", + "type": "integer" + }, + { + "name": "skill_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "skill_name", + "rawType": "object", + "type": "string" + }, + { + "name": "teacher_id", + "rawType": "int64", + "type": "integer" + }, + { + "name": "school_id", + "rawType": "int64", + "type": "integer" + }, + { + "name": "hint_count", + "rawType": "int64", + "type": "integer" + }, + { + "name": "hint_total", + "rawType": "int64", + "type": "integer" + }, + { + "name": "overlap_time", + "rawType": "int64", + "type": "integer" + }, + { + "name": "template_id", + "rawType": "int64", + "type": "integer" + }, + { + "name": "answer_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "answer_text", + "rawType": "object", + "type": "string" + }, + { + "name": "first_action", + "rawType": "int64", + "type": "integer" + }, + { + "name": "bottom_hint", + "rawType": "float64", + "type": "float" + }, + { + "name": "opportunity", + "rawType": "int64", + "type": "integer" + }, + { + "name": "opportunity_original", + "rawType": "float64", + "type": "float" + } + ], + "ref": "df411cc4-d6ea-4f22-b70a-9ab5d50356b4", + "rows": [ + [ + "0", + "33022537", + "277618", + "64525", + "33139", + "51424", + "1", + "1", + "1", + "32454", + "tutor", + "algebra", + "5948", + "13241", + "126", + "MasterySection", + "5948", + "1.0", + "Box and Whisker", + "22763", + "73", + "0", + "3", + "32454", + "30799", + null, + "26", + "0", + null, + "1", + "1.0" + ], + [ + "1", + "33022709", + "277618", + "64525", + "33150", + "51435", + "1", + "1", + "1", + "4922", + "tutor", + "algebra", + "5948", + "13241", + "126", + "MasterySection", + "5948", + "1.0", + "Box and Whisker", + "22763", + "73", + "0", + "3", + "4922", + "30799", + null, + "55", + "0", + null, + "2", + "2.0" + ], + [ + "2", + "35450204", + "220674", + "70363", + "33159", + "51444", + "1", + "0", + "2", + "25390", + "tutor", + "algebra", + "5948", + "11816", + "22", + "MasterySection", + "5948", + "1.0", + "Box and Whisker", + "22763", + "73", + "0", + "3", + "42000", + "30799", + null, + "88", + "0", + null, + "1", + "1.0" + ], + [ + "3", + "35450295", + "220674", + "70363", + "33110", + "51395", + "1", + "1", + "1", + "4859", + "tutor", + "algebra", + "5948", + "11816", + "22", + "MasterySection", + "5948", + "1.0", + "Box and Whisker", + "22763", + "73", + "0", + "3", + "4859", + "30059", + null, + "41", + "0", + null, + "2", + "2.0" + ], + [ + "4", + "35450311", + "220674", + "70363", + "33196", + "51481", + "1", + "0", + "14", + "19813", + "tutor", + "algebra", + "5948", + "11816", + "22", + "MasterySection", + "5948", + "1.0", + "Box and Whisker", + "22763", + "73", + "3", + "4", + "124564", + "30060", + null, + "65", + "0", + "0.0", + "3", + "3.0" + ], + [ + "5", + "35450555", + "220674", + "70363", + "33172", + "51457", + "1", + "1", + "1", + "16031", + "tutor", + "algebra", + "5948", + "11816", + "22", + "MasterySection", + "5948", + "1.0", + "Box and Whisker", + "22763", + "73", + "0", + "4", + "16031", + "30060", + null, + "12", + "0", + null, + "4", + "4.0" + ], + [ + "6", + "35450573", + "220674", + "70363", + "33174", + "51459", + "1", + "1", + "1", + "15047", + "tutor", + "algebra", + "5948", + "11816", + "22", + "MasterySection", + "5948", + "1.0", + "Box and Whisker", + "22763", + "73", + "0", + "4", + "15047", + "30060", + null, + "6", + "0", + null, + "5", + "5.0" + ], + [ + "7", + "35480603", + "220674", + "70363", + "33123", + "51408", + "1", + "1", + "1", + "10732", + "tutor", + "algebra", + "5948", + "11816", + "22", + "MasterySection", + "5948", + "1.0", + "Box and Whisker", + "22763", + "73", + "0", + "3", + "10732", + "30059", + null, + "55", + "0", + null, + "6", + "6.0" + ], + [ + "8", + "33140811", + "220674", + "70677", + "33168", + "51453", + "1", + "1", + "1", + "23241", + "tutor", + "algebra", + "5948", + "11816", + "22", + "MasterySection", + "5948", + "1.0", + "Box and Whisker", + "22763", + "73", + "0", + "4", + "23241", + "30060", + null, + "12", + "0", + null, + "1", + "1.0" + ], + [ + "9", + "33140919", + "220674", + "70677", + "33112", + "51397", + "1", + "1", + "1", + "11512", + "tutor", + "algebra", + "5948", + "11816", + "22", + "MasterySection", + "5948", + "1.0", + "Box and Whisker", + "22763", + "73", + "0", + "2", + "11512", + "30059", + null, + "36", + "0", + null, + "2", + "2.0" + ] + ], + "shape": { + "columns": 30, + "rows": 10 + } + }, + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
order_idassignment_iduser_idassistment_idproblem_idoriginalcorrectattempt_countms_first_responsetutor_mode...hint_counthint_totaloverlap_timetemplate_idanswer_idanswer_textfirst_actionbottom_hintopportunityopportunity_original
03302253727761864525331395142411132454tutor...033245430799NaN260NaN11.0
1330227092776186452533150514351114922tutor...03492230799NaN550NaN22.0
23545020422067470363331595144410225390tutor...034200030799NaN880NaN11.0
3354502952206747036333110513951114859tutor...03485930059NaN410NaN22.0
435450311220674703633319651481101419813tutor...3412456430060NaN6500.033.0
53545055522067470363331725145711116031tutor...041603130060NaN120NaN44.0
63545057322067470363331745145911115047tutor...041504730060NaN60NaN55.0
73548060322067470363331235140811110732tutor...031073230059NaN550NaN66.0
83314081122067470677331685145311123241tutor...042324130060NaN120NaN11.0
93314091922067470677331125139711111512tutor...021151230059NaN360NaN22.0
\n", + "

10 rows × 30 columns

\n", + "
" + ], + "text/plain": [ + " order_id assignment_id user_id assistment_id problem_id original \\\n", + "0 33022537 277618 64525 33139 51424 1 \n", + "1 33022709 277618 64525 33150 51435 1 \n", + "2 35450204 220674 70363 33159 51444 1 \n", + "3 35450295 220674 70363 33110 51395 1 \n", + "4 35450311 220674 70363 33196 51481 1 \n", + "5 35450555 220674 70363 33172 51457 1 \n", + "6 35450573 220674 70363 33174 51459 1 \n", + "7 35480603 220674 70363 33123 51408 1 \n", + "8 33140811 220674 70677 33168 51453 1 \n", + "9 33140919 220674 70677 33112 51397 1 \n", + "\n", + " correct attempt_count ms_first_response tutor_mode ... hint_count \\\n", + "0 1 1 32454 tutor ... 0 \n", + "1 1 1 4922 tutor ... 0 \n", + "2 0 2 25390 tutor ... 0 \n", + "3 1 1 4859 tutor ... 0 \n", + "4 0 14 19813 tutor ... 3 \n", + "5 1 1 16031 tutor ... 0 \n", + "6 1 1 15047 tutor ... 0 \n", + "7 1 1 10732 tutor ... 0 \n", + "8 1 1 23241 tutor ... 0 \n", + "9 1 1 11512 tutor ... 0 \n", + "\n", + " hint_total overlap_time template_id answer_id answer_text first_action \\\n", + "0 3 32454 30799 NaN 26 0 \n", + "1 3 4922 30799 NaN 55 0 \n", + "2 3 42000 30799 NaN 88 0 \n", + "3 3 4859 30059 NaN 41 0 \n", + "4 4 124564 30060 NaN 65 0 \n", + "5 4 16031 30060 NaN 12 0 \n", + "6 4 15047 30060 NaN 6 0 \n", + "7 3 10732 30059 NaN 55 0 \n", + "8 4 23241 30060 NaN 12 0 \n", + "9 2 11512 30059 NaN 36 0 \n", + "\n", + " bottom_hint opportunity opportunity_original \n", + "0 NaN 1 1.0 \n", + "1 NaN 2 2.0 \n", + "2 NaN 1 1.0 \n", + "3 NaN 2 2.0 \n", + "4 0.0 3 3.0 \n", + "5 NaN 4 4.0 \n", + "6 NaN 5 5.0 \n", + "7 NaN 6 6.0 \n", + "8 NaN 1 1.0 \n", + "9 NaN 2 2.0 \n", + "\n", + "[10 rows x 30 columns]" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 显示数据集的前十行\n", + "data.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "75bca3a4", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.microsoft.datawrangler.viewer.v0+json": { + "columns": [ + { + "name": "index", + "rawType": "object", + "type": "string" + }, + { + "name": "order_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "assignment_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "user_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "assistment_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "problem_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "original", + "rawType": "float64", + "type": "float" + }, + { + "name": "correct", + "rawType": "float64", + "type": "float" + }, + { + "name": "attempt_count", + "rawType": "float64", + "type": "float" + }, + { + "name": "ms_first_response", + "rawType": "float64", + "type": "float" + }, + { + "name": "sequence_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "student_class_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "position", + "rawType": "float64", + "type": "float" + }, + { + "name": "base_sequence_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "skill_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "teacher_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "school_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "hint_count", + "rawType": "float64", + "type": "float" + }, + { + "name": "hint_total", + "rawType": "float64", + "type": "float" + }, + { + "name": "overlap_time", + "rawType": "float64", + "type": "float" + }, + { + "name": "template_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "answer_id", + "rawType": "float64", + "type": "float" + }, + { + "name": "first_action", + "rawType": "float64", + "type": "float" + }, + { + "name": "bottom_hint", + "rawType": "float64", + "type": "float" + }, + { + "name": "opportunity", + "rawType": "float64", + "type": "float" + }, + { + "name": "opportunity_original", + "rawType": "float64", + "type": "float" + } + ], + "ref": "2ed645f1-02f9-4fc4-a0c7-1c7b54d08cad", + "rows": [ + [ + "count", + "401756.0", + "401756.0", + "401756.0", + "401756.0", + "401756.0", + "401756.0", + "401756.0", + "401756.0", + "401756.0", + "401756.0", + "401756.0", + "401756.0", + "401756.0", + "338001.0", + "401756.0", + "401756.0", + "401756.0", + "401756.0", + "401756.0", + "401756.0", + "45454.0", + "401756.0", + "67044.0", + "401756.0", + "328291.0" + ], + [ + "mean", + "30662559.65079053", + "273701.84588157985", + "83414.15454156254", + "46443.51752556278", + "81117.0300107528", + "0.8171402542836946", + "0.6429225699180597", + "1.596416730552873", + "47484.643271040135", + "7284.411087824451", + "12919.115221676839", + "57.163649080536445", + "6786.020985374207", + "127.16703205020103", + "46875.58732165792", + "3031.291024900686", + "0.48747000667071555", + "2.235817262218859", + "59648.48120501001", + "39571.335029221715", + "145094.43166718", + "0.13001174842441682", + "0.7240916413101843", + "20.553534981431515", + "14.403306822300946" + ], + [ + "std", + "5264886.089028761", + "11338.460016588557", + "7417.81402055726", + "11832.443427164199", + "25426.79966219532", + "0.38655197714693906", + "0.4791385086107508", + "12.050437265853866", + "361458.9611268155", + "1497.9410719196715", + "783.548290733902", + "65.21546405883011", + "1263.3597354711062", + "120.42751824440924", + "15892.975480841278", + "1830.4514863620323", + "1.187255363606401", + "1.804243880628286", + "382218.84936623357", + "12679.4399263291", + "47127.4782849689", + "0.3940987205726975", + "0.4469741784681641", + "62.52399351910894", + "62.39368356386473" + ], + [ + "min", + "20224085.0", + "217900.0", + "14.0", + "86.0", + "83.0", + "0.0", + "0.0", + "0.0", + "-7759575.0", + "5870.0", + "11644.0", + "1.0", + "5870.0", + "1.0", + "11158.0", + "1.0", + "0.0", + "0.0", + "-7759575.0", + "86.0", + "1.0", + "0.0", + "0.0", + "1.0", + "1.0" + ], + [ + "25%", + "26602182.25", + "266784.0", + "78970.0", + "37046.0", + "58467.0", + "1.0", + "0.0", + "1.0", + "8518.0", + "5979.0", + "12352.0", + "9.0", + "5968.0", + "39.0", + "42999.0", + "2770.0", + "0.0", + "0.0", + "10669.0", + "30244.0", + "104412.0", + "0.0", + "0.0", + "3.0", + "3.0" + ], + [ + "50%", + "31105126.0", + "271629.0", + "80111.0", + "44498.0", + "80734.0", + "1.0", + "1.0", + "1.0", + "19453.0", + "6910.0", + "12574.0", + "27.0", + "6094.0", + "74.0", + "45778.0", + "2770.0", + "0.0", + "3.0", + "24264.5", + "30987.0", + "136247.0", + "0.0", + "1.0", + "8.0", + "6.0" + ], + [ + "75%", + "34943640.75", + "279158.0", + "88142.0", + "53142.0", + "93102.0", + "1.0", + "1.0", + "1.0", + "44578.25", + "8032.0", + "13241.0", + "92.0", + "7014.0", + "279.0", + "59882.0", + "5056.0", + "0.0", + "4.0", + "56989.25", + "46399.0", + "184077.0", + "0.0", + "1.0", + "19.0", + "13.0" + ], + [ + "max", + "38310202.0", + "291503.0", + "96299.0", + "106210.0", + "207348.0", + "1.0", + "1.0", + "3824.0", + "84076920.0", + "13362.0", + "14415.0", + "295.0", + "13362.0", + "378.0", + "69274.0", + "9948.0", + "10.0", + "10.0", + "84076925.0", + "106180.0", + "323181.0", + "2.0", + "1.0", + "3371.0", + "3371.0" + ] + ], + "shape": { + "columns": 25, + "rows": 8 + } + }, + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
order_idassignment_iduser_idassistment_idproblem_idoriginalcorrectattempt_countms_first_responsesequence_id...school_idhint_counthint_totaloverlap_timetemplate_idanswer_idfirst_actionbottom_hintopportunityopportunity_original
count4.017560e+05401756.000000401756.000000401756.000000401756.000000401756.000000401756.000000401756.0000004.017560e+05401756.000000...401756.000000401756.000000401756.0000004.017560e+05401756.00000045454.000000401756.00000067044.000000401756.000000328291.000000
mean3.066256e+07273701.84588283414.15454246443.51752681117.0300110.8171400.6429231.5964174.748464e+047284.411088...3031.2910250.4874702.2358175.964848e+0439571.335029145094.4316670.1300120.72409220.55353514.403307
std5.264886e+0611338.4600177417.81402111832.44342725426.7996620.3865520.47913912.0504373.614590e+051497.941072...1830.4514861.1872551.8042443.822188e+0512679.43992647127.4782850.3940990.44697462.52399462.393684
min2.022408e+07217900.00000014.00000086.00000083.0000000.0000000.0000000.000000-7.759575e+065870.000000...1.0000000.0000000.000000-7.759575e+0686.0000001.0000000.0000000.0000001.0000001.000000
25%2.660218e+07266784.00000078970.00000037046.00000058467.0000001.0000000.0000001.0000008.518000e+035979.000000...2770.0000000.0000000.0000001.066900e+0430244.000000104412.0000000.0000000.0000003.0000003.000000
50%3.110513e+07271629.00000080111.00000044498.00000080734.0000001.0000001.0000001.0000001.945300e+046910.000000...2770.0000000.0000003.0000002.426450e+0430987.000000136247.0000000.0000001.0000008.0000006.000000
75%3.494364e+07279158.00000088142.00000053142.00000093102.0000001.0000001.0000001.0000004.457825e+048032.000000...5056.0000000.0000004.0000005.698925e+0446399.000000184077.0000000.0000001.00000019.00000013.000000
max3.831020e+07291503.00000096299.000000106210.000000207348.0000001.0000001.0000003824.0000008.407692e+0713362.000000...9948.00000010.00000010.0000008.407692e+07106180.000000323181.0000002.0000001.0000003371.0000003371.000000
\n", + "

8 rows × 25 columns

\n", + "
" + ], + "text/plain": [ + " order_id assignment_id user_id assistment_id \\\n", + "count 4.017560e+05 401756.000000 401756.000000 401756.000000 \n", + "mean 3.066256e+07 273701.845882 83414.154542 46443.517526 \n", + "std 5.264886e+06 11338.460017 7417.814021 11832.443427 \n", + "min 2.022408e+07 217900.000000 14.000000 86.000000 \n", + "25% 2.660218e+07 266784.000000 78970.000000 37046.000000 \n", + "50% 3.110513e+07 271629.000000 80111.000000 44498.000000 \n", + "75% 3.494364e+07 279158.000000 88142.000000 53142.000000 \n", + "max 3.831020e+07 291503.000000 96299.000000 106210.000000 \n", + "\n", + " problem_id original correct attempt_count \\\n", + "count 401756.000000 401756.000000 401756.000000 401756.000000 \n", + "mean 81117.030011 0.817140 0.642923 1.596417 \n", + "std 25426.799662 0.386552 0.479139 12.050437 \n", + "min 83.000000 0.000000 0.000000 0.000000 \n", + "25% 58467.000000 1.000000 0.000000 1.000000 \n", + "50% 80734.000000 1.000000 1.000000 1.000000 \n", + "75% 93102.000000 1.000000 1.000000 1.000000 \n", + "max 207348.000000 1.000000 1.000000 3824.000000 \n", + "\n", + " ms_first_response sequence_id ... school_id hint_count \\\n", + "count 4.017560e+05 401756.000000 ... 401756.000000 401756.000000 \n", + "mean 4.748464e+04 7284.411088 ... 3031.291025 0.487470 \n", + "std 3.614590e+05 1497.941072 ... 1830.451486 1.187255 \n", + "min -7.759575e+06 5870.000000 ... 1.000000 0.000000 \n", + "25% 8.518000e+03 5979.000000 ... 2770.000000 0.000000 \n", + "50% 1.945300e+04 6910.000000 ... 2770.000000 0.000000 \n", + "75% 4.457825e+04 8032.000000 ... 5056.000000 0.000000 \n", + "max 8.407692e+07 13362.000000 ... 9948.000000 10.000000 \n", + "\n", + " hint_total overlap_time template_id answer_id \\\n", + "count 401756.000000 4.017560e+05 401756.000000 45454.000000 \n", + "mean 2.235817 5.964848e+04 39571.335029 145094.431667 \n", + "std 1.804244 3.822188e+05 12679.439926 47127.478285 \n", + "min 0.000000 -7.759575e+06 86.000000 1.000000 \n", + "25% 0.000000 1.066900e+04 30244.000000 104412.000000 \n", + "50% 3.000000 2.426450e+04 30987.000000 136247.000000 \n", + "75% 4.000000 5.698925e+04 46399.000000 184077.000000 \n", + "max 10.000000 8.407692e+07 106180.000000 323181.000000 \n", + "\n", + " first_action bottom_hint opportunity opportunity_original \n", + "count 401756.000000 67044.000000 401756.000000 328291.000000 \n", + "mean 0.130012 0.724092 20.553535 14.403307 \n", + "std 0.394099 0.446974 62.523994 62.393684 \n", + "min 0.000000 0.000000 1.000000 1.000000 \n", + "25% 0.000000 0.000000 3.000000 3.000000 \n", + "50% 0.000000 1.000000 8.000000 6.000000 \n", + "75% 0.000000 1.000000 19.000000 13.000000 \n", + "max 2.000000 1.000000 3371.000000 3371.000000 \n", + "\n", + "[8 rows x 25 columns]" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 显示数据集的基本统计信息\n", + "data.describe()" + ] + }, + { + "cell_type": "markdown", + "id": "41e5d86e", + "metadata": {}, + "source": [ + "# 数据集中关键列的统计信息" + ] + }, + { + "cell_type": "markdown", + "id": "5185e94c", + "metadata": {}, + "source": [ + "# 数据集原始数据量\n", + "以下数据描述了原始数据集中包含的数据数量。\n", + "\n", + "- 学生数量:4217\n", + "- 总问题数量:26688\n", + " - 主问题数量:18209\n", + " - 支撑问题数量:8479\n", + "- 技能数量:123" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "640bb351", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of students: 4217\n", + "Number of questions: 26688\n", + "Number of skills: 123\n", + "Number of main questions: 18209\n", + "Number of scaffolding questions: 8479\n" + ] + } + ], + "source": [ + "# 统计学生数量\n", + "num_students = data[\"user_id\"].nunique()\n", + "print(f\"Number of students: {num_students}\")\n", + "\n", + "# 统计问题数量\n", + "num_questions = data[\"problem_id\"].nunique()\n", + "print(f\"Number of questions: {num_questions}\")\n", + "\n", + "# 统计技能数量\n", + "num_skills = data[\"skill_id\"].nunique()\n", + "print(f\"Number of skills: {num_skills}\")\n", + "\n", + "# 主问题数量\n", + "num_main_questions = data[data[\"original\"] == 1][\"problem_id\"].nunique()\n", + "print(f\"Number of main questions: {num_main_questions}\")\n", + "\n", + "# 支撑问题数量\n", + "num_scaffolding_questions = data[data[\"original\"] == 0][\"problem_id\"].nunique()\n", + "print(f\"Number of scaffolding questions: {num_scaffolding_questions}\")" + ] + }, + { + "cell_type": "markdown", + "id": "0ed57684", + "metadata": {}, + "source": [ + "# 数据缺失情况\n", + "- skill_id:63755\n", + "- skill_name:76119\n", + "- answer_id:356302\n", + "- answer_text:89208\n", + "- bottom_hint:334712\n", + "- opportunity_original:73465" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "a1ccdaf2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "skill_id 63755\n", + "skill_name 76119\n", + "answer_id 356302\n", + "answer_text 89208\n", + "bottom_hint 334712\n", + "opportunity_original 73465\n", + "dtype: int64\n" + ] + } + ], + "source": [ + "# 统计原始数据中所有存在缺失值的列\n", + "missing_values = data.isnull().sum()\n", + "print(missing_values[missing_values > 0])" + ] + }, + { + "cell_type": "markdown", + "id": "ea3a2c1e", + "metadata": {}, + "source": [ + "# 统计数据量\n", + "以下数据通过一些统计量来描述数据集的结构。\n", + "\n", + "- 平均每个学生的答题次数:95.27\n", + "- 每个问题平均关联的技能数量(排除没有关联技能的问题):1.2" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "df58c949", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average attempts per student: 95.27\n", + "Median attempts per student: 26.00\n", + "Skills per question statistics:\n", + "count 17751.000000\n", + "mean 1.196890\n", + "std 0.470233\n", + "min 1.000000\n", + "25% 1.000000\n", + "50% 1.000000\n", + "75% 1.000000\n", + "max 4.000000\n", + "Name: skill_id, dtype: float64\n", + "Average skills per question: 1.20\n", + "Median skills per question: 1.00\n" + ] + } + ], + "source": [ + "# 平均每个学生的答题次数\n", + "attempts_per_student = data.groupby(\"user_id\")[\"problem_id\"].count()\n", + "avg_attempts_per_student = attempts_per_student.mean()\n", + "median_attempts_per_student = attempts_per_student.median()\n", + "print(f\"Average attempts per student: {avg_attempts_per_student:.2f}\")\n", + "print(f\"Median attempts per student: {median_attempts_per_student:.2f}\")\n", + "\n", + "# 每个问题关联的技能数量\n", + "skills_per_question = data.groupby(\"problem_id\")[\"skill_id\"].nunique()\n", + "skills_per_question = skills_per_question[skills_per_question > 0] # 排除没有关联技能的问题\n", + "print(\"Skills per question statistics:\")\n", + "print(skills_per_question.describe())\n", + "# 计算每个问题关联的技能数量的平均值和中位数\n", + "avg_skills_per_question = skills_per_question.mean()\n", + "median_skills_per_question = skills_per_question.median()\n", + "print(f\"Average skills per question: {avg_skills_per_question:.2f}\")\n", + "print(f\"Median skills per question: {median_skills_per_question:.2f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "21c2c810", + "metadata": {}, + "source": [ + "# 其他列的分析\n", + "\n", + "- 技能信息\n", + "- 主问题和支撑问题\n", + "- 首次操作类型\n", + "- 题目的答案类型" + ] + }, + { + "cell_type": "markdown", + "id": "e35a25ae", + "metadata": {}, + "source": [ + "### 技能 (skill_id, skill_name)\n", + "数据集中并不是每一个问题都有其对应的技能,整个数据集中存在8937个问题没有对应的技能ID(包括主问题和支撑问题)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "8734257a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total unique skills: 123\n", + "Number of questions without associated skills: 8937\n" + ] + } + ], + "source": [ + "# 技能的数量\n", + "skill_counts = data[\"skill_id\"].dropna().unique()\n", + "print(f\"Total unique skills: {len(skill_counts)}\")\n", + "\n", + "# 筛选出没有关联技能的问题\n", + "questions_without_skills = data[data[\"skill_id\"].isnull()][\"problem_id\"].unique()\n", + "print(f\"Number of questions without associated skills: {len(questions_without_skills)}\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c52ae66", + "metadata": {}, + "source": [ + "### 主问题和支撑问题 (original)\n", + "- 主问题:1\n", + "- 支撑问题:0" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "b7c4cb88", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total main questions: 18209\n", + "Total scaffolding questions: 8479\n" + ] + } + ], + "source": [ + "# 选择所有的主问题\n", + "main_questions = data[data[\"original\"] == 1][\"problem_id\"].unique()\n", + "print(f\"Total main questions: {len(main_questions)}\")\n", + "# 选择所有的支撑问题\n", + "scaffolding_questions = data[data[\"original\"] == 0][\"problem_id\"].unique()\n", + "print(f\"Total scaffolding questions: {len(scaffolding_questions)}\")" + ] + }, + { + "cell_type": "markdown", + "id": "b8639e1f", + "metadata": {}, + "source": [ + "### 首次操作的类型 (first_action)\n", + "- 0:尝试作答\n", + "- 1:获取提示\n", + "- 2:支撑结构\n", + "\n", + "> 在该数据集中,所有学生点击题目后都进行了上述三者之一的操作" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "abc2aa1e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First action types in the dataset: [0 1 2]\n" + ] + } + ], + "source": [ + "# 首次操作的类型\n", + "first_action_types = data[\"first_action\"].dropna().unique()\n", + "print(\"First action types in the dataset:\", first_action_types)" + ] + }, + { + "cell_type": "markdown", + "id": "26996726", + "metadata": {}, + "source": [ + "### 题目的答案类型 (answer_type)\n", + "- algebra(数字):18660\n", + "- fill_in_1(填空):3048\n", + "- choose_1(单项选择):4900\n", + "- open_response(开放式回答):5\n", + "- choose_n(多选题):75" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "d97ca7d1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Answer types in the dataset: ['algebra' 'fill_in_1' 'choose_1' 'open_response' 'choose_n']\n", + "Algebra questions: 18660\n", + "Fill-in questions: 3048\n", + "Choose questions: 4900\n", + "Open response questions: 5\n", + "Choose-n questions: 75\n" + ] + } + ], + "source": [ + "# 题目的答案类型\n", + "answer_type = data[\"answer_type\"].dropna().unique()\n", + "print(\"Answer types in the dataset:\", answer_type)\n", + "\n", + "# 每个类型的题目数量分布\n", + "ablgebra_count = data[data[\"answer_type\"] == \"algebra\"][\"problem_id\"].nunique()\n", + "fill_in_1_count = data[data[\"answer_type\"] == \"fill_in_1\"][\"problem_id\"].nunique()\n", + "choose_count = data[data[\"answer_type\"] == \"choose_1\"][\"problem_id\"].nunique()\n", + "open_response_count = data[data[\"answer_type\"] == \"open_response\"][\"problem_id\"].nunique()\n", + "choose_n_count = data[data[\"answer_type\"] == \"choose_n\"][\"problem_id\"].nunique()\n", + "print(f\"Algebra questions: {ablgebra_count}\")\n", + "print(f\"Fill-in questions: {fill_in_1_count}\")\n", + "print(f\"Choose questions: {choose_count}\")\n", + "print(f\"Open response questions: {open_response_count}\")\n", + "print(f\"Choose-n questions: {choose_n_count}\")" + ] + }, + { + "cell_type": "markdown", + "id": "438d0e89", + "metadata": {}, + "source": [ + "### 复制的行数量" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "0cf952bb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of copy sequences: 320\n" + ] + } + ], + "source": [ + "different_sequence = data[data[\"sequence_id\"] != data[\"base_sequence_id\"]]\n", + "print(f\"Number of copy sequences: {different_sequence['sequence_id'].nunique()}\")" + ] + }, + { + "cell_type": "markdown", + "id": "84635008", + "metadata": {}, + "source": [ + "# 数据结构可视化\n", + "这一板块中包含了对数据集中重要数据的可视化代码和结果。\n", + "\n", + "- 学生的答题次数分布图\n", + "- 问题类型分布图\n", + "- 整体答题正确率分布图" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "c289ef13", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1EAAAIjCAYAAADiGJHUAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWAZJREFUeJzt3Xl0FFX+/vGnE0hCWMISkrCFRMgAYQnIjiKgGRB30QEZo4CoozYCgiiMC4souIAo04DjTxaVAYFBVBy2CSiKKIsERAISJxhGIKFFSFiGJX1/f3jor00SSCVpukO/X+fkHOvWrapP3W6SfqyuWzZjjBEAAAAAoFiCfF0AAAAAAJQnhCgAAAAAsIAQBQAAAAAWEKIAAAAAwAJCFAAAAABYQIgCAAAAAAsIUQAAAABgASEKAAAAACwgRAEAAACABYQoACiGcePGyWazXZZjde/eXd27d3cvf/bZZ7LZbFqyZMllOf7AgQMVFxd3WY5VUsePH9eDDz6omJgY2Ww2DR8+3NclXdTlfP8AALyPEAUg4MydO1c2m839ExYWprp166pXr1568803lZeXVybHOXDggMaNG6e0tLQy2V9Z8ufaiuOll17S3Llz9eijj+q9997TfffdV2TfM2fO6I033lCbNm1UrVo1Va9eXc2bN9fDDz+s3bt3u/t99dVXGjdunI4ePXoZzqDsleY1nTFjhmw2mzp27Fjo+l27dmncuHHat29fodvOnTvX8jF94WLnAQBWEKIABKwJEybovffe08yZM/X4449LkoYPH66WLVtqx44dHn2fffZZnTp1ytL+Dxw4oPHjx1v+ULt69WqtXr3a0jZWXay2t99+W3v27PHq8Utr7dq16tSpk8aOHauUlBS1bdu2yL533XWXRo4cqRYtWmjy5MkaP368rrvuOq1YsUJff/21u99XX32l8ePHl+sQVZL3myTNnz9fcXFx2rRpkzIyMgqs37Vrl8aPH39FhKiizgMArKjg6wIAwFd69+6tdu3auZfHjBmjtWvX6pZbbtFtt92m9PR0VapUSZJUoUIFVajg3V+ZJ0+eVHh4uEJCQrx6nEupWLGiT49fHDk5OUpMTLxkv82bN2v58uV68cUX9de//tVj3d/+9rdyG5jKUmZmpr766istXbpUf/nLXzR//nyNHTvW12UBgF/jShQA/M7111+v5557Tj/99JPef/99d3th97SsWbNG1157rapXr64qVaqoSZMm7g/qn332mdq3by9JGjRokPurg+f/j3337t3VokULbd26Vdddd53Cw8Pd2154T9R5+fn5+utf/6qYmBhVrlxZt912m/bv3+/RJy4uTgMHDiyw7e/3eanaCrsn6sSJExo5cqQaNGig0NBQNWnSRK+99pqMMR79bDabhgwZomXLlqlFixYKDQ1V8+bNtXLlysIH/AI5OTkaPHiwoqOjFRYWpqSkJM2bN8+9/vz9YZmZmfr000/dtRd1ZeHHH3+UJF1zzTUF1gUHB6tWrVqSfnt9R40aJUmKj4/32O++ffs8xufC8x03bpxH25dffqn27dsrLCxMjRo10ltvvVXk+b7//vtq27atKlWqpJo1a+qee+4p8Jqef6/s2rVLPXr0UHh4uOrVq6dXXnnFY1wu9ppezPz581WjRg3dfPPNuvvuuzV//nyP9XPnztWf/vQnSVKPHj3c+/7ss88UFxen77//Xp9//rm7/ffv3aNHj2r48OHu903jxo318ssvy+VyufucH9/XXntNDodDV111lcLDw9WzZ0/t379fxhi98MILql+/vipVqqTbb79dR44c8agxLi5Ot9xyi1avXq3WrVsrLCxMiYmJWrp0abHOQ5K2bNmiXr16KTIyUpUqVVJ8fLweeOCBS44fgMDElSgAuMB9992nv/71r1q9erUeeuihQvt8//33uuWWW9SqVStNmDBBoaGhysjI0IYNGyRJzZo104QJE/T888/r4YcfVteuXSVJXbp0ce/jl19+Ue/evXXPPfcoJSVF0dHRF63rxRdflM1m09NPP62cnBxNmzZNycnJSktLc18xK47i1PZ7xhjddtttWrdunQYPHqzWrVtr1apVGjVqlH7++We9/vrrHv2//PJLLV26VI899piqVq2qN998U3fddZeysrLcoaUwp06dUvfu3ZWRkaEhQ4YoPj5eixcv1sCBA3X06FENGzZMzZo103vvvacnnnhC9evX18iRIyVJtWvXLnSfDRs2lPRbULjmmmuKvJrYp08f/fDDD1qwYIFef/11RUZGuvd7+PDhi4ymp++++049e/ZU7dq1NW7cOJ07d05jx44t9LV98cUX9dxzz6lv37568MEHdfjwYU2fPl3XXXedtm3bpurVq7v7/vrrr7rxxhvVp08f9e3bV0uWLNHTTz+tli1bqnfv3pZf09+bP3+++vTpo5CQEPXv318zZ87U5s2b3aHsuuuu09ChQ/Xmm2/qr3/9q5o1aybpt/fRtGnT9Pjjj6tKlSp65plnJMl9ridPnlS3bt30888/6y9/+YtiY2P11VdfacyYMTp48KCmTZtWoI4zZ87o8ccf15EjR/TKK6+ob9++uv766/XZZ5/p6aefVkZGhqZPn64nn3xSs2fP9th+79696tevnx555BENGDBAc+bM0Z/+9CetXLlSf/zjHy96Hjk5Oe7XbfTo0apevbr27dvnEcIAwIMBgAAzZ84cI8ls3ry5yD4RERGmTZs27uWxY8ea3//KfP31140kc/jw4SL3sXnzZiPJzJkzp8C6bt26GUlm1qxZha7r1q2be3ndunVGkqlXr57Jzc11ty9atMhIMm+88Ya7rWHDhmbAgAGX3OfFahswYIBp2LChe3nZsmVGkpk4caJHv7vvvtvYbDaTkZHhbpNkQkJCPNq2b99uJJnp06cXONbvTZs2zUgy77//vrvtzJkzpnPnzqZKlSoe596wYUNz8803X3R/xhjjcrncYx0dHW369+9vHA6H+emnnwr0ffXVV40kk5mZ6dGemZlZ5FhJMmPHjnUv33HHHSYsLMxj/7t27TLBwcEe7599+/aZ4OBg8+KLL3rs77vvvjMVKlTwaD9f/7vvvutuO336tImJiTF33XWXu+1ir2lRtmzZYiSZNWvWGGN+G6/69eubYcOGefRbvHixkWTWrVtXYB/Nmzf3eG+d98ILL5jKlSubH374waN99OjRJjg42GRlZRlj/m98a9eubY4ePeruN2bMGCPJJCUlmbNnz7rb+/fvb0JCQsz//vc/d1vDhg2NJPPPf/7T3Xbs2DFTp04dj3/HRZ3Hhx9+eMnfCQDwe3ydDwAKUaVKlYvO0nf+KsFHH33k8dUkK0JDQzVo0KBi97///vtVtWpV9/Ldd9+tOnXq6F//+leJjl9c//rXvxQcHKyhQ4d6tI8cOVLGGK1YscKjPTk5WY0aNXIvt2rVStWqVdN//vOfSx4nJiZG/fv3d7dVrFhRQ4cO1fHjx/X5559brt1ms2nVqlWaOHGiatSooQULFshut6thw4bq169fmd4TlZ+fr1WrVumOO+5QbGysu71Zs2bq1auXR9+lS5fK5XKpb9++cjqd7p+YmBglJCRo3bp1Hv2rVKmilJQU93JISIg6dOhwyTG9lPnz5ys6Olo9evSQ9Nt49evXTwsXLlR+fn6p9r148WJ17dpVNWrU8DjH5ORk5efna/369R79//SnPykiIsK9fH6mwJSUFI8riB07dtSZM2f0888/e2xft25d3Xnnne7latWq6f7779e2bdt06NChi9Z6/t/z8uXLdfbs2RKdL4DAQogCgEIcP37cI7BcqF+/frrmmmv04IMPKjo6Wvfcc48WLVpkKVDVq1fP0iQSCQkJHss2m02NGzf2+kxjP/30k+rWrVtgPM5/Heqnn37yaP99gDivRo0a+vXXXy95nISEBAUFef5pKuo4xRUaGqpnnnlG6enpOnDggBYsWKBOnTpp0aJFGjJkSIn2WZjDhw/r1KlTBV4nSWrSpInH8t69e2WMUUJCgmrXru3xk56erpycHI/+9evXL3BPXnHG9GLy8/O1cOFC9ejRQ5mZmcrIyFBGRoY6duyo7Oxspaamlnjf0m/nuHLlygLnl5ycLEkFzvHC9835QNWgQYNC2y8898aNGxcYoz/84Q+SdMl/I926ddNdd92l8ePHKzIyUrfffrvmzJmj06dPF+NMAQQi7okCgAv897//1bFjx9S4ceMi+1SqVEnr16/XunXr9Omnn2rlypX64IMPdP3112v16tUKDg6+5HGs3MdUXEU90DU/P79YNZWFoo5jLpiEwhfq1Kmje+65R3fddZeaN2+uRYsWae7cuRedefFiY1pSLpdLNptNK1asKHS8qlSp4rHsjTFdu3atDh48qIULF2rhwoUF1s+fP189e/Ys8f5dLpf++Mc/6qmnnip0/fmAc15R53g53k/nH2b99ddf65NPPtGqVav0wAMPaMqUKfr6668LvB4AQIgCgAu89957klTgK1gXCgoK0g033KAbbrhBU6dO1UsvvaRnnnlG69atU3JycpEfvktq7969HsvGGGVkZKhVq1butho1ahT6FbWffvpJV111lXvZSm0NGzbUv//9b+Xl5XlcjTr/oNrzkzeUVsOGDbVjxw65XC6Pq1FlfRzpt68JtmrVSnv37nV/ja6oMalRo4YkFRjXC6+M1a5dW5UqVSrwOkkq8NytRo0ayRij+Pj4AmGipKy+3+bPn6+oqCg5HI4C65YuXaoPP/xQs2bNUqVKlS6676LWNWrUSMePH3dfefK2jIwMGWM86vnhhx8kyT3b5KXGqFOnTurUqZNefPFF/eMf/9C9996rhQsX6sEHH/Ra3QDKJ77OBwC/s3btWr3wwguKj4/XvffeW2S/C6dYlqTWrVtLkvsrQJUrV5ZU8MN3Sb377rse92ktWbJEBw8eVO/evd1tjRo10tdff60zZ86425YvX15g2mwrtd10003Kz8/X3/72N4/2119/XTabzeP4pXHTTTfp0KFD+uCDD9xt586d0/Tp01WlShV169bN8j737t2rrKysAu1Hjx7Vxo0bVaNGDffMfkWNSbVq1RQZGVngHp4ZM2Z4LAcHB6tXr15atmyZxzHT09O1atUqj759+vRRcHCwxo8fX+CKijFGv/zyi7UTvUj9hTl16pSWLl2qW265RXfffXeBnyFDhigvL08ff/zxJfdduXLlQtv79u2rjRs3Fjj38/s5d+5c8U+uGA4cOKAPP/zQvZybm6t3331XrVu3VkxMjLvW88f/vV9//bXA63Dhv2cA+D2uRAEIWCtWrNDu3bt17tw5ZWdna+3atVqzZo0aNmyojz/+WGFhYUVuO2HCBK1fv14333yzGjZsqJycHM2YMUP169fXtddeK+m3QFO9enXNmjVLVatWVeXKldWxY0fFx8eXqN6aNWvq2muv1aBBg5Sdna1p06apcePGHtOwP/jgg1qyZIluvPFG9e3bVz/++KPef/99j4kerNZ26623qkePHnrmmWe0b98+JSUlafXq1froo480fPjwAvsuqYcfflhvvfWWBg4cqK1btyouLk5LlizRhg0bNG3atIveo1aU7du3689//rN69+6trl27qmbNmvr55581b948HThwQNOmTXN/Xaxt27aSpGeeeUb33HOPKlasqFtvvVWVK1fWgw8+qMmTJ+vBBx9Uu3bttH79evdVjt8bP368Vq5cqa5du+qxxx5zh8DmzZtrx44d7n6NGjXSxIkTNWbMGO3bt0933HGHqlatqszMTH344Yd6+OGH9eSTT1o6Vyuv6ccff6y8vDzddttthe6rU6dOql27tubPn69+/fqpdevWCg4O1ssvv6xjx44pNDRU119/vaKiotS2bVvNnDlTEydOVOPGjRUVFaXrr79eo0aN0scff6xbbrlFAwcOVNu2bXXixAl99913WrJkifbt2+eeSr4s/OEPf9DgwYO1efNmRUdHa/bs2crOztac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SwAAAACAFVyJAgAAAAALCFEAAAAAYAEhCgAAAAAsIEQBAAAAgAWEKD/hcDgUFxensLAwdezYUZs2bfJ1SX5v0qRJat++vapWraqoqCjdcccd2rNnj0ef//3vf7Lb7apVq5aqVKmiu+66S9nZ2R59srKydPPNNys8PFxRUVEaNWqUzp07dzlPpVyYPHmybDabhg8f7m5jfEvn559/VkpKimrVqqVKlSqpZcuW2rJli3u9MUbPP/+86tSpo0qVKik5OVl79+712MeRI0d07733qlq1aqpevboGDx6s48ePX+5T8Sv5+fl67rnnFB8fr0qVKqlRo0Z64YUX9Pt5lBjb4lu/fr1uvfVW1a1bVzabTcuWLfNYX1ZjuWPHDnXt2lVhYWFq0KCBXnnlFW+fml+42PiePXtWTz/9tFq2bKnKlSurbt26uv/++3XgwAGPfTC+RbvU+/f3HnnkEdlsNk2bNs2jnfEtWnHGNz09XbfddpsiIiJUuXJltW/fXllZWe715fazhIHPLVy40ISEhJjZs2eb77//3jz00EOmevXqJjs729el+bVevXqZOXPmmJ07d5q0tDRz0003mdjYWHP8+HF3n0ceecQ0aNDApKammi1btphOnTqZLl26uNefO3fOtGjRwiQnJ5tt27aZf/3rXyYyMtKMGTPGF6fktzZt2mTi4uJMq1atzLBhw9ztjG/JHTlyxDRs2NAMHDjQfPPNN+Y///mPWbVqlcnIyHD3mTx5somIiDDLli0z27dvN7fddpuJj483p06dcve58cYbTVJSkvn666/NF198YRo3bmz69+/vi1PyGy+++KKpVauWWb58ucnMzDSLFy82VapUMW+88Ya7D2NbfP/617/MM888Y5YuXWokmQ8//NBjfVmM5bFjx0x0dLS59957zc6dO82CBQtMpUqVzFtvvXW5TtNnLja+R48eNcnJyeaDDz4wu3fvNhs3bjQdOnQwbdu29dgH41u0S71/z1u6dKlJSkoydevWNa+//rrHOsa3aJca34yMDFOzZk0zatQo8+2335qMjAzz0UcfeXzGLa+fJQhRfqBDhw7Gbre7l/Pz803dunXNpEmTfFhV+ZOTk2Mkmc8//9wY89sfn4oVK5rFixe7+6SnpxtJZuPGjcaY3/7xBwUFmUOHDrn7zJw501SrVs2cPn368p6An8rLyzMJCQlmzZo1plu3bu4QxfiWztNPP22uvfbaIte7XC4TExNjXn31VXfb0aNHTWhoqFmwYIExxphdu3YZSWbz5s3uPitWrDA2m838/PPP3ivez918883mgQce8Gjr06ePuffee40xjG1pXPghqazGcsaMGaZGjRoevxeefvpp06RJEy+fkX+52If88zZt2mQkmZ9++skYw/haUdT4/ve//zX16tUzO3fuNA0bNvQIUYxv8RU2vv369TMpKSlFblOeP0vwdT4fO3PmjLZu3ark5GR3W1BQkJKTk7Vx40YfVlb+HDt2TJJUs2ZNSdLWrVt19uxZj7Ft2rSpYmNj3WO7ceNGtWzZUtHR0e4+vXr1Um5urr7//vvLWL3/stvtuvnmmz3GUWJ8S+vjjz9Wu3bt9Kc//UlRUVFq06aN3n77bff6zMxMHTp0yGN8IyIi1LFjR4/xrV69utq1a+fuk5ycrKCgIH3zzTeX72T8TJcuXZSamqoffvhBkrR9+3Z9+eWX6t27tyTGtiyV1Vhu3LhR1113nUJCQtx9evXqpT179ujXX3+9TGdTPhw7dkw2m03Vq1eXxPiWlsvl0n333adRo0apefPmBdYzviXncrn06aef6g9/+IN69eqlqKgodezY0eMrf+X5swQhysecTqfy8/M93hiSFB0drUOHDvmoqvLH5XJp+PDhuuaaa9SiRQtJ0qFDhxQSEuL+Q3Pe78f20KFDhY79+XWBbuHChfr22281adKkAusY39L5z3/+o5kzZyohIUGrVq3So48+qqFDh2revHmS/m98Lva74dChQ4qKivJYX6FCBdWsWTOgx3f06NG655571LRpU1WsWFFt2rTR8OHDde+990pibMtSWY0lvyuK53//+5+efvpp9e/fX9WqVZPE+JbWyy+/rAoVKmjo0KGFrmd8Sy4nJ0fHjx/X5MmTdeONN2r16tW688471adPH33++eeSyvdniQo+OzJQhux2u3bu3Kkvv/zS16VcMfbv369hw4ZpzZo1CgsL83U5VxyXy6V27drppZdekiS1adNGO3fu1KxZszRgwAAfV1e+LVq0SPPnz9c//vEPNW/eXGlpaRo+fLjq1q3L2KLcOnv2rPr27StjjGbOnOnrcq4IW7du1RtvvKFvv/1WNpvN1+VccVwulyTp9ttv1xNPPCFJat26tb766ivNmjVL3bp182V5pcaVKB+L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tWt14MABrV+/XlOnTtXYsWN1yy23qEaNGvrmm2/0yCOP6C9/+UuB44waNUojR47Utm3b1LlzZ91666365ZdfJElHjx7V9ddfrzZt2mjLli1auXKlsrOz1bdvX499zJs3TyEhIdqwYYNmzZpVaH1vvPGGpkyZotdee007duxQr169dNttt2nv3r2SpIMHD6p58+YaOXKkDh48qCeffLLIc120aJGaNm2qJk2aKCUlRbNnz5YxRpLUr18/jRw5Us2bN9fBgwd18OBB9evXT5s3b5YkzZkzRwcPHnQvf/HFF7r//vs1bNgw7dq1S2+99Zbmzp2rF1980eOYL7zwgu6//36lpaWpadOm+vOf/6y//OUvGjNmjLZs2SJjjIYMGeKxTUZGhhYtWqRPPvlEK1eu1LZt2/TYY49Jkp588kn17dtXN954o7vOLl266M0339THH3+sRYsWac+ePZo/f75H4AMA/I4BAASUAQMGmNtvv90YY0ynTp3MAw88YIwx5sMPPzS//7MwduxYk5SU5LHt66+/bho2bOixr4YNG5r8/Hx3W5MmTUzXrl3dy+fOnTOVK1c2CxYsMMYYk5mZaSSZyZMnu/ucPXvW1K9f37z88svGGGNeeOEF07NnT49j79+/30gye/bsMcYY061bN9OmTZtLnm/dunXNiy++6NHWvn1789hjj7mXk5KSzNixYy+5ry5duphp06a5a46MjDTr1q1zry9szIwxRpL58MMPPdpuuOEG89JLL3m0vffee6ZOnToe2z377LPu5Y0bNxpJ5p133nG3LViwwISFhXnUEBwcbP773/+621asWGGCgoLMwYMHjTGe74HzHn/8cXP99dcbl8t18UEAABiuRAFAAHv55Zc1b948paenl3gfzZs3V1DQ//05iY6OVsuWLd3LwcHBqlWrlnJycjy269y5s/u/K1SooHbt2rnr2L59u9atW6cqVaq4f5o2bSpJHl9da9u27UVry83N1YEDB3TNNdd4tF9zzTWWz3nPnj3atGmT+vfv7665X79+eueddyzt57zt27drwoQJHuf40EMP6eDBgzp58qS7X6tWrdz/HR0dLUke4xsdHa3//e9/ys3NdbfFxsaqXr167uXOnTvL5XJpz549RdYzcOBApaWlqUmTJho6dKhWr15dovMCgEBQwdcFAAB857rrrlOvXr00ZswYDRw40GNdUFCQ+6tq5509e7bAPipWrOixbLPZCm1zuVzFruv48eO69dZb9fLLLxdYV6dOHfd/V65cudj7LK133nlH586dU926dd1txhiFhobqb3/7myIiIizt7/jx4xo/frz69OlTYF1YWJj7v38/ludnTyyszcr4Fubqq69WZmamVqxYoX//+9/q27evkpOTtWTJklLtFwCuRIQoAAhwkydPVuvWrdWkSROP9tq1a+vQoUMyxrg/qJfls52+/vprXXfddZKkc+fOaevWre57e66++mr985//VFxcnCpUKPmfqmrVqqlu3brasGGDunXr5m7fsGGDOnToUOz9nDt3Tu+++66mTJminj17eqy74447tGDBAj3yyCMKCQlRfn5+ge0rVqxYoP3qq6/Wnj171LhxY4tndWlZWVk6cOCAO/B9/fXXCgoKcr/GRdVZrVo19evXT/369dPdd9+tG2+8UUeOHFHNmjXLvEYAKM8IUQAQ4Fq2bKl7771Xb775pkd79+7ddfjwYb3yyiu6++67tXLlSq1YsULVqlUrk+M6HA4lJCSoWbNmev311/Xrr7/qgQcekCTZ7Xa9/fbb6t+/v5566inVrFlTGRkZWrhwof7f//t/Cg4OLvZxRo0apbFjx6pRo0Zq3bq15syZo7S0NM2fP7/Y+1i+fLl+/fVXDR48uMAVp7vuukvvvPOOHnnkEcXFxSkzM1NpaWmqX7++qlatqtDQUMXFxSk1NVXXXHONQkNDVaNGDT3//PO65ZZbFBsbq7vvvltBQUHavn27du7cqYkTJxa7tsKEhYVpwIABeu2115Sbm6uhQ4eqb9++iomJkSTFxcVp1apV2rNnj2rVqqWIiAhNnz5dderUUZs2bRQUFKTFixcrJiZG1atXL1UtAHAl4p4oAIAmTJhQ4OtgzZo104wZM+RwOJSUlKRNmzZddOY6qyZPnqzJkycrKSlJX375pT7++GNFRkZKkvvqUX5+vnr27KmWLVtq+PDhql69usf9V8UxdOhQjRgxQiNHjlTLli21cuVKffzxx0pISCj2Pt555x0lJycX+pW9u+66S1u2bNGOHTt011136cYbb1SPHj1Uu3ZtLViwQJI0ZcoUrVmzRg0aNFCbNm0kSb169dLy5cu1evVqtW/fXp06ddLrr7+uhg0bWjq/wjRu3Fh9+vTRTTfdpJ49e6pVq1aaMWOGe/1DDz2kJk2aqF27dqpdu7Y2bNigqlWr6pVXXlG7du3Uvn177du3T//6178sjzcABAKbufAL7wAAoNwaN26cli1bVqZfvQQAeOJ/LwEAAACABYQoAAAAALCAr/MBAAAAgAVciQIAAAAACwhRAAAAAGABIQoAAAAALCBEAQAAAIAFhCgAAAAAsIAQBQAAAAAWEKIAAAAAwAJCFAAAAABY8P8B67kF5O7ZE5sAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 每个学生的答题次数\n", + "student_attempts = data.groupby(\"user_id\")[\"problem_id\"].count()\n", + "\n", + "# 绘制学生答题次数的分布图\n", + "plt.figure(figsize=(10, 6))\n", + "plt.hist(student_attempts, bins=50, color='skyblue', edgecolor='black')\n", + "plt.title('Distribution of Student Attempts')\n", + "plt.xlabel('Number of Attempts')\n", + "plt.ylabel('Number of Students')\n", + "plt.yscale('log')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "250de1a1", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2wAAAIjCAYAAAB/FZhcAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZCBJREFUeJzt3Xt8z/X///H7e2MH7IDZZsy2EHNcpjRnGSOKUiEfp8gnOa9yKCEdlCJEdDSVinQmQ47FyqmlhBDWJ+bMbNjYnr8//Pb6epvDprEXu10vl/fl4vV6PV6v9+P92uvz7n3/vF6v58thjDECAAAAANiOS0E3AAAAAAC4OAIbAAAAANgUgQ0AAAAAbIrABgAAAAA2RWADAAAAAJsisAEAAACATRHYAAAAAMCmCGwAAAAAYFMENgAAAACwKQIbANyExowZI4fDcV3eq2nTpmratKk1vWLFCjkcDs2bN++6vH+PHj0UGhp6Xd7raqWmpqp3794KDAyUw+HQ4MGDC7olAMANgsAGADYXFxcnh8NhvTw8PBQUFKSYmBhNmTJFJ06cyJf32bt3r8aMGaPExMR82V5+snNvufHSSy8pLi5Offv21YcffqiuXbtecZ3MzEwFBQXJ4XBo4cKF16FL+wgNDXU65i/1iouLK+hWAeCaK1LQDQAAcmfs2LEKCwvTmTNnlJycrBUrVmjw4MGaOHGivvnmG9WqVcuqHTlypIYPH56n7e/du1fPPfecQkNDFRERkev1Fi9enKf3uRqX6+2dd95RVlbWNe/h31i2bJnuvPNOjR49Ok/r7Nu3T6GhoZo9e7Zat259DTu0l0mTJik1NdWa/u677/TJJ5/o9ddfl5+fnzW/fv36BdEeAFxXBDYAuEG0bt1adevWtaZHjBihZcuWqW3btrr33nu1ZcsWeXp6SpKKFCmiIkWu7Vf8yZMnVaxYMbm5uV3T97mSokWLFuj758aBAwdUrVq1PK3z0UcfqU6dOurevbuefvpppaWlqXjx4teow4Jxqc/Uvn17p+nk5GR98sknat++ve0vfwWA/MYlkQBwA7vrrrv07LPPas+ePfroo4+s+Re7h23JkiVq2LChfH19VaJECVWpUkVPP/20pHP3nd1+++2SpJ49e+a45Kxp06aqUaOGNmzYoMaNG6tYsWLWuhfew5YtMzNTTz/9tAIDA1W8eHHde++9+vvvv51qQkND1aNHjxzrnr/NK/V2sXvY0tLS9MQTTyg4OFju7u6qUqWKXnvtNRljnOocDof69++vr776SjVq1JC7u7uqV6+u+Pj4i+/wCxw4cEC9evVSQECAPDw8VLt2bc2aNctann0/365du7RgwQKr9927d192u6dOndKXX36pTp066aGHHtKpU6f09ddf56jr0aOHSpQooX/++Uft27dXiRIlVKZMGT355JPKzMx0qv30008VGRkpLy8veXt7q2bNmpo8ebIk6dixY3J1ddWUKVOs+kOHDsnFxUWlS5d22m99+/ZVYGCg07Z//vlntWrVSj4+PipWrJiaNGmi1atXO9VkH5N//PGHHn74YZUsWVINGza8/A6+hNGjR6to0aI6ePBgjmV9+vSRr6+vTp8+LencMda2bVstXrxYERER8vDwULVq1fTFF1/kWPfYsWMaPHiwddxUqlRJr7zySo4zuJfblwCQ3whsAHCDy74f6nKXJm7evFlt27ZVenq6xo4dqwkTJujee++1flSHh4dr7Nixks794P3www/14YcfqnHjxtY2Dh8+rNatWysiIkKTJk1Ss2bNLtvXiy++qAULFmjYsGEaOHCglixZoujoaJ06dSpPny83vZ3PGKN7771Xr7/+ulq1aqWJEyeqSpUqeuqppxQbG5uj/scff9Tjjz+uTp06afz48Tp9+rQ6dOigw4cPX7avU6dOqWnTpvrwww/VpUsXvfrqq/Lx8VGPHj2sH+/h4eH68MMP5efnp4iICKv3MmXKXHbb33zzjVJTU9WpUycFBgaqadOmmj179kVrMzMzFRMTo9KlS+u1115TkyZNNGHCBL399ttWzZIlS9S5c2eVLFlSr7zyil5++WU1bdrU+vv7+vqqRo0aWrVqldN+cTgcOnLkiP744w9r/g8//KBGjRpZ08uWLVPjxo2VkpKi0aNH66WXXtKxY8d01113ae3atTn6ffDBB3Xy5Em99NJLevTRRy+7Hy6la9euOnv2rObMmeM0PyMjQ/PmzVOHDh3k4eFhzd++fbs6duyo1q1ba9y4cSpSpIgefPBBLVmyxKo5efKkmjRpoo8++kjdunXTlClT1KBBA40YMcLpuLnSvgSAfGcAALY2c+ZMI8msW7fukjU+Pj7mtttus6ZHjx5tzv+Kf/31140kc/DgwUtuY926dUaSmTlzZo5lTZo0MZLMjBkzLrqsSZMm1vTy5cuNJFOuXDmTkpJizZ87d66RZCZPnmzNCwkJMd27d7/iNi/XW/fu3U1ISIg1/dVXXxlJ5oUXXnCqe+CBB4zD4TA7duyw5kkybm5uTvN+/fVXI8m88cYbOd7rfJMmTTKSzEcffWTNy8jIMFFRUaZEiRJOnz0kJMS0adPmsts7X9u2bU2DBg2s6bffftsUKVLEHDhwwKmue/fuRpIZO3as0/zbbrvNREZGWtODBg0y3t7e5uzZs5d8z379+pmAgABrOjY21jRu3Nj4+/ub6dOnG2OMOXz4sHE4HNbfMCsry1SuXNnExMSYrKwsa92TJ0+asLAw06JFC2te9jHZuXPnXO+HbK+++qqRZHbt2mXNi4qKMvXq1XOq++KLL4wks3z5cmteSEiIkWQ+//xza97x48dN2bJlnf438/zzz5vixYubP//802mbw4cPN66uriYpKckYk7t9CQD5iTNsAHATKFGixGVHi/T19ZUkff3111c9QIe7u7t69uyZ6/pu3brJy8vLmn7ggQdUtmxZfffdd1f1/rn13XffydXVVQMHDnSa/8QTT8gYk2PExejoaFWsWNGarlWrlry9vfXXX39d8X0CAwPVuXNna17RokU1cOBApaamauXKlVfV/+HDh7Vo0SKn7Xbo0EEOh0Nz58696DqPPfaY03SjRo2c+vf19VVaWprTGaULNWrUSPv379e2bdsknTuT1rhxYzVq1Eg//PCDpHNn3Ywx1hm2xMREbd++XQ8//LAOHz6sQ4cO6dChQ0pLS1Pz5s21atWqHMfbhb1erW7duunnn3/Wzp07rXmzZ89WcHCwmjRp4lQbFBSk++67z5r29vZWt27d9Msvvyg5OVmS9Nlnn6lRo0YqWbKk9TkOHTqk6OhoZWZmWmcfc7MvASA/EdgA4CaQmprqFI4u1LFjRzVo0EC9e/dWQECAOnXqpLlz5+YpvJUrVy5PA4xUrlzZadrhcKhSpUpXvH/r39qzZ4+CgoJy7I/w8HBr+fkqVKiQYxslS5bU0aNHr/g+lStXlouL839KL/U+uTVnzhydOXNGt912m3bs2KEdO3boyJEjqlev3kUvi/Tw8MhxieWF/T/++OO69dZb1bp1a5UvX16PPPJIjvv0skPYDz/8oLS0NP3yyy9q1KiRGjdubAW2H374Qd7e3qpdu7akc5caSlL37t1VpkwZp9e7776r9PR0HT9+3Ol9wsLCrmq/XKhjx45yd3e39snx48c1f/58denSJcf9m5UqVcox79Zbb5Uk63jcvn274uPjc3yO6OhoSefuV5Ryty8BID8xSiQA3OD+97//6fjx46pUqdIlazw9PbVq1SotX75cCxYsUHx8vObMmaO77rpLixcvlqur6xXfJ3sEyvx0qYd7Z2Zm5qqn/HCp9zEXDFByvWQHkAYNGlx0+V9//aVbbrnFms7NfvL391diYqIWLVqkhQsXauHChZo5c6a6detmDZISFBSksLAwrVq1SqGhoTLGKCoqSmXKlNGgQYO0Z88e/fDDD6pfv74VUrMD/6uvvnrJR0GUKFHCaTq/jqOSJUuqbdu2mj17tkaNGqV58+YpPT1d//nPf65qe1lZWWrRooWGDh160eXZAS83+xIA8hOBDQBucB9++KEkKSYm5rJ1Li4uat68uZo3b66JEyfqpZde0jPPPKPly5crOjr6kuHpamWffclmjNGOHTucnhdXsmRJHTt2LMe6e/bscQoleektJCRE33//vU6cOOF0lm3r1q3W8vwQEhKiTZs2KSsry+ks2795n127dmnNmjXq379/jsv6srKy1LVrV3388ccaOXJknrft5uame+65R/fcc4+ysrL0+OOP66233tKzzz5rhf1GjRpp1apVCgsLU0REhLy8vFS7dm35+PgoPj5eGzdu1HPPPWdtM/tSUm9vb+tM1PXUrVs3tWvXTuvWrdPs2bN12223qXr16jnqduzYIWOM03H0559/SpI1wmjFihWVmpqaq8+Rm30JAPmFSyIB4Aa2bNkyPf/88woLC1OXLl0uWXfkyJEc87LPiKSnp0uS9TysiwWoq/HBBx843Vc3b9487du3z+kB0BUrVtRPP/2kjIwMa978+fNzDP+fl97uvvtuZWZmaurUqU7zX3/9dTkcjnx7APXdd9+t5ORkp5EKz549qzfeeEMlSpTIEbhyI/vs2tChQ/XAAw84vR566CE1adLkkqNFXs6FI166uLhYwTn77y+dC2y7d+/WnDlzrEskXVxcVL9+fU2cOFFnzpxxGiEyMjJSFStW1Guvveb0oOtsFxt2Pz+1bt1afn5+euWVV7Ry5cpLnl3bu3evvvzyS2s6JSVFH3zwgSIiIqxHFDz00ENKSEjQokWLcqx/7NgxnT17VlLu9yUA5BfOsAHADWLhwoXaunWrzp49q/3792vZsmVasmSJQkJC9M033zgNY36hsWPHatWqVWrTpo1CQkJ04MABvfnmmypfvrz1LKyKFSvK19dXM2bMkJeXl4oXL6569epd9T1HpUqVUsOGDdWzZ0/t379fkyZNUqVKlZyGcu/du7fmzZunVq1a6aGHHtLOnTv10UcfOQ0Cktfe7rnnHjVr1kzPPPOMdu/erdq1a2vx4sX6+uuvNXjw4Bzbvlp9+vTRW2+9pR49emjDhg0KDQ3VvHnztHr1ak2aNOmy9xReyuzZsxUREaHg4OCLLr/33ns1YMAAbdy4UXXq1Mn1dnv37q0jR47orrvuUvny5bVnzx698cYbioiIsO65k/7vPrZt27bppZdesuY3btxYCxculLu7u/VMPOlcWHn33XfVunVrVa9eXT179lS5cuX0zz//aPny5fL29ta3336b192Qa0WLFlWnTp00depUubq6Og3Ucr5bb71VvXr10rp16xQQEKD3339f+/fv18yZM62ap556St98843atm2rHj16KDIyUmlpafrtt980b9487d69W35+frnelwCQbwpyiEoAwJVlD+uf/XJzczOBgYGmRYsWZvLkyU7Dx2e7cFj/pUuXmnbt2pmgoCDj5uZmgoKCTOfOnXMMYf7111+batWqmSJFijgNo9+kSRNTvXr1i/Z3qWH9P/nkEzNixAjj7+9vPD09TZs2bcyePXtyrD9hwgRTrlw54+7ubho0aGDWr1+fY5uX6+3CYf2NMebEiRNmyJAhJigoyBQtWtRUrlzZvPrqq05Dzxtzblj/fv365ejpUo8buND+/ftNz549jZ+fn3FzczM1a9a86KMHcjOs/4YNG4wk8+yzz16yZvfu3UaSGTJkiDHm3GcvXrx4jroL//7z5s0zLVu2NP7+/sbNzc1UqFDB/Pe//zX79u3Lsa6/v7+RZPbv32/N+/HHH40k06hRo4v29csvv5j777/flC5d2ri7u5uQkBDz0EMPmaVLl+bo6XKPlriUiw3rn23t2rVGkmnZsuVF183e94sWLTK1atUy7u7upmrVquazzz7LUXvixAkzYsQIU6lSJePm5mb8/PxM/fr1zWuvvWYyMjKMMXnblwCQHxzGFNBd1QAAAP/Sr7/+qoiICH3wwQfWQ+TPFxoaqho1amj+/PkF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LU2PPPKIypYtq8aNG6tx48YKCgpSr169dPLkyWvRIwAAAAAUSnkObLGxsVq5cqW+/fZbHTt2TMeOHdPXX3+tlStX6oknnrgWPQIAAABAoZTnSyI///xzzZs3T02bNrXm3X333fL09NRDDz2k6dOn52d/AAAAAFBo5fkM28mTJxUQEJBjvr+/P5dEAgAAAEA+ynNgi4qK0ujRo3X69Glr3qlTp/Tcc88pKioqX5sDAAAAgMIsz5dETp48WTExMSpfvrxq164tSfr111/l4eGhRYsW5XuDAAAAAFBY5fkMW40aNbR9+3aNGzdOERERioiI0Msvv6zt27erevXqedrWuHHjdPvtt8vLy0v+/v5q37699aiAbKdPn1a/fv1UunRplShRQh06dND+/fudapKSktSmTRsVK1ZM/v7+euqpp3T27FmnmhUrVqhOnTpyd3dXpUqVFBcXl6OfadOmKTQ0VB4eHqpXr57Wrl2b514AAAAAIL/kObBJUrFixfToo49qwoQJmjBhgnr37i1PT888b2flypXq16+ffvrpJy1ZskRnzpxRy5YtlZaWZtUMGTJE3377rT777DOtXLlSe/fu1f33328tz8zMVJs2bZSRkaE1a9Zo1qxZiouL06hRo6yaXbt2qU2bNmrWrJkSExM1ePBg9e7d2+mM4Jw5cxQbG6vRo0dr48aNql27tmJiYnTgwIFc9wIAAAAA+clhjDFXKvrmm2/UunVrFS1aVN98881la++9996rbubgwYPy9/fXypUr1bhxYx0/flxlypTRxx9/rAceeECStHXrVoWHhyshIUF33nmnFi5cqLZt22rv3r3WYCgzZszQsGHDdPDgQbm5uWnYsGFasGCBfv/9d+u9OnXqpGPHjik+Pl6SVK9ePd1+++2aOnWqJCkrK0vBwcEaMGCAhg8fnqteriQlJUU+Pj46fvy4vL29r3o/XQsbN25UZGSk+s/+XuXCaxd0OzeEf7b8qqldorVhwwbVqVOnoNsBAADADSS32SBX97C1b99eycnJ1mWLl+JwOJSZmZnnZrMdP35cklSqVClJ0oYNG3TmzBlFR0dbNVWrVlWFChWskJSQkKCaNWs6jVwZExOjvn37avPmzbrtttuUkJDgtI3smsGDB0uSMjIytGHDBo0YMcJa7uLioujoaCUkJOS6lwulp6crPT3dmk5JSbnaXQMAAACgEMrVJZFZWVny9/e3/n2p178Ja1lZWRo8eLAaNGigGjVqSJKSk5Pl5uYmX19fp9qAgAAlJydbNRc+ZiB7+ko1KSkpOnXqlA4dOqTMzMyL1py/jSv1cqFx48bJx8fHegUHB+dybwAAAADAVdzD9sEHHzidNcqWkZGhDz744Kob6devn37//Xd9+umnV70NuxkxYoSOHz9uvf7++++CbgkAAADADSTPga1nz57WpYvnO3HihHr27HlVTfTv31/z58/X8uXLVb58eWt+YGCgMjIydOzYMaf6/fv3KzAw0Kq5cKTG7Okr1Xh7e8vT01N+fn5ydXW9aM3527hSLxdyd3eXt7e30wsAAAAAcivPgc0YI4fDkWP+//73P/n4+OR5W/3799eXX36pZcuWKSwszGl5ZGSkihYtqqVLl1rztm3bpqSkJOsh3VFRUfrtt9+cRnNcsmSJvL29Va1aNavm/G1k12Rvw83NTZGRkU41WVlZWrp0qVWTm14AAAAAID/l+sHZt912mxwOhxwOh5o3b64iRf5v1czMTO3atUutWrXK05v369dPH3/8sb7++mt5eXlZ94L5+PjI09NTPj4+6tWrl2JjY1WqVCl5e3trwIABioqKsgb5aNmypapVq6auXbtq/PjxSk5O1siRI9WvXz+5u7tLkh577DFNnTpVQ4cO1SOPPKJly5Zp7ty5WrBggdVLbGysunfvrrp16+qOO+7QpEmTlJaWZp01zE0vAAAAAJCfch3YskeHTExMVExMjEqUKGEtc3NzU2hoqDp06JCnN58+fbokqWnTpk7zZ86cqR49ekiSXn/9dbm4uKhDhw5KT09XTEyM3nzzTavW1dVV8+fPV9++fRUVFaXixYure/fuGjt2rFUTFhamBQsWaMiQIZo8ebLKly+vd999VzExMVZNx44ddfDgQY0aNUrJycmKiIhQfHy800AkV+oFAAAAAPJTrp7Ddr5Zs2apU6dO1tkr5B7PYbu58Bw2AAAAXK3cZoM838N211136eDBg9b02rVrNXjwYL399ttX1ykAAAAA4KLyHNgefvhhLV++XNK5Z5NFR0dr7dq1euaZZ5wuQwQAAAAA/Dt5Dmy///677rjjDknS3LlzVbNmTa1Zs0azZ89WXFxcfvcHAAAAAIVWngPbmTNnrPvXvv/+e917772SpKpVq2rfvn352x0AAAAA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z5+vVatWqU+fPtbylJQUtWzZUiEhIdqwYYNeffVVjRkzRm+//bZVs2bNGnXu3Fm9evXSL7/8ovbt26t9+/b6/fffrZrx48drypQpmjFjhn7++WcVL15cMTExOn36dL7sCwAAAAC4UJ6H9T979qzef/99ff/994qMjFTx4sWdlk+cODHX22rdurVat2592Rp3d3cFBgZedNmWLVsUHx+vdevWqW7dupKkN954Q3fffbdee+01BQUFafbs2crIyND7778vNzc3Va9eXYmJiZo4caIV7CZPnqxWrVrpqaeekiQ9//zzWrJkiaZOnaoZM2bIGKNJkyZp5MiRateunSTpgw8+UEBAgL766it16tQp158ZAAAAAHIrz2fYfv/9d9WpU0deXl76888/9csvv1ivxMTEfG9wxYoV8vf3V5UqVdS3b18dPnzYWpaQkCBfX18rrElSdHS0XFxc9PPPP1s1jRs3lpubm1UTExOjbdu26ejRo1ZNdHS00/vGxMQoISFBkrRr1y4lJyc71fj4+KhevXpWzcWkp6crJSXF6QUAAAAAuZXnM2zLly+/Fn1cVKtWrXT//fcrLCxMO3fu1NNPP63WrVsrISFBrq6uSk5Olr+/v9M6RYoUUalSpZScnCxJSk5OVlhYmFNNQECAtaxkyZJKTk625p1fc/42zl/vYjUXM27cOD333HNX8ckBAAAA4CoCW7YdO3Zo586daty4sTw9PWWMkcPhyM/enC41rFmzpmrVqqWKFStqxYoVat68eb6+17UwYsQIxcbGWtMpKSkKDg4uwI4AAAAA3EjyfEnk4cOH1bx5c9166626++67tW/fPklSr1699MQTT+R7g+e75ZZb5Ofnpx07dkiSAgMDdeDAAaeas2fP6siRI9Z9b4GBgdq/f79TTfb0lWrOX37+eheruRh3d3d5e3s7vQAAAAAgt/Ic2IYMGaKiRYsqKSlJxYoVs+Z37NhR8fHx+drchf73v//p8OHDKlu2rCQpKipKx44d04YNG6yaZcuWKSsrS/Xq1bNqVq1apTNnzlg1S5YsUZUqVVSyZEmrZunSpU7vtWTJEkVFRUmSwsLCFBgY6FSTkpKin3/+2aoBAAAAgPyW58C2ePFivfLKKypfvrzT/MqVK2vPnj152lZqaqoSExOtwUp27dqlxMREJSUlKTU1VU899ZR++ukn7d69W0uX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IUmaMWOGwsLCNGHCBIWHh6t///564IEH9Prrr1s9TJw4UY8++qh69uypatWqacaMGSpWrJjef//9679DAAAAABQatg9s27dvV1BQkG655RZ16dJFSUlJkqQNGzbozJkzio6OtmqrVq2qChUqKCEhQZKUkJCgmjVrKiAgwKqJiYlRSkqKNm/ebNWcv43smuxtZGRkaMOGDU41Li4uio6OtmouJT09XSkpKU4vAAAAAMgtWwe2evXqKS4uTvHx8Zo+fbp27dqlRo0a6cSJE0pOTpabm5t8fX2d1gkICFBycrIkKTk52SmsZS/PXna5mpSUFJ06dUqHDh1SZmbmRWuyt3Ep48aNk4+Pj/UKDg7O8z4AAAAAUHgVKegGLqd169bWv2vVqqV69eopJCREc+fOlaenZwF2ljsjRoxQbGysNZ2SkkJoAwAAAJBrtj7DdiFfX1/deuut2rFjhwIDA5WRkaFjx4451ezfv1+BgYGSpMDAwByjRmZPX6nG29tbnp6e8vPzk6ur60VrsrdxKe7u7vL29nZ6AQAAAEBu2foM24VSU1O1c+dOde3aVZGRkSpatKiWLl2qDh06SJK2bdumpKQkRUVFSZKioqL04osv6sCBA/L395ckLVmyRN7e3qpWrZpV89133zm9z5IlS6xtuLm5KTIyUkuXLlX79u0lSVlZWVq6dKn69+9/PT42cNNJSkrSoUOHCrqNG4qfn58qVKhQ0G0AAIDrzNaB7cknn9Q999yjkJAQ7d27V6NHj5arq6s6d+4sHx8f9erVS7GxsSpVqpS8vb01YMAARUVF6c4775QktWzZUtWqVVPXrl01fvx4JScna+TIkerXr5/c3d0lSY899pimTp2qoUOH6pFHHtGyZcs0d+5cLViwwOojNjZW3bt3V926dXXHHXdo0qRJSktLU8+ePQtkvwA3sqSkJFUND9epkycLupUbimexYtq6ZQuhDQCAQsbWge1///ufOnfurMOHD6tMmTJq2LChfvrpJ5UpU0aS9Prrr8vFxUUdOnRQenq6YmJi9Oabb1rru7q6av78+erbt6+ioqJUvHhxde/eXWPHjrVqwsLCtGDBAg0ZMkSTJ09W+fLl9e677yomJsaq6dixow4ePKhRo0YpOTlZERERio+PzzEQCYArO3TokE6dPKmHXpgu/7DKBd3ODeHAru2aO7KvDh06RGADAKCQsXVg+/TTTy+73MPDQ9OmTdO0adMuWRMSEpLjkscLNW3aVL/88stla/r3788lkEA+8g+rrHLhtQu6DQAAAFu7oQYdAQAAAIDChMAGAAAAADZFYAMAAAAAmyKwAQAAAIBNEdgAAAAAwKYIbAAAAABgUwQ2AAAAALApAhsAAAAA2BSBDQAAAABsisAGAAAAADZFYAMAAAAAmypS0A0AAHCtJCUl6dChQwXdxg3Fz89PFSpUKOg2AAD/H4ENAHBTSkpKUtXwcJ06ebKgW7mheBYrpq1bthDaAMAmCGwAgJvSoUOHdOrkST30wnT5h1Uu6HZuCAd2bdfckX116NAhAhsA2ASBDQBwU/MPq6xy4bULug0AAK4Kg44AAAAAgE0R2AAAAADApghsAAAAAGBTBDYAAAAAsCkCGwAAAADYFIENAAAAAGyKwAYAAAAANkVgAwAAAACbIrABAAAAgE0R2AAAAADApghsAAAAAGBTBDYAAAAAsCkCGwAAAADYFIENAAAAAGyKwAYAAAAANkVgAwAAAACbIrABAAAAgE0R2AAAAADApghsAAAAAGBTBDYAAAAAsCkCGwAAAADYFIENAAAAAGyKwAYAAAAANkVgAwAAAACbIrABAAAAgE0R2AAAAADApghsAAAAAGBTBDYAAAAAsCkCGwAAAADYFIENAAAAAGyKwAYAAAAANkVgAwAAAACbIrABAAAAgE0R2AAAAADApghsAAAAAGBTBDYAAAAAsCkCGwAAAADYFIENAAAAAGyKwAYAAAAANkVgAwAAAACbIrABAAAAgE0R2AAAAADApghsAAAAAGBTBLY8mjZtmkJDQ+Xh4aF69epp7dq1Bd0SAAAAgJsUgS0P5syZo9jYWI0ePVobN25U7dq1FRMTowMHDhR0awAAAABuQkUKuoEbycSJE/Xoo4+qZ8+ekqQZM2ZowYIFev/99zV8+PAC7g4AABSUpKQkHTp0qKDbuKH4+fmpQoUKBd0GYHsEtlzKyMjQhg0bNGLECGuei4uLoqOjlZCQcNF10tPTlZ6ebk0fP35ckpSSknJtm70KqampkqR/tmxSxsm0Au7mxnBwz05J5/adHf+mdsWxlncca1eHYy3vONauzt9//626t9+u06dOFXQrNxQPT0+tX7dOwcHBBd3KDSU5OVnJyckF3cYNJTAwUIGBgQXdRg7Z37PGmMvWOcyVKiBJ2rt3r8qVK6c1a9YoKirKmj906FCtXLlSP//8c451xowZo+eee+56tgkAAADgBvL333+rfPnyl1zOGbZraMSIEYqNjbWms7KydOTIEZUuXVoOh6MAO7txpKSkKDg4WH///be8vb0Luh3cxDjWcL1wrOF64VjD9cKxdnWMMTpx4oSCgoIuW0dgyyU/Pz+5urpq//79TvP3799/yVOs7u7ucnd3d5rn6+t7rVq8qXl7e/MFgOuCYw3XC8carheONVwvHGt55+Pjc8UaRonMJTc3N0VGRmrp0qXWvKysLC1dutTpEkkAAAAAyC+cYcuD2NhYde/eXXXr1tUdd9yhSZMmKS0tzRo1EgAAAADyE4EtDzp27KiDBw9q1KhRSk5OVkREhOLj4xUQEFDQrd203N3dNXr06ByXlgL5jWMN1wvHGq4XjjVcLxxr1xajRAIAAACATXEPGwAAAADYFIENAAAAAGyKwAYAAAAANkVgwzW1e/duORwOJSYm5ut2Q0NDNWnSpHzdJuzvWh1PwIWMMerTp49KlSolh8MhX19fDR482Fp+4XeQw+HQV199dcXtcgzjQhwTAK6EwAYA19GqVat0zz33KCgoKNc/8nH9xcfHKy4uTvPnz9e+ffv0559/6vnnn//X2w0ODta+fftUo0aNfOhS2rdvnx5++GHdeuutcnFxcQqVAICbA4ENhcaZM2cKugVAaWlpql27tqZNm1bQreAydu7cqbJly6p+/foKDAyUv7+/vLy8/vV2XV1dFRgYqCJF8uepOunp6SpTpoxGjhyp2rVr58s2AeBK+E11fRHY8K/Fx8erYcOG8vX1VenSpdW2bVvt3LnzkvXffPONKleuLA8PDzVr1kyzZs2Sw+HQsWPHrJoff/xRjRo1kqenp4KDgzVw4EClpaU5befEiRPq3LmzihcvrnLlyuX4AexwODR9+nTde++9Kl68uF588UVlZmaqV69eCgsLk6enp6pUqaLJkyfn6/7Av5eVlaXx48erUqVKcnd3V4UKFfTiiy9ay//66y81a9ZMxYoVU+3atZWQkOC0/ueff67q1avL3d1doaGhmjBhgtPyo0ePqlu3bipZsqSKFSum1q1ba/v27dbyPXv26J577lHJkiVVvHhxVa9eXd999521/Pfff1fr1q1VokQJBQQEqGvXrjp06FCuPlvr1q31wgsv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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 每个类型的问题数量分布\n", + "answer_type_counts = data[\"answer_type\"].value_counts()\n", + "\n", + "# 绘制问题类型数量的分布图\n", + "plt.figure(figsize=(10, 6))\n", + "answer_type_counts.plot(kind='bar', color='skyblue', edgecolor='black')\n", + "plt.title('Distribution of Answer Types')\n", + "plt.xlabel('Answer Type')\n", + "plt.ylabel('Number of Questions')\n", + "plt.xticks(rotation=0)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "6a1b1ce4", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAo8AAAKSCAYAAACz2DE+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZa9JREFUeJzt3Xd4VHXe/vH7zKR3SAihh6o0QZoCKigiRUVsYBd1d3Xtu6uuPrsq6uPqumtZXfXRxZ9YdrEANhSkCCJFYEHpJZQQOgRIbzNzzu+PwGgMhEkyyZnyfl0XF+TMycxnJkNy5/Mtx7AsyxIAAADgA4fdBQAAACB4EB4BAADgM8IjAAAAfEZ4BAAAgM8IjwAAAPAZ4REAAAA+IzwCAADAZ4RHAAAA+IzwCAAAAJ8RHoEwtmDBAhmGoQULFniPTZgwQZmZmbbVBPsMHTpUQ4cObZTHMgxDEydO9H48ceJEGYah3NzcRnn8zMxMTZgwoVEeCwg1hEegHtavX68bbrhBrVq1UnR0tFq2bKnrr79e69evt7u0RvPJJ59o1KhRSktLU1RUlFq2bKlx48bpm2++sbu0OvnPf/6jl156ye4y6m3ChAkyDMP7JyEhQR06dNBVV12ladOmyTRNvzzOkiVLNHHiROXl5fnl/vwpkGsDglmE3QUAwWr69Om69tpr1bRpU912221q3769srOz9dZbb2nq1Kn64IMPdPnll9tdZoOxLEu33nqrJk+erDPPPFO///3vlZGRoX379umTTz7RsGHDtHjxYg0aNMjuUmvlP//5j9atW6f777/f7lLqLTo6WpMmTZIklZaWaufOnfriiy901VVXaejQofrss8+UlJTkPX/27Nm1fowlS5boiSee0IQJE5SSkuLz55WWlioiomF/BNVU2+bNm+Vw0D8B6oLwCNTBtm3bdOONN6pDhw5auHChmjVr5r3tvvvu07nnnqsbb7xRa9asUYcOHRqtruLiYsXHxzfKYz3//POaPHmy7r//fr3wwgsyDMN725/+9Ce99957fgkHZWVlioqKOuEP+sZ8vsEoIiJCN9xwQ5Vj//u//6tnn31WjzzyiH7961/rww8/9N4WFRXVoPWYpqmKigrFxMQoJiamQR/rVKKjo219fCCY8WsXUAd/+9vfVFJSojfffLNKcJSktLQ0vfHGGyouLtZzzz0nSZo6daoMw9C3335b7b7eeOMNGYahdevWeY9t2rRJV111lZo2baqYmBj169dPn3/+eZXPmzx5svc+77zzTqWnp6t169aSpJ07d+rOO+/UaaedptjYWKWmpurqq69Wdna2X55/aWmpnnnmGZ1++un6+9//XiU4HnfjjTdqwIAB3o+3b9+uq6++Wk2bNlVcXJzOPvtsffnll1U+5/gczA8++EB//vOf1apVK8XFxamgoEATJkxQQkKCtm3bptGjRysxMVHXX3+9pMpQ8tJLL6l79+6KiYlR8+bNdfvtt+vo0aPV6po5c6aGDBmixMREJSUlqX///vrPf/4jqXLO35dffqmdO3d6h3uPz/88XttHH32kp59+Wq1bt1ZMTIyGDRumrVu3VnucZcuWaeTIkUpOTlZcXJyGDBmixYsXVzmnsLBQ999/vzIzMxUdHa309HQNHz5cq1at8p6TlZWlK6+8UhkZGYqJiVHr1q11zTXXKD8/38evVnUPP/ywLrroIn388cfasmWL9/iJ5jy+8sor6t69u+Li4tSkSRP169fP+3pNnDhRDz74oCSpffv23tfs+PvMMAzdfffd+ve//63u3bsrOjpas2bN8t728zmPx+Xm5mrcuHFKSkpSamqq7rvvPpWVlXlvz87OlmEYmjx5crXP/fl9nqq2E815rM171Nf3ARCK6DwCdfDFF18oMzNT55577glvP++885SZmen9wXPxxRcrISFBH330kYYMGVLl3A8//FDdu3dXjx49JFXOoxw8eLBatWqlhx9+WPHx8froo480duxYTZs2rdpQ+J133qlmzZrpscceU3FxsSRpxYoVWrJkia655hq1bt1a2dnZev311zV06FBt2LBBcXFx9Xr+ixYt0pEjR3T//ffL6XSe8vwDBw5o0KBBKikp0b333qvU1FS98847GjNmjKZOnVrtOT311FOKiorSAw88oPLycm9HzO12a8SIETrnnHP097//3fs8br/9dk2ePFm33HKL7r33Xu3YsUP//Oc/9cMPP2jx4sWKjIyUVBm4b731VnXv3l2PPPKIUlJS9MMPP2jWrFm67rrr9Kc//Un5+fnavXu3XnzxRUlSQkJCldqeffZZORwOPfDAA8rPz9dzzz2n66+/XsuWLfOe880332jUqFHq27evHn/8cTkcDr399tu64IIL9N1333lD9R133KGpU6fq7rvvVrdu3XT48GEtWrRIGzduVJ8+fVRRUaERI0aovLxc99xzjzIyMrRnzx7NmDFDeXl5Sk5OruNXsDLcz549W3PmzFGXLl1OeM6//vUv3Xvvvbrqqqu8IW7NmjVatmyZrrvuOl1xxRXasmWLpkyZohdffFFpaWmSVOUXqm+++UYfffSR7r77bqWlpZ1yMda4ceOUmZmpZ555Rt9//71efvllHT16VO+++26tnp8vtf1cbd+jvrwPgJBlAaiVvLw8S5J12WWX1XjemDFjLElWQUGBZVmWde2111rp6emW2+32nrNv3z7L4XBYTz75pPfYsGHDrJ49e1plZWXeY6ZpWoMGDbI6d+7sPfb2229bkqxzzjmnyn1almWVlJRUq2fp0qWWJOvdd9/1Hps/f74lyZo/f7732M0332y1a9euxuf2j3/8w5JkffLJJzWed9z9999vSbK+++4777HCwkKrffv2VmZmpuXxeKrU06FDh2rP4eabb7YkWQ8//HCV4999950lyfr3v/9d5fisWbOqHM/Ly7MSExOts846yyotLa1yrmma3n9ffPHFJ3z+x2vr2rWrVV5eXu21WLt2rfe+OnfubI0YMaLK/ZaUlFjt27e3hg8f7j2WnJxs3XXXXSd93X744QdLkvXxxx+f9JyTufnmm634+PhT3vfvfvc777EhQ4ZYQ4YM8X582WWXWd27d6/xcf72t79ZkqwdO3ZUu02S5XA4rPXr15/wtscff9z78eOPP25JssaMGVPlvDvvvNOSZK1evdqyLMvasWOHJcl6++23T3mfNdXWrl076+abb/Z+XNv36KneB0AoY9gaqKXCwkJJUmJiYo3nHb+9oKBAkjR+/HgdPHiwyrY4U6dOlWmaGj9+vCTpyJEj+uabbzRu3DgVFhYqNzdXubm5Onz4sEaMGKGsrCzt2bOnyuP8+te/rtb9i42N9f7b5XLp8OHD6tSpk1JSUqoMidbV8ed0qtfguK+++koDBgzQOeec4z2WkJCg3/zmN8rOztaGDRuqnH/zzTdXeQ4/99vf/rbKxx9//LGSk5M1fPhw7+uVm5urvn37KiEhQfPnz5ckzZkzR4WFhXr44Yerzbc70bD7ydxyyy1V5gYe7z5v375dkvTjjz8qKytL1113nQ4fPuytp7i4WMOGDdPChQu9K51TUlK0bNky7d2794SPdbyz+PXXX6ukpMTnGn1xvKN6/P18IikpKdq9e7dWrFhR58cZMmSIunXr5vP5d911V5WP77nnHkmV76GGVNv36KneB0AoIzwCtXQ8MNX0Q/fntx8///j8t58vUPjwww/Vu3dv77Dh1q1bZVmWHn30UTVr1qzKn8cff1ySdPDgwSqP0759+2qPXVpaqscee0xt2rRRdHS00tLS1KxZM+Xl5dVrrtxxx1fonuo1OG7nzp067bTTqh3v2rWr9/afO9FzkioXgByf13lcVlaW8vPzlZ6eXu01Kyoq8r5e27ZtkyTv9IC6atu2bZWPmzRpIkne+ZVZWVmSKgPwL+uZNGmSysvLvV+D5557TuvWrVObNm00YMAATZw4sUr4aN++vX7/+99r0qRJSktL04gRI/Tqq6/65WtYVFQkqeZfAP74xz8qISFBAwYMUOfOnXXXXXdVm7d5Kif7Wp5M586dq3zcsWNHORwOv83XPZnavkdP9T4AQhlzHoFaSk5OVosWLbRmzZoaz1uzZo1atWrlDVrR0dEaO3asPvnkE7322ms6cOCAFi9erL/85S/ezznekXrggQc0YsSIE95vp06dqnx8og7dPffco7ffflv333+/Bg4cqOTkZBmGoWuuucYv+/udfvrpkqS1a9dq7Nix9b6/XzpZ1zE6OrraqmvTNJWenq5///vfJ/yck81xq6uTzfG0LMtbj1S5qKp3794nPPd412/cuHE699xz9cknn2j27Nn629/+pr/+9a+aPn26Ro0aJalyVfuECRP02Wefafbs2br33nu98wF/GaRr4/gCrV++n36ua9eu2rx5s2bMmKFZs2Zp2rRpeu211/TYY4/piSee8OlxTva19NUvu8In6xJ7PJ56PU5tnep9AIQywiNQB5dccon+9a9/adGiRVWGuY777rvvlJ2drdtvv73K8fHjx+udd97RvHnztHHjRlmW5R2yluTd1icyMlIXXnhhneubOnWqbr75Zj3//PPeY2VlZX7bLPmcc85RkyZNNGXKFP3P//zPKRfNtGvXTps3b652fNOmTd7b66pjx46aO3euBg8eXGNQ6dixo6TK0FRTYKrNEHZNj5OUlOTT17BFixa68847deedd+rgwYPq06ePnn76aW94lKSePXuqZ8+e+vOf/6wlS5Zo8ODB+r//+z/97//+b53rfO+992QYhoYPH17jefHx8Ro/frzGjx+viooKXXHFFXr66af1yCOPKCYmpt6v1y9lZWVV6VZu3bpVpml6F9oc7/D98r38y86gVLuvZUO+R4FQw7A1UAcPPvigYmNjdfvtt+vw4cNVbjty5IjuuOMOxcXFebcKOe7CCy9U06ZN9eGHH+rDDz/UgAEDqvygTE9P19ChQ/XGG29o37591R730KFDPtXndDqrdUBeeeUVv3Vn4uLi9Mc//lEbN27UH//4xxN2W95//30tX75ckjR69GgtX75cS5cu9d5eXFysN998U5mZmbWaE/dL48aNk8fj0VNPPVXtNrfb7Q0ZF110kRITE/XMM89U2fpFqtotio+Pr9ewcN++fdWxY0f9/e9/9w4N/9zxr6HH46n2OOnp6WrZsqXKy8slVc4tdbvdVc7p2bOnHA6H95y6ePbZZzV79myNHz++2jDxz/3yvR0VFaVu3brJsiy5XC5J8u6z6a9fTF599dUqH7/yyiuS5A3TSUlJSktL08KFC6uc99prr1W7r9rU1pDvUSDU0HkE6qBz58565513dP3116tnz57VrjCTm5urKVOmeLtQx0VGRuqKK67QBx98oOLiYv3973+vdt+vvvqqzjnnHPXs2VO//vWv1aFDBx04cEBLly7V7t27tXr16lPWd8kll+i9995TcnKyunXrpqVLl2ru3LlKTU3122vw4IMPav369Xr++ec1f/58XXXVVcrIyND+/fv16aefavny5VqyZImkyn0Fp0yZolGjRunee+9V06ZN9c4772jHjh2aNm1ava70MWTIEN1+++165pln9OOPP+qiiy5SZGSksrKy9PHHH+sf//iHrrrqKiUlJenFF1/Ur371K/Xv31/XXXedmjRpotWrV6ukpETvvPOOpMrw9+GHH+r3v/+9+vfvr4SEBF166aU+1+NwODRp0iSNGjVK3bt31y233KJWrVppz549mj9/vpKSkvTFF1+osLBQrVu31lVXXaVevXopISFBc+fO1YoVK7wd42+++UZ33323rr76anXp0kVut1vvvfeenE6nrrzyylPW4na79f7770uq7Dzv3LlTn3/+udasWaPzzz9fb775Zo2ff9FFFykjI0ODBw9W8+bNtXHjRv3zn//UxRdf7J0r2bdvX0mVG8Nfc801ioyM1KWXXlrnzdt37NihMWPGaOTIkVq6dKnef/99XXfdderVq5f3nF/9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31fHjh21YcMGOZ1ODRo0SC+99JIee+wxbd68WZKUkNBwCz4JjyHsePex7Ouv7S4l4FiGoVUX3ajl0a0l0+5qAAAn0yreUNcmjdt13Lp1qyzL0umnn37Sc+bNm6e1a9dqx44datOmjSTp3XffVffu3bVixQr1799fUuVQ9bvvvqtmzZpV+fzrrrtOt9xyi/fjW2+9VQ8//LBuvvlmSVKHDh301FNP6aGHHtLjjz+uuXPnavny5dq4caO6dOniPee45ORkGYahjIwM/7wINSA8hriofv1UvmSJrMJCu0sJGOUJyZo//Bbt8MTZXQoA4BSGtWr8GXaWderdfTdu3Kg2bdp4g6MkdevWTSkpKdq4caM3PLZr165acJSkfv36Vfl49erVWrx4sXcIW5I8Ho/KyspUUlKiH3/8Ua1bt/YGRzsRHkOcERGhmOHDVTp9ut2lBISjbbtoVr8rlOdmui8ABLpuTQy1jG/879edO3eWYRh1WhTzSyca9j7R8aKiIj3xxBO64oorqp0bExOj2NjYetfiL/wEDQNRPXvK2bat3WXYLrv/hZre50qCIwAEgQhDGtLSnv12mzZtqhEjRujVV19VcXFxtdvz8vLUtWtX7dq1S7t27fIe37Bhg/Ly8tStW7daP2afPn20efNmderUqdofh8OhM844Q7t379aWLVtO+PlRUVHyeDy1fty64KdomIgdNUoK08s5WYahFSMnaGaLAezfCABBon+6Q8lR9n3PfvXVV+XxeDRgwABNmzZNWVlZ2rhxo15++WUNHDhQF154oXr27Knrr79eq1at0vLly3XTTTdpyJAh1YakffHYY4/p3Xff1RNPPKH169dr48aN+uCDD/TnP/9ZkjRkyBCdd955uvLKKzVnzhzt2LFDM2fO1KxZsyRJmZmZKioq0rx585Sbm6uSkhK/vh4/R3gME86MDEX17Wt3GY2uPDFFM8fer/9GtbS7FACAj+IjKq8mY6cOHTpo1apVOv/88/WHP/xBPXr00PDhwzVv3jy9/vrrMgxDn332mZo0aaLzzjtPF154oTp06KAPP/ywTo83YsQIzZgxQ7Nnz1b//v119tln68UXX1S7du2850ybNk39+/fXtddeq27duumhhx7ydhsHDRqkO+64Q+PHj1ezZs303HPP+eV1OBHD8mVWKEKCWVqqoldekVVaancpjeJI5un6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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 答题正确率\n", + "correct_data = data.groupby(\"correct\")[\"problem_id\"].count()\n", + "correct_data.index = ['Incorrect', 'Correct']\n", + "\n", + "# 绘制答题正确率的饼图\n", + "plt.figure(figsize=(8, 8))\n", + "correct_data.plot(kind='pie', autopct='%1.1f%%', startangle=90, colors=['lightcoral', 'lightskyblue'])\n", + "plt.title('Overall Correctness Distribution')\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "data-analysis", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}