272 lines
44 KiB
Plaintext
272 lines
44 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "aca45071-42cb-49b5-9e91-a9a2942ab1ed",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Requirement already satisfied: pandas in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (2.2.3)\n",
|
|
"Requirement already satisfied: matplotlib in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (3.10.1)\n",
|
|
"Requirement already satisfied: seaborn in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (0.13.2)\n",
|
|
"Requirement already satisfied: numpy>=1.26.0 in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (from pandas) (2.2.4)\n",
|
|
"Requirement already satisfied: python-dateutil>=2.8.2 in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (from pandas) (2.9.0.post0)\n",
|
|
"Requirement already satisfied: pytz>=2020.1 in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (from pandas) (2025.2)\n",
|
|
"Requirement already satisfied: tzdata>=2022.7 in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (from pandas) (2025.2)\n",
|
|
"Requirement already satisfied: contourpy>=1.0.1 in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (from matplotlib) (1.3.1)\n",
|
|
"Requirement already satisfied: cycler>=0.10 in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (from matplotlib) (0.12.1)\n",
|
|
"Requirement already satisfied: fonttools>=4.22.0 in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (from matplotlib) (4.57.0)\n",
|
|
"Requirement already satisfied: kiwisolver>=1.3.1 in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (from matplotlib) (1.4.8)\n",
|
|
"Requirement already satisfied: packaging>=20.0 in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (from matplotlib) (24.2)\n",
|
|
"Requirement already satisfied: pillow>=8 in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (from matplotlib) (11.1.0)\n",
|
|
"Requirement already satisfied: pyparsing>=2.3.1 in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (from matplotlib) (3.2.3)\n",
|
|
"Requirement already satisfied: six>=1.5 in /opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/lib/python3.13/site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\n",
|
|
"\n",
|
|
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m25.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.1.1\u001b[0m\n",
|
|
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49m/opt/homebrew/Cellar/jupyterlab/4.3.6/libexec/bin/python -m pip install --upgrade pip\u001b[0m\n",
|
|
"Note: you may need to restart the kernel to use updated packages.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"pip install pandas matplotlib seaborn\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"id": "14ad9809-9030-4858-ae0e-ababf7e2bd6c",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 600x400 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import seaborn as sns\n",
|
|
"from matplotlib.backends.backend_pdf import PdfPages\n",
|
|
"\n",
|
|
"# Load CSV\n",
|
|
"df = pd.read_csv(\"Kursevaluation_12052025.csv\")\n",
|
|
"\n",
|
|
"# Set style\n",
|
|
"sns.set(style=\"whitegrid\")\n",
|
|
"\n",
|
|
"# Calculate absolute number\n",
|
|
"def absolute_value(val):\n",
|
|
" total = sum(course_source_counts)\n",
|
|
" absolute = int(round(val / 100 * total))\n",
|
|
" return f'{absolute}' \n",
|
|
"\n",
|
|
"with PdfPages('evaluation.pdf') as pdf:\n",
|
|
"\n",
|
|
" # 1. Semester Distribution (Line Plot)\n",
|
|
" semester_counts = df['Semester'].value_counts().sort_index()\n",
|
|
" plt.figure(figsize=(8, 4))\n",
|
|
" sns.lineplot(x=semester_counts.index, y=semester_counts.values, marker=\"o\")\n",
|
|
" plt.title(\"Semester Distribution\")\n",
|
|
" plt.xlabel(\"Semester\")\n",
|
|
" plt.ylabel(\"Number of Students\")\n",
|
|
" plt.tight_layout()\n",
|
|
" pdf.savefig()\n",
|
|
" plt.close()\n",
|
|
" \n",
|
|
" # 2. Gender Distribution (Bar Chart)\n",
|
|
" gender_counts = df['Geschlecht'].value_counts()\n",
|
|
" plt.figure(figsize=(6, 4))\n",
|
|
" ax = sns.barplot(x=gender_counts.index, y=gender_counts.values, palette=\"pastel\", hue=gender_counts.index, legend=False)\n",
|
|
" # Add numbers above the bars\n",
|
|
" for i, v in enumerate(gender_counts.values):\n",
|
|
" ax.text(i, v + 0.2, str(v), color='black', ha='center', fontweight='bold')\n",
|
|
" plt.title(\"Gender Distribution\")\n",
|
|
" plt.xlabel(\"Gender\")\n",
|
|
" plt.ylabel(\"Number of Students\")\n",
|
|
" plt.tight_layout()\n",
|
|
" pdf.savefig()\n",
|
|
" \n",
|
|
" # 3. Faculty Distribution (Bar Chart)\n",
|
|
" # First replace values in the DataFrame\n",
|
|
" df['Fakultät'] = df['Fakultät'].replace({\n",
|
|
" 'B (Biotechnologie)': 'B',\n",
|
|
" 'N (Informationstechnik)': 'N',\n",
|
|
" 'M (Maschinenbau)': 'M',\n",
|
|
" 'I (Informatik)': 'I',\n",
|
|
" 'E (Elektrotechnik)': 'E',\n",
|
|
" })\n",
|
|
" faculty_counts = df['Fakultät'].value_counts()\n",
|
|
" plt.figure(figsize=(6, 4))\n",
|
|
" ax = sns.barplot(x=faculty_counts.index, y=faculty_counts.values, palette=\"muted\", hue=faculty_counts.index, legend=False)\n",
|
|
" for i, v in enumerate(faculty_counts.values):\n",
|
|
" ax.text(i, v + 0.2, str(v), color='black', ha='center', fontweight='bold')\n",
|
|
" plt.title(\"Faculty Distribution\")\n",
|
|
" plt.xlabel(\"Faculty\")\n",
|
|
" plt.ylabel(\"Number of Students\")\n",
|
|
" plt.tight_layout()\n",
|
|
" pdf.savefig()\n",
|
|
" plt.close()\n",
|
|
" \n",
|
|
" # 4. Course Discovery (Pie Chart)\n",
|
|
" course_source_counts = df['Wie hast du von diesem Kurs erfahren?'].value_counts()\n",
|
|
" plt.figure(figsize=(6, 6))\n",
|
|
" plt.pie(course_source_counts, labels=course_source_counts.index, autopct=absolute_value, startangle=140)\n",
|
|
" plt.title(\"How Did Students Hear About the Course?\")\n",
|
|
" plt.tight_layout()\n",
|
|
" pdf.savefig()\n",
|
|
" plt.close()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"id": "5148f744-38e2-41e0-91cc-abb57b0b510a",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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bdo0M7zf3i9Jm90qV67szfIBAAA4f5j/wIEDpW3btlK7dm0pV66cZMyYUc6dO2eWH8mQIYMJTwAAAEmqBklHqX399dfSqlUruXz5sll/7dq1a9KxY0f56quvJG/evL4pKQAAgJMnisyRI4epSQIAAAhE8Q5IW7duvec+uuwIAABAkglI2v9I12OLjo52bdPn7sLDw71TOgAAAH8ISHPmzImxTYf2b9u2Tb788kszkg0AACBJBaRKlSrFur1WrVqSJk0aM4pt+vTp3igbAACAf4xiu5sKFSrIli1bvHlIAAAA/w5IumZb2rRpvXlIAAAA5zextWvXLsa227dvy6lTp+TPP/+ULl26iC8sX75cZsyYISdOnJD8+fNLr169WBgXAAA4IyC5j16zJE+eXIoUKSLdunWTFi1aiLdp5+/BgwfLG2+8ITVr1pRvvvnGLJibM2dOM5s3AABAogakuXPn3vX1W7duiTdpIJs4caKpuXrhhRfMtu7du5tRc9rfiYAEAAASvQ/SE088Ifv27Yv1td27d0u1atXEm44cOWKa7ho3buyx/eOPPzY1VgAAAIlSg6Rrr928edM81rDyww8/xBqSNm3aJFFRUV4PSNZcS506dZK9e/ea9d60FqlOnToJrpXS4/mKTpwZEhLis+MDgSwyMjLWpnx/wj0AcOb1r8e2T259XwHp999/l9mzZ5vHeuCpU6fecd8OHTqIN+mCuErXftOO2QMGDJCVK1dKjx495L///a9UrVo13sfUEOfL2b71xli8eHGfHR8IZPqhSG+S/ox7AODc6z84ONh7AenVV181fYA0edWtW1cmT54sxYoV89gnRYoUki5dOvPlTSlTpjTftfaoWbNm5rGeW2uSEhqQ9JiFCxcWX4lrOgUQU8GCBQOiBgmA867/gwcPxnnfoLimrTx58pjHa9askezZs7uCi6/lyJHDfNdRcu404Pz4448JvnnprN8AnIemKSDpCvHx9R+fDy/xGsW2Z88eCQ0NdYWjiIgImTlzphw6dEgeffRReemllyRz5sziTSVKlDCTT/72229mpm7LgQMHzHxIAAAAiTKKTfvsaP+fZ599Vr7//nuz7fr162bYvTZznT59WpYsWWJeP3/+vFcLmDp1auncubNMmTLFdBY/fvy4We/tl19+8Xp/JwAAgDjXIM2bN082bNgggwYNkkaNGplt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",
|
|
"text/plain": [
|
|
"<Figure size 600x400 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import seaborn as sns\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"plt.figure(figsize=(6, 4))\n",
|
|
"\n",
|
|
"# Plot directly from df, set hue to 'Geschlecht' to apply the palette\n",
|
|
"ax = sns.countplot(data=df, x='Geschlecht', palette='pastel', hue='Geschlecht', legend=False)\n",
|
|
"\n",
|
|
"# Add numbers above bars\n",
|
|
"for p in ax.patches:\n",
|
|
" height = p.get_height()\n",
|
|
" ax.text(p.get_x() + p.get_width() / 2., height + 0.2, int(height),\n",
|
|
" ha=\"center\", va=\"bottom\", fontweight='bold')\n",
|
|
"\n",
|
|
"plt.title(\"Gender Distribution\")\n",
|
|
"plt.xlabel(\"Gender\")\n",
|
|
"plt.ylabel(\"Number of Students\")\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "65224540-b276-4486-ac44-d0341ccb830b",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"0 B\n",
|
|
"1 N\n",
|
|
"2 N\n",
|
|
"3 M\n",
|
|
"4 B\n",
|
|
"5 I\n",
|
|
"6 M\n",
|
|
"7 B\n",
|
|
"8 B\n",
|
|
"9 B\n",
|
|
"10 M\n",
|
|
"11 B\n",
|
|
"12 B\n",
|
|
"13 I\n",
|
|
"14 E (Elektrotechnik)\n",
|
|
"15 B\n",
|
|
"16 M\n",
|
|
"17 I\n",
|
|
"18 B\n",
|
|
"19 M\n",
|
|
"Name: Fakultät, dtype: object\n",
|
|
"0 B\n",
|
|
"1 N\n",
|
|
"2 N\n",
|
|
"3 M\n",
|
|
"4 B\n",
|
|
"5 I\n",
|
|
"6 M\n",
|
|
"7 B\n",
|
|
"8 B\n",
|
|
"9 B\n",
|
|
"10 M\n",
|
|
"11 B\n",
|
|
"12 B\n",
|
|
"13 I\n",
|
|
"14 E\n",
|
|
"15 B\n",
|
|
"16 M\n",
|
|
"17 I\n",
|
|
"18 B\n",
|
|
"19 M\n",
|
|
"Name: Fakultät, dtype: object\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(df['Fakultät']) \n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"print(df['Fakultät']) "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "91f872d0-e7e9-4d56-88fe-570db4b2b4cf",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "df684c5f-b8f8-40d7-966c-9b0db7c35e5f",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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.2"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|