{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Basic Python Flow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "from pathlib import Path\n",
    "\n",
    "# current notebook is inside ./data/python_example1/\n",
    "NOTEBOOK_DIR = Path().resolve()\n",
    "PROJECT_ROOT = NOTEBOOK_DIR.parent.parent     # go up two levels to project root\n",
    "\n",
    "sys.path.append(str(PROJECT_ROOT / \"src\"))\n",
    "\n",
    "from instantgrade import Evaluator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "✅ Student notebook generated at: submissions/student_notebook.ipynb\n"
     ]
    }
   ],
   "source": [
    "from instantgrade.utils.io_utils import generate_student_notebook\n",
    "\n",
    "generate_student_notebook(\n",
    "    instructor_path=\"./control_flow_assessment.ipynb\",\n",
    "    output_path=\"./submissions/student_notebook.ipynb\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[37m12:30:55 | INFO     | Starting evaluation pipeline...\u001b[0m\n",
      "\u001b[37m12:30:55 | INFO     | Loading instructor solution...\u001b[0m\n",
      "\u001b[37m12:30:55 | INFO     | Loaded 20 questions.\u001b[0m\n",
      "\u001b[37m12:30:55 | INFO     | Discovered 49 submissions to grade.\u001b[0m\n",
      "\u001b[37m12:30:55 | INFO     | Starting Docker-based evaluation pipeline...\u001b[0m\n",
      "\u001b[37m12:30:55 | INFO     | [1/49] Grading: 2423350_Nitin.Sahsani (2).ipynb\u001b[0m\n",
      "\u001b[37m12:30:55 | INFO     | [Docker] Starting grading for 2423350_Nitin.Sahsani (2).ipynb\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Final resolved student identity -> name='Nitin Sahsani', roll='2423350'\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2423350_Nitin.Sahsani (2).ipynb][docker] [grader] results.json written with 49 rows.\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [2/49] Grading: ArunMG(2423360).ipynb\u001b[0m\n",
      "\u001b[37m12:30:56 | INFO     | [Docker] Starting grading for ArunMG(2423360).ipynb\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'drop_duplicates_by_cols', 'fill_missing_college', 'fill_missing_with_mean', 'filter_profit_range', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Final resolved student identity -> name='Arun Murari Gottipati', roll='2423360'\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [ArunMG(2423360).ipynb][docker] [grader] results.json written with 35 rows.\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [3/49] Grading: Harsh CIA.ipynb\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [Docker] Starting grading for Harsh CIA.ipynb\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [Harsh CIA.ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [Harsh CIA.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [Harsh CIA.ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [Harsh CIA.ipynb][docker] [grader] Final resolved student identity -> name='Harsh Mittal', roll='2423373'\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:30:57 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] Count of NaN values in each column:\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] a    1\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] b    2\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] c    0\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] dtype: int64\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] DataFrame after dropping NaN rows and resetting index:\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker]      x     y\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] 0  1.0  10.0\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Harsh CIA.ipynb][docker] [grader] results.json written with 52 rows.\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [4/49] Grading: MAYUR 2423358 (1).ipynb\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Docker] Starting grading for MAYUR 2423358 (1).ipynb\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Final resolved student identity -> name='Mayur garg', roll='2423358'\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] <class 'pandas.core.frame.DataFrame'>\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] RangeIndex: 2 entries, 0 to 1\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] Data columns (total 3 columns):\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker]  #   Column  Non-Null Count  Dtype\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] ---  ------  --------------  -----\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker]  0   x       2 non-null      int64\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker]  1   y       2 non-null      int64\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker]  2   z       2 non-null      int64\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] dtypes: int64(3)\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] memory usage: 180.0 bytes\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [MAYUR 2423358 (1).ipynb][docker] [grader] results.json written with 45 rows.\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [5/49] Grading: Nishant_Kumar(2423349).ipynb\u001b[0m\n",
      "\u001b[37m12:30:58 | INFO     | [Docker] Starting grading for Nishant_Kumar(2423349).ipynb\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Final resolved student identity -> name='NISHANT KUMAR', roll='2423349'\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Nishant_Kumar(2423349).ipynb][docker] [grader] results.json written with 43 rows.\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [6/49] Grading: Sarthak_Chaudhary_2423346.ipynb\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Docker] Starting grading for Sarthak_Chaudhary_2423346.ipynb\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Final resolved student identity -> name='Sarthak Chaudhary', roll='2423346'\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Sarthak_Chaudhary_2423346.ipynb][docker] [grader] results.json written with 48 rows.\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [7/49] Grading: SohamUdaySahasrabudhe2423363.ipynb\u001b[0m\n",
      "\u001b[37m12:30:59 | INFO     | [Docker] Starting grading for SohamUdaySahasrabudhe2423363.ipynb\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'convert_to_datetime', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Final resolved student identity -> name='Soham Uday Sahasrabudhe', roll='2423363'\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [SohamUdaySahasrabudhe2423363.ipynb][docker] [grader] results.json written with 42 rows.\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [8/49] Grading: Untitled.ipynb\u001b[0m\n",
      "\u001b[37m12:31:00 | INFO     | [Docker] Starting grading for Untitled.ipynb\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Untitled.ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Untitled.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Untitled.ipynb][docker] [grader] Namespace after execution: []\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Untitled.ipynb][docker] [grader] Missing name/roll in namespace, scanning code cells...\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Untitled.ipynb][docker] [grader] Final resolved student identity -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Untitled.ipynb][docker] [grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [9/49] Grading: Urvi Kamble.ipynb\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Docker] Starting grading for Urvi Kamble.ipynb\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Final resolved student identity -> name='Urvi Kamble', roll='2423383'\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Urvi Kamble.ipynb][docker] [grader] results.json written with 51 rows.\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [10/49] Grading: Vaishnavi Kavishetti 2423381 (1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:01 | INFO     | [Docker] Starting grading for Vaishnavi Kavishetti 2423381 (1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'convert_to_datetime', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Final resolved student identity -> name='Vaishnavi Santosh Kavishetti', roll='2423381'\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Vaishnavi Kavishetti 2423381 (1).ipynb][docker] [grader] results.json written with 48 rows.\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [11/49] Grading: VanshRohida2423372 (1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [Docker] Starting grading for VanshRohida2423372 (1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Final resolved student identity -> name='Vansh Rohida', roll='2423372'\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:02 | INFO     | [VanshRohida2423372 (1).ipynb][docker] [grader] results.json written with 50 rows.\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [12/49] Grading: rohan_64.ipynb\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [Docker] Starting grading for rohan_64.ipynb\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Namespace after execution: ['StringIO', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Final resolved student identity -> name='RohanGM', roll='2423364'\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [rohan_64.ipynb][docker] [grader] results.json written with 51 rows.\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [13/49] Grading: student_notebook (1) (1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:03 | INFO     | [Docker] Starting grading for student_notebook (1) (1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Final resolved student identity -> name='Kanishka_Singh', roll='2423376'\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1) (1).ipynb][docker] [grader] results.json written with 42 rows.\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [14/49] Grading: student_notebook (1)(1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [Docker] Starting grading for student_notebook (1)(1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Final resolved student identity -> name='Johann Karl', roll='2423382'\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [student_notebook (1)(1).ipynb][docker] [grader] results.json written with 46 rows.\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [15/49] Grading: student_notebook (1)(10).ipynb\u001b[0m\n",
      "\u001b[37m12:31:04 | INFO     | [Docker] Starting grading for student_notebook (1)(10).ipynb\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'count_missing_values', 'drop_duplicates_by_cols', 'filter_by_threshold', 'get_dataframe_info', 'groupby_team_agg', 'load_csv_string', 'name', 'np', 'pd', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Final resolved student identity -> name='vikram sinha', roll='2423359'\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(10).ipynb][docker] [grader] results.json written with 28 rows.\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [16/49] Grading: student_notebook (1)(11).ipynb\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [Docker] Starting grading for student_notebook (1)(11).ipynb\u001b[0m\n",
      "\u001b[37m12:31:05 | INFO     | [student_notebook (1)(11).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(11).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(11).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(11).ipynb][docker] [grader] Final resolved student identity -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(11).ipynb][docker] [grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [17/49] Grading: student_notebook (1)(2).ipynb\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [Docker] Starting grading for student_notebook (1)(2).ipynb\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Final resolved student identity -> name='Kushagra Gulati', roll='2423347'\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [student_notebook (1)(2).ipynb][docker] [grader] results.json written with 49 rows.\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [18/49] Grading: student_notebook (1)(3).ipynb\u001b[0m\n",
      "\u001b[37m12:31:06 | INFO     | [Docker] Starting grading for student_notebook (1)(3).ipynb\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Final resolved student identity -> name='Udit Baid', roll='2423384'\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(3).ipynb][docker] [grader] results.json written with 45 rows.\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [19/49] Grading: student_notebook (1)(4).ipynb\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [Docker] Starting grading for student_notebook (1)(4).ipynb\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Final resolved student identity -> name='Aakarsh Jawa', roll='2423380'\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:07 | INFO     | [student_notebook (1)(4).ipynb][docker] [grader] results.json written with 49 rows.\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [20/49] Grading: student_notebook (1)(5).ipynb\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [Docker] Starting grading for student_notebook (1)(5).ipynb\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Final resolved student identity -> name='ANIRUDDHAN R M', roll='2423353'\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [student_notebook (1)(5).ipynb][docker] [grader] results.json written with 38 rows.\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [21/49] Grading: student_notebook (1)(6).ipynb\u001b[0m\n",
      "\u001b[37m12:31:08 | INFO     | [Docker] Starting grading for student_notebook (1)(6).ipynb\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_profit_range', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'pop', 'roll_number', 'sample_df', 'samplee_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Final resolved student identity -> name='aahaan chatterjee', roll='2423354'\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(6).ipynb][docker] [grader] results.json written with 43 rows.\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [22/49] Grading: student_notebook (1)(7).ipynb\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [Docker] Starting grading for student_notebook (1)(7).ipynb\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'advanced_filter_and_create', 'clean_age_data', 'count_missing_values', 'describe_numeric', 'fill_missing_with_mean', 'get_summary_stats', 'group_by_mean', 'name', 'np', 'pd', 'roll_number', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Final resolved student identity -> name='Siva Samvit Vemuri', roll='2423348'\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [student_notebook (1)(7).ipynb][docker] [grader] results.json written with 25 rows.\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [23/49] Grading: student_notebook (1)(8).ipynb\u001b[0m\n",
      "\u001b[37m12:31:09 | INFO     | [Docker] Starting grading for student_notebook (1)(8).ipynb\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'csv_data', 'describe_numeric', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Final resolved student identity -> name='Narane Karthic', roll='2423379'\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [student_notebook (1)(8).ipynb][docker] [grader] results.json written with 51 rows.\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [24/49] Grading: student_notebook (1)(9).ipynb\u001b[0m\n",
      "\u001b[37m12:31:10 | INFO     | [Docker] Starting grading for student_notebook (1)(9).ipynb\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Final resolved student identity -> name='S.Vaigunda Ram Singh', roll='2423345'\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1)(9).ipynb][docker] [grader] results.json written with 55 rows.\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [25/49] Grading: student_notebook (1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [Docker] Starting grading for student_notebook (1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Final resolved student identity -> name='devansh grover', roll='2423366'\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] a    1\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] b    2\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] c    0\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] dtype: int64\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [student_notebook (1).ipynb][docker] [grader] results.json written with 44 rows.\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [26/49] Grading: student_notebook (1)2423377.ipynb\u001b[0m\n",
      "\u001b[37m12:31:11 | INFO     | [Docker] Starting grading for student_notebook (1)2423377.ipynb\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Final resolved student identity -> name='Farhan Aziz', roll='2423377'\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (1)2423377.ipynb][docker] [grader] results.json written with 34 rows.\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [27/49] Grading: student_notebook (2)(1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [Docker] Starting grading for student_notebook (2)(1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (2)(1).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (2)(1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (2)(1).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (2)(1).ipynb][docker] [grader] Final resolved student identity -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:12 | INFO     | [student_notebook (2)(1).ipynb][docker] [grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [28/49] Grading: student_notebook (2).ipynb\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [Docker] Starting grading for student_notebook (2).ipynb\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Final resolved student identity -> name='Deshpande Rugved Shirish', roll='2423370'\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [student_notebook (2).ipynb][docker] [grader] results.json written with 47 rows.\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [29/49] Grading: student_notebook (3)(1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:13 | INFO     | [Docker] Starting grading for student_notebook (3)(1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Final resolved student identity -> name='Tejas Pandey', roll='2423352'\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(1).ipynb][docker] [grader] results.json written with 51 rows.\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [30/49] Grading: student_notebook (3)(2).ipynb\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [Docker] Starting grading for student_notebook (3)(2).ipynb\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker]      A    B     C\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 0  1.0  5.0   9.0\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 1  2.0  NaN  10.0\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 2  NaN  7.0  11.0\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 3  4.0  8.0   NaN\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ## ✅ Cleaned DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker]      A    B    C\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 0  1.0  5.0  9.0\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker]      A    B     C      D\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 0  1.0  5.0   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 1  2.0  NaN  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 2  NaN  7.0  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 3  4.0  8.0   NaN  delta\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ## 📊 Column Means Calculated:\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] A     2.333333\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] B     6.666667\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] C    10.000000\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] dtype: float64\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ## ✅ Imputed DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker]           A         B     C      D\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 0  1.000000  5.000000   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 1  2.000000  6.666667  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 2  2.333333  7.000000  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 3  4.000000  8.000000  10.0  delta\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ## Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker]       Name  Score1  Score2\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 0    Alice      55      70\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 1      Bob      30      65\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 2  Charlie      60      45\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 3    David      45      55\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 4      Eve      35      80\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 5    Frank      80      90\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ## Result DataFrame (Filtered & Calculated)\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker]     Name  AverageScore\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 0  Alice          62.5\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 3  David          50.0\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 5  Frank          85.0\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ### 📊 Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker]       Name    Age  Score\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 0    Alice   30.0     85\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 1      Bob    NaN     90\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 2  Charlie  150.0     78\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 3    David   45.0     92\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 4      Eve   22.0     88\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 5    Frank    NaN     75\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 6    Grace  105.0     80\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] Original Median Age (used for imputation): 45.0\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ### ✨ Cleaned DataFrame\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker]     Name   Age  Score\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 0  Alice  30.0     85\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 1    Bob  45.0     90\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 3  David  45.0     92\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 4    Eve  22.0     88\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 5  Frank  45.0     75\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_column', 'clean_age_data', 'convert_to_datetime', 'data', 'describe_numeric', 'df', 'df_cleaned', 'df_imputed', 'df_original', 'df_result', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'numeric_cols_means', 'pd', 'process_scores', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Final resolved student identity -> name='shaurya', roll='2423374'\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] <student_cell_30>:2: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker]              Age       Salary\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] count   4.000000      4.00000\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] mean   29.500000  54250.00000\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] std     4.203173   4349.32945\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] min    25.000000  50000.00000\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 25%    27.250000  51500.00000\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 50%    29.000000  53500.00000\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] 75%    31.250000  56250.00000\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] max    35.000000  60000.00000\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [student_notebook (3)(2).ipynb][docker] [grader] results.json written with 53 rows.\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [31/49] Grading: student_notebook (3)(3).ipynb\u001b[0m\n",
      "\u001b[37m12:31:14 | INFO     | [Docker] Starting grading for student_notebook (3)(3).ipynb\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker]      A    B     C\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 0  1.0  5.0   9.0\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 1  2.0  NaN  10.0\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 2  NaN  7.0  11.0\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 3  4.0  8.0   NaN\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ## ✅ Cleaned DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker]      A    B    C\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 0  1.0  5.0  9.0\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker]      A    B     C      D\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 0  1.0  5.0   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 1  2.0  NaN  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 2  NaN  7.0  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 3  4.0  8.0   NaN  delta\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ## 📊 Column Means Calculated:\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] A     2.333333\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] B     6.666667\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] C    10.000000\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] dtype: float64\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ## ✅ Imputed DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker]           A         B     C      D\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 0  1.000000  5.000000   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 1  2.000000  6.666667  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 2  2.333333  7.000000  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 3  4.000000  8.000000  10.0  delta\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ## Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker]       Name  Score1  Score2\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 0    Alice      55      70\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 1      Bob      30      65\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 2  Charlie      60      45\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 3    David      45      55\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 4      Eve      35      80\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 5    Frank      80      90\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ## Result DataFrame (Filtered & Calculated)\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker]     Name  AverageScore\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 0  Alice          62.5\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 3  David          50.0\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 5  Frank          85.0\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ### 📊 Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker]       Name    Age  Score\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 0    Alice   30.0     85\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 1      Bob    NaN     90\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 2  Charlie  150.0     78\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 3    David   45.0     92\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 4      Eve   22.0     88\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 5    Frank    NaN     75\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 6    Grace  105.0     80\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] Original Median Age (used for imputation): 45.0\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ### ✨ Cleaned DataFrame\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker]     Name   Age  Score\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 0  Alice  30.0     85\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 1    Bob  45.0     90\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 3  David  45.0     92\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 4    Eve  22.0     88\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 5  Frank  45.0     75\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_column', 'clean_age_data', 'convert_to_datetime', 'data', 'describe_numeric', 'df', 'df_cleaned', 'df_imputed', 'df_original', 'df_result', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'numeric_cols_means', 'pd', 'process_scores', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Final resolved student identity -> name='shaurya', roll='2423374'\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] <student_cell_30>:2: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker]              Age       Salary\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] count   4.000000      4.00000\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] mean   29.500000  54250.00000\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] std     4.203173   4349.32945\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] min    25.000000  50000.00000\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 25%    27.250000  51500.00000\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 50%    29.000000  53500.00000\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] 75%    31.250000  56250.00000\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] max    35.000000  60000.00000\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [student_notebook (3)(3).ipynb][docker] [grader] results.json written with 53 rows.\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [32/49] Grading: student_notebook (3)(4).ipynb\u001b[0m\n",
      "\u001b[37m12:31:15 | INFO     | [Docker] Starting grading for student_notebook (3)(4).ipynb\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker]      A    B     C\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 0  1.0  5.0   9.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 1  2.0  NaN  10.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 2  NaN  7.0  11.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 3  4.0  8.0   NaN\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ## ✅ Cleaned DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker]      A    B    C\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 0  1.0  5.0  9.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker]      A    B     C      D\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 0  1.0  5.0   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 1  2.0  NaN  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 2  NaN  7.0  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 3  4.0  8.0   NaN  delta\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ## 📊 Column Means Calculated:\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] A     2.333333\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] B     6.666667\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] C    10.000000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] dtype: float64\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ## ✅ Imputed DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker]           A         B     C      D\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 0  1.000000  5.000000   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 1  2.000000  6.666667  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 2  2.333333  7.000000  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 3  4.000000  8.000000  10.0  delta\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ## Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker]       Name  Score1  Score2\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 0    Alice      55      70\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 1      Bob      30      65\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 2  Charlie      60      45\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 3    David      45      55\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 4      Eve      35      80\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 5    Frank      80      90\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ## Result DataFrame (Filtered & Calculated)\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker]     Name  AverageScore\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 0  Alice          62.5\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 3  David          50.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 5  Frank          85.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ### 📊 Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker]       Name    Age  Score\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 0    Alice   30.0     85\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 1      Bob    NaN     90\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 2  Charlie  150.0     78\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 3    David   45.0     92\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 4      Eve   22.0     88\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 5    Frank    NaN     75\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 6    Grace  105.0     80\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] Original Median Age (used for imputation): 45.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ### ✨ Cleaned DataFrame\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker]     Name   Age  Score\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 0  Alice  30.0     85\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 1    Bob  45.0     90\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 3  David  45.0     92\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 4    Eve  22.0     88\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 5  Frank  45.0     75\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_column', 'clean_age_data', 'convert_to_datetime', 'data', 'describe_numeric', 'df', 'df_cleaned', 'df_imputed', 'df_original', 'df_result', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'numeric_cols_means', 'pd', 'process_scores', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Final resolved student identity -> name='shaurya', roll='2423374'\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] <student_cell_30>:2: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker]              Age       Salary\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] count   4.000000      4.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] mean   29.500000  54250.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] std     4.203173   4349.32945\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] min    25.000000  50000.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 25%    27.250000  51500.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 50%    29.000000  53500.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] 75%    31.250000  56250.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] max    35.000000  60000.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(4).ipynb][docker] [grader] results.json written with 53 rows.\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [33/49] Grading: student_notebook (3)(5).ipynb\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [Docker] Starting grading for student_notebook (3)(5).ipynb\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker]      A    B     C\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 0  1.0  5.0   9.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 1  2.0  NaN  10.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 2  NaN  7.0  11.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 3  4.0  8.0   NaN\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ## ✅ Cleaned DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker]      A    B    C\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 0  1.0  5.0  9.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker]      A    B     C      D\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 0  1.0  5.0   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 1  2.0  NaN  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 2  NaN  7.0  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 3  4.0  8.0   NaN  delta\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ## 📊 Column Means Calculated:\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] A     2.333333\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] B     6.666667\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] C    10.000000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] dtype: float64\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ## ✅ Imputed DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker]           A         B     C      D\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 0  1.000000  5.000000   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 1  2.000000  6.666667  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 2  2.333333  7.000000  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 3  4.000000  8.000000  10.0  delta\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ## Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker]       Name  Score1  Score2\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 0    Alice      55      70\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 1      Bob      30      65\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 2  Charlie      60      45\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 3    David      45      55\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 4      Eve      35      80\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 5    Frank      80      90\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ## Result DataFrame (Filtered & Calculated)\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker]     Name  AverageScore\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 0  Alice          62.5\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 3  David          50.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 5  Frank          85.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ### 📊 Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker]       Name    Age  Score\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 0    Alice   30.0     85\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 1      Bob    NaN     90\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 2  Charlie  150.0     78\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 3    David   45.0     92\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 4      Eve   22.0     88\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 5    Frank    NaN     75\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 6    Grace  105.0     80\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] Original Median Age (used for imputation): 45.0\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ### ✨ Cleaned DataFrame\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker]     Name   Age  Score\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 0  Alice  30.0     85\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 1    Bob  45.0     90\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 3  David  45.0     92\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 4    Eve  22.0     88\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 5  Frank  45.0     75\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_column', 'clean_age_data', 'convert_to_datetime', 'data', 'describe_numeric', 'df', 'df_cleaned', 'df_imputed', 'df_original', 'df_result', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'numeric_cols_means', 'pd', 'process_scores', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Final resolved student identity -> name='shaurya', roll='2423374'\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] <student_cell_30>:2: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker]              Age       Salary\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] count   4.000000      4.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] mean   29.500000  54250.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] std     4.203173   4349.32945\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] min    25.000000  50000.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 25%    27.250000  51500.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 50%    29.000000  53500.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] 75%    31.250000  56250.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] max    35.000000  60000.00000\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [student_notebook (3)(5).ipynb][docker] [grader] results.json written with 53 rows.\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [34/49] Grading: student_notebook (3).ipynb\u001b[0m\n",
      "\u001b[37m12:31:16 | INFO     | [Docker] Starting grading for student_notebook (3).ipynb\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Final resolved student identity -> name='Deshpande Rugved Shirish', roll='2423370'\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [student_notebook (3).ipynb][docker] [grader] results.json written with 47 rows.\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [35/49] Grading: student_notebook (4)(1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:17 | INFO     | [Docker] Starting grading for student_notebook (4)(1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker]      A    B     C\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 0  1.0  5.0   9.0\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 1  2.0  NaN  10.0\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 2  NaN  7.0  11.0\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 3  4.0  8.0   NaN\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ## ✅ Cleaned DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker]      A    B    C\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 0  1.0  5.0  9.0\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker]      A    B     C      D\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 0  1.0  5.0   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 1  2.0  NaN  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 2  NaN  7.0  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 3  4.0  8.0   NaN  delta\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ## 📊 Column Means Calculated:\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] A     2.333333\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] B     6.666667\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] C    10.000000\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] dtype: float64\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ## ✅ Imputed DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker]           A         B     C      D\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 0  1.000000  5.000000   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 1  2.000000  6.666667  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 2  2.333333  7.000000  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 3  4.000000  8.000000  10.0  delta\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ## Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker]       Name  Score1  Score2\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 0    Alice      55      70\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 1      Bob      30      65\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 2  Charlie      60      45\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 3    David      45      55\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 4      Eve      35      80\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 5    Frank      80      90\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ## Result DataFrame (Filtered & Calculated)\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker]     Name  AverageScore\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 0  Alice          62.5\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 3  David          50.0\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 5  Frank          85.0\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ### 📊 Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker]       Name    Age  Score\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 0    Alice   30.0     85\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 1      Bob    NaN     90\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 2  Charlie  150.0     78\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 3    David   45.0     92\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 4      Eve   22.0     88\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 5    Frank    NaN     75\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 6    Grace  105.0     80\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] Original Median Age (used for imputation): 45.0\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ### ✨ Cleaned DataFrame\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker]     Name   Age  Score\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 0  Alice  30.0     85\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 1    Bob  45.0     90\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 3  David  45.0     92\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 4    Eve  22.0     88\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 5  Frank  45.0     75\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_column', 'clean_age_data', 'convert_to_datetime', 'data', 'describe_numeric', 'df', 'df_cleaned', 'df_imputed', 'df_original', 'df_result', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'numeric_cols_means', 'pd', 'process_scores', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Final resolved student identity -> name='shaurya', roll='2423374'\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] <student_cell_30>:2: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker]              Age       Salary\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] count   4.000000      4.00000\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] mean   29.500000  54250.00000\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] std     4.203173   4349.32945\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] min    25.000000  50000.00000\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 25%    27.250000  51500.00000\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 50%    29.000000  53500.00000\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] 75%    31.250000  56250.00000\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] max    35.000000  60000.00000\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(1).ipynb][docker] [grader] results.json written with 53 rows.\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [36/49] Grading: student_notebook (4)(2).ipynb\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [Docker] Starting grading for student_notebook (4)(2).ipynb\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Final resolved student identity -> name='Divit vats', roll='2423355'\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [student_notebook (4)(2).ipynb][docker] [grader] results.json written with 46 rows.\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [37/49] Grading: student_notebook (4).ipynb\u001b[0m\n",
      "\u001b[37m12:31:18 | INFO     | [Docker] Starting grading for student_notebook (4).ipynb\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker]      A    B     C\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 0  1.0  5.0   9.0\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 1  2.0  NaN  10.0\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 2  NaN  7.0  11.0\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 3  4.0  8.0   NaN\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ## ✅ Cleaned DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker]      A    B    C\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 0  1.0  5.0  9.0\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker]      A    B     C      D\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 0  1.0  5.0   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 1  2.0  NaN  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 2  NaN  7.0  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 3  4.0  8.0   NaN  delta\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ## 📊 Column Means Calculated:\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] A     2.333333\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] B     6.666667\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] C    10.000000\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] dtype: float64\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ## ✅ Imputed DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker]           A         B     C      D\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 0  1.000000  5.000000   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 1  2.000000  6.666667  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 2  2.333333  7.000000  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 3  4.000000  8.000000  10.0  delta\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ## Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker]       Name  Score1  Score2\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 0    Alice      55      70\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 1      Bob      30      65\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 2  Charlie      60      45\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 3    David      45      55\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 4      Eve      35      80\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 5    Frank      80      90\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ## Result DataFrame (Filtered & Calculated)\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker]     Name  AverageScore\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 0  Alice          62.5\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 3  David          50.0\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 5  Frank          85.0\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ### 📊 Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker]       Name    Age  Score\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 0    Alice   30.0     85\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 1      Bob    NaN     90\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 2  Charlie  150.0     78\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 3    David   45.0     92\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 4      Eve   22.0     88\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 5    Frank    NaN     75\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 6    Grace  105.0     80\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] Original Median Age (used for imputation): 45.0\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ### ✨ Cleaned DataFrame\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker]     Name   Age  Score\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 0  Alice  30.0     85\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 1    Bob  45.0     90\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 3  David  45.0     92\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 4    Eve  22.0     88\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 5  Frank  45.0     75\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_column', 'clean_age_data', 'convert_to_datetime', 'data', 'describe_numeric', 'df', 'df_cleaned', 'df_imputed', 'df_original', 'df_result', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'numeric_cols_means', 'pd', 'process_scores', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Final resolved student identity -> name='shaurya', roll='2423374'\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] <student_cell_30>:2: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker]              Age       Salary\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] count   4.000000      4.00000\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] mean   29.500000  54250.00000\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] std     4.203173   4349.32945\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] min    25.000000  50000.00000\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 25%    27.250000  51500.00000\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 50%    29.000000  53500.00000\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] 75%    31.250000  56250.00000\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] max    35.000000  60000.00000\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [student_notebook (4).ipynb][docker] [grader] results.json written with 53 rows.\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [38/49] Grading: student_notebook Nimrat Singh (3).ipynb\u001b[0m\n",
      "\u001b[37m12:31:19 | INFO     | [Docker] Starting grading for student_notebook Nimrat Singh (3).ipynb\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Final resolved student identity -> name='Nimrat Singh', roll='2423361'\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook Nimrat Singh (3).ipynb][docker] [grader] results.json written with 48 rows.\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [39/49] Grading: student_notebook(1)(1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [Docker] Starting grading for student_notebook(1)(1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'drop_duplicates_by_cols', 'fill_missing_college', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Final resolved student identity -> name='Aradhya Mishra', roll='2423371'\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [student_notebook(1)(1).ipynb][docker] [grader] results.json written with 42 rows.\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [40/49] Grading: student_notebook(1)(2).ipynb\u001b[0m\n",
      "\u001b[37m12:31:20 | INFO     | [Docker] Starting grading for student_notebook(1)(2).ipynb\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Final resolved student identity -> name='Ashmith B Shetty', roll='2423378'\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker]            col1       col2\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] count  5.000000   5.000000\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] mean   3.000000  12.300000\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] std    1.581139   1.739253\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] min    1.000000  10.100000\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] 25%    2.000000  11.200000\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] 50%    3.000000  12.300000\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] 75%    4.000000  13.400000\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] max    5.000000  14.500000\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [student_notebook(1)(2).ipynb][docker] [grader] results.json written with 54 rows.\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [41/49] Grading: student_notebook(1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:21 | INFO     | [Docker] Starting grading for student_notebook(1).ipynb\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker]      A    B     C\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 0  1.0  5.0   9.0\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 1  2.0  NaN  10.0\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 2  NaN  7.0  11.0\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 3  4.0  8.0   NaN\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ## ✅ Cleaned DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker]      A    B    C\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 0  1.0  5.0  9.0\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker]      A    B     C      D\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 0  1.0  5.0   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 1  2.0  NaN  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 2  NaN  7.0  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 3  4.0  8.0   NaN  delta\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ## 📊 Column Means Calculated:\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] A     2.333333\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] B     6.666667\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] C    10.000000\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] dtype: float64\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ## ✅ Imputed DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker]           A         B     C      D\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 0  1.000000  5.000000   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 1  2.000000  6.666667  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 2  2.333333  7.000000  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 3  4.000000  8.000000  10.0  delta\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ## Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker]       Name  Score1  Score2\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 0    Alice      55      70\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 1      Bob      30      65\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 2  Charlie      60      45\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 3    David      45      55\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 4      Eve      35      80\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 5    Frank      80      90\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ## Result DataFrame (Filtered & Calculated)\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker]     Name  AverageScore\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 0  Alice          62.5\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 3  David          50.0\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 5  Frank          85.0\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ### 📊 Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker]       Name    Age  Score\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 0    Alice   30.0     85\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 1      Bob    NaN     90\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 2  Charlie  150.0     78\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 3    David   45.0     92\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 4      Eve   22.0     88\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 5    Frank    NaN     75\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 6    Grace  105.0     80\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] Original Median Age (used for imputation): 45.0\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ### ✨ Cleaned DataFrame\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker]     Name   Age  Score\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 0  Alice  30.0     85\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 1    Bob  45.0     90\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 3  David  45.0     92\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 4    Eve  22.0     88\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 5  Frank  45.0     75\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_column', 'clean_age_data', 'convert_to_datetime', 'data', 'describe_numeric', 'df', 'df_cleaned', 'df_imputed', 'df_original', 'df_result', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'numeric_cols_means', 'pd', 'process_scores', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Final resolved student identity -> name='devansh', roll='2423366'\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] <student_cell_30>:2: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker]              Age       Salary\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] count   4.000000      4.00000\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] mean   29.500000  54250.00000\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] std     4.203173   4349.32945\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] min    25.000000  50000.00000\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 25%    27.250000  51500.00000\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 50%    29.000000  53500.00000\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] 75%    31.250000  56250.00000\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] max    35.000000  60000.00000\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(1).ipynb][docker] [grader] results.json written with 53 rows.\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [42/49] Grading: student_notebook(2).ipynb\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [Docker] Starting grading for student_notebook(2).ipynb\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Final resolved student identity -> name='Tejas Pandey', roll='2423352'\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [student_notebook(2).ipynb][docker] [grader] results.json written with 51 rows.\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [43/49] Grading: student_notebook(3).ipynb\u001b[0m\n",
      "\u001b[37m12:31:22 | INFO     | [Docker] Starting grading for student_notebook(3).ipynb\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Final resolved student identity -> name='Ashmith B Shetty', roll='2423378'\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker]            col1       col2\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] count  5.000000   5.000000\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] mean   3.000000  12.300000\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] std    1.581139   1.739253\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] min    1.000000  10.100000\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] 25%    2.000000  11.200000\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] 50%    3.000000  12.300000\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] 75%    4.000000  13.400000\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] max    5.000000  14.500000\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [student_notebook(3).ipynb][docker] [grader] results.json written with 54 rows.\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [44/49] Grading: student_notebook(4).ipynb\u001b[0m\n",
      "\u001b[37m12:31:23 | INFO     | [Docker] Starting grading for student_notebook(4).ipynb\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Final resolved student identity -> name='Kapil Rawat', roll='2423356'\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(4).ipynb][docker] [grader] results.json written with 56 rows.\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [45/49] Grading: student_notebook(5).ipynb\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [Docker] Starting grading for student_notebook(5).ipynb\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Final resolved student identity -> name='Sai_Shobhith', roll='2423351'\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [student_notebook(5).ipynb][docker] [grader] results.json written with 41 rows.\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [46/49] Grading: student_notebook(6).ipynb\u001b[0m\n",
      "\u001b[37m12:31:24 | INFO     | [Docker] Starting grading for student_notebook(6).ipynb\u001b[0m\n",
      "\u001b[37m12:31:25 | INFO     | [student_notebook(6).ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:25 | INFO     | [student_notebook(6).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:25 | INFO     | [student_notebook(6).ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:25 | INFO     | [student_notebook(6).ipynb][docker] [grader] Final resolved student identity -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:25 | INFO     | [student_notebook(6).ipynb][docker] [grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\u001b[0m\n",
      "\u001b[37m12:31:25 | INFO     | [47/49] Grading: student_notebook.ipynb\u001b[0m\n",
      "\u001b[37m12:31:25 | INFO     | [Docker] Starting grading for student_notebook.ipynb\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker]      A    B     C\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 0  1.0  5.0   9.0\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 1  2.0  NaN  10.0\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 2  NaN  7.0  11.0\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 3  4.0  8.0   NaN\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ## ✅ Cleaned DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker]      A    B    C\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 0  1.0  5.0  9.0\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ## 📝 Original DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker]      A    B     C      D\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 0  1.0  5.0   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 1  2.0  NaN  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 2  NaN  7.0  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 3  4.0  8.0   NaN  delta\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ## 📊 Column Means Calculated:\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] A     2.333333\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] B     6.666667\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] C    10.000000\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] dtype: float64\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ## ✅ Imputed DataFrame:\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker]           A         B     C      D\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 0  1.000000  5.000000   9.0  alpha\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 1  2.000000  6.666667  10.0   beta\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 2  2.333333  7.000000  11.0  gamma\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 3  4.000000  8.000000  10.0  delta\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ## Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker]       Name  Score1  Score2\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 0    Alice      55      70\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 1      Bob      30      65\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 2  Charlie      60      45\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 3    David      45      55\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 4      Eve      35      80\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 5    Frank      80      90\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ------------------------------\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ## Result DataFrame (Filtered & Calculated)\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker]     Name  AverageScore\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 0  Alice          62.5\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 3  David          50.0\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 5  Frank          85.0\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ### 📊 Original DataFrame\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker]       Name    Age  Score\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 0    Alice   30.0     85\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 1      Bob    NaN     90\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 2  Charlie  150.0     78\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 3    David   45.0     92\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 4      Eve   22.0     88\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 5    Frank    NaN     75\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 6    Grace  105.0     80\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] Original Median Age (used for imputation): 45.0\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ### ✨ Cleaned DataFrame\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker]     Name   Age  Score\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 0  Alice  30.0     85\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 1    Bob  45.0     90\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 3  David  45.0     92\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 4    Eve  22.0     88\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 5  Frank  45.0     75\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] ----------------------------------------\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_column', 'clean_age_data', 'convert_to_datetime', 'data', 'describe_numeric', 'df', 'df_cleaned', 'df_imputed', 'df_original', 'df_result', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'numeric_cols_means', 'pd', 'process_scores', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Final resolved student identity -> name='devansh', roll='2423366'\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] <student_cell_30>:2: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] \u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker]              Age       Salary\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] count   4.000000      4.00000\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] mean   29.500000  54250.00000\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] std     4.203173   4349.32945\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] min    25.000000  50000.00000\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 25%    27.250000  51500.00000\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 50%    29.000000  53500.00000\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] 75%    31.250000  56250.00000\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] max    35.000000  60000.00000\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook.ipynb][docker] [grader] results.json written with 53 rows.\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [48/49] Grading: student_notebook2423343.ipynb\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [Docker] Starting grading for student_notebook2423343.ipynb\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'count_missing_values', 'describe_numeric', 'drop_duplicates_by_cols', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_summary_stats', 'group_and_calculate_mean', 'group_by_mean', 'groupby_team_agg', 'name', 'np', 'pd', 'roll_number', 'sample_df']\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Final resolved student identity -> name='Aarav Danani', roll='2423343'\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:26 | INFO     | [student_notebook2423343.ipynb][docker] [grader] results.json written with 45 rows.\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [49/49] Grading: student_notebook_solved.ipynb\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [Docker] Starting grading for student_notebook_solved.ipynb\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Starting grading...\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Namespace after execution: ['StringIO', 'add_updated_salary', 'advanced_filter_and_create', 'clean_age_data', 'convert_to_datetime', 'describe_numeric', 'drop_duplicates_by_cols', 'drop_rows_with_nan', 'fill_missing_college', 'fill_missing_with_mean', 'filter_by_threshold', 'filter_profit_range', 'get_dataframe_info', 'get_first_n_rows', 'get_summary_stats', 'group_by_mean', 'groupby_team_agg', 'load_csv_string', 'merge_dataframes', 'name', 'np', 'pd', 'roll_number', 'sample_df', 'select_column']\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Final resolved student identity -> name='Lalit Mohan Kumar', roll='2423375'\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: load_csv_string\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: get_dataframe_info\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: get_first_n_rows\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: describe_numeric\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: select_column\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: filter_by_threshold\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: count_missing_values\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: drop_rows_with_nan\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: fill_missing_with_mean\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: group_by_mean\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: merge_dataframes\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: convert_to_datetime\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: drop_duplicates_by_cols\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: fill_missing_college\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: add_updated_salary\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: filter_profit_range\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: get_summary_stats\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: groupby_team_agg\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: advanced_filter_and_create\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] Evaluating question: clean_age_data\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [student_notebook_solved.ipynb][docker] [grader] results.json written with 51 rows.\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | Execution phase completed successfully.\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | [Reporting] Processed 2124 result rows.\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | Report generation complete.\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | Total evaluation completed in 32.09s.\u001b[0m\n",
      "\u001b[37m12:31:27 | INFO     | HTML report generated at: reports/evaluation_report.html\u001b[0m\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'reports/evaluation_report.html'"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from instantgrade.evaluator import Evaluator\n",
    "\n",
    "eval = Evaluator(\n",
    "    solution_file_path=\"./pandas_practice.ipynb\",\n",
    "    submission_folder_path=\"./submissions\",\n",
    "    use_docker=True,       # or False for local test mode\n",
    "    log_path=\"./logs\",\n",
    "    log_level=\"normal\",\n",
    ")\n",
    "\n",
    "report = eval.run()\n",
    "eval.to_html(\"./reports/evaluation_report.html\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'student_path': PosixPath('submissions/sample_solutions copy.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['average_of_three', 'check_number', 'check_password', 'count_letter', 'even_numbers_1_to_n', 'even_or_odd', 'larger_number', 'name', 'numbers_1_to_n', 'roll_number', 'square_number', 'squares_1_to_n', 'sum_1_to_n']\\n[grader] Final resolved student identity -> name='student name', roll='student roll number'\\n[grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 15.05,\n",
       "   'student_meta': {'name': 'student name',\n",
       "    'roll_number': 'student roll number'}},\n",
       "  'results': [{'question': '_identity_check_',\n",
       "    'assertion': '[missing student identity]',\n",
       "    'status': 'failed',\n",
       "    'error': \"Student notebook missing personalized name/roll_number. Please define:\\n\\nname = 'Your Name'\\nroll_number = 'Your Roll Number'\\n\",\n",
       "    'score': 0,\n",
       "    'description': 'Student did not customize name/roll_number.'}]},\n",
       " {'student_path': PosixPath('submissions/sample_solutions partial.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['average_of_three', 'check_number', 'check_password', 'count_letter', 'even_numbers_1_to_n', 'even_or_odd', 'larger_number', 'name', 'numbers_1_to_n', 'roll_number', 'square_number', 'squares_1_to_n', 'sum_1_to_n']\\n[grader] Final resolved student identity -> name='partial name', roll='partial roll number'\\n[grader] Evaluating question: check_number\\n[grader] Evaluating question: numbers_1_to_n\\n[grader] Evaluating question: even_numbers_1_to_n\\n[grader] Evaluating question: square_number\\n[grader] Evaluating question: check_password\\n[grader] Evaluating question: larger_number\\n[grader] Evaluating question: even_or_odd\\n[grader] Evaluating question: sum_1_to_n\\n[grader] Evaluating question: squares_1_to_n\\n[grader] Evaluating question: count_letter\\n[grader] Evaluating question: average_of_three\\n[grader] results.json written with 24 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.62,\n",
       "   'student_meta': {'name': 'partial name',\n",
       "    'roll_number': 'partial roll number'}},\n",
       "  'results': [{'question': 'check_number',\n",
       "    'assertion': \"assert check_number(5) == 'Positive'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** A string such as `'Positive'`, `'Negative'`, or `'Zero'`\"},\n",
       "   {'question': 'check_number',\n",
       "    'assertion': \"assert check_number(-3) == 'Negative'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** A string such as `'Positive'`, `'Negative'`, or `'Zero'`\"},\n",
       "   {'question': 'check_number',\n",
       "    'assertion': \"assert check_number(0) == 'Zero'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** A string such as `'Positive'`, `'Negative'`, or `'Zero'`\"},\n",
       "   {'question': 'numbers_1_to_n',\n",
       "    'assertion': 'assert numbers_1_to_n(5) == [1, 2, 3, 4, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': 'Example if n = 5 then\\n**Return:** `[1, 2, 3, 4, 5]`'},\n",
       "   {'question': 'even_numbers_1_to_n',\n",
       "    'assertion': 'assert even_numbers_1_to_n(11) == [2, 4, 6, 8, 10]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': 'Example if n = 11 then\\n**Return:** `[2, 4, 6, 8, 10]`'},\n",
       "   {'question': 'square_number',\n",
       "    'assertion': 'assert square_number(4) == 16',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** For input `4`, return `16`'},\n",
       "   {'question': 'square_number',\n",
       "    'assertion': 'assert square_number(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** For input `4`, return `16`'},\n",
       "   {'question': 'check_password',\n",
       "    'assertion': \"assert check_password('python') == 'Access Granted'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `'java'` → `'Access Denied'`; Input `'python'` → `'Access Granted'`\"},\n",
       "   {'question': 'check_password',\n",
       "    'assertion': \"assert check_password('PYTHON') == 'Access Denied'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `'java'` → `'Access Denied'`; Input `'python'` → `'Access Granted'`\"},\n",
       "   {'question': 'check_password',\n",
       "    'assertion': \"assert check_password('java') == 'Access Denied'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `'java'` → `'Access Denied'`; Input `'python'` → `'Access Granted'`\"},\n",
       "   {'question': 'larger_number',\n",
       "    'assertion': 'assert larger_number(4, 9) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 9)` → `9`  \\n**Return:** The larger number.'},\n",
       "   {'question': 'larger_number',\n",
       "    'assertion': 'assert larger_number(10, 3) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 9)` → `9`  \\n**Return:** The larger number.'},\n",
       "   {'question': 'larger_number',\n",
       "    'assertion': 'assert larger_number(5, 5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 9)` → `9`  \\n**Return:** The larger number.'},\n",
       "   {'question': 'even_or_odd',\n",
       "    'assertion': \"assert even_or_odd(2) == 'Even'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Example:** Input `4` → `'Even'`\"},\n",
       "   {'question': 'even_or_odd',\n",
       "    'assertion': \"assert even_or_odd(3) == 'Odd'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Example:** Input `4` → `'Even'`\"},\n",
       "   {'question': 'sum_1_to_n',\n",
       "    'assertion': 'assert sum_1_to_n(5) == 15',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `5` → `15`\\nbecause 1+2'},\n",
       "   {'question': 'sum_1_to_n',\n",
       "    'assertion': 'assert sum_1_to_n(10) == 55',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `5` → `15`\\nbecause 1+2'},\n",
       "   {'question': 'squares_1_to_n',\n",
       "    'assertion': 'assert squares_1_to_n(5) == [1, 4, 9, 16, 25]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': 'if n is 5\\n**Return:** `[1, 4, 9, 16, 25]`'},\n",
       "   {'question': 'count_letter',\n",
       "    'assertion': \"assert count_letter('banana', 'a') == 3\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Example:** Input `('banana', 'a')`\\n**Return:** `3`\"},\n",
       "   {'question': 'count_letter',\n",
       "    'assertion': \"assert count_letter('apple', 'p') == 2\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Example:** Input `('banana', 'a')`\\n**Return:** `3`\"},\n",
       "   {'question': 'count_letter',\n",
       "    'assertion': \"assert count_letter('python', 'z') == 0\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Example:** Input `('banana', 'a')`\\n**Return:** `3`\"},\n",
       "   {'question': 'average_of_three',\n",
       "    'assertion': 'assert round(average_of_three(4, 8, 10), 2) == 7.33',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nTypeError: type NoneType doesn\\'t define __round__ method\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Example:** Input `(4, 8, 10)` → `7.3333...`  \\n**Return:** The arithmetic mean of the three numbers.'},\n",
       "   {'question': 'average_of_three',\n",
       "    'assertion': 'assert average_of_three(3, 3, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Example:** Input `(4, 8, 10)` → `7.3333...`  \\n**Return:** The arithmetic mean of the three numbers.'},\n",
       "   {'question': 'average_of_three',\n",
       "    'assertion': 'assert average_of_three(10, 0, 5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Example:** Input `(4, 8, 10)` → `7.3333...`  \\n**Return:** The arithmetic mean of the three numbers.'}]},\n",
       " {'student_path': PosixPath('submissions/sample_solutions.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['average_of_three', 'check_number', 'check_password', 'count_letter', 'even_numbers_1_to_n', 'even_or_odd', 'larger_number', 'name', 'numbers_1_to_n', 'roll_number', 'square_number', 'squares_1_to_n', 'sum_1_to_n']\\n[grader] Final resolved student identity -> name='student name', roll='student roll number'\\n[grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.65,\n",
       "   'student_meta': {'name': 'student name',\n",
       "    'roll_number': 'student roll number'}},\n",
       "  'results': [{'question': '_identity_check_',\n",
       "    'assertion': '[missing student identity]',\n",
       "    'status': 'failed',\n",
       "    'error': \"Student notebook missing personalized name/roll_number. Please define:\\n\\nname = 'Your Name'\\nroll_number = 'Your Roll Number'\\n\",\n",
       "    'score': 0,\n",
       "    'description': 'Student did not customize name/roll_number.'}]},\n",
       " {'student_path': PosixPath('submissions/sample_solutions_1.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['average_of_three', 'check_number', 'check_password', 'count_letter', 'even_numbers_1_to_n', 'even_or_odd', 'larger_number', 'name', 'numbers_1_to_n', 'roll_number', 'square_number', 'squares_1_to_n', 'sum_1_to_n']\\n[grader] Final resolved student identity -> name='Test 1', roll='Test 1 roll number'\\n[grader] Evaluating question: check_number\\n[grader] Evaluating question: numbers_1_to_n\\n[grader] Evaluating question: even_numbers_1_to_n\\n[grader] Evaluating question: square_number\\n[grader] Evaluating question: check_password\\n[grader] Evaluating question: larger_number\\n[grader] Evaluating question: even_or_odd\\n[grader] Evaluating question: sum_1_to_n\\n[grader] Evaluating question: squares_1_to_n\\n[grader] Evaluating question: count_letter\\n[grader] Evaluating question: average_of_three\\n[grader] results.json written with 24 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.63,\n",
       "   'student_meta': {'name': 'Test 1', 'roll_number': 'Test 1 roll number'}},\n",
       "  'results': [{'question': 'check_number',\n",
       "    'assertion': \"assert check_number(5) == 'Positive'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** A string such as `'Positive'`, `'Negative'`, or `'Zero'`\"},\n",
       "   {'question': 'check_number',\n",
       "    'assertion': \"assert check_number(-3) == 'Negative'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** A string such as `'Positive'`, `'Negative'`, or `'Zero'`\"},\n",
       "   {'question': 'check_number',\n",
       "    'assertion': \"assert check_number(0) == 'Zero'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** A string such as `'Positive'`, `'Negative'`, or `'Zero'`\"},\n",
       "   {'question': 'numbers_1_to_n',\n",
       "    'assertion': 'assert numbers_1_to_n(5) == [1, 2, 3, 4, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': 'Example if n = 5 then\\n**Return:** `[1, 2, 3, 4, 5]`'},\n",
       "   {'question': 'even_numbers_1_to_n',\n",
       "    'assertion': 'assert even_numbers_1_to_n(11) == [2, 4, 6, 8, 10]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': 'Example if n = 11 then\\n**Return:** `[2, 4, 6, 8, 10]`'},\n",
       "   {'question': 'square_number',\n",
       "    'assertion': 'assert square_number(4) == 16',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** For input `4`, return `16`'},\n",
       "   {'question': 'square_number',\n",
       "    'assertion': 'assert square_number(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** For input `4`, return `16`'},\n",
       "   {'question': 'check_password',\n",
       "    'assertion': \"assert check_password('python') == 'Access Granted'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `'java'` → `'Access Denied'`; Input `'python'` → `'Access Granted'`\"},\n",
       "   {'question': 'check_password',\n",
       "    'assertion': \"assert check_password('PYTHON') == 'Access Denied'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `'java'` → `'Access Denied'`; Input `'python'` → `'Access Granted'`\"},\n",
       "   {'question': 'check_password',\n",
       "    'assertion': \"assert check_password('java') == 'Access Denied'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `'java'` → `'Access Denied'`; Input `'python'` → `'Access Granted'`\"},\n",
       "   {'question': 'larger_number',\n",
       "    'assertion': 'assert larger_number(4, 9) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 9)` → `9`  \\n**Return:** The larger number.'},\n",
       "   {'question': 'larger_number',\n",
       "    'assertion': 'assert larger_number(10, 3) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 9)` → `9`  \\n**Return:** The larger number.'},\n",
       "   {'question': 'larger_number',\n",
       "    'assertion': 'assert larger_number(5, 5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 9)` → `9`  \\n**Return:** The larger number.'},\n",
       "   {'question': 'even_or_odd',\n",
       "    'assertion': \"assert even_or_odd(2) == 'Even'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `4` → `'Even'`\"},\n",
       "   {'question': 'even_or_odd',\n",
       "    'assertion': \"assert even_or_odd(3) == 'Odd'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `4` → `'Even'`\"},\n",
       "   {'question': 'sum_1_to_n',\n",
       "    'assertion': 'assert sum_1_to_n(5) == 15',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `5` → `15`\\nbecause 1+2'},\n",
       "   {'question': 'sum_1_to_n',\n",
       "    'assertion': 'assert sum_1_to_n(10) == 55',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `5` → `15`\\nbecause 1+2'},\n",
       "   {'question': 'squares_1_to_n',\n",
       "    'assertion': 'assert squares_1_to_n(5) == [1, 4, 9, 16, 25]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': 'if n is 5\\n**Return:** `[1, 4, 9, 16, 25]`'},\n",
       "   {'question': 'count_letter',\n",
       "    'assertion': \"assert count_letter('banana', 'a') == 3\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `('banana', 'a')`\\n**Return:** `3`\"},\n",
       "   {'question': 'count_letter',\n",
       "    'assertion': \"assert count_letter('apple', 'p') == 2\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `('banana', 'a')`\\n**Return:** `3`\"},\n",
       "   {'question': 'count_letter',\n",
       "    'assertion': \"assert count_letter('python', 'z') == 0\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `('banana', 'a')`\\n**Return:** `3`\"},\n",
       "   {'question': 'average_of_three',\n",
       "    'assertion': 'assert round(average_of_three(4, 8, 10), 2) == 7.33',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 8, 10)` → `7.3333...`  \\n**Return:** The arithmetic mean of the three numbers.'},\n",
       "   {'question': 'average_of_three',\n",
       "    'assertion': 'assert average_of_three(3, 3, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 8, 10)` → `7.3333...`  \\n**Return:** The arithmetic mean of the three numbers.'},\n",
       "   {'question': 'average_of_three',\n",
       "    'assertion': 'assert average_of_three(10, 0, 5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 8, 10)` → `7.3333...`  \\n**Return:** The arithmetic mean of the three numbers.'}]},\n",
       " {'student_path': PosixPath('submissions/sample_solutions_2.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['average_of_three', 'check_number', 'check_password', 'count_letter', 'even_numbers_1_to_n', 'even_or_odd', 'larger_number', 'name', 'numbers_1_to_n', 'roll_number', 'square_number', 'squares_1_to_n', 'sum_1_to_n']\\n[grader] Final resolved student identity -> name='Test 2', roll='Test 2 roll number'\\n[grader] Evaluating question: check_number\\n[grader] Evaluating question: numbers_1_to_n\\n[grader] Evaluating question: even_numbers_1_to_n\\n[grader] Evaluating question: square_number\\n[grader] Evaluating question: check_password\\n[grader] Evaluating question: larger_number\\n[grader] Evaluating question: even_or_odd\\n[grader] Evaluating question: sum_1_to_n\\n[grader] Evaluating question: squares_1_to_n\\n[grader] Evaluating question: count_letter\\n[grader] Evaluating question: average_of_three\\n[grader] results.json written with 24 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.6,\n",
       "   'student_meta': {'name': 'Test 2', 'roll_number': 'Test 2 roll number'}},\n",
       "  'results': [{'question': 'check_number',\n",
       "    'assertion': \"assert check_number(5) == 'Positive'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** A string such as `'Positive'`, `'Negative'`, or `'Zero'`\"},\n",
       "   {'question': 'check_number',\n",
       "    'assertion': \"assert check_number(-3) == 'Negative'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** A string such as `'Positive'`, `'Negative'`, or `'Zero'`\"},\n",
       "   {'question': 'check_number',\n",
       "    'assertion': \"assert check_number(0) == 'Zero'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** A string such as `'Positive'`, `'Negative'`, or `'Zero'`\"},\n",
       "   {'question': 'numbers_1_to_n',\n",
       "    'assertion': 'assert numbers_1_to_n(5) == [1, 2, 3, 4, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': 'Example if n = 5 then\\n**Return:** `[1, 2, 3, 4, 5]`'},\n",
       "   {'question': 'even_numbers_1_to_n',\n",
       "    'assertion': 'assert even_numbers_1_to_n(11) == [2, 4, 6, 8, 10]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': 'Example if n = 11 then\\n**Return:** `[2, 4, 6, 8, 10]`'},\n",
       "   {'question': 'square_number',\n",
       "    'assertion': 'assert square_number(4) == 16',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** For input `4`, return `16`'},\n",
       "   {'question': 'square_number',\n",
       "    'assertion': 'assert square_number(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** For input `4`, return `16`'},\n",
       "   {'question': 'check_password',\n",
       "    'assertion': \"assert check_password('python') == 'Access Granted'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `'java'` → `'Access Denied'`; Input `'python'` → `'Access Granted'`\"},\n",
       "   {'question': 'check_password',\n",
       "    'assertion': \"assert check_password('PYTHON') == 'Access Denied'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `'java'` → `'Access Denied'`; Input `'python'` → `'Access Granted'`\"},\n",
       "   {'question': 'check_password',\n",
       "    'assertion': \"assert check_password('java') == 'Access Denied'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `'java'` → `'Access Denied'`; Input `'python'` → `'Access Granted'`\"},\n",
       "   {'question': 'larger_number',\n",
       "    'assertion': 'assert larger_number(4, 9) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 9)` → `9`  \\n**Return:** The larger number.'},\n",
       "   {'question': 'larger_number',\n",
       "    'assertion': 'assert larger_number(10, 3) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 9)` → `9`  \\n**Return:** The larger number.'},\n",
       "   {'question': 'larger_number',\n",
       "    'assertion': 'assert larger_number(5, 5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 9)` → `9`  \\n**Return:** The larger number.'},\n",
       "   {'question': 'even_or_odd',\n",
       "    'assertion': \"assert even_or_odd(2) == 'Even'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `4` → `'Even'`\"},\n",
       "   {'question': 'even_or_odd',\n",
       "    'assertion': \"assert even_or_odd(3) == 'Odd'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `4` → `'Even'`\"},\n",
       "   {'question': 'sum_1_to_n',\n",
       "    'assertion': 'assert sum_1_to_n(5) == 15',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `5` → `15`\\nbecause 1+2'},\n",
       "   {'question': 'sum_1_to_n',\n",
       "    'assertion': 'assert sum_1_to_n(10) == 55',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `5` → `15`\\nbecause 1+2'},\n",
       "   {'question': 'squares_1_to_n',\n",
       "    'assertion': 'assert squares_1_to_n(5) == [1, 4, 9, 16, 25]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': 'if n is 5\\n**Return:** `[1, 4, 9, 16, 25]`'},\n",
       "   {'question': 'count_letter',\n",
       "    'assertion': \"assert count_letter('banana', 'a') == 3\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `('banana', 'a')`\\n**Return:** `3`\"},\n",
       "   {'question': 'count_letter',\n",
       "    'assertion': \"assert count_letter('apple', 'p') == 2\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `('banana', 'a')`\\n**Return:** `3`\"},\n",
       "   {'question': 'count_letter',\n",
       "    'assertion': \"assert count_letter('python', 'z') == 0\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Example:** Input `('banana', 'a')`\\n**Return:** `3`\"},\n",
       "   {'question': 'average_of_three',\n",
       "    'assertion': 'assert round(average_of_three(4, 8, 10), 2) == 7.33',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 8, 10)` → `7.3333...`  \\n**Return:** The arithmetic mean of the three numbers.'},\n",
       "   {'question': 'average_of_three',\n",
       "    'assertion': 'assert average_of_three(3, 3, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 8, 10)` → `7.3333...`  \\n**Return:** The arithmetic mean of the three numbers.'},\n",
       "   {'question': 'average_of_three',\n",
       "    'assertion': 'assert average_of_three(10, 0, 5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Example:** Input `(4, 8, 10)` → `7.3333...`  \\n**Return:** The arithmetic mean of the three numbers.'}]},\n",
       " {'student_path': PosixPath('submissions/student_notebook copy.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['average_of_three', 'check_number', 'check_password', 'count_letter', 'even_numbers_1_to_n', 'even_or_odd', 'larger_number', 'name', 'numbers_1_to_n', 'roll_number', 'square_number', 'squares_1_to_n', 'sum_1_to_n']\\n[grader] Final resolved student identity -> name='zero', roll='zero roll number'\\n[grader] Evaluating question: check_number\\n[grader] Evaluating question: numbers_1_to_n\\n[grader] Evaluating question: even_numbers_1_to_n\\n[grader] Evaluating question: square_number\\n[grader] Evaluating question: check_password\\n[grader] Evaluating question: larger_number\\n[grader] Evaluating question: even_or_odd\\n[grader] Evaluating question: sum_1_to_n\\n[grader] Evaluating question: squares_1_to_n\\n[grader] Evaluating question: count_letter\\n[grader] Evaluating question: average_of_three\\n[grader] results.json written with 24 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.6,\n",
       "   'student_meta': {'name': 'zero', 'roll_number': 'zero roll number'}},\n",
       "  'results': [{'question': 'check_number',\n",
       "    'assertion': \"assert check_number(5) == 'Positive'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** A string such as `'Positive'`, `'Negative'`, or `'Zero'`\"},\n",
       "   {'question': 'check_number',\n",
       "    'assertion': \"assert check_number(-3) == 'Negative'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** A string such as `'Positive'`, `'Negative'`, or `'Zero'`\"},\n",
       "   {'question': 'check_number',\n",
       "    'assertion': \"assert check_number(0) == 'Zero'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** A string such as `'Positive'`, `'Negative'`, or `'Zero'`\"},\n",
       "   {'question': 'numbers_1_to_n',\n",
       "    'assertion': 'assert numbers_1_to_n(5) == [1, 2, 3, 4, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': 'Example if n = 5 then\\n**Return:** `[1, 2, 3, 4, 5]`'},\n",
       "   {'question': 'even_numbers_1_to_n',\n",
       "    'assertion': 'assert even_numbers_1_to_n(11) == [2, 4, 6, 8, 10]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': 'Example if n = 11 then\\n**Return:** `[2, 4, 6, 8, 10]`'},\n",
       "   {'question': 'square_number',\n",
       "    'assertion': 'assert square_number(4) == 16',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Example:** For input `4`, return `16`'},\n",
       "   {'question': 'square_number',\n",
       "    'assertion': 'assert square_number(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Example:** For input `4`, return `16`'},\n",
       "   {'question': 'check_password',\n",
       "    'assertion': \"assert check_password('python') == 'Access Granted'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Example:** Input `'java'` → `'Access Denied'`; Input `'python'` → `'Access Granted'`\"},\n",
       "   {'question': 'check_password',\n",
       "    'assertion': \"assert check_password('PYTHON') == 'Access Denied'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Example:** Input `'java'` → `'Access Denied'`; Input `'python'` → `'Access Granted'`\"},\n",
       "   {'question': 'check_password',\n",
       "    'assertion': \"assert check_password('java') == 'Access Denied'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Example:** Input `'java'` → `'Access Denied'`; Input `'python'` → `'Access Granted'`\"},\n",
       "   {'question': 'larger_number',\n",
       "    'assertion': 'assert larger_number(4, 9) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Example:** Input `(4, 9)` → `9`  \\n**Return:** The larger number.'},\n",
       "   {'question': 'larger_number',\n",
       "    'assertion': 'assert larger_number(10, 3) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Example:** Input `(4, 9)` → `9`  \\n**Return:** The larger number.'},\n",
       "   {'question': 'larger_number',\n",
       "    'assertion': 'assert larger_number(5, 5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Example:** Input `(4, 9)` → `9`  \\n**Return:** The larger number.'},\n",
       "   {'question': 'even_or_odd',\n",
       "    'assertion': \"assert even_or_odd(2) == 'Even'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Example:** Input `4` → `'Even'`\"},\n",
       "   {'question': 'even_or_odd',\n",
       "    'assertion': \"assert even_or_odd(3) == 'Odd'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Example:** Input `4` → `'Even'`\"},\n",
       "   {'question': 'sum_1_to_n',\n",
       "    'assertion': 'assert sum_1_to_n(5) == 15',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Example:** Input `5` → `15`\\nbecause 1+2'},\n",
       "   {'question': 'sum_1_to_n',\n",
       "    'assertion': 'assert sum_1_to_n(10) == 55',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Example:** Input `5` → `15`\\nbecause 1+2'},\n",
       "   {'question': 'squares_1_to_n',\n",
       "    'assertion': 'assert squares_1_to_n(5) == [1, 4, 9, 16, 25]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': 'if n is 5\\n**Return:** `[1, 4, 9, 16, 25]`'},\n",
       "   {'question': 'count_letter',\n",
       "    'assertion': \"assert count_letter('banana', 'a') == 3\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Example:** Input `('banana', 'a')`\\n**Return:** `3`\"},\n",
       "   {'question': 'count_letter',\n",
       "    'assertion': \"assert count_letter('apple', 'p') == 2\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Example:** Input `('banana', 'a')`\\n**Return:** `3`\"},\n",
       "   {'question': 'count_letter',\n",
       "    'assertion': \"assert count_letter('python', 'z') == 0\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Example:** Input `('banana', 'a')`\\n**Return:** `3`\"},\n",
       "   {'question': 'average_of_three',\n",
       "    'assertion': 'assert round(average_of_three(4, 8, 10), 2) == 7.33',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nTypeError: type NoneType doesn\\'t define __round__ method\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Example:** Input `(4, 8, 10)` → `7.3333...`  \\n**Return:** The arithmetic mean of the three numbers.'},\n",
       "   {'question': 'average_of_three',\n",
       "    'assertion': 'assert average_of_three(3, 3, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Example:** Input `(4, 8, 10)` → `7.3333...`  \\n**Return:** The arithmetic mean of the three numbers.'},\n",
       "   {'question': 'average_of_three',\n",
       "    'assertion': 'assert average_of_three(10, 0, 5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Example:** Input `(4, 8, 10)` → `7.3333...`  \\n**Return:** The arithmetic mean of the three numbers.'}]},\n",
       " {'student_path': PosixPath('submissions/student_notebook.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['average_of_three', 'check_number', 'check_password', 'count_letter', 'even_numbers_1_to_n', 'even_or_odd', 'larger_number', 'name', 'numbers_1_to_n', 'roll_number', 'square_number', 'squares_1_to_n', 'sum_1_to_n']\\n[grader] Final resolved student identity -> name='student name', roll='student roll number'\\n[grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.64,\n",
       "   'student_meta': {'name': 'student name',\n",
       "    'roll_number': 'student roll number'}},\n",
       "  'results': [{'question': '_identity_check_',\n",
       "    'assertion': '[missing student identity]',\n",
       "    'status': 'failed',\n",
       "    'error': \"Student notebook missing personalized name/roll_number. Please define:\\n\\nname = 'Your Name'\\nroll_number = 'Your Roll Number'\\n\",\n",
       "    'score': 0,\n",
       "    'description': 'Student did not customize name/roll_number.'}]}]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "report.executed_results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "x2JVLvRAu_lX"
   },
   "source": [
    "# EOF"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "provenance": []
  },
  "kernelspec": {
   "display_name": ".venv (3.13.7)",
   "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.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
