{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "75690d0d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: sqlalchemy in site-packages (2.0.52)\n",
      "Requirement already satisfied: greenlet>=1 in site-packages (from sqlalchemy) (3.5.5)\n",
      "Requirement already satisfied: typing-extensions>=4.6.0 in site-packages (from sqlalchemy) (4.16.0)\n",
      "Requirement already satisfied: psycopg2 in site-packages (2.9.12)\n"
     ]
    }
   ],
   "source": [
    "!pip install sqlalchemy\n",
    "from sqlalchemy import create_engine\n",
    "!pip install psycopg2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "141a4d94",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "1bbfe405",
   "metadata": {},
   "outputs": [],
   "source": [
    "HOST = \"<your-host>\"\n",
    "PORT = \"<port>\"\n",
    "USER = \"<your-user>\"\n",
    "PASSWORD = \"<your-password>\"\n",
    "DATABASE = \"university\"\n",
    "\n",
    "engine = create_engine(\n",
    "    f\"postgresql+psycopg2://{USER}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?sslmode=require\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "46a99718",
   "metadata": {},
   "outputs": [],
   "source": [
    "query=\"select*from schema_42.professor\"\n",
    "with engine.connect() as connection:\n",
    "    df=pd.read_sql(query,connection)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e2b52edf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.to_sql(\n",
    "    name=\"university\",\n",
    "    schema=\"schema_42\",\n",
    "    con=engine,\n",
    "    if_exists=\"replace\",\n",
    "    index=False\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "f78233a2",
   "metadata": {},
   "outputs": [],
   "source": [
    "professor = pd.read_csv(r\"data/professor.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "e855dea4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>professor_id</th>\n",
       "      <th>prof_first_name</th>\n",
       "      <th>prof_last_name</th>\n",
       "      <th>faculty_email</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>101</td>\n",
       "      <td>John</td>\n",
       "      <td>Smith</td>\n",
       "      <td>JSMITH@SOMETHING.EDU.SM</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>102</td>\n",
       "      <td>Jane</td>\n",
       "      <td>Doe</td>\n",
       "      <td>JANE.DOE@WRONGDOMAIN.COM</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>103</td>\n",
       "      <td>Robert</td>\n",
       "      <td>Martin</td>\n",
       "      <td>RMARTIN@SOMETHING.EDU.SM</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>104</td>\n",
       "      <td>Emily</td>\n",
       "      <td>Chen</td>\n",
       "      <td>ECHEN@WRONGDOMAIN.COM</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>105</td>\n",
       "      <td>Michael</td>\n",
       "      <td>Stone</td>\n",
       "      <td>MSTONE@SOMETHING.EDU.SM</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>106</td>\n",
       "      <td>Sarah</td>\n",
       "      <td>Connor</td>\n",
       "      <td>SCONNOR@SOMETHING.EDU.SM</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>107</td>\n",
       "      <td>David</td>\n",
       "      <td>Kim</td>\n",
       "      <td>DKIM@WRONGDOMAIN.COM</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>108</td>\n",
       "      <td>Laura</td>\n",
       "      <td>Wilson</td>\n",
       "      <td>LWILSON@SOMETHING.EDU.SM</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>109</td>\n",
       "      <td>James</td>\n",
       "      <td>Gosling</td>\n",
       "      <td>JGOSLING@SOMETHING.EDU.SM</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>110</td>\n",
       "      <td>Marcus</td>\n",
       "      <td>Aurelius</td>\n",
       "      <td>MAURELIUS@WRONGDOMAIN.COM</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   professor_id prof_first_name prof_last_name              faculty_email\n",
       "0           101            John          Smith    JSMITH@SOMETHING.EDU.SM\n",
       "1           102            Jane            Doe   JANE.DOE@WRONGDOMAIN.COM\n",
       "2           103          Robert         Martin   RMARTIN@SOMETHING.EDU.SM\n",
       "3           104           Emily           Chen      ECHEN@WRONGDOMAIN.COM\n",
       "4           105         Michael          Stone    MSTONE@SOMETHING.EDU.SM\n",
       "5           106           Sarah         Connor   SCONNOR@SOMETHING.EDU.SM\n",
       "6           107           David            Kim       DKIM@WRONGDOMAIN.COM\n",
       "7           108           Laura         Wilson   LWILSON@SOMETHING.EDU.SM\n",
       "8           109           James        Gosling  JGOSLING@SOMETHING.EDU.SM\n",
       "9           110          Marcus       Aurelius  MAURELIUS@WRONGDOMAIN.COM"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "professor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "109e3ce8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.DataFrame'>\n",
      "RangeIndex: 10 entries, 0 to 9\n",
      "Data columns (total 4 columns):\n",
      " #   Column           Non-Null Count  Dtype\n",
      "---  ------           --------------  -----\n",
      " 0   professor_id     10 non-null     int64\n",
      " 1   prof_first_name  10 non-null     str  \n",
      " 2   prof_last_name   10 non-null     str  \n",
      " 3   faculty_email    10 non-null     str  \n",
      "dtypes: int64(1), str(3)\n",
      "memory usage: 452.0 bytes\n"
     ]
    }
   ],
   "source": [
    "professor.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "03d1a152",
   "metadata": {},
   "outputs": [],
   "source": [
    "professor[\"faculty_email\"]=professor[\"faculty_email\"].str.lower()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "1bd2a220",
   "metadata": {},
   "outputs": [],
   "source": [
    "professor = professor[professor[\"faculty_email\"].str.contains(\".edu.sm\")].reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "c79243b9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>professor_id</th>\n",
       "      <th>prof_first_name</th>\n",
       "      <th>prof_last_name</th>\n",
       "      <th>faculty_email</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>101</td>\n",
       "      <td>John</td>\n",
       "      <td>Smith</td>\n",
       "      <td>jsmith@something.edu.sm</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>103</td>\n",
       "      <td>Robert</td>\n",
       "      <td>Martin</td>\n",
       "      <td>rmartin@something.edu.sm</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>105</td>\n",
       "      <td>Michael</td>\n",
       "      <td>Stone</td>\n",
       "      <td>mstone@something.edu.sm</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>106</td>\n",
       "      <td>Sarah</td>\n",
       "      <td>Connor</td>\n",
       "      <td>sconnor@something.edu.sm</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>108</td>\n",
       "      <td>Laura</td>\n",
       "      <td>Wilson</td>\n",
       "      <td>lwilson@something.edu.sm</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>109</td>\n",
       "      <td>James</td>\n",
       "      <td>Gosling</td>\n",
       "      <td>jgosling@something.edu.sm</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   professor_id prof_first_name prof_last_name              faculty_email\n",
       "0           101            John          Smith    jsmith@something.edu.sm\n",
       "1           103          Robert         Martin   rmartin@something.edu.sm\n",
       "2           105         Michael          Stone    mstone@something.edu.sm\n",
       "3           106           Sarah         Connor   sconnor@something.edu.sm\n",
       "4           108           Laura         Wilson   lwilson@something.edu.sm\n",
       "5           109           James        Gosling  jgosling@something.edu.sm"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "professor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "355e60d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "classes = pd.read_csv(r\"data/class.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "9bf870e1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class_id</th>\n",
       "      <th>class_title</th>\n",
       "      <th>professor_id</th>\n",
       "      <th>room_number</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>201</td>\n",
       "      <td>Intro to Databases</td>\n",
       "      <td>101</td>\n",
       "      <td>Room A1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>202</td>\n",
       "      <td>Data Visualization</td>\n",
       "      <td>102</td>\n",
       "      <td>Room B2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>203</td>\n",
       "      <td>Advanced PostgreSQL</td>\n",
       "      <td>103</td>\n",
       "      <td>Room A2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>204</td>\n",
       "      <td>Python for Analytics</td>\n",
       "      <td>104</td>\n",
       "      <td>Room C1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>205</td>\n",
       "      <td>Business Intelligence Tools</td>\n",
       "      <td>105</td>\n",
       "      <td>Room B1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>206</td>\n",
       "      <td>System Analysis</td>\n",
       "      <td>106</td>\n",
       "      <td>Room C2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>207</td>\n",
       "      <td>Data Warehousing</td>\n",
       "      <td>107</td>\n",
       "      <td>Room A3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>208</td>\n",
       "      <td>Machine Learning Basics</td>\n",
       "      <td>108</td>\n",
       "      <td>Room B3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>209</td>\n",
       "      <td>Algorithms</td>\n",
       "      <td>109</td>\n",
       "      <td>Room C3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>210</td>\n",
       "      <td>Statistical Modeling</td>\n",
       "      <td>110</td>\n",
       "      <td>Room A4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   class_id                  class_title  professor_id room_number\n",
       "0       201           Intro to Databases           101     Room A1\n",
       "1       202           Data Visualization           102     Room B2\n",
       "2       203          Advanced PostgreSQL           103     Room A2\n",
       "3       204         Python for Analytics           104     Room C1\n",
       "4       205  Business Intelligence Tools           105     Room B1\n",
       "5       206              System Analysis           106     Room C2\n",
       "6       207             Data Warehousing           107     Room A3\n",
       "7       208      Machine Learning Basics           108     Room B3\n",
       "8       209                   Algorithms           109     Room C3\n",
       "9       210         Statistical Modeling           110     Room A4"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "classes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "ab4bffbc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.DataFrame'>\n",
      "RangeIndex: 10 entries, 0 to 9\n",
      "Data columns (total 4 columns):\n",
      " #   Column        Non-Null Count  Dtype\n",
      "---  ------        --------------  -----\n",
      " 0   class_id      10 non-null     int64\n",
      " 1   class_title   10 non-null     str  \n",
      " 2   professor_id  10 non-null     int64\n",
      " 3   room_number   10 non-null     str  \n",
      "dtypes: int64(2), str(2)\n",
      "memory usage: 452.0 bytes\n"
     ]
    }
   ],
   "source": [
    "classes.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "3b1a2a53",
   "metadata": {},
   "outputs": [],
   "source": [
    "classes=classes[classes['professor_id'].isin(professor['professor_id'])].reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "045e666a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class_id</th>\n",
       "      <th>class_title</th>\n",
       "      <th>professor_id</th>\n",
       "      <th>room_number</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>201</td>\n",
       "      <td>Intro to Databases</td>\n",
       "      <td>101</td>\n",
       "      <td>Room A1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>203</td>\n",
       "      <td>Advanced PostgreSQL</td>\n",
       "      <td>103</td>\n",
       "      <td>Room A2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>205</td>\n",
       "      <td>Business Intelligence Tools</td>\n",
       "      <td>105</td>\n",
       "      <td>Room B1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>206</td>\n",
       "      <td>System Analysis</td>\n",
       "      <td>106</td>\n",
       "      <td>Room C2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>208</td>\n",
       "      <td>Machine Learning Basics</td>\n",
       "      <td>108</td>\n",
       "      <td>Room B3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>209</td>\n",
       "      <td>Algorithms</td>\n",
       "      <td>109</td>\n",
       "      <td>Room C3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   class_id                  class_title  professor_id room_number\n",
       "0       201           Intro to Databases           101     Room A1\n",
       "1       203          Advanced PostgreSQL           103     Room A2\n",
       "2       205  Business Intelligence Tools           105     Room B1\n",
       "3       206              System Analysis           106     Room C2\n",
       "4       208      Machine Learning Basics           108     Room B3\n",
       "5       209                   Algorithms           109     Room C3"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "classes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "ccc4cb51",
   "metadata": {},
   "outputs": [],
   "source": [
    "major = pd.read_csv(r\"data/major.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "36895d1c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>major_id</th>\n",
       "      <th>major_name</th>\n",
       "      <th>department_head</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>Computer Science</td>\n",
       "      <td>Dr. Alan Turing</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>Data Analytics</td>\n",
       "      <td>Dr. Grace Hopper</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>Business Intelligence</td>\n",
       "      <td>Dr. Edgar Codd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>Information Systems</td>\n",
       "      <td>Dr. Ada Lovelace</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>Mathtimatics</td>\n",
       "      <td>Dr. John von Neumann</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   major_id             major_name       department_head\n",
       "0         1       Computer Science       Dr. Alan Turing\n",
       "1         2         Data Analytics      Dr. Grace Hopper\n",
       "2         3  Business Intelligence        Dr. Edgar Codd\n",
       "3         4    Information Systems      Dr. Ada Lovelace\n",
       "4         5           Mathtimatics  Dr. John von Neumann"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "major"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "f8e2b350",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.DataFrame'>\n",
      "RangeIndex: 5 entries, 0 to 4\n",
      "Data columns (total 3 columns):\n",
      " #   Column           Non-Null Count  Dtype\n",
      "---  ------           --------------  -----\n",
      " 0   major_id         5 non-null      int64\n",
      " 1   major_name       5 non-null      str  \n",
      " 2   department_head  5 non-null      str  \n",
      "dtypes: int64(1), str(2)\n",
      "memory usage: 252.0 bytes\n"
     ]
    }
   ],
   "source": [
    "major.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "8cfe71ec",
   "metadata": {},
   "outputs": [],
   "source": [
    "major[\"major_name\"]=major[\"major_name\"].replace(\"Mathtimatics\",\"Mathematics\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "9bfe8eea",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>major_id</th>\n",
       "      <th>major_name</th>\n",
       "      <th>department_head</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>Computer Science</td>\n",
       "      <td>Dr. Alan Turing</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>Data Analytics</td>\n",
       "      <td>Dr. Grace Hopper</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>Business Intelligence</td>\n",
       "      <td>Dr. Edgar Codd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>Information Systems</td>\n",
       "      <td>Dr. Ada Lovelace</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>Mathematics</td>\n",
       "      <td>Dr. John von Neumann</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   major_id             major_name       department_head\n",
       "0         1       Computer Science       Dr. Alan Turing\n",
       "1         2         Data Analytics      Dr. Grace Hopper\n",
       "2         3  Business Intelligence        Dr. Edgar Codd\n",
       "3         4    Information Systems      Dr. Ada Lovelace\n",
       "4         5            Mathematics  Dr. John von Neumann"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "major"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "c351d4b7",
   "metadata": {},
   "outputs": [],
   "source": [
    "student = pd.read_csv(r\"data/student.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "e8d5091c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>student_id</th>\n",
       "      <th>first_name</th>\n",
       "      <th>last_name</th>\n",
       "      <th>birth_date</th>\n",
       "      <th>major_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1001</td>\n",
       "      <td>Alice</td>\n",
       "      <td>Johnson</td>\n",
       "      <td>1900-04-12</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1002</td>\n",
       "      <td>Bob</td>\n",
       "      <td>Williams</td>\n",
       "      <td>2004-08-22</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1003</td>\n",
       "      <td>Charlie</td>\n",
       "      <td>Brown</td>\n",
       "      <td>2005-11-05</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1004</td>\n",
       "      <td>Diana</td>\n",
       "      <td>Prince</td>\n",
       "      <td>2003-02-15</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1005</td>\n",
       "      <td>Evan</td>\n",
       "      <td>Wright</td>\n",
       "      <td>2004-05-30</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1006</td>\n",
       "      <td>Fiona</td>\n",
       "      <td>Gallagher</td>\n",
       "      <td>1800-07-19</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1007</td>\n",
       "      <td>George</td>\n",
       "      <td>Miller</td>\n",
       "      <td>2003-12-11</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1008</td>\n",
       "      <td>Hannah</td>\n",
       "      <td>Abbott</td>\n",
       "      <td>2004-09-09</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1009</td>\n",
       "      <td>Ian</td>\n",
       "      <td>Malcolm</td>\n",
       "      <td>2005-01-24</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1010</td>\n",
       "      <td>Julia</td>\n",
       "      <td>Roberts</td>\n",
       "      <td>2004-03-14</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1011</td>\n",
       "      <td>Kevin</td>\n",
       "      <td>Hart</td>\n",
       "      <td>2003-10-31</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>1012</td>\n",
       "      <td>Luna</td>\n",
       "      <td>Lovegood</td>\n",
       "      <td>2005-06-15</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>1013</td>\n",
       "      <td>TestStudent1</td>\n",
       "      <td>ToDelete</td>\n",
       "      <td>2000-01-01</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>1014</td>\n",
       "      <td>Nathan</td>\n",
       "      <td>Drake</td>\n",
       "      <td>2004-04-20</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>1015</td>\n",
       "      <td>Olivia</td>\n",
       "      <td>Benson</td>\n",
       "      <td>2005-08-08</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>1016</td>\n",
       "      <td>Peter</td>\n",
       "      <td>Parker</td>\n",
       "      <td>2003-05-18</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>1017</td>\n",
       "      <td>Quinn</td>\n",
       "      <td>Fabray</td>\n",
       "      <td>2004-11-22</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>1018</td>\n",
       "      <td>TestStudent2</td>\n",
       "      <td>ToDelete</td>\n",
       "      <td>2000-01-01</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>1019</td>\n",
       "      <td>Sam</td>\n",
       "      <td>Winchester</td>\n",
       "      <td>2005-02-10</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>1020</td>\n",
       "      <td>Tina</td>\n",
       "      <td>Fey</td>\n",
       "      <td>2003-07-25</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>1021</td>\n",
       "      <td>TestStudent3</td>\n",
       "      <td>ToDelete</td>\n",
       "      <td>2000-01-01</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    student_id    first_name   last_name  birth_date  major_id\n",
       "0         1001         Alice     Johnson  1900-04-12         1\n",
       "1         1002           Bob    Williams  2004-08-22         2\n",
       "2         1003       Charlie       Brown  2005-11-05         3\n",
       "3         1004         Diana      Prince  2003-02-15         4\n",
       "4         1005          Evan      Wright  2004-05-30         2\n",
       "5         1006         Fiona   Gallagher  1800-07-19         1\n",
       "6         1007        George      Miller  2003-12-11         5\n",
       "7         1008        Hannah      Abbott  2004-09-09         2\n",
       "8         1009           Ian     Malcolm  2005-01-24         3\n",
       "9         1010         Julia     Roberts  2004-03-14         1\n",
       "10        1011         Kevin        Hart  2003-10-31         4\n",
       "11        1012          Luna    Lovegood  2005-06-15         5\n",
       "12        1013  TestStudent1    ToDelete  2000-01-01         1\n",
       "13        1014        Nathan       Drake  2004-04-20         2\n",
       "14        1015        Olivia      Benson  2005-08-08         3\n",
       "15        1016         Peter      Parker  2003-05-18         1\n",
       "16        1017         Quinn      Fabray  2004-11-22         4\n",
       "17        1018  TestStudent2    ToDelete  2000-01-01         2\n",
       "18        1019           Sam  Winchester  2005-02-10         2\n",
       "19        1020          Tina         Fey  2003-07-25         3\n",
       "20        1021  TestStudent3    ToDelete  2000-01-01         3"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "student"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "c1fd063f",
   "metadata": {},
   "outputs": [],
   "source": [
    "student=student[~student[\"first_name\"].str.contains(\"Test\",case=False)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "3426b5b7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.DataFrame'>\n",
      "Index: 18 entries, 0 to 19\n",
      "Data columns (total 5 columns):\n",
      " #   Column      Non-Null Count  Dtype\n",
      "---  ------      --------------  -----\n",
      " 0   student_id  18 non-null     int64\n",
      " 1   first_name  18 non-null     str  \n",
      " 2   last_name   18 non-null     str  \n",
      " 3   birth_date  18 non-null     str  \n",
      " 4   major_id    18 non-null     int64\n",
      "dtypes: int64(2), str(3)\n",
      "memory usage: 864.0 bytes\n"
     ]
    }
   ],
   "source": [
    "student.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "ae5d1ac6",
   "metadata": {},
   "outputs": [],
   "source": [
    "student[\"birth_date\"]=pd.to_datetime(student[\"birth_date\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "6897757f",
   "metadata": {},
   "outputs": [],
   "source": [
    "today=pd.Timestamp(\"today\")\n",
    "max_birth = today - pd.DateOffset(years=18)\n",
    "min_birth = today - pd.DateOffset(years=40)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "340e1016",
   "metadata": {},
   "outputs": [],
   "source": [
    "student = student[\n",
    "    (student[\"birth_date\"] <= max_birth) &\n",
    "    (student[\"birth_date\"] >= min_birth)\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "408f0a85",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>student_id</th>\n",
       "      <th>first_name</th>\n",
       "      <th>last_name</th>\n",
       "      <th>birth_date</th>\n",
       "      <th>major_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1002</td>\n",
       "      <td>Bob</td>\n",
       "      <td>Williams</td>\n",
       "      <td>2004-08-22</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1003</td>\n",
       "      <td>Charlie</td>\n",
       "      <td>Brown</td>\n",
       "      <td>2005-11-05</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1004</td>\n",
       "      <td>Diana</td>\n",
       "      <td>Prince</td>\n",
       "      <td>2003-02-15</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1005</td>\n",
       "      <td>Evan</td>\n",
       "      <td>Wright</td>\n",
       "      <td>2004-05-30</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1007</td>\n",
       "      <td>George</td>\n",
       "      <td>Miller</td>\n",
       "      <td>2003-12-11</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1008</td>\n",
       "      <td>Hannah</td>\n",
       "      <td>Abbott</td>\n",
       "      <td>2004-09-09</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1009</td>\n",
       "      <td>Ian</td>\n",
       "      <td>Malcolm</td>\n",
       "      <td>2005-01-24</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1010</td>\n",
       "      <td>Julia</td>\n",
       "      <td>Roberts</td>\n",
       "      <td>2004-03-14</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1011</td>\n",
       "      <td>Kevin</td>\n",
       "      <td>Hart</td>\n",
       "      <td>2003-10-31</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>1012</td>\n",
       "      <td>Luna</td>\n",
       "      <td>Lovegood</td>\n",
       "      <td>2005-06-15</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>1014</td>\n",
       "      <td>Nathan</td>\n",
       "      <td>Drake</td>\n",
       "      <td>2004-04-20</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>1015</td>\n",
       "      <td>Olivia</td>\n",
       "      <td>Benson</td>\n",
       "      <td>2005-08-08</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>1016</td>\n",
       "      <td>Peter</td>\n",
       "      <td>Parker</td>\n",
       "      <td>2003-05-18</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>1017</td>\n",
       "      <td>Quinn</td>\n",
       "      <td>Fabray</td>\n",
       "      <td>2004-11-22</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>1019</td>\n",
       "      <td>Sam</td>\n",
       "      <td>Winchester</td>\n",
       "      <td>2005-02-10</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>1020</td>\n",
       "      <td>Tina</td>\n",
       "      <td>Fey</td>\n",
       "      <td>2003-07-25</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    student_id first_name   last_name birth_date  major_id\n",
       "1         1002        Bob    Williams 2004-08-22         2\n",
       "2         1003    Charlie       Brown 2005-11-05         3\n",
       "3         1004      Diana      Prince 2003-02-15         4\n",
       "4         1005       Evan      Wright 2004-05-30         2\n",
       "6         1007     George      Miller 2003-12-11         5\n",
       "7         1008     Hannah      Abbott 2004-09-09         2\n",
       "8         1009        Ian     Malcolm 2005-01-24         3\n",
       "9         1010      Julia     Roberts 2004-03-14         1\n",
       "10        1011      Kevin        Hart 2003-10-31         4\n",
       "11        1012       Luna    Lovegood 2005-06-15         5\n",
       "13        1014     Nathan       Drake 2004-04-20         2\n",
       "14        1015     Olivia      Benson 2005-08-08         3\n",
       "15        1016      Peter      Parker 2003-05-18         1\n",
       "16        1017      Quinn      Fabray 2004-11-22         4\n",
       "18        1019        Sam  Winchester 2005-02-10         2\n",
       "19        1020       Tina         Fey 2003-07-25         3"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "student"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "f1b9fee9",
   "metadata": {},
   "outputs": [],
   "source": [
    "enrollment =pd.read_csv(r\"data/enrollment.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "84ada3a2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>enrollment_id</th>\n",
       "      <th>student_id</th>\n",
       "      <th>class_id</th>\n",
       "      <th>grade</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5001</td>\n",
       "      <td>1001</td>\n",
       "      <td>201</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5002</td>\n",
       "      <td>1002</td>\n",
       "      <td>202</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5003</td>\n",
       "      <td>1003</td>\n",
       "      <td>203</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5004</td>\n",
       "      <td>1004</td>\n",
       "      <td>204</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5005</td>\n",
       "      <td>1005</td>\n",
       "      <td>205</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5006</td>\n",
       "      <td>1006</td>\n",
       "      <td>201</td>\n",
       "      <td>Pending</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>5007</td>\n",
       "      <td>1007</td>\n",
       "      <td>210</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>5008</td>\n",
       "      <td>1008</td>\n",
       "      <td>202</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>5009</td>\n",
       "      <td>1009</td>\n",
       "      <td>207</td>\n",
       "      <td>Pending</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>5010</td>\n",
       "      <td>1010</td>\n",
       "      <td>209</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>5011</td>\n",
       "      <td>1011</td>\n",
       "      <td>206</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>5012</td>\n",
       "      <td>1012</td>\n",
       "      <td>210</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>5013</td>\n",
       "      <td>1013</td>\n",
       "      <td>201</td>\n",
       "      <td>DROP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>5014</td>\n",
       "      <td>1014</td>\n",
       "      <td>208</td>\n",
       "      <td>Pending</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>5015</td>\n",
       "      <td>1015</td>\n",
       "      <td>205</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>5016</td>\n",
       "      <td>1016</td>\n",
       "      <td>203</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>5017</td>\n",
       "      <td>1017</td>\n",
       "      <td>204</td>\n",
       "      <td>DROP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>5018</td>\n",
       "      <td>1018</td>\n",
       "      <td>202</td>\n",
       "      <td>DROP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>5019</td>\n",
       "      <td>1019</td>\n",
       "      <td>207</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>5020</td>\n",
       "      <td>1020</td>\n",
       "      <td>205</td>\n",
       "      <td>Pending</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>5021</td>\n",
       "      <td>1021</td>\n",
       "      <td>203</td>\n",
       "      <td>DROP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>5022</td>\n",
       "      <td>1001</td>\n",
       "      <td>209</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>5023</td>\n",
       "      <td>1002</td>\n",
       "      <td>204</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>5024</td>\n",
       "      <td>1005</td>\n",
       "      <td>208</td>\n",
       "      <td>Pending</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>5025</td>\n",
       "      <td>1006</td>\n",
       "      <td>209</td>\n",
       "      <td>DROP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>5026</td>\n",
       "      <td>1008</td>\n",
       "      <td>207</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>5027</td>\n",
       "      <td>1015</td>\n",
       "      <td>203</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    enrollment_id  student_id  class_id    grade\n",
       "0            5001        1001       201        A\n",
       "1            5002        1002       202        B\n",
       "2            5003        1003       203        A\n",
       "3            5004        1004       204        C\n",
       "4            5005        1005       205        B\n",
       "5            5006        1006       201  Pending\n",
       "6            5007        1007       210        A\n",
       "7            5008        1008       202        B\n",
       "8            5009        1009       207  Pending\n",
       "9            5010        1010       209        A\n",
       "10           5011        1011       206        C\n",
       "11           5012        1012       210        B\n",
       "12           5013        1013       201     DROP\n",
       "13           5014        1014       208  Pending\n",
       "14           5015        1015       205        A\n",
       "15           5016        1016       203        B\n",
       "16           5017        1017       204     DROP\n",
       "17           5018        1018       202     DROP\n",
       "18           5019        1019       207        A\n",
       "19           5020        1020       205  Pending\n",
       "20           5021        1021       203     DROP\n",
       "21           5022        1001       209        B\n",
       "22           5023        1002       204        A\n",
       "23           5024        1005       208  Pending\n",
       "24           5025        1006       209     DROP\n",
       "25           5026        1008       207        A\n",
       "26           5027        1015       203        B"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "enrollment"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "3ebb58b0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.DataFrame'>\n",
      "RangeIndex: 27 entries, 0 to 26\n",
      "Data columns (total 4 columns):\n",
      " #   Column         Non-Null Count  Dtype\n",
      "---  ------         --------------  -----\n",
      " 0   enrollment_id  27 non-null     int64\n",
      " 1   student_id     27 non-null     int64\n",
      " 2   class_id       27 non-null     int64\n",
      " 3   grade          27 non-null     str  \n",
      "dtypes: int64(3), str(1)\n",
      "memory usage: 996.0 bytes\n"
     ]
    }
   ],
   "source": [
    "enrollment .info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "6fd1e66e",
   "metadata": {},
   "outputs": [],
   "source": [
    "enrollment=enrollment[enrollment[\"student_id\"].isin(student[\"student_id\"])].reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "ccd25bc9",
   "metadata": {},
   "outputs": [],
   "source": [
    "enrollment=enrollment[enrollment[\"class_id\"].isin(classes[\"class_id\"])].reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "3a525d75",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>enrollment_id</th>\n",
       "      <th>student_id</th>\n",
       "      <th>class_id</th>\n",
       "      <th>grade</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5003</td>\n",
       "      <td>1003</td>\n",
       "      <td>203</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5005</td>\n",
       "      <td>1005</td>\n",
       "      <td>205</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5010</td>\n",
       "      <td>1010</td>\n",
       "      <td>209</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5011</td>\n",
       "      <td>1011</td>\n",
       "      <td>206</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5014</td>\n",
       "      <td>1014</td>\n",
       "      <td>208</td>\n",
       "      <td>Pending</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5015</td>\n",
       "      <td>1015</td>\n",
       "      <td>205</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>5016</td>\n",
       "      <td>1016</td>\n",
       "      <td>203</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>5020</td>\n",
       "      <td>1020</td>\n",
       "      <td>205</td>\n",
       "      <td>Pending</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>5024</td>\n",
       "      <td>1005</td>\n",
       "      <td>208</td>\n",
       "      <td>Pending</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>5027</td>\n",
       "      <td>1015</td>\n",
       "      <td>203</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   enrollment_id  student_id  class_id    grade\n",
       "0           5003        1003       203        A\n",
       "1           5005        1005       205        B\n",
       "2           5010        1010       209        A\n",
       "3           5011        1011       206        C\n",
       "4           5014        1014       208  Pending\n",
       "5           5015        1015       205        A\n",
       "6           5016        1016       203        B\n",
       "7           5020        1020       205  Pending\n",
       "8           5024        1005       208  Pending\n",
       "9           5027        1015       203        B"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "enrollment"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "45308ed0",
   "metadata": {},
   "outputs": [],
   "source": [
    "enrollment[\"grade\"]=enrollment[\"grade\"].str.lower()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "6ed67a9e",
   "metadata": {},
   "outputs": [],
   "source": [
    "enrollment[\"grade\"]=enrollment[\"grade\"].replace(\"pending\",\"b\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "d52d39fb",
   "metadata": {},
   "outputs": [],
   "source": [
    "enrollment=enrollment[enrollment[\"grade\"] != \"drop\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "56747c03",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>enrollment_id</th>\n",
       "      <th>student_id</th>\n",
       "      <th>class_id</th>\n",
       "      <th>grade</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5003</td>\n",
       "      <td>1003</td>\n",
       "      <td>203</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5005</td>\n",
       "      <td>1005</td>\n",
       "      <td>205</td>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5010</td>\n",
       "      <td>1010</td>\n",
       "      <td>209</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5011</td>\n",
       "      <td>1011</td>\n",
       "      <td>206</td>\n",
       "      <td>c</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5014</td>\n",
       "      <td>1014</td>\n",
       "      <td>208</td>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5015</td>\n",
       "      <td>1015</td>\n",
       "      <td>205</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>5016</td>\n",
       "      <td>1016</td>\n",
       "      <td>203</td>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>5020</td>\n",
       "      <td>1020</td>\n",
       "      <td>205</td>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>5024</td>\n",
       "      <td>1005</td>\n",
       "      <td>208</td>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>5027</td>\n",
       "      <td>1015</td>\n",
       "      <td>203</td>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   enrollment_id  student_id  class_id grade\n",
       "0           5003        1003       203     a\n",
       "1           5005        1005       205     b\n",
       "2           5010        1010       209     a\n",
       "3           5011        1011       206     c\n",
       "4           5014        1014       208     b\n",
       "5           5015        1015       205     a\n",
       "6           5016        1016       203     b\n",
       "7           5020        1020       205     b\n",
       "8           5024        1005       208     b\n",
       "9           5027        1015       203     b"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "enrollment"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "edb3e169",
   "metadata": {},
   "outputs": [],
   "source": [
    "enrollment[\"grade\"]=enrollment[\"grade\"].str.upper()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "f66e8c15",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>enrollment_id</th>\n",
       "      <th>student_id</th>\n",
       "      <th>class_id</th>\n",
       "      <th>grade</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5003</td>\n",
       "      <td>1003</td>\n",
       "      <td>203</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5005</td>\n",
       "      <td>1005</td>\n",
       "      <td>205</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5010</td>\n",
       "      <td>1010</td>\n",
       "      <td>209</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5011</td>\n",
       "      <td>1011</td>\n",
       "      <td>206</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5014</td>\n",
       "      <td>1014</td>\n",
       "      <td>208</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5015</td>\n",
       "      <td>1015</td>\n",
       "      <td>205</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>5016</td>\n",
       "      <td>1016</td>\n",
       "      <td>203</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>5020</td>\n",
       "      <td>1020</td>\n",
       "      <td>205</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>5024</td>\n",
       "      <td>1005</td>\n",
       "      <td>208</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>5027</td>\n",
       "      <td>1015</td>\n",
       "      <td>203</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   enrollment_id  student_id  class_id grade\n",
       "0           5003        1003       203     A\n",
       "1           5005        1005       205     B\n",
       "2           5010        1010       209     A\n",
       "3           5011        1011       206     C\n",
       "4           5014        1014       208     B\n",
       "5           5015        1015       205     A\n",
       "6           5016        1016       203     B\n",
       "7           5020        1020       205     B\n",
       "8           5024        1005       208     B\n",
       "9           5027        1015       203     B"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "enrollment"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "e6b03800",
   "metadata": {},
   "outputs": [],
   "source": [
    "engine.dispose()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "76059972",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "professor.to_sql(\n",
    "    name=\"professor\",\n",
    "    schema=\"schema_42\",\n",
    "    con=engine,\n",
    "    if_exists= \"replace\",\n",
    "    index= False\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "c4660514",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "classes.to_sql(\n",
    "    name=\"classes\",\n",
    "    schema=\"schema_42\",\n",
    "    con=engine,\n",
    "    if_exists= \"replace\",\n",
    "    index= False\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "a2e6e162",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "major.to_sql(\n",
    "    name=\"major\",\n",
    "    schema=\"schema_42\",\n",
    "    con=engine,\n",
    "    if_exists= \"replace\",\n",
    "    index= False\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "48b9a598",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "16"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "student.to_sql(\n",
    "    name=\"student\",\n",
    "    schema=\"schema_42\",\n",
    "    con=engine,\n",
    "    if_exists= \"replace\",\n",
    "    index= False\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "2c87eeb2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#data type in col grade was changed in database from int to text\n",
    "enrollment.to_sql(\n",
    "    name=\"enrollment\",\n",
    "    schema=\"schema_42\",\n",
    "    con=engine,\n",
    "    if_exists= \"replace\",\n",
    "    index= False\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b44a1eb7",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "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.14.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}