2103 lines
158 KiB
Plaintext
2103 lines
158 KiB
Plaintext
{
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>order_id</th>\n",
|
||
" <th>assignment_id</th>\n",
|
||
" <th>user_id</th>\n",
|
||
" <th>assistment_id</th>\n",
|
||
" <th>problem_id</th>\n",
|
||
" <th>original</th>\n",
|
||
" <th>correct</th>\n",
|
||
" <th>attempt_count</th>\n",
|
||
" <th>ms_first_response</th>\n",
|
||
" <th>tutor_mode</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>hint_count</th>\n",
|
||
" <th>hint_total</th>\n",
|
||
" <th>overlap_time</th>\n",
|
||
" <th>template_id</th>\n",
|
||
" <th>answer_id</th>\n",
|
||
" <th>answer_text</th>\n",
|
||
" <th>first_action</th>\n",
|
||
" <th>bottom_hint</th>\n",
|
||
" <th>opportunity</th>\n",
|
||
" <th>opportunity_original</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>33022537</td>\n",
|
||
" <td>277618</td>\n",
|
||
" <td>64525</td>\n",
|
||
" <td>33139</td>\n",
|
||
" <td>51424</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>32454</td>\n",
|
||
" <td>tutor</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>32454</td>\n",
|
||
" <td>30799</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>26</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>33022709</td>\n",
|
||
" <td>277618</td>\n",
|
||
" <td>64525</td>\n",
|
||
" <td>33150</td>\n",
|
||
" <td>51435</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>4922</td>\n",
|
||
" <td>tutor</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>4922</td>\n",
|
||
" <td>30799</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>55</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>35450204</td>\n",
|
||
" <td>220674</td>\n",
|
||
" <td>70363</td>\n",
|
||
" <td>33159</td>\n",
|
||
" <td>51444</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>25390</td>\n",
|
||
" <td>tutor</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>42000</td>\n",
|
||
" <td>30799</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>88</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>35450295</td>\n",
|
||
" <td>220674</td>\n",
|
||
" <td>70363</td>\n",
|
||
" <td>33110</td>\n",
|
||
" <td>51395</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>4859</td>\n",
|
||
" <td>tutor</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>4859</td>\n",
|
||
" <td>30059</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>41</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>35450311</td>\n",
|
||
" <td>220674</td>\n",
|
||
" <td>70363</td>\n",
|
||
" <td>33196</td>\n",
|
||
" <td>51481</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>14</td>\n",
|
||
" <td>19813</td>\n",
|
||
" <td>tutor</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>124564</td>\n",
|
||
" <td>30060</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>35450555</td>\n",
|
||
" <td>220674</td>\n",
|
||
" <td>70363</td>\n",
|
||
" <td>33172</td>\n",
|
||
" <td>51457</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>16031</td>\n",
|
||
" <td>tutor</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>16031</td>\n",
|
||
" <td>30060</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>12</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>35450573</td>\n",
|
||
" <td>220674</td>\n",
|
||
" <td>70363</td>\n",
|
||
" <td>33174</td>\n",
|
||
" <td>51459</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>15047</td>\n",
|
||
" <td>tutor</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>15047</td>\n",
|
||
" <td>30060</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>35480603</td>\n",
|
||
" <td>220674</td>\n",
|
||
" <td>70363</td>\n",
|
||
" <td>33123</td>\n",
|
||
" <td>51408</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>10732</td>\n",
|
||
" <td>tutor</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>10732</td>\n",
|
||
" <td>30059</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>55</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>33140811</td>\n",
|
||
" <td>220674</td>\n",
|
||
" <td>70677</td>\n",
|
||
" <td>33168</td>\n",
|
||
" <td>51453</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>23241</td>\n",
|
||
" <td>tutor</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>23241</td>\n",
|
||
" <td>30060</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>12</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>9</th>\n",
|
||
" <td>33140919</td>\n",
|
||
" <td>220674</td>\n",
|
||
" <td>70677</td>\n",
|
||
" <td>33112</td>\n",
|
||
" <td>51397</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>11512</td>\n",
|
||
" <td>tutor</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>11512</td>\n",
|
||
" <td>30059</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>36</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>10 rows × 30 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>order_id</th>\n",
|
||
" <th>assignment_id</th>\n",
|
||
" <th>user_id</th>\n",
|
||
" <th>assistment_id</th>\n",
|
||
" <th>problem_id</th>\n",
|
||
" <th>original</th>\n",
|
||
" <th>correct</th>\n",
|
||
" <th>attempt_count</th>\n",
|
||
" <th>ms_first_response</th>\n",
|
||
" <th>sequence_id</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>school_id</th>\n",
|
||
" <th>hint_count</th>\n",
|
||
" <th>hint_total</th>\n",
|
||
" <th>overlap_time</th>\n",
|
||
" <th>template_id</th>\n",
|
||
" <th>answer_id</th>\n",
|
||
" <th>first_action</th>\n",
|
||
" <th>bottom_hint</th>\n",
|
||
" <th>opportunity</th>\n",
|
||
" <th>opportunity_original</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>count</th>\n",
|
||
" <td>4.017560e+05</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>4.017560e+05</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>4.017560e+05</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>45454.000000</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>67044.000000</td>\n",
|
||
" <td>401756.000000</td>\n",
|
||
" <td>328291.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>mean</th>\n",
|
||
" <td>3.066256e+07</td>\n",
|
||
" <td>273701.845882</td>\n",
|
||
" <td>83414.154542</td>\n",
|
||
" <td>46443.517526</td>\n",
|
||
" <td>81117.030011</td>\n",
|
||
" <td>0.817140</td>\n",
|
||
" <td>0.642923</td>\n",
|
||
" <td>1.596417</td>\n",
|
||
" <td>4.748464e+04</td>\n",
|
||
" <td>7284.411088</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>3031.291025</td>\n",
|
||
" <td>0.487470</td>\n",
|
||
" <td>2.235817</td>\n",
|
||
" <td>5.964848e+04</td>\n",
|
||
" <td>39571.335029</td>\n",
|
||
" <td>145094.431667</td>\n",
|
||
" <td>0.130012</td>\n",
|
||
" <td>0.724092</td>\n",
|
||
" <td>20.553535</td>\n",
|
||
" <td>14.403307</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>std</th>\n",
|
||
" <td>5.264886e+06</td>\n",
|
||
" <td>11338.460017</td>\n",
|
||
" <td>7417.814021</td>\n",
|
||
" <td>11832.443427</td>\n",
|
||
" <td>25426.799662</td>\n",
|
||
" <td>0.386552</td>\n",
|
||
" <td>0.479139</td>\n",
|
||
" <td>12.050437</td>\n",
|
||
" <td>3.614590e+05</td>\n",
|
||
" <td>1497.941072</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1830.451486</td>\n",
|
||
" <td>1.187255</td>\n",
|
||
" <td>1.804244</td>\n",
|
||
" <td>3.822188e+05</td>\n",
|
||
" <td>12679.439926</td>\n",
|
||
" <td>47127.478285</td>\n",
|
||
" <td>0.394099</td>\n",
|
||
" <td>0.446974</td>\n",
|
||
" <td>62.523994</td>\n",
|
||
" <td>62.393684</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>min</th>\n",
|
||
" <td>2.022408e+07</td>\n",
|
||
" <td>217900.000000</td>\n",
|
||
" <td>14.000000</td>\n",
|
||
" <td>86.000000</td>\n",
|
||
" <td>83.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>-7.759575e+06</td>\n",
|
||
" <td>5870.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>-7.759575e+06</td>\n",
|
||
" <td>86.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>25%</th>\n",
|
||
" <td>2.660218e+07</td>\n",
|
||
" <td>266784.000000</td>\n",
|
||
" <td>78970.000000</td>\n",
|
||
" <td>37046.000000</td>\n",
|
||
" <td>58467.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>8.518000e+03</td>\n",
|
||
" <td>5979.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>2770.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>1.066900e+04</td>\n",
|
||
" <td>30244.000000</td>\n",
|
||
" <td>104412.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>3.000000</td>\n",
|
||
" <td>3.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>50%</th>\n",
|
||
" <td>3.110513e+07</td>\n",
|
||
" <td>271629.000000</td>\n",
|
||
" <td>80111.000000</td>\n",
|
||
" <td>44498.000000</td>\n",
|
||
" <td>80734.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.945300e+04</td>\n",
|
||
" <td>6910.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>2770.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>3.000000</td>\n",
|
||
" <td>2.426450e+04</td>\n",
|
||
" <td>30987.000000</td>\n",
|
||
" <td>136247.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>8.000000</td>\n",
|
||
" <td>6.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>75%</th>\n",
|
||
" <td>3.494364e+07</td>\n",
|
||
" <td>279158.000000</td>\n",
|
||
" <td>88142.000000</td>\n",
|
||
" <td>53142.000000</td>\n",
|
||
" <td>93102.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>4.457825e+04</td>\n",
|
||
" <td>8032.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>5056.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>5.698925e+04</td>\n",
|
||
" <td>46399.000000</td>\n",
|
||
" <td>184077.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>19.000000</td>\n",
|
||
" <td>13.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>max</th>\n",
|
||
" <td>3.831020e+07</td>\n",
|
||
" <td>291503.000000</td>\n",
|
||
" <td>96299.000000</td>\n",
|
||
" <td>106210.000000</td>\n",
|
||
" <td>207348.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>3824.000000</td>\n",
|
||
" <td>8.407692e+07</td>\n",
|
||
" <td>13362.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>9948.000000</td>\n",
|
||
" <td>10.000000</td>\n",
|
||
" <td>10.000000</td>\n",
|
||
" <td>8.407692e+07</td>\n",
|
||
" <td>106180.000000</td>\n",
|
||
" <td>323181.000000</td>\n",
|
||
" <td>2.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>3371.000000</td>\n",
|
||
" <td>3371.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>8 rows × 25 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<Figure size 1000x600 with 1 Axes>"
|
||
]
|
||
},
|
||
"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": [
|
||
"<Figure size 1000x600 with 1 Axes>"
|
||
]
|
||
},
|
||
"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/96ld69tln9atf/Ur9+vXTwoULq+xXeVxtamvI9ygQcuxb6A0EvzVr1ljXXnut1aJFCysyMtLKyMiwrr322hq365gzZ44lyTIMw9q1a9cJz9m2bZt10003WRkZGVZkZKTVqlUr65JLLrGmTp3qPef4Vj0rVqyo9vlHjx61brnlFistLc1KSEiwRowYYW3atKna9iR13arn56ZOnWpddNFFVtOmTa2IiAirRYsW1vjx460FCxZUe05XXXWVlZKSYsXExFgDBgywZsyYUeWc4/WcaGuaU2098+abb1p9+/a1YmNjrcTERKtnz57WQw89ZO3du7fKeZ9//rk1aNAgKzY21kpKSrIGDBhgTZkyxXt7UVGRdd1111kpKSmWJO9rcbLaTrZ1zA8//GBdccUVVmpqqhUdHW21a9fOGjdunDVv3jzLsiyrvLzcevDBB61evXpZiYmJVnx8vNWrVy/rtdde897H9u3brVtvvdXq2LGjFRMTYzVt2tQ6//zzrblz5570dfj56yXJ+ycuLs7KzMy0rrzySmvq1KnerWd+7pdb9bzxxhvWeeed530OHTt2tB588EErPz+/yuc99dRTVqtWrSyHw1FlaxxJJ92KSCfZqmfDhg3WVVddZSUmJlpNmjSx7r777mpbK5WUlFi33XablZycbCUmJlrjxo2zDh48WO0+a6rtl/8XLKt+79GathACQo1hWczuBQAAgG/owwMAAMBnhEcAAAD4jPAIAAAAnxEeAQAA4DPCIwAAAHxGeAQAAIDPCI8AAADwGeERAAAAPiM8AgAAwGeERwAAAPiM8AgAAACfER4BAADgM8IjAAAAfEZ4BAAAgM8IjwAAAPAZ4REAAAA+IzwCAADAZ4RHAAAA+IzwCAAAAJ8RHgEAAOAzwiMAAAB8RngEAACAzwiPAAAA8BnhEQAAAD4jPAIAAMBnhEcAAAD4jPAIAAAAnxEeAQAA4DPCIwAAAHxGeAQAAIDPCI8AAADwGeERAAAAPiM8AgAAwGeERwAAAPiM8AgAAACfER4BAADgM8IjAAAAfEZ4BAAAgM8IjwAAAPAZ4REAAAA+IzwCAADAZ4RHAAAA+IzwCAAAAJ8RHgEAAOAzwiMAAAB8RngEAACAzwiPAAAA8BnhEQAAAD4jPAIAAMBnhEcAAAD4jPAIAAAAnxEeAQAA4DPCIwAAAHxGeAQAAIDPCI8AAADwGeERAAAAPiM8AgAAwGeERwAAAPiM8AgAAACfER4BAADgM8IjAAAAfEZ4BAAAgM8IjwAAAPAZ4REAAAA+IzwCAADAZ4RHAAAA+IzwCAAAAJ8RHgEAAOCzCLsLAIBAYpWXyyot/emPyyVZlmSaso79rZ/9XZjQRLubtJVhSIYkw6j8rfz4xw5DinZK0U5DMU4pxln5sWEYNj9TAKgbwiOAkGRVVMgqLpb58yBYWiqrpKTy77KyqseP/ZFp1upx9vYZopmtW9W6vuhjITKmWrA0vAEzxmkoIVJKjjKUFCVFOAicAOxHeAQQtKzycplHjshz+LDMI0dkHj1a+ffhw7KKi+0ur0blnso/BZIk62e3WCf+BMkbJFOiKv9OjjaUHCWlHAuXDrqZABoB4RFAQLPKyn4Kh7/4Y5WU2F1eoypySUUuS3uKpV+GTENSYqSqBMqUaEPpsYbSYgiWAPyH8AggIFgejzwHDsizZ488e/fKPHSoMiCWltpdWlCwJBW4pAKXpV3eI5UiDKlZrKHmsYaax0nNYw01izUUyTA4gDogPAKwhXn0qNy7d1eGxT175Nm/X3K77S4rJLktaV+JpX0llnS48pghKTVGxwLlsWAZaygmgkAJoGaERwANziotlft4SDz2J9yGnAONJSm3TMots7T+6E9dyuSonwJlmwRDreIMOelQAvgZwiMAv7I8Hnn27/8pKO7eLfPIEbvLgo/yK6T8Cktb8isDZaRDahVvqF2CoXaJhjLiDOZPAmGO8Aig3syCArmzsuTKypJ7xw6posLukuAnLlPKLrSUXWhJ+yq3EGoTXxkk2yU61CyGPSuBcEN4BFBrlmnKk5NTGRa3bpV58KDdJaGRlHukrQWWthZYkkzFRUhtj3Ul2yU41DSGIAmEOsIjAJ+YhYVyb91aGRi3b5fKy+0uCQGgxC1tyrO0Ka8yTCZGSu0SDXVKdqhjEiu6gVBEeARwQpZpyrN7d+Vw9NatMvfvt7skBIFCl7TuiKV1RzyKdEgdkgydluJQpyRDUU6CJBAKCI8AvKzycrk2bZI7K0vubdtklZXZXRKCmMuUNudZ2pznUYQhZSYZOi3Zoc7JbAkEBDPCIxDmLNOUe9s2uVavlmvzZvZaRINwW9LWfEtb8z1yGFJmgqHTmjjUJdlQLEESCCqERyBMefbtU8Xq1XKtWxfw14FGaDEtaXuhpe2FHn0tqU2CodObGOqS7FB8JEESCHSERyCMmAUFcq1dq4o1a1ghjYBgStpZZGlnkaXZu0y1STB0RqpDp6cYimCxDRCQCI9AiLMqKuTauFGuNWsq92C0rFN/EmADS1JOkaWcIo/m7pZ6NHWod6pDabGESCCQEB6BEGRZltzbt8u1Zo1cGzdKLpfdJQG1UuaR/nvI1H8PmWodb6hXqkOnN2HrHyAQEB6BEOI5ckQVK1fKtXatrMJCu8sB/GJ3saXdxR7N3SN1b+JQ7zSH0ulGArYhPAIhwJ2To/KlS+XevJlhaYSsco+0KtfUqlxTLeMM9UpzqBvdSKDRER6BIGWZplwbNqji++/l2bPH7nKARrW3xNLeHI++2S11OzY3snkcIRJoDIRHIMhY5eWqWLVK5cuWycrPt7scwFblpvRDrqkfck21TTA0sLlD7ZMcdpcFhDTCIxAkzPx8lX//vSp++IHrSgMncHyldkasqbObO3RaiiHDoBsJ+BvhEQhw7j17VLF0qVwbNjCfEfDB/lJLn2Z71DRaOqu5Uz2aGnISIgG/ITwCAciyLLk3bVL50qXy7NpldzlAUDpSLs3M8WjRPmlAukO9Uh2KchIigfoiPAIBxHK7VbFqlSq+/17m0aN2lwOEhEKXNG+PqSX7TfVt5lC/Zg7FcD1toM4Ij0AAsCxLrtWrVbZgAYtggAZS6pEW7Te1/KCp3mkO9U93KJFraQO1RngEbObavFll33zDtaaBRlJhSssPmlp5yFSPpoYGZTiVHEWIBHxFeARs4s7JUdncucxpBGzisaTVhy2tO+LWmWkODc5wKJbhbOCUCI9AI/McOKCyefPkzsqyuxQAqgyR/z1kau1hU2c1rxzO5qo1wMkRHoFGYublqWz+fLnWrmXLHSAAlZvSwn2mVh0yNbhF5epsB1v8ANUQHoEGZhYXq3zhQlWsXCl5PHaXA+AUitzS17tMrTho6vxWTnVO5oo1wM8RHoEGYlVUqHzJEpUvXSpVVNhdDoBaOlIuTdvuUbsEU8NaO5UeSxcSkAiPgN9ZHo8q/vtflX/3naziYrvLAVBPO4ssvb3JrTNSDZ3Xwql4tvdBmCM8An7kzs5W6VdfyTx0yO5SAPiRpcqV2RuPujXw2KKaCBbVIEwRHgE/MIuLVTZnjlyrV9tdCoAGVGFK3+4z9eNhUyPaONUhifmQCD+ER6AeLMtSxcqVKp83T1ZZmd3lAGgk+RXSR9s86t6kcj5kHPtDIowQHoE68uzbp9Ivv5Rnzx67SwFgk/VHLW0vdGtYK6d6NKULifBAeARqyaqoUNk336hi+XL2awSgUrc0Y6dH649UDmWnRNOFRGgjPAK14Nq2TaUzZsjKy7O7FAABZkehpbc2uXVORuWCGjYYR6giPAI+MEtKVPb113KtWWN3KQACmMuU5u81tfGopVFtnWoeR4BE6CE8AqdQsW6dymbNYs9GAD7bX2rpnc1u9U936JwWXCsboYXwCJyEWVCg0i+/lHvLFrtLARCETEnLDpranGdqZFunMhNZUIPQQHgETqBi/XqVfvGFVF5udykAglxehfTBVo96NjV1YWunop10IRHcCI/Az1gul0pnzpTrhx/sLgVAiFl7xNKuIrcuy3SqRTxdSAQvwiNwjOfAAZVMnSozN9fuUgCEqLwK6b0sj4a0sDQg3SGDFdkIQoRHQFL5ihUqmz1bcrvtLgVAiDOtyhXZOwstXdzOqfhIAiSCC31zhDWrtFTFH32ksq++IjgCaFTbCy39v01uZReYdpcC1AqdR4Qtd06OSqZPl5Wfb3cpAMJUsVv6YJtHZze3dF4LNhZHcCA8IuxYlqXyhQtV/u23XF4QQED4/oCpnEJLYzK5vCECH8PWCCtmQYGK331X5QsWEBwBBJS9JZbe3uzWxqMMYyOw0XlE2HBt2aLSzz6TVVJidykAcELlHumzbI+yCyv3hOTKNAhEhEeEPMvjUdmcOapYtszuUgDAJ6sPW9pT7NZlmRFqFkuARGBh2BohzSwoUPFbbxEcAQSd3DLpvS1uZeUzjI3AQnhEyPLs3auiSZPk2bfP7lIAoE4qTGn6do++P+CxuxTAi2FrhCTXhg0q+fRTyeWyuxQAqBdL0oK9pnLLLI1q45STeZCwGeERIafsu+9U/s03dpcBAH617oilvHKPrmjvVBxXpYGNGLZGyLA8HpV8+inBEUDI2l1safIWtw6WstUY7EN4REgwS0pU/O67cq1ebXcpANCgCiqk91lIAxsRHhH0PLm5Kp40SZ6cHLtLAYBGwUIa2Ik5jwhq7u3bVfzxx1JZmd2lAECjYiEN7EJ4RNAq/+9/VTZzpmQydAMgfK07YunosYU08SykQSNg2BpBx7Islc6apbIvvyQ4AoCkPcWW3tni1iEW0qAREB4RVKzycpVMmcIVYwDgFwoqpH9nubW3mF+q0bAIjwgaZlGRit5+W+6sLLtLAYCAVOaRPtjq0c5CAiQaDuERQcEsKFDx5MkyDxywuxQACGgVpvTxNo+2sZUPGgjhEQHPzM+vDI6HD9tdCgAEBbclTdvh0cajBEj4H6utEdDMo0dV9M47svLz7S4FAIKKaUmfZ3tUYUq9UukVwX94NyFgeQ4fVtHkyQRHAKgjS9LMHI9WHGQzcfgP4REByXPokIonT5ZVUGB3KQAQ9ObtMbVoHwES/kF4RMDxHDhQGRyLiuwuBQBCxqL9pr7ZQ4BE/REeEVA8+/ap+J13ZJWU2F0KAISc5QdNzcrxyLLYTBx1x4IZBAz37t0q/ve/uU41ADSgHw+bqjAtXdLOKYfB5QxRe3QeERDcOTkqfu89giMANIINRy19usMjkw4k6oDwCNu5s7NV/P77UkWF3aUAQNjYkm/pK4awUQeER9jKtW1b5VC1y2V3KQAQdtYdsTR3DxuJo3YIj7CNa9s2lUyZIrnddpcCAGFr5SFT37GND2qB8AhbePbtU8lHH0kevmEBgN0W7zf1XzYSh48Ij2h05tGjlUPVzHEEgIAxd4+ptYcZwsapER7RqMziYhW//76s4mK7SwEA/MLMHI+25BEgUTPCIxqNVVGhkilTZB45YncpAIATMCV9lu1RdiEBEidHeESjsExTJVOnyrNnj92lAABq4LGk6ds92ltMgMSJER7RKEq/+ELurCy7ywAA+KDClD7e5tGhUvaARHWERzS4svnz5frxR7vLAADUQqlH+nCbW3nlBEhURXhEgyr/739VvnCh3WUAAOqgyCV9sNWtYhcBEj8hPKLBuDZtUtlXX9ldBgCgHvIqpOk7PPKYBEhUIjyiQbh37VLJtGkS10wFgKC3p9jSrF1sIo5KhEf4nefQIS47CAAhZu0RS8u5Cg1EeISfmYWFKv73v2WVltpdCgDAz+bvMbW9gC18wh3hEX5juVwq/s9/ZOXn210KAKABWKrcRPxIGVOSwhnhEX5T+tVXMvfvt7sMAEADKvdIU7e7VeYhQIYrwiP8omLlSvZyBIAwcaRc+nyHRxaLIsMS4RH15t67V6UzZ9pdBgCgEW0vtDR/L/MfwxHhEfVilpaq5KOPJA8r8AAg3Cw/aGrtYQJkuCE8os4sy1Lp9OkskAGAMDZrl0d7igmQ4YTwiDor//ZbubdutbsMAICNPJY0fbtHhRXMfwwXhEfUiWvrVq5ZDQCQJBW7pWnbPXJzCcOwQHhErZl5eSqdPp1LDwIAvPaXWvpmD8PX4YDwiFqx3G6VfPwxV5ABAFSzKtfU1nwCZKgjPKJWSmfOlGfvXrvLAAAEqC9zPCpyMTIVygiP8FnFjz/KtWqV3WUAAAJYqVuasZMNxEMZ4RE+8ezfr9Ivv7S7DABAEMgutLT8IMPXoYrwiFOyysoqNwJ3u+0uBQAQJL7dZ2p/Cd3HUER4xCmVzpwp8+hRu8sAAAQR05I+z3arwkOADDWER9TItXmzXGvW2F0GACAIHSmX5uzm8rWhhvCIkzJLS1U6Y4bdZQAAgtjaI5Y2HmX+YyghPOKkymbOlFVUZHcZAIAgN2uXR/lcvjBkEB5xQq5Nm+Rau9buMgAAIaDcI32R7ZHJ9j0hgfCIasySEoarAQB+tbvY0pL9DF+HAsIjqimbOVNWcbHdZQAAQszi/ab2FhMggx3hEVW4Nm6Ua906u8sAAIQgS9LMHI88DF8HNcIjvMySEq4iAwBoUIfKpKUMXwc1wiO8yr76iuFqAECDW3rAVG4Z3cdgRXiEJMm1YYNc69fbXQYAIAx4rMrha4vh66BEeITM4mKGqwEAjWpPsaVVuQxfByPCIyqHq0tK7C4DABBmvt1rqoDNw4MO4THMudavl2vDBrvLAACEoQpTms21r4MO4TGMWWVlKp050+4yAABhbGu+pax8hq+DCeExjJV9+y2rqwEAtpuz2yOXyfB1sCA8hinP4cOqWL7c7jIAAFBBhbR4H93HYEF4DFNlc+ZIJv9RAQCBYfkhU4dK6T4GA8JjGHJv3y735s12lwEAgJdpsXgmWBAew4xlmir9+mu7ywAAoJpdRZbWHmZULNARHsNMxapVMg8etLsMAABOaOE+Fs8EuoAIjxMmTNDYsWPtLqNBDB06VPfff7/dZUiq3JqnfP58u8sAAOCkCl3SykN0HwNZQIRHu1VUVFQ75vF4ZIbYgpKyb7/lSjIAgIC39ICpUjfdx0AVcOFx6NChuvfee/XQQw+padOmysjI0MSJE6uck5eXp9tvv13NmzdXTEyMevTooRkzZnhvnzZtmrp3767o6GhlZmbq+eefr/L5mZmZeuqpp3TTTTcpKSlJv/nNbzR58mSlpKTo888/V7du3RQdHa2cnByVl5frgQceUKtWrRQfH6+zzjpLCxYsqHJ/ixcv1tChQxUXF6cmTZpoxIgROnr0qCZMmKBvv/1W//jHP2QYhgzDUHZ2dgO9cjVjax4AQLAo90hL9odWAyeUBFx4lKR33nlH8fHxWrZsmZ577jk9+eSTmjNnjiTJNE2NGjVKixcv1vvvv68NGzbo2WefldPplCStXLlS48aN0zXXXKO1a9dq4sSJevTRRzV58uQqj/H3v/9dvXr10g8//KBHH31UklRSUqK//vWvmjRpktavX6/09HTdfffdWrp0qT744AOtWbNGV199tUaOHKmsrCxJ0o8//qhhw4apW7duWrp0qRYtWqRLL71UHo9H//jHPzRw4ED9+te/1r59+7Rv3z61adOm8V7InymbPZuteQAAQWNVrql8rnsdkAzLsmz/ykyYMEF5eXn69NNPNXToUHk8Hn333Xfe2wcMGKALLrhAzz77rGbPnq1Ro0Zp48aN6tKlS7X7uv7663Xo0CHNnj3be+yhhx7Sl19+qfXr10uq7DyeeeaZ+uSTT7znTJ48Wbfccot+/PFH9erVS5KUk5OjDh06KCcnRy1btvSee+GFF2rAgAH6y1/+ouuuu045OTlatGjRCZ/b0KFD1bt3b7300kv1eo3qw719u4rfe8+2xwdCWU6fIfqy9WC7ywBCUvcmhi7NjLC7DPxCQHYezzjjjCoft2jRQgePrRD+8ccf1bp16xMGR0nauHGjBg+u+o188ODBysrKksfz0/5R/fr1q/a5UVFRVR577dq18ng86tKlixISErx/vv32W23bts1bz7Bhw+r2RBsBW/MAAILV+qOWDpTY3uPCLwRknI+MjKzysWEY3sUrsbGxfnmM+Pj4asdiY2NlGIb346KiIjmdTq1cudI7LH5cQkKCX+tpKBUrV7I1DwAgaC3Y69H4TgEZV8JWQHYea3LGGWdo9+7d2rJlywlv79q1qxYvXlzl2OLFi9WlS5dqAfBUzjzzTHk8Hh08eFCdOnWq8icjI8Nbz7x58056H1FRUVU6no3JKitT+S8W9wAAEEx2FFrKLmDOfiAJuvA4ZMgQnXfeebryyis1Z84c7dixQzNnztSsWbMkSX/4wx80b948PfXUU9qyZYveeecd/fOf/9QDDzxQ68fq0qWLrr/+et10002aPn26duzYoeXLl+uZZ57Rl19+KUl65JFHtGLFCt15551as2aNNm3apNdff125ubmSKudXLlu2TNnZ2crNzW3U7X/KFy1iax4AQNCbv9ejAFiigWOCLjxKlVvx9O/fX9dee626deumhx56yNvd69Onjz766CN98MEH6tGjhx577DE9+eSTmjBhQp0e6+2339ZNN92kP/zhDzrttNM0duxYrVixQm3btpVUGTBnz56t1atXa8CAARo4cKA+++wzRURUttgfeOABOZ1OdevWTc2aNVNOTo5fXoNTMUtKVM7WPACAEHCgVNpwlPAYKAJitTX8r2zuXJX/YvgegP+x2hpoHMlR0m+6RsjpME59MhpUUHYeUTOzpETlK1bYXQYAAH6TX1G59yPsR3gMQRVLl0onuOQiAADBbMkBUy6TAVO7ER5DjFlaylxHAEBIKnVLqw/TfbQb4THE0HUEAISy5QdNmSzXsBXhMYRYdB0BACGuoELayMprWxEeQ0j58uVSebndZQAA0KC+P2DPxTdQifAYIiyXSxXLltldBgAADe5QmbSdq87YhvAYIipWrZJVWmp3GQAANIrvDxAe7UJ4DAGWaap86VK7ywAAoNHkFFnaW0yAtAPhMQS41q6VlZ9vdxkAADQquo/2IDwGOcuyuAwhACAsZeVbOlLGyuvGRngMcu4tW2QeOmR3GQAANDpL0rKDrLxubITHIEfXEQAQztYdsVTkovvYmAiPQcyzb588u3bZXQYAALbxWNJ/DzL3sTERHoNYxcqVdpcAAIDtfjhsqtxD97GxEB6DlFVRoYq1a+0uAwAA25V7pNWH6T42FsJjkHKtWydVVNhdBgAAAYHw2HgIj0GqYtUqu0sAACBgHC6TdhcRIBsD4TEIefbvl2fPHrvLAAAgoNB9bByExyDEQhkAAKrblGexcKYREB6DjOVysVAGAIATcJnSxqOEx4ZGeAwyrvXrpfJyu8sAACAgMXTd8AiPQYYhawAATm5fiaWDpXQfGxLhMYh4Dh6UZ/duu8sAACCg0X1sWITHIELXEQCAU1t/xJTbpPvYUAiPQcJyueRas8buMgAACHhlHmlLHuGxoRAeg4RrwwZZZWV2lwEAQFBg6LrhEB6DBFeUAQDAdzuLLOWV031sCITHIOA5dEienBy7ywAAIKisofvYIAiPQcDFpuAAANTa2iOmTIvuo78RHoOAa+NGu0sAACDoFLqk3UWER38jPAY4T26uzNxcu8sAACAobc4nPPob4THA0XUEAKDusvKY9+hvhMcA5960ye4SAAAIWgUuaV8JAdKfCI8BzMzPl2fvXrvLAAAgqLFhuH8RHgOYi64jAAD1toWha78iPAYw5jsCAFB/h8ulw2V0H/2F8BigzJISNgYHAMBPNtN99BvCY4Byb9oksbEpAAB+sYUte/yG8BigmO8IAID/7C+xVFBBgPQHwmMAssrL5d6+3e4yAAAIKSyc8Q/CYwByZWVJHo/dZQAAEFK42ox/RNhdAKpjY3D/eWvFCr21YoV25eVJkk5PT9dDQ4ZoeOfOkqSL335bi3furPI5t/TtqxcvvfSk95kyceIJjz85fLjuHTxY5W637vn8c83ctEnpCQl6/uKLNbRjR+95Ly9erF35+frb6NH1e3IAgFrZXWSpxG0pLsKwu5SgRngMMJbbXdl5hF+0TErSxAsvVMfUVFmWpSmrV+u6KVO08I471DU9XZJ0c58++p/zz/d+TmxkZI33ufkPf6jy8ZytW3XPZ59pTNeukqTJK1dq9d69mv2rX2luVpZ+NW2ash58UIZhKPvoUb2zcqXm/+Y3fn6mAIBTsSRl5VvqlUp4rA/CY4Bxb98uVVTYXUbIGHXaaVU+fnTYML21YoVW7N7tDY+xkZFqnpjo833+8tyvNm3Sue3bK7NpU0nSlkOHNOq009Q1PV2ZTZro0TlzdLikRGnx8frDjBmaOHy4kmJi6vnMAAB1sSXPVK9UZu3VB+ExwLg2b7a7hJDlMU19un69SlwuDWjd2nv847Vr9dGaNWqekKCRp52mB887T3FRUT7d58GiIs3OytLrY8d6j/XIyNCHq1er1OXSvK1blZGQoNS4OH20Zo2iIyJ06bEOJQCg8e0qsmRalhwG3ce6IjwGGE92tt0lhJz1Bw7ookmTVOZ2Kz4qSu+PH6/Tj3Udr+7ZU21SUpSRmKj1Bw5o4pw5ysrN1fvXXOPTfU/58UclREVVCYQ3nHmm1h84oLNefVWpcXF6++qrlVdaqr/Mn68ZEybof+fN07R169S+aVP987LL1DIpqUGeNwCgugqzctuelvGEx7oiPAYQs7BQ5pEjdpcRcjqnpuq7O+5QQXm5PtuwQb/99FN9OWGCTk9P14R+/bzndW/eXM0TEnTZu+9qx5Ejan9sGLom7//wg64+4wzF/GyeZKTTqb9ffHGV8+789FPdftZZWrNvn77ctEmLfvtb/WPxYv1x5ky9N368/54sAOCUcoostYy3u4rgxaB/AHH/YtUv/CMqIkIdUlPVu2VLPX7hherRvLn+b9myE57b79hw9nYfQvySnTuVdfiwburTp8bzFu7YoU0HD+o3AwZoUXa2hnfurPioKF3evbsW0WkGgEaXU8iWPfVBeAwgHsJjozAtS+Vu9wlvW7t/vySpeULCKe/nvVWr1LtFC/XMyDjpOWUulx788ku9eOmlcjoc8liWXGblJrUuj0cekw1rAaCx7S6unPeIuiE8BhA6j/73xNy5WpydrZ1Hj2r9gQN6Yu5cLcrO1rgzztCOI0f03Lff6se9e7Xz6FF9tWmT7vjkEw1q1049fhYI+7/yir7YuLHK/RaUlemzDRtO2XX828KFGt65s3q1aCFJOrtNG32xcaPW7d+vfy1frrPbtvX/kwYA1Oj4vEfUDXMeA4RZUiLz0CG7ywg5h4qLdccnn+hAUZGSoqPVvXlzTb/xRp3fsaN25+drwfbtev3771VSUaFWycka07WrHjjvvCr3kXX4sArKyqocm75unSzL0pU9e570sTccOKBP1q/Xd3fc4T12WbduWpSdrdFvv61OqamadOWV/n3CAACfMO+x7gzLom8bCFybNqnkww/tLgNALeX0GaIvWw+2uwwAtdQ+0dD4TvTQ6oJh6wDBkDUAAI1nD/Me64zwGCAIjwAANJ4KU9rHvMc6ITwGAKu8XOaxVb4AAKBxsGVP3RAeA4A7J0eidQ4AQKPKKeJnb10QHgMA+zsCAND4mPdYN4THAMB8RwAAGh/zHuuG8Ggzy+WSZ+9eu8sAACAs7WLoutYIjzbz7N4tcYk6AABswZVmao/waDOGrAEAsM/BUsJjbREebebZvdvuEgAACFtHy6UKDwGyNgiPNvMcPGh3CQAAhC1L0qEywmNtEB5tZJWVySostLsMAADCGkPXtUN4tBFdRwAA7Hew1O4Kggvh0UaERwAA7EfnsXYIjzYyDx2yuwQAAMLeoVJLFlea8Rnh0UZ0HgEAsF+FKeVV2F1F8CA82ojOIwAAgeEAQ9c+IzzaxCwullVcbHcZAABA0kGuNOMzwqNN6DoCABA4WDTjO8KjTZjvCABA4CA8+o7waBOT8AgAQMAocEllbgKkLwiPNvEwbA0AQEBh0YxvCI82ofMIAEBgOVpudwXBgfBoA7OwUFZZmd1lAACAn8mvoPPoiwhfTywoKPD5TpOSkupUTLhgsQwAAIGngPDoE5/DY0pKigzD8Olcj8dT54LCAUPWAAAEnnyuMuMTn8Pj/Pnzvf/Ozs7Www8/rAkTJmjgwIGSpKVLl+qdd97RM8884/8qQ4x55IjdJQAAgF+g8+gbn8PjkCFDvP9+8skn9cILL+jaa6/1HhszZox69uypN998UzfffLN/qwwxZmGh3SUAAIBfKHJJpmXJ4eNIa7iq04KZpUuXql+/ftWO9+vXT8uXL693UaHOKiqyuwQAAPALpqRCl91VBL46hcc2bdroX//6V7XjkyZNUps2bepdVKij8wgAQGBi6PrUfB62/rkXX3xRV155pWbOnKmzzjpLkrR8+XJlZWVp2rRpfi0w1FiWRecRAIAAVcCimVOqU+dx9OjR2rJliy699FIdOXJER44c0aWXXqotW7Zo9OjR/q4xpFglJZJp2l0GAAA4AfZ6PLU6dR6lyqHrv/zlL/6sJSxYDFkDABCw6Dyems/hcc2aNerRo4ccDofWrFlT47lnnHFGvQsLVSZD1gAABCw6j6fmc3js3bu39u/fr/T0dPXu3VuGYciyqr/AhmGwSXgN6DwCABC4ClyEx1PxOTzu2LFDzZo18/4bdcNKawAAAhfD1qfmc3hs167dCf9dk4svvliTJk1SixYtal9ZiGKlNQAAgctlSiVuS3ERbBR+MnVabe2rhQsXqrS0tCEfIujQeQQAILAV0n2sUYOGR1RH5xEAgMBW6mHeY00Ij42MziMAAIGtjHW/NSI8NjI6jwAABLZyt90VBDbCYyMyS0oktjECACCgMWxdM8JjI6LrCABA4GPYumYNGh7/53/+R02bNm3IhwgqVnGx3SUAAIBTKGPYukZ1vrb13r17tWjRIh08eFCmaVa57d5775UkPfLII/WrLsRYbt6NAAAEujKGrWtUp/A4efJk3X777YqKilJqaqoM46eNNA3D8IZH/ALhEQCAgFfOsHWN6hQeH330UT322GN65JFH5HAwbdJXdB4BAAh8LvPU54SzOiW/kpISXXPNNQTH2mKlNQAAAa/CZNi6JnVKf7fddps+/vhjf9cS8ug8AgAQ+Cro9dSoTsPWzzzzjC655BLNmjVLPXv2VGRkZJXbX3jhBb8UF3IIjwAABDyGrWtW5/D49ddf67TTTpOkagtmcBIMWwMAEPAIjzWrU3h8/vnn9f/+3//ThAkT/FxOaGPYGgCAwOcyJcuyaIidRJ3mPEZHR2vw4MH+riX0ER4BAAh4liQ3a2ZOqk7h8b777tMrr7zi71pCnsWwNQAAQcHD0PVJ1WnYevny5frmm280Y8YMde/evdqCmenTp/uluJBD5xEAgKDAiPXJ1Sk8pqSk6IorrvB3LSGPOY8AAAQHsuPJ1Sk8vv322/6uIzwwbA0AQFCg83hydb5EjNvt1ty5c/XGG2+osLBQkrR3714VFRX5rbiQQ+cRAICgQHY8uTp1Hnfu3KmRI0cqJydH5eXlGj58uBITE/XXv/5V5eXl+r//+z9/1xkSWDADAEBwIDyeXJ1XW/fr109Hjx5VbGys9/jll1+uefPm+a24kEPnEQgphc3baEXmWXaXAaABMGx9cnXqPH733XdasmSJoqKiqhzPzMzUnj17/FJYKKLzCISOvT0HananoSp18xMGCEX8zz65OoVH0zTlOUEQ2r17txITE+tdVKgyIur0cgMIMGsvGKfFCZ1k8fsgELK4uszJ1WnY+qKLLtJLL73k/dgwDBUVFenxxx/X6NGj/VVb6PnFfpgAgosrOlbfXHa3FiV0EhefABCu6nxt6xEjRqhbt24qKyvTddddp6ysLKWlpWnKlCn+rjFkGL8Y5gcQPApbtNXXA6/RITcjCECoo+dYszp9F2zdurVWr16tDz74QGvWrFFRUZFuu+02XX/99VUW0KAqg84jEJT2nDFYszucpzLmNwJhgRHrmtX5V+iIiAjdcMMN/qwl9BEegaCz+sJrtTSuvSyucwuEDbJjzXwOj59//rnPdzpmzJg6FRPq6DwCwcMVG69vR9yqLJNFgEC4ITzWzOfwOHbsWJ/OMwzjhCuxwZxHIFgUtMzU12ePV67baXcpAGzAsHXNfA6PpsmYTb3ReQQC3u7e52p25jkqZ34jELbqfO3mMMGywUbEsDUQuCxJq4dfr+9j2zG/EQhz0Qw61KjO4XrevHm65JJL1LFjR3Xs2FGXXHKJ5s6d68/aQg/hEQhIFbHxmjv2Xi2Nbcf+jQAUQ2utRnUKj6+99ppGjhypxMRE3XfffbrvvvuUlJSk0aNH69VXX/V3jSGDOY9A4Mlv3UGfjLpbW80Eu0sBECBinExbqYlhWVatf9Fu3bq1Hn74Yd19991Vjr/66qv6y1/+wvWtT8K9Y4eK333X7jIAHJPTZ6jmtB2oCpMfFAB+clqKocvb0348mTp1HvPy8jRy5Mhqxy+66CLl5+fXu6iQxbA1EBAsSatG3KgvWw8iOAKoJoY5jzWqU3gcM2aMPvnkk2rHP/vsM11yySX1LipUMWwN2K88PlGzL79fy6Lb2F0KgAAVy7B1jXzuyb788svef3fr1k1PP/20FixYoIEDB0qSvv/+ey1evFh/+MMf/F9liGC1NWCvvDadNKv/lTrK/o0AasCCmZr5POexffv2vt2hYWj79u31KipUmUVFKnz+ebvLAMJSdr9hmtd6AMPUAE5pVBuneqWx2+PJ+Jytd+zY0ZB1hAWGrYHGZxmGVo64SSuiWkns3wjAB3Qea1bvl+d449LgWj6nZERFSRERktttdylAWChPSNb84bdohyfO7lIABBEWzNSszj3Zd999Vz179lRsbKxiY2N1xhln6L333vNnbSHJSGAvOaAxHG13mqZf9FuCI4Bai42gIVaTOnUeX3jhBT366KO6++67NXjwYEnSokWLdMcddyg3N1e/+93v/FpkKHEkJsqTl2d3GUBI2zFguOa17CcX16cGUAd0HmtWp03C27dvryeeeEI33XRTlePvvPOOJk6cyPzIGhR//LHcGzbYXQYQkkzDof+OvFkrI1vYXQqAIPaHXhGKdPDL58nUqfO4b98+DRo0qNrxQYMGad++ffUuKpQ5GLYGGkR5YormXXiLdnpi7S4FQBCLMERwPIU6zXns1KmTPvroo2rHP/zwQ3Xu3LneRYUyIzHR7hKAkHOkfVdNG34HwRFAvbHS+tTq9BI98cQTGj9+vBYuXOid87h48WLNmzfvhKESP3EQHgG/2n7WCH2T0VcuNjEA4AfxhMdTqtNLdOWVV2r58uV64YUX9Omnn0qSunbtquXLl+vMM8/0Z30hh/AI+IdpOLRi1AStisiovFg1APhBk2iGrE+l1uHR5XLp9ttv16OPPqr333+/IWoKaQxbA/VXltxU84ZNUI47xu5SAISYlCjC46nUes5jZGSkpk2b1hC1hAVHcrLdJQBB7XDHHpo27DcERwANIoXO4ynVacHM2LFjvcPVqB0jKkpGHJsWA3WxdeAoTe8xRgVurjkLoGGkRNtdQeCr05zHzp0768knn9TixYvVt29fxcfHV7n93nvv9UtxocqRkiJPSYndZQBBw3Q6tWzkLfrRmc78RgANimHrU6vzJuEnvUPD0Pbt2+tVVKhjo3DAd6UpaZp7wc3a7aYdAKBhOSQ90DtCDoMAWZM6dR5/fgWZ49nT4IX2GfMeAd/kduqpWT0vViHD1AAaQVKUCI4+qPN35Lfeeks9evRQTEyMYmJi1KNHD02aNMmftYUsR0qK3SUAAS9r8CWa3v1SFXoIjgAaB4tlfFOnzuNjjz2mF154Qffcc48GDhwoSVq6dKl+97vfKScnR08++aRfiww1hEfg5DzOCH0/6latcaQxvxFAo2KPR9/Uac5js2bN9PLLL+vaa6+tcnzKlCm65557lJub67cCQ5Hn4EEVvf663WUAAae0abrmDL1Je9xRdpcCIAyd39Khs5o77S4j4NWp8+hyudSvX79qx/v27Su3m2uEnYqjSRPJMKTa53YgZB3q0luzuo9SkZvf/AHYI5nOo0/qNJnoxhtv1Osn6Jy9+eabuv766+tdVKgzIiPlSE21uwwgYGw+d4w+6TpaRR6+cQOwTxO26fFJnS///dZbb2n27Nk6++yzJUnLli1TTk6ObrrpJv3+97/3nvfCCy/Uv8oQ5MzIkMnwPsKcJyJSS0fdqrVGKvMbAdiODcJ9U6fwuG7dOvXp00eStG3bNklSWlqa0tLStG7dOu95bN9zco7mzaWfvVZAuClJzdDsITdoH/MbAQSA2Agp2klu8UWdwuP8+fP9XUfYcTZvbncJgG0Ont5Hs7qOUDHzGwEECIasfVfnYWvUjzMjw+4SAFtsPO9yLWzSVabH7koA4CfN4wiPviI82sSRmCgjLk4W17hGmPBERmnxqNu0Xk2Y3wgg4GQQHn1GeLSRo3lzeX52qUcgVBU3a6HZ596g/e5Iu0sBgBPKiCU8+orwaCNnRgbhESFvf7f++vq0C1XC/EYAAcppSGmxdlcRPAiPNmLRDELdhqFX6ruk05jfCCCgpccacrJDjM8IjzZi0QxClTsqWotH3qYNSrG7FAA4JeY71g7h0UaOtDTJ6ZQ8tGUQOorSW2n2OdfrgJtvLwCCA+GxdvjubiPD6ZQjLU3mgQN2lwL4xb7uA/R1l2EqZX4jgCDCYpnaITzazJmRQXhESFh3/tValNhZFo10AEGExTK1R3i0mbN5c7nsLgKoB1dUjBaNuk2brGS7SwGAWmOxTO0RHm3GohkEs8KMNvp60LU6xPxGAEGK+Y61x3d8mznYrgdBam/Pgfq641CVMb8RQBBjvmPtER5t5oiLk6NJE5lHj9pdCuCzNcPGa0l8R1mm3ZUAQP1wTevaIzwGAGdmJuERQcEVE6eFI2/TFjPR7lIAoN6chtSMxTK15rC7AEgR7dvbXQJwSoUt2unT0XcTHAGEjGYslqkTOo8BgPCIQLen1zma3f5c5jcCCCltE/ieVheExwDgSEio3Cw8N9fuUoBqVl94rZbGtWd+I4CQk5lIeKwLwmOAiGjfXhWERwQQV2y8vh1xm7LMBLtLAQC/cxpSGzqPdcKcxwDB0DUCSUGrDvpk1N0ER4SN/IN79OGfbtaT52fo0YFJemncmdq9YeUJz/3k6bv0SJ8oLfr3yzXe5/cfv6F/jOujieemauK5qXrt5nO1efGsKufMeP5BPTm0uZ4d1UE/fPWfKretnTNV79w3tl7PCyfXMt5QpIPwWBd0HgOEMzNTMgzJsuwuBWFu15lDNKfdIJUzvxFhorTgqP7vlqHq2G+IbnnlC8U3SVNuzlbFJqZUO3f9N59q19plSmrW8pT3m5zeSiPufVppbTvJsiyt+uI9vfe7K3XPlOVq3rG7Nn47Q6tnfaBbX/tKuTlZmvbEb9Rl4EWKb5KmssJ8ff3qY/rV67NO+TioG4as647OY4BwxMayYThsZUn6Yfj1mtFmsMpNvqkifHw7+W9Kad5aVz0xSW169FfTVu3VZeBwpbbpWOW8/IN79Plzv9P4p9+RIyLylPfbdcglOv2cUUpr21nN2nXRiLufUlRcgnLWLpckHdyxSR36nqfW3fqq98hrFBOfpCN7syVJM//xiM6+6naltGjr9+eLSoTHuiM8BhCGrmGXirhEzRl7n76PbWd3KUCj2/jtDLXq1lf/fuga/e+wVnr52v5aPv2tKueYpqmP/nyLzrvp92resXutH8P0eLT66w9VUVqstmecJUlq0eUM7d6wSqUFR7Vnwyq5ykuV1qajsn9YrD2bftCga+/2y/NDddFOqQWbg9cZw9YBJKJ9e1UsXWp3GQgz+W06alb/q3TE7bS7FMAWR/bs0LKpb+ic6+/T+bf+UbvXr9QXf/udnJGR6nvpTZKkhZP/JkdERK0D3f6stXp9wnlyV5QpKjZBNzz/sZp36CZJ6jLoIp05+lr984ZBioyJ0dVPvKXI2Hh9+szdunriW/r+4ze09MNXFZ+Spsv//FqdQitOrG2CIQf7O9YZ4TGARLRrJzkcksmeKGgcOX2Hak6bgapgfiPCmGWaatWtr0bc87+SpJann6n929Zr2dR/qe+lN2nPhlVaPOWfuuc/y2TUMnCkZZ6me6asUHlRgdbOm6apj92mX0+a6w2QF97xmC684zHv+XPfeEqdBgyTIyJC8996Rvd9tEqbFn6ljx69Vff8Z5n/nnSYY8i6fhi2DiBGVJScrVrZXQbCgGUYWjniRn3ZapAqmN+IMJeY1kLpHbpWOZbe/nTl798lSdrxwyIVHzmov47uqD/1j9Wf+scqb99OffXiQ/rrxZ1rvO+IyCilte2kVt36aOQ9Tyujyxla8p9/nvDcgzs26cevpmj4nRO1feVCte9zjhKaNNMZF12lvZt+UHlxoX+eMJSZSPypDzqPASYiM1OeXbvsLgMhrDw+UQsuuk3bPXF2lwIEhHa9Byo3e0uVY7k7s7yLVc68+Hp1OuuCKre/fdclOvPi69R3zM21eizLNOV2lVc/bln69Om7dPHvn1N0XIIsj0cet0uSvH+bpqdWj4UTS4yUUmP4pbk+iN4BhkUzaEhH23bRJyPuJDgCPzP4+vuUs26Z5r/1rHJzturHmVO0fPoknT3uDklSfEqqMjr1qPLHERGphNQMNcs8zXs/k24foSUfvOb9eNYrf9KOld/p6N5s7c9ae+zjb9V71LXValjxyf9TfJM0dR1yiSSpXe9B2rZigXLWLNOi9/+h9A5dT7h1EGqvHUPW9UbnMcA427SRIiIkt9vuUhBisvsP07xWA5jfCPxCm+79dMPfP9bX//yzvvnX02rSMlOXPPC8zhx9Xa3u5/Du7SrJ++lKYcVHDumjx25VYe4+xSQkK6NzT93y6pfqfPaFVT6v8PABzX/rWf128rc/1dSjv8694X5Nvu8yJTRppquf/H/1e5LwYsi6/gzLYlfqQFP07rvy7NhhdxkIEZZh6L8jbtJ/o5hPCwB394hQQiS/RNcHnccAFNmlC+ERflGekKxvht+qbE+s3aUAgO2axYjg6Af0bgNQZLdudpeAEHC03WmaftFvCY4AcEznFGKPP9B5DECOpCQ527Rh1TXqbMeA4ZrXsp9czG8EAK/TCY9+QXgMUJHduxMeUWum4dB/R96slZEtJPaaBwCv1BgpPZZfqP2BCB6gGLpGbZUnNdGsy++vDI4AgCroOvoPnccA5UhMlLNtW3lycuwuBUHgcIdu+rr3GOW7+eYIACdCePQfwmMAi+zWjfCIU9p29kh907wPW4MCwEmkxkjNGLL2G2J4AIvs1k0yeLPjxEynU9+Pvk2z0/vIzW6tAHBSdB39i85jAHMkJlauuqb7iF8oS07V3GE3a5c7xu5SACDgER79i/AY4Bi6xi8d7thDs3pdogLmNwLAKaUxZO13/PQJcAxd4+e2Dhqt6T3GEBwBwEen0XX0OzqPAY6ha0iV8xuXjbxFPzrTJeY3AoDPGLL2P8JjEIjs3p3wGMZKmzTT3PNv0m53tN2lAEBQYci6YRDHg0Bk164MXYep3M69NHXorwiOAFAHDFk3DDqPQcC7YfjOnXaXgka0ZfAlWpB2hjweuysBgODUlfDYIAiPQSKyWzfCY5jwOCP0/ahbtcaRxvxGAKijZjFSGkPWDYJIHiQiu3eXnE67y0ADK2mari8vu78yOAIA6qx3GhGnofDKBglHfHzl3EeErIOn9dbUIbdpjzvK7lIAIKhFOqQeTYk4DYVXNohE9e9vdwloIJvPvUyfnj5axR6GWACgvro2MRTt5PtpQ2HOYxCJaNtWjvR0mQcP2l0K/MQTGaUlI2/VOqMp8xsBwE/OZMi6QfHqBpmofv3sLgF+UpyaoS8uvbcyOAIA/CIj1lCLOOJNQ+LVDTJRvXpJUcyJC3YHuvbVtPNu0T7mNwKAX9F1bHi8wkHGiIpS1Bln2F0G6mHjeZfr0y4jmN8IAH4W7ayc74iGRXgMQiycCU7uqGgtHPNbLUjpKpP5jQDgd92bOBTFQpkGx4KZIORMT5ezXTs2DQ8iRc1aava51+uAO9LuUgAgZDFk3TgIj0Eqql8/lRIeg8L+bv319WkXqsTNb8MA0FBaxxtqxhVlGgXhMUhFdu2qsoQEWUVFdpeCGqw//yotSuwik+tTA0CD4ooyjYdXOkgZTqeizjzT7jJwEu6oGC247C4tTOwi0+5iACDExTql01PoOjYWwmMQi+rbVzL4zxJoitJb67NL7tVGK9nuUgAgLPRMdSjCwc/DxkJ4DGKO5GRFdOlidxn4mb09ztbUwTfqoJsZIQDQWHqnEmcaE692kGPbnsCx9oJx+rzDBSpl/0YAaDSdkgw1jeH7bmOiPRLkIjp0kKNpU5lHjthdSthyRcfqu5G3abOVZHcpABB2BmbQB2tsvOJBzjAMRZ19tt1lhK3CjDb67OJ7CI4AYIPW8YZaxRNlGhuveAiI6tNHRhLhpbHtPWOQpp59gw4xvxEAbDGwOTHGDrzqIcBwOhU9eLDdZYSVNcOu0eeZQ1VmMs8GAOzQLEbqmEyMsQOveoiI6tNHRmKi3WWEPFdMnOaNvUeL4zuIy1MDgH3Obu60u4SwRXgMEUZEhKLPOcfuMkJaQctMfTr6Hm0xCekAYKfkKKlrE0Z+7EJ4DCF0HxvO7t7nauqAa5Xr5jddALDbwOZOObhIhm0IjyGE7qP/WZJ+HH6dZrQ9V+XMbwQA2yVFSj1T+X5sJ8JjiKH76D8VsfGaO/ZeLY3NZH4jAASIs5s75KTraCvCY4gxIiJYee0HBa066NNRd2urmWB3KQCAYxIjpV5citB2fAVCUFTfvnQf62FXnyH6uP94HWZ+IwAElLObO+R00HW0G+ExBNF9rBtL0qqLbtCM1oNVwfxGAAgoCTZ0Hffv36977rlHHTp0UHR0tNq0aaNLL71U8+bNa9Q6fDF58mSlpKQ0ymNxaYwQFdW3r8oXLZJVVGR3KUGhIi5R80fcqu2eeLtLAQCcwNnpDkU0YtcxOztbgwcPVkpKiv72t7+pZ8+ecrlc+vrrr3XXXXdp06ZNtb7PiooKRUVFVTvucrkUGRnpj7IbBZ3HEEX30Xd5bTpp+sg7CY4AEKCSo6TeaY0bWe68804ZhqHly5fryiuvVJcuXdS9e3f9/ve/1/fffy9JysnJ0WWXXaaEhAQlJSVp3LhxOnDggPc+Jk6cqN69e2vSpElq3769YmJiJEmGYej111/XmDFjFB8fr6efflqS9Nlnn6lPnz6KiYlRhw4d9MQTT8jtdnvvLy8vT7fffruaN2+umJgY9ejRQzNmzNCCBQt0yy23KD8/X4ZhyDAMTZw4scFeGzqPISyqXz+VL15M97EGO/tdoLmtz1KFm2FqAAhUQ1s6G7XreOTIEc2aNUtPP/204uOrNxZSUlJkmqY3OH777bdyu9266667NH78eC1YsMB77tatWzVt2jRNnz5dTudPc+knTpyoZ599Vi+99JIiIiL03Xff6aabbtLLL7+sc889V9u2bdNvfvMbSdLjjz8u0zQ1atQoFRYW6v3331fHjh21YcMGOZ1ODRo0SC+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": [
|
||
"<Figure size 800x800 with 1 Axes>"
|
||
]
|
||
},
|
||
"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
|
||
}
|