diff --git a/assist09_analysis.ipynb b/assist09_analysis.ipynb index b6cf20a..bc954a5 100644 --- a/assist09_analysis.ipynb +++ b/assist09_analysis.ipynb @@ -1984,7 +1984,8 @@ "\n", "- 学生的答题次数分布图\n", "- 问题类型分布图\n", - "- 整体答题正确率分布图" + "- 整体答题正确率分布图\n", + "- 每一个问题关联的技能数量" ] }, { @@ -2077,6 +2078,39 @@ "plt.title('Overall Correctness Distribution')\n", "plt.show()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8d549a35", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2QAAAIjCAYAAABswtioAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYnZJREFUeJzt3Xl4Def///HXSWQjklgSESJSFLGXIrUvFXtttVRtVVqC2lpUayu1tNbW1uVDq7SWFi211dpqaqu9KEpVCWpJCCKS+f3Rb87PkUjOiaRD8nxcV64rZ+Y+M++ZMyfnvDL33GMxDMMQAAAAAOA/52R2AQAAAACQVRHIAAAAAMAkBDIAAAAAMAmBDAAAAABMQiADAAAAAJMQyAAAAADAJAQyAAAAADAJgQwAAAAATEIgAwAAAACTEMjw2Bo1apQsFst/sq7atWurdu3a1sdbtmyRxWLRsmXL/pP1d+3aVYULF/5P1pVWN27c0Msvvyx/f39ZLBb179/f7JLSpHbt2ipdurTZZdhtwYIFKlGihFxcXOTj4/PQyzt9+rQsFovef//9FNslvge2bNlinZbccWqxWDRq1KiHrisrsfc1kP7bv4P2SKx9/vz5ZpcCAI8NAhkeCfPnz5fFYrH+uLu7KyAgQGFhYZoxY4auX7+eLus5d+6cRo0apX379qXL8tLTo1ybPd59913Nnz9fvXr10oIFC9SpU6cHti1cuLAsFov69u2bZN5/HXYfZ0ePHlXXrl1VpEgRffzxx/roo49SbP/TTz+pUaNGKlCggNzd3VWoUCE1a9ZMixYt+o8qfrwlhp/En+zZsyskJERvvfWWoqOjzS4vS6hcubIsFotmz579wDYHDx5UmzZtFBQUJHd3dxUoUEDPPvusPvjgA5t2d+7c0fTp01WhQgV5eXnJx8dHpUqVUs+ePXX06FFru8TPp927d9s8P7X3U9euXW2Olwf9dO3aNf12UDqbNWtWuobro0eP6o033lD58uWVM2dO5c+fX02aNEmybxP9/fffatu2rXx8fOTl5aXnnntOf/zxR7JtP/30U5UsWVLu7u4qVqxYktc70VdffaWnnnpK7u7u8vX1Vffu3fXPP//YVX/iZ5fFYpGTk5N8fHxUpkwZ9ezZUzt27LBvJzzAu+++qxUrVjzUMtLLb7/9plGjRun06dNml5JlZDO7AOBeY8aMUXBwsOLi4hQZGaktW7aof//+mjJlir799luVLVvW2vatt97S0KFDHVr+uXPnNHr0aBUuXFjly5e3+3nr1693aD1pkVJtH3/8sRISEjK8hoexadMmVa1aVSNHjrT7OR9//LGGDRumgICADKws89qyZYsSEhI0ffp0FS1aNMW2S5cuVbt27VS+fHm99tprypUrl06dOqVt27bp448/1gsvvODQumvWrKlbt27J1dX1YTbhsTR79mx5enrqxo0bWr9+vcaNG6dNmzZp+/btj9TZKjMEBQXp1q1bcnFxSfdlHz9+XLt27VLhwoW1cOFC9erVK0mbn3/+WXXq1FGhQoXUo0cP+fv766+//tIvv/yi6dOn2/wTqHXr1lqzZo06dOigHj16KC4uTkePHtWqVav0zDPPqESJEg+sxZ730yuvvKL69etbn3Pq1CmNGDFCPXv2VI0aNazTixQpkk57KP3NmjVLefPmTbfQ+Mknn+jTTz9V69at1bt3b0VFRWnu3LmqWrWq1q5da7O/bty4oTp16igqKkpvvvmmXFxcNHXqVNWqVUv79u1Tnjx5rG3nzp2rV199Va1bt9bAgQP1448/ql+/frp586aGDBlibTd79mz17t1b9erV05QpU3T27FlNnz5du3fv1o4dO+Tu7p7qNpQvX16DBg2SJF2/fl1HjhzR0qVL9fHHH2vAgAGaMmVKmvbNu+++qzZt2qhFixZpen56+u233zR69GjVrl37ke+dk2kYwCNg3rx5hiRj165dSeZt3LjR8PDwMIKCgoybN28+1Hp27dplSDLmzZtnV/uYmJhkp2/evNmQZCxduvSh6nmY2h41wcHBRpMmTexqGxQUZJQqVcrIli2b0bdvX5t5GbFvHVGrVi2jVKlSGbqO+Ph449atWw+9nNGjRxuSjEuXLqXaNiQkxChVqpQRGxubZN6FCxesv586dcqQZLz33nsO19OlSxcjKCjIZpokY+TIkQ4vyywPes8bhmGMHDky2f3dqlUrQ5Lx888/p2m593PkNUisKSsYMWKE4efnZ3z99deGxWIxTp06laRN48aNDV9fX+Pq1atJ5t17nO/cudOQZIwbNy5Ju7t37xr//POP9XFyn0/2vp/u9Tj+jS9VqpRRq1atdFve7t27jevXr9tM++effwxfX1+jWrVqNtMnTpxoSDJ27txpnXbkyBHD2dnZ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2fr16w1Jxt69e23arV+/3nB2djacnZ2N0NBQ44033jDWrVtnfd8mSkhIsG5/vnz5jA4dOhgzZ840/vzzzyTrTu7zyd73071S67IYFBSUpOtr4n738PCwqS3xb9q977969eoZZcqUMW7fvm2znc8884xRrFixJNtTv359m657AwYMMJydnY1r165Zpz2oy2K5cuXs/nufmm3bthkWi8V4++23rdMuXbqU7DFjGIYxc+ZMQ5Jx9OhRwzAMIzw83HB2dk522b6+vkb79u2ty7RYLEb37t1t2iQe85JsuqomJ7XPucTvIStXrrROu/9Sizt37hilS5c26tatazP9QV0Wk7tUIyIiwpBkfP7559Zp9rwm9h4jdFn873GGDI8NT0/PFP87m9hFZeXKlWn+L5ebm5u6detmd/vOnTsrZ86c1sdt2rRR/vz59f3336dp/fb6/vvv5ezsbP0vVqJBgwbJMAytWbPGZnr9+vVtLhwvW7asvLy8Hjha1b3r8ff3V4cOHazTXFxc1K9fP924cUNbt2596G1566230v0sWb169WzOQFWpUkXSvxfx3/t6JU6/fz9ky5bN+t9JSXJ1ddUrr7yiixcvas+ePZL+vai/ZMmSKlGihP755x/rT2L3tc2bN9sss1atWgoJCUm19h9++EF37txR//795eT0//9E9+jRQ15eXjb/VXXESy+9pLVr16p27dr66aef9M4776hGjRoqVqyYfv755yTt79y5o+eff16rVq3S999/rwYNGqRpvffz8fHRjh07Uu2m+iDh4eE2jxMHaUh8z33zzTdKSEhQ27ZtbV4Xf39/FStWLMnr4uh7XpKKFy8uX19fBQcH65VXXlHRokW1evVqZc+ePcXlOvp+atGihQoUKGB9XLlyZVWpUiXFvy+Obr+np6fat29vs20+Pj4qWbKk9f0hPfi94ohXX33V5nGNGjXsWt7du3e1ePFim65mdevWlZ+fX5KzZM8++6wiIiLUvHlz7d+/X5MmTVJYWJgKFChg0y3LYrFo3bp1Gjt2rHLlyqUvv/xS4eHhCgoKUrt27ZKcSbyfo+8ne4WEhCg0NNT6OHG/161bV4UKFUoyPXH/XblyRZs2bVLbtm11/fp16+t++fJlhYWF6fjx4/r7779t1tWzZ0+brns1atRQfHy8/vzzz1Tr9PHx0eHDh3X8+PE0b6v0bxfe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sl783alTJy1ZskSvvvqqNm/erGrVqik+Pl5Hjx7VkiVLtG7dumSHbE6Nr6+vhg0bptGjR6thw4Zq3ry5jh07plmzZunpp5/Wiy++mKZteu655xQcHKxmzZqpSJEiiomJ0Q8//KDvvvtOTz/9tPUaivu1aNFC8+bNU+fOneXl5WUTVB11/fp1FSxYUG3atFG5cuXk6empH374Qbt27bL5729KTp06pebNm6thw4aKiIjQF198oRdeeEHlypWT9O9xNHbsWA0bNkynT59WixYtlDNnTp06dUrLly9Xz549NXjw4DRvw8Nw9P1UtGhRVa9eXb169VJsbKymTZumPHny2Ax+cL9HefvTYuHChcqTJ4+eeeaZZOc3b95cH3/8sVavXq1WrVqpb9++unnzplq2bKkSJUrozp07+vnnn7V48WIVLlzYOtDK/v379cILL6hRo0aqUaOGcufOrb///lufffaZzp07p2nTpqXYzTKt76eMNHPmTFWvXl1lypRRjx499MQTT+jChQuKiIjQ2bNntX//foeXWbFiRc2ePVtjx45V0aJF5efnp7p16yokJES1a9dWxYoVlTt3bu3evVvLli1L9dq7adOmadasWQoNDVX27Nlt7i0qSS1btrSGgd69e+vjjz9WkyZNNHjwYLm4uGjKlCnKly+fBg0aZH2Oh4eH3nnnHYWHh+v5559XWFiYfvzxR33xxRcaN26ccufObW07YcIEHTp0SFWqVFG2bNm0YsUKrV+/XmPHjrW531lK/v77b2vdN27c0G+//aalS5cqMjJSgwYNshkQqkmTJpoyZYoaNmyoF154QRcvXtTMmTNVtGjRJNfcVaxYUT/88IOmTJmigIAABQcHq0qVKmratKkWLFggb29vhYSEKCIiQj/88EOSe+XZ85rYe4yUL19ezs7OmjhxoqKiouTm5mYdSAcZ5L8d1BFIXuIwvIk/rq6uhr+/v/Hss88a06dPtxmqPNH9wz1v3LjReO6554yAgADD1dXVCAgIMDp06GD8/vvvNs9buXKlERISYmTLls1mCOJatWoZpUqVSra+Bw17/+WXXxrDhg0z/Pz8DA8PD6NJkybJDps8efJko0CBAoabm5tRrVo1Y/fu3UmWmVJtyQ0nfv36dWPAgAFGQECA4eLiYhQrVsx47733bIYxNox/hx1PbpjxBw3Hf78LFy4Y3bp1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BQUFKU+ePMm2ad26tfbu3avPPvtMv//+u7799lvVrl1bly9ftns9vr6+yp49e5rr/K/Fx8crISHhgfN/+OEHnT9/XuvWrdONGzfUqFGjB565iouLy6AqASBrIZABQCZQv359+fv7a/z48Q9sM2rUqCTd96ZNm6bChQtbH3ft2lUtWrTQu+++q3z58snHx0djxozR3bt39frrryt37twqWLCg5s2bl2T5R48e1TPPPCN3d3eVLl1aW7dutZl/6NAhNWrUSJ6ensqXL586deqkf/75xzq/du3a6tOnj/r376+8efMqLCws2e1ISEjQmDFjVLBgQbm5ual8+fJau3atdb7FYtGePXs0ZswYWSwWjRo1Kskyrl27ph9//FETJ05UnTp1FBQUpMqVK2vYsGFq3rz5A/fhyJEjlT9/fh04cEBS0i6LKbl69ao6duwoX19feXh4qFixYsnux/v3R58+feTt7a28efPq7bfflmEY1jaxsbEaPHiwChQooBw5cqhKlSrasmWLdf78+fPl4+Ojb7/9ViEhIXJzc9OZM2ceuM48efLI399flSpV0vvvv68LFy5ox44d1jNoixcvVq1ateTu7q6FCxem+lokSu3YuN9PP/2kGjVqyMPDQ4GBgerXr59iYmKs8wsXLqyxY8eqc+fO8vT0VFBQkL799ltdunRJzz33nDw9PVW2bFnt3r07xfUAwKOAQAYAmYCzs7PeffddffDBBzp79uxDLWvTpk06d+6ctm3bpilTpmjkyJFq2rSpcuXKpR07dujVV1/VK6+8kmQ9r7/+ugYNGqS9e/cqNDRUzZo1s55tunbtmurWrasKFSpo9+7dWrt2rS5cuKC2bdvaLOOzzz6Tq6urtm/frjlz5iRb3/Tp0zV58mS9//77OnDggMLCwtS8eXMdP35cknT+/HmVKlVKgwYN0vnz5zV48OAky/D09JSnp6dWrFih2NjYVPeJYRjq27evPv/8c/34448qW7asXfvyXm+//bZ+++03rVmzRkeOHNHs2bOVN2/eFJ/z2WefKVu2bNq5c6emT5+uKVOm6JNPPrHO79OnjyIiIvTVV1/pwIEDev7559WwYUPrvpCkmzdvauLEifrkk090+PBh+fn52VWvh4eHJNszlUOHDtVrr72mI0eOKCwsLNXXIlFKx8b9Tp48qYYNG6p169Y6cOCAFi9erJ9+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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 每一个问题关联的技能数量\n", + "skill_counts = data[['problem_id', 'skill_name']].drop_duplicates().groupby('problem_id').size()\n", + "# 统计每个问题对应技能数量的分布\n", + "skill_count_distribution = skill_counts.value_counts().sort_index()\n", + "# 绘制直方图\n", + "plt.figure(figsize=(10, 6))\n", + "plt.bar(skill_count_distribution.index, skill_count_distribution.values, color='skyblue')\n", + "plt.xlabel('Number of Skills per Problem')\n", + "plt.ylabel('Number of Problems')\n", + "plt.title('Distribution of Number of Skills per Problem')\n", + "plt.xticks(skill_count_distribution.index)\n", + "plt.grid(axis='y')\n", + "plt.show()" + ] } ], "metadata": {