DATA201_projects/python_project_1.ipynb

1308 lines
74 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "7acc26cb",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "c821dd0a",
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv('https://raw.githubusercontent.com/CunyLaguardiaDataAnalytics/datasets/master/2014-15_To_2016-17_School-_Level_NYC_Regents_Report_For_All_Variables.csv')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "e080ce64",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(212331, 15)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.shape"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "57651a37",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"School DBN object\n",
"School Name object\n",
"School Level object\n",
"Regents Exam object\n",
"Year int64\n",
"Total Tested int64\n",
"Mean Score object\n",
"Number Scoring Below 65 object\n",
"Percent Scoring Below 65 object\n",
"Number Scoring 65 or Above object\n",
"Percent Scoring 65 or Above object\n",
"Number Scoring 80 or Above object\n",
"Percent Scoring 80 or Above object\n",
"Number Scoring CR object\n",
"Percent Scoring CR object\n",
"dtype: object"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "7147a7d1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2015 2017\n"
]
}
],
"source": [
"# Time range should be 2014-2015 to 2016-2017 school year. Does the 'Year' column reflect this range?\n",
"\n",
"print(df['Year'].min(), df['Year'].max())"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "377a2d08",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['K-8', 'High school', 'Junior High-Intermediate-Middle',\n",
" 'Secondary School', 'K-12 all grades', 'Elementary'], dtype=object)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# What kind of schools are included?\n",
"\n",
"df['School Level'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "897e335b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"School DBN 0\n",
"School Name 0\n",
"School Level 0\n",
"Regents Exam 10\n",
"Year 0\n",
"Total Tested 0\n",
"Mean Score 0\n",
"Number Scoring Below 65 0\n",
"Percent Scoring Below 65 0\n",
"Number Scoring 65 or Above 0\n",
"Percent Scoring 65 or Above 0\n",
"Number Scoring 80 or Above 0\n",
"Percent Scoring 80 or Above 0\n",
"Number Scoring CR 0\n",
"Percent Scoring CR 0\n",
"dtype: int64"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Is there any missing data?\n",
"\n",
"df.isna().sum()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "e0ab351b",
"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>School DBN</th>\n",
" <th>School Name</th>\n",
" <th>School Level</th>\n",
" <th>Regents Exam</th>\n",
" <th>Year</th>\n",
" <th>Total Tested</th>\n",
" <th>Mean Score</th>\n",
" <th>Number Scoring Below 65</th>\n",
" <th>Percent Scoring Below 65</th>\n",
" <th>Number Scoring 65 or Above</th>\n",
" <th>Percent Scoring 65 or Above</th>\n",
" <th>Number Scoring 80 or Above</th>\n",
" <th>Percent Scoring 80 or Above</th>\n",
" <th>Number Scoring CR</th>\n",
" <th>Percent Scoring CR</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>18654</th>\n",
" <td>84M478</td>\n",
" <td>Inwood Academy for Leadership Charter School</td>\n",
" <td>Secondary School</td>\n",
" <td>NaN</td>\n",
" <td>2015</td>\n",
" <td>90</td>\n",
" <td>55.6</td>\n",
" <td>61</td>\n",
" <td>67.8</td>\n",
" <td>29</td>\n",
" <td>32.2</td>\n",
" <td>6</td>\n",
" <td>6.7</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52756</th>\n",
" <td>84M478</td>\n",
" <td>Inwood Academy for Leadership Charter School</td>\n",
" <td>Secondary School</td>\n",
" <td>NaN</td>\n",
" <td>2015</td>\n",
" <td>81</td>\n",
" <td>55.9</td>\n",
" <td>55</td>\n",
" <td>67.9</td>\n",
" <td>26</td>\n",
" <td>32.1</td>\n",
" <td>5</td>\n",
" <td>6.2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52757</th>\n",
" <td>84M478</td>\n",
" <td>Inwood Academy for Leadership Charter School</td>\n",
" <td>Secondary School</td>\n",
" <td>NaN</td>\n",
" <td>2015</td>\n",
" <td>9</td>\n",
" <td>53.4</td>\n",
" <td>6</td>\n",
" <td>66.7</td>\n",
" <td>3</td>\n",
" <td>33.3</td>\n",
" <td>1</td>\n",
" <td>11.1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>100865</th>\n",
" <td>84M478</td>\n",
" <td>Inwood Academy for Leadership Charter School</td>\n",
" <td>Secondary School</td>\n",
" <td>NaN</td>\n",
" <td>2015</td>\n",
" <td>5</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" <td>na</td>\n",
" <td>na</td>\n",
" </tr>\n",
" <tr>\n",
" <th>100866</th>\n",
" <td>84M478</td>\n",
" <td>Inwood Academy for Leadership Charter School</td>\n",
" <td>Secondary School</td>\n",
" <td>NaN</td>\n",
" <td>2015</td>\n",
" <td>54</td>\n",
" <td>57.4</td>\n",
" <td>34</td>\n",
" <td>63</td>\n",
" <td>20</td>\n",
" <td>37</td>\n",
" <td>6</td>\n",
" <td>11.1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>100867</th>\n",
" <td>84M478</td>\n",
" <td>Inwood Academy for Leadership Charter School</td>\n",
" <td>Secondary School</td>\n",
" <td>NaN</td>\n",
" <td>2015</td>\n",
" <td>31</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" <td>na</td>\n",
" <td>na</td>\n",
" </tr>\n",
" <tr>\n",
" <th>138300</th>\n",
" <td>84M478</td>\n",
" <td>Inwood Academy for Leadership Charter School</td>\n",
" <td>Secondary School</td>\n",
" <td>NaN</td>\n",
" <td>2015</td>\n",
" <td>54</td>\n",
" <td>57.3</td>\n",
" <td>34</td>\n",
" <td>63</td>\n",
" <td>20</td>\n",
" <td>37</td>\n",
" <td>5</td>\n",
" <td>9.3</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>138301</th>\n",
" <td>84M478</td>\n",
" <td>Inwood Academy for Leadership Charter School</td>\n",
" <td>Secondary School</td>\n",
" <td>NaN</td>\n",
" <td>2015</td>\n",
" <td>36</td>\n",
" <td>53.2</td>\n",
" <td>27</td>\n",
" <td>75</td>\n",
" <td>9</td>\n",
" <td>25</td>\n",
" <td>1</td>\n",
" <td>2.8</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>209785</th>\n",
" <td>84M478</td>\n",
" <td>Inwood Academy for Leadership Charter School</td>\n",
" <td>Secondary School</td>\n",
" <td>NaN</td>\n",
" <td>2015</td>\n",
" <td>12</td>\n",
" <td>59</td>\n",
" <td>9</td>\n",
" <td>75</td>\n",
" <td>3</td>\n",
" <td>25</td>\n",
" <td>1</td>\n",
" <td>8.3</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>209786</th>\n",
" <td>84M478</td>\n",
" <td>Inwood Academy for Leadership Charter School</td>\n",
" <td>Secondary School</td>\n",
" <td>NaN</td>\n",
" <td>2015</td>\n",
" <td>78</td>\n",
" <td>55.1</td>\n",
" <td>52</td>\n",
" <td>66.7</td>\n",
" <td>26</td>\n",
" <td>33.3</td>\n",
" <td>5</td>\n",
" <td>6.4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" School DBN School Name \\\n",
"18654 84M478 Inwood Academy for Leadership Charter School \n",
"52756 84M478 Inwood Academy for Leadership Charter School \n",
"52757 84M478 Inwood Academy for Leadership Charter School \n",
"100865 84M478 Inwood Academy for Leadership Charter School \n",
"100866 84M478 Inwood Academy for Leadership Charter School \n",
"100867 84M478 Inwood Academy for Leadership Charter School \n",
"138300 84M478 Inwood Academy for Leadership Charter School \n",
"138301 84M478 Inwood Academy for Leadership Charter School \n",
"209785 84M478 Inwood Academy for Leadership Charter School \n",
"209786 84M478 Inwood Academy for Leadership Charter School \n",
"\n",
" School Level Regents Exam Year Total Tested Mean Score \\\n",
"18654 Secondary School NaN 2015 90 55.6 \n",
"52756 Secondary School NaN 2015 81 55.9 \n",
"52757 Secondary School NaN 2015 9 53.4 \n",
"100865 Secondary School NaN 2015 5 s \n",
"100866 Secondary School NaN 2015 54 57.4 \n",
"100867 Secondary School NaN 2015 31 s \n",
"138300 Secondary School NaN 2015 54 57.3 \n",
"138301 Secondary School NaN 2015 36 53.2 \n",
"209785 Secondary School NaN 2015 12 59 \n",
"209786 Secondary School NaN 2015 78 55.1 \n",
"\n",
" Number Scoring Below 65 Percent Scoring Below 65 \\\n",
"18654 61 67.8 \n",
"52756 55 67.9 \n",
"52757 6 66.7 \n",
"100865 s s \n",
"100866 34 63 \n",
"100867 s s \n",
"138300 34 63 \n",
"138301 27 75 \n",
"209785 9 75 \n",
"209786 52 66.7 \n",
"\n",
" Number Scoring 65 or Above Percent Scoring 65 or Above \\\n",
"18654 29 32.2 \n",
"52756 26 32.1 \n",
"52757 3 33.3 \n",
"100865 s s \n",
"100866 20 37 \n",
"100867 s s \n",
"138300 20 37 \n",
"138301 9 25 \n",
"209785 3 25 \n",
"209786 26 33.3 \n",
"\n",
" Number Scoring 80 or Above Percent Scoring 80 or Above \\\n",
"18654 6 6.7 \n",
"52756 5 6.2 \n",
"52757 1 11.1 \n",
"100865 s s \n",
"100866 6 11.1 \n",
"100867 s s \n",
"138300 5 9.3 \n",
"138301 1 2.8 \n",
"209785 1 8.3 \n",
"209786 5 6.4 \n",
"\n",
" Number Scoring CR Percent Scoring CR \n",
"18654 0 0 \n",
"52756 0 0 \n",
"52757 0 0 \n",
"100865 na na \n",
"100866 0 0 \n",
"100867 na na \n",
"138300 0 0 \n",
"138301 0 0 \n",
"209785 0 0 \n",
"209786 0 0 "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[df['Regents Exam'].isna()]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "c9a49215",
"metadata": {},
"outputs": [],
"source": [
"# Cleaning the data\n",
"\n",
"# There are ten missing values in the 'Regents Exam' column. One school is responsible.\n",
"# We'll drop that school from the dataset\n",
"\n",
"df.dropna(inplace = True)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "738ee993",
"metadata": {},
"outputs": [],
"source": [
"# We're interested in two score columns. We'll drop the other columns.\n",
"\n",
"drop_cols = ['Number Scoring Below 65', 'Percent Scoring Below 65', 'Number Scoring 65 or Above', 'Percent Scoring 65 or Above', 'Number Scoring 80 or Above', 'Number Scoring CR', 'Percent Scoring CR']\n",
"\n",
"df.drop(drop_cols, axis = 1, inplace = True)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "258073d0",
"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>School DBN</th>\n",
" <th>School Name</th>\n",
" <th>School Level</th>\n",
" <th>Regents Exam</th>\n",
" <th>Year</th>\n",
" <th>Total Tested</th>\n",
" <th>Mean Score</th>\n",
" <th>Percent Scoring 80 or Above</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>01M034</td>\n",
" <td>P.S. 034 Franklin D. Roosevelt</td>\n",
" <td>K-8</td>\n",
" <td>Common Core Algebra</td>\n",
" <td>2017</td>\n",
" <td>4</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>01M034</td>\n",
" <td>P.S. 034 Franklin D. Roosevelt</td>\n",
" <td>K-8</td>\n",
" <td>Living Environment</td>\n",
" <td>2015</td>\n",
" <td>16</td>\n",
" <td>77.9</td>\n",
" <td>43.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>01M034</td>\n",
" <td>P.S. 034 Franklin D. Roosevelt</td>\n",
" <td>K-8</td>\n",
" <td>Living Environment</td>\n",
" <td>2016</td>\n",
" <td>9</td>\n",
" <td>74</td>\n",
" <td>22.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>01M140</td>\n",
" <td>P.S. 140 Nathan Straus</td>\n",
" <td>K-8</td>\n",
" <td>Common Core Algebra</td>\n",
" <td>2016</td>\n",
" <td>3</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>01M140</td>\n",
" <td>P.S. 140 Nathan Straus</td>\n",
" <td>K-8</td>\n",
" <td>Common Core Algebra</td>\n",
" <td>2017</td>\n",
" <td>2</td>\n",
" <td>s</td>\n",
" <td>s</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" School DBN School Name School Level \\\n",
"0 01M034 P.S. 034 Franklin D. Roosevelt K-8 \n",
"1 01M034 P.S. 034 Franklin D. Roosevelt K-8 \n",
"2 01M034 P.S. 034 Franklin D. Roosevelt K-8 \n",
"3 01M140 P.S. 140 Nathan Straus K-8 \n",
"4 01M140 P.S. 140 Nathan Straus K-8 \n",
"\n",
" Regents Exam Year Total Tested Mean Score \\\n",
"0 Common Core Algebra 2017 4 s \n",
"1 Living Environment 2015 16 77.9 \n",
"2 Living Environment 2016 9 74 \n",
"3 Common Core Algebra 2016 3 s \n",
"4 Common Core Algebra 2017 2 s \n",
"\n",
" Percent Scoring 80 or Above \n",
"0 s \n",
"1 43.8 \n",
"2 22.2 \n",
"3 s \n",
"4 s "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "1f05cd97",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Int64Index: 137101 entries, 1 to 212325\n",
"Data columns (total 8 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 School DBN 137101 non-null object \n",
" 1 School Name 137101 non-null object \n",
" 2 School Level 137101 non-null object \n",
" 3 Regents Exam 137101 non-null object \n",
" 4 Year 137101 non-null int64 \n",
" 5 Total Tested 137101 non-null int64 \n",
" 6 Mean Score 137101 non-null float64\n",
" 7 Percent Scoring 80 or Above 137101 non-null float64\n",
"dtypes: float64(2), int64(2), object(4)\n",
"memory usage: 9.4+ MB\n"
]
}
],
"source": [
"# 'Mean Score' and 'Percent Scoring 80 or Above'\n",
"\n",
"# We expect integers or floats. Instead we have objects.\n",
"# Can we convert them to floats?\n",
"\n",
"# Yes, but first we have to deal with the non-numeric value 's'.\n",
"# We don't know what 's' means so let's make a subset\n",
"# then convert the scores to floats.\n",
"\n",
"df = df[df['Mean Score'] != 's']\n",
"df['Mean Score'] = pd.to_numeric(df['Mean Score'])\n",
"df = df[df['Percent Scoring 80 or Above'] != 's']\n",
"df['Percent Scoring 80 or Above'] = pd.to_numeric(df['Percent Scoring 80 or Above'])\n",
"df.info()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "f86ea927",
"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>School DBN</th>\n",
" <th>School Name</th>\n",
" <th>School Level</th>\n",
" <th>Regents Exam</th>\n",
" <th>Year</th>\n",
" <th>Total Tested</th>\n",
" <th>Mean Score</th>\n",
" <th>Percent Scoring 80 or Above</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>148870</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>English</td>\n",
" <td>2015</td>\n",
" <td>33</td>\n",
" <td>74.8</td>\n",
" <td>24.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2224</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>English</td>\n",
" <td>2015</td>\n",
" <td>65</td>\n",
" <td>74.1</td>\n",
" <td>30.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>107118</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>English</td>\n",
" <td>2015</td>\n",
" <td>31</td>\n",
" <td>71.8</td>\n",
" <td>25.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>107117</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>English</td>\n",
" <td>2015</td>\n",
" <td>34</td>\n",
" <td>76.3</td>\n",
" <td>35.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148869</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>English</td>\n",
" <td>2015</td>\n",
" <td>25</td>\n",
" <td>75.3</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59860</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>English</td>\n",
" <td>2015</td>\n",
" <td>49</td>\n",
" <td>73.3</td>\n",
" <td>26.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148861</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2016</td>\n",
" <td>22</td>\n",
" <td>75.4</td>\n",
" <td>36.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148860</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2016</td>\n",
" <td>10</td>\n",
" <td>70.0</td>\n",
" <td>30.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>107114</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2016</td>\n",
" <td>15</td>\n",
" <td>68.8</td>\n",
" <td>13.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2222</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2016</td>\n",
" <td>38</td>\n",
" <td>74.2</td>\n",
" <td>36.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59854</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2016</td>\n",
" <td>22</td>\n",
" <td>76.8</td>\n",
" <td>45.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23480</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2016</td>\n",
" <td>8</td>\n",
" <td>71.9</td>\n",
" <td>25.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23479</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2016</td>\n",
" <td>30</td>\n",
" <td>74.9</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>107113</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2016</td>\n",
" <td>23</td>\n",
" <td>77.8</td>\n",
" <td>52.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59857</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2017</td>\n",
" <td>45</td>\n",
" <td>77.5</td>\n",
" <td>55.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>107116</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2017</td>\n",
" <td>27</td>\n",
" <td>78.9</td>\n",
" <td>66.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2223</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2017</td>\n",
" <td>63</td>\n",
" <td>77.8</td>\n",
" <td>54.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148864</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2017</td>\n",
" <td>6</td>\n",
" <td>76.7</td>\n",
" <td>50.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148865</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2017</td>\n",
" <td>16</td>\n",
" <td>78.6</td>\n",
" <td>50.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148866</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2017</td>\n",
" <td>34</td>\n",
" <td>76.9</td>\n",
" <td>52.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148867</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2017</td>\n",
" <td>7</td>\n",
" <td>81.1</td>\n",
" <td>71.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>107115</th>\n",
" <td>02M605</td>\n",
" <td>Humanities Preparatory Academy</td>\n",
" <td>High school</td>\n",
" <td>Common Core English</td>\n",
" <td>2017</td>\n",
" <td>36</td>\n",
" <td>77.0</td>\n",
" <td>44.4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" School DBN School Name School Level \\\n",
"148870 02M605 Humanities Preparatory Academy High school \n",
"2224 02M605 Humanities Preparatory Academy High school \n",
"107118 02M605 Humanities Preparatory Academy High school \n",
"107117 02M605 Humanities Preparatory Academy High school \n",
"148869 02M605 Humanities Preparatory Academy High school \n",
"59860 02M605 Humanities Preparatory Academy High school \n",
"148861 02M605 Humanities Preparatory Academy High school \n",
"148860 02M605 Humanities Preparatory Academy High school \n",
"107114 02M605 Humanities Preparatory Academy High school \n",
"2222 02M605 Humanities Preparatory Academy High school \n",
"59854 02M605 Humanities Preparatory Academy High school \n",
"23480 02M605 Humanities Preparatory Academy High school \n",
"23479 02M605 Humanities Preparatory Academy High school \n",
"107113 02M605 Humanities Preparatory Academy High school \n",
"59857 02M605 Humanities Preparatory Academy High school \n",
"107116 02M605 Humanities Preparatory Academy High school \n",
"2223 02M605 Humanities Preparatory Academy High school \n",
"148864 02M605 Humanities Preparatory Academy High school \n",
"148865 02M605 Humanities Preparatory Academy High school \n",
"148866 02M605 Humanities Preparatory Academy High school \n",
"148867 02M605 Humanities Preparatory Academy High school \n",
"107115 02M605 Humanities Preparatory Academy High school \n",
"\n",
" Regents Exam Year Total Tested Mean Score \\\n",
"148870 English 2015 33 74.8 \n",
"2224 English 2015 65 74.1 \n",
"107118 English 2015 31 71.8 \n",
"107117 English 2015 34 76.3 \n",
"148869 English 2015 25 75.3 \n",
"59860 English 2015 49 73.3 \n",
"148861 Common Core English 2016 22 75.4 \n",
"148860 Common Core English 2016 10 70.0 \n",
"107114 Common Core English 2016 15 68.8 \n",
"2222 Common Core English 2016 38 74.2 \n",
"59854 Common Core English 2016 22 76.8 \n",
"23480 Common Core English 2016 8 71.9 \n",
"23479 Common Core English 2016 30 74.9 \n",
"107113 Common Core English 2016 23 77.8 \n",
"59857 Common Core English 2017 45 77.5 \n",
"107116 Common Core English 2017 27 78.9 \n",
"2223 Common Core English 2017 63 77.8 \n",
"148864 Common Core English 2017 6 76.7 \n",
"148865 Common Core English 2017 16 78.6 \n",
"148866 Common Core English 2017 34 76.9 \n",
"148867 Common Core English 2017 7 81.1 \n",
"107115 Common Core English 2017 36 77.0 \n",
"\n",
" Percent Scoring 80 or Above \n",
"148870 24.2 \n",
"2224 30.8 \n",
"107118 25.8 \n",
"107117 35.3 \n",
"148869 40.0 \n",
"59860 26.5 \n",
"148861 36.4 \n",
"148860 30.0 \n",
"107114 13.3 \n",
"2222 36.8 \n",
"59854 45.5 \n",
"23480 25.0 \n",
"23479 40.0 \n",
"107113 52.2 \n",
"59857 55.6 \n",
"107116 66.7 \n",
"2223 54.0 \n",
"148864 50.0 \n",
"148865 50.0 \n",
"148866 52.9 \n",
"148867 71.4 \n",
"107115 44.4 "
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Filter the dataset. Let's have a look at the Humanities Preparatory Academy High School in Chelsea\n",
"\n",
"df[df['School DBN'] == '02M605'].sort_values(by = ['Year'])"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "1cc0ab0a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Year\n",
"2015 74.266667\n",
"2016 73.725000\n",
"2017 78.062500\n",
"Name: Mean Score, dtype: float64"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# How did this school perform over three years?\n",
"\n",
"df[df['School DBN'] == '02M605'].groupby(['Year'])['Mean Score'].mean()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "8ad44a32",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Year\n",
"2015 70.562738\n",
"2016 70.612695\n",
"2017 72.814383\n",
"Name: Mean Score, dtype: float64"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Other high schools in Manhattan\n",
"\n",
"df[(df['School DBN'] != '02M605')\n",
" & (df['School Level'] == 'High school')\n",
" & (df['School DBN'].str.contains('M'))\n",
" & (df['Regents Exam']).str.contains('English')\n",
" ].groupby(['Year'])['Mean Score'].mean()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "3b420509",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Year\n",
"2015 67.399191\n",
"2016 65.028724\n",
"2017 67.557191\n",
"Name: Mean Score, dtype: float64"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Other high schools in other boroughs\n",
"\n",
"df[(df['School DBN'] != '02M605')\n",
" & (df['School Level'] == 'High school')\n",
" & (~df['School DBN'].str.contains('M'))\n",
" & (df['Regents Exam']).str.contains('English')\n",
" ].groupby(['Year'])['Mean Score'].mean()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "e0e8e522",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlAAAAE+CAYAAABC9C7yAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAoq0lEQVR4nO3deZyXZb3/8deHARlUNEDwKESIoYDMMOCwKIooii2EaKC5grikHgtPRqGmkqU/SovSk3XMhanU45YHxY6KBiLlhooKgpKdERDCcQEBJWG4fn/MlwlkmxtmmGHm9Xw8eNzf+7q3z3e4gDfXvUVKCUmSJFVdo9ouQJIkaVdjgJIkScrIACVJkpSRAUqSJCkjA5QkSVJGBihJkqSMGu/Mg+2zzz6pQ4cOO/OQkiRJ2+XFF198L6XUenPLdmqA6tChAzNnztyZh5QkSdouEfH2lpZ5Ck+SJCmjKgWoiPiPiJgTEbMj4u6IyI+IlhExJSLm56YtarpYSZKkumCbASoi2gLfBopTSt2APOAbwFjgyZRSJ+DJ3LwkSVK9V9VroBoDzSJiDbA7sBi4DBiQW14CTAO+X831SbusNWvWsGjRIlavXl3bpUjVIj8/n3bt2tGkSZPaLkWqddsMUCmldyLiBmAB8AnweErp8YjYN6W0JLfOkohos7ntI+J84HyA9u3bV1/lUh23aNEimjdvTocOHYiI2i5H2iEpJd5//30WLVrEAQccUNvlSLWuKqfwWgAnAAcA+wN7RMQZVT1ASumWlFJxSqm4devN3gko1UurV6+mVatWhifVCxFBq1atHFGVcqpyEfmxwP+llMpSSmuAPwKHA0sjYj+A3PTdmitT2jUZnlSf2J+lf6lKgFoA9I2I3aPiT89AYC7wEDAit84IYFLNlChpe+25554bzU+cOJGLL764lqqBww8/HIDS0lLuuuuuyvaZM2fy7W9/e4f336FDBwoKCujevTuDBg3iH//4xw7vU5I2pyrXQD0XEfcDLwFrgZeBW4A9gXsj4hwqQtbwmixU2tV1GPtIte6vdPxXq3V/O8Nf//pX4F8B6rTTTgOguLiY4uLiajnG1KlT2Weffbj88su57rrruPHGGyuXpZRIKdGokY/Ak7RjqvS3SErp6pRS55RSt5TSmSmlf6aU3k8pDUwpdcpNP6jpYiVVn5EjR3L//fdXzq8frZo2bRpHHXUUJ598MgcddBBjx47lzjvvpHfv3hQUFPDWW28B8PDDD9OnTx969OjBsccey9KlSwEYN24co0aNYsCAAXTs2HGjALP+GGPHjuXpp5+mqKiICRMmMG3aNAYPHgzAqlWrGDVqFL169aJHjx5MmlQxuD1nzhx69+5NUVERhYWFzJ8/f6vfr3///vztb3+jtLSULl26cNFFF9GzZ08WLlzI9ddfT69evSgsLOTqq68GKkJd586dGTFiBIWFhQwbNoyPP/64On7UkuqhnfoqF0k71yeffEJRUVHl/AcffMCQIUO2ud0rr7zC3LlzadmyJR07duTcc8/l+eef55e//CU33XQTv/jFLzjiiCN49tlniQhuvfVWfvrTn/Kzn/0MgHnz5jF16lRWrFjBwQcfzIUXXrjRre/jx4/nhhtuYPLkyUBFaFvv2muv5ZhjjuH2229n2bJl9O7dm2OPPZbf/OY3jB49mtNPP51PP/2U8vLyrX6HyZMnU1BQAMAbb7zBHXfcwc0338zjjz/O/Pnzef7550kpMWTIEKZPn0779u154403uO222+jXrx+jRo3i5ptv5rvf/W5Vf9zaBVT3SHAWu+KosbbMACXVY82aNWPWrFmV8xMnTqzS+yh79erFfvvtB8CBBx7IoEGDACgoKGDq1KlAxWMaTjnlFJYsWcKnn3660a3tX/3qV2natClNmzalTZs2LF26lHbt2lWp5scff5yHHnqIG264Aai4m3HBggUcdthhXHvttSxatIiTTjqJTp06bXb7o48+mry8PAoLC/nxj3/MsmXL+MIXvkDfvn0r9//444/To0cPAFauXMn8+fNp3749n//85+nXrx8AZ5xxBjfeeKMBStJmGaCkBqpx48asW7cOqLg26NNPP61c1rRp08rPjRo1qpxv1KgRa9euBeBb3/oW3/nOdxgyZAjTpk1j3Lhxm90+Ly+vcpuqSCnxwAMPcPDBB2/U3qVLF/r06cMjjzzC8ccfz6233soxxxyzyfbrr4Fab9myZeyxxx4b7f+yyy7jm9/85kbblZaWbnKXmXedSdoSr6SUGqgOHTrw4osvAjBp0iTWrFmTafvly5fTtm1bAEpKSjJt27x5c1asWLHZZccffzw33XQTKSUAXn75ZQD+/ve/07FjR7797W8zZMgQXn311UzH3HD/t99+OytXrgTgnXfe4d13K57CsmDBAp555hkA7r77bo444ojtOoak+s8AJTVQ5513Hk899RS9e/fmueee22iUpirGjRvH8OHDOfLIIzca8amKwsJCGjduTPfu3ZkwYcJGy6688krWrFlDYWEh3bp148orrwTgnnvuoVu3bhQVFTFv3jzOOuusTMdcb9CgQZx22mkcdthhFBQUMGzYsMow16VLF0pKSigsLOSDDz7gwgsv3K5jSKr/Yv3/8naG4uLiVJXrL6T6YO7cuXTp0qW2y1AVlZaWMnjwYGbPnl3bpdRpu3q/9iJyZRERL6aUNvuMFUegJEmSMjJASRIV14Q5+iSpqgxQkiRJGRmgJEmSMjJASZIkZWSAkiRJysgAJdVjixYt4oQTTqBTp04ceOCBjB49uvKJ47NmzeJPf/pT5brjxo2rfH1KdRg5ciS77777Rg/MHD16NBHBe++9t9373PAFyNuybNkybr755sr50tJS7rrrru06dlXrWf/C5MWLFzNs2LBt7mP9+pJ2Lb7KpQp8boiqxbi9q3l/y7e6OKXESSedxIUXXsikSZMoLy/n/PPP54orruD6669n1qxZzJw5k6985SvVUk55eTl5eXkbtX3xi19k0qRJnHHGGaxbt46pU6dWPr18Z1gfoC666CLgXwHqtNNOq/Fj77///pnCnqRdiyNQUj315z//mfz8fM4++2yg4p10EyZM4Pbbb+ejjz7iqquu4p577qGoqIh77rkHgNdff50BAwbQsWNHbrzxxsp9/eEPf6B3794UFRXxzW9+k/LycqBi9OSqq66iT58+la9A2dCpp55aue9p06bRr18/Gjf+1//bhg4dyqGHHsohhxzCLbfcUtm+5557csUVV9C9e3f69u3L0qVLK5dNnz6dww8/nI4dO1YGlJUrVzJw4EB69uxJQUEBkyZNAmDs2LG89dZbFBUVMWbMGMaOHcvTTz9NUVEREyZMoLS0lCOPPJKePXvSs2dP/vrXv1bWOmDAAIYNG0bnzp05/fTTyfrQ4dLSUrp16wbAxx9/zMknn0xhYSGnnHIKffr02eilzpv7rvfddx/dunWje/fu9O/fP9OxJdU8R6CkemrOnDkceuihG7XttddetG/fntLSUq655hpmzpzJf/7nfwJw4XfG8tKrs7n1nodZtWolJxzVi35fO5WFpX/ntyV/4Nf3PEKTJk249vJLGX/Tb/nasG+watUqmu93AL994DEAXl20rPJYH676lN1a7s/b7/yDGbNL+dWtJXz1xJN5aPIjzFm8nBarG3Ppjyawd4sWdGrVlF69evH1r3+dVq1asWrVKvr27cu1117L9773PX7729/ygx/8AIAlS5YwY8YM5s2bx5AhQxg2bBj5+fk8+OCD7LXXXrz33nv07duXIUOGMH78eGbPns2sWbOAimB0ww03MHnyZKAi2EyZMoX8/Hzmz5/PqaeeWhlsXn75ZebMmcP+++9Pv379+Mtf/rLZd+ONGTOGH//4x1v9vbj55ptp0aIFr776KrNnz6aoqKhy2Za+6zXXXMNjjz1G27ZtWbZs2Rb3Lal2GKCkeiqlRERUuR3gyGMGsVvTpuzWtCkt92nNB++9y3N/eYq5r77C6YOPAWD16tW03Kc1UDGqdexXhmy1joFfHsyjDz3Aay/P5MrxG7/37q47/os/PzqZ/CZ5LFy4kPnz59OqVSt22203Bg8eDMChhx7KlClTKrcZOnQojRo1omvXrpWjNSklLr/8cqZPn06jRo145513Nhq12pI1a9Zw8cUXM2vWLPLy8njzzTcrl/Xu3Zt27doBUFRURGlp6WYD1PXXX7/RtU6bu6ZpxowZjB49GoBu3bpRWFhYuWxL37Vfv36MHDmSk08+mZNOOmmb30XSzmWAkuqpQw45hAceeGCjto8++oiFCxdy4IEH8uKLL26yzW67Na383KhRI9auLScl+NrwbzB67NWbrt80f5Prnj7rS0NO4htfHsDXhp1Ko0b/umrghWdm8OyMafxu0uP06bQ/AwYMYPXq1QA0adKkMuTl5eWxdu3ayu2aNv1XjetPq915552UlZXx4osv0qRJEzp06FC5r62ZMGEC++67L6+88grr1q0jPz9/s8f5bA1Zbe3035a+629+8xuee+45HnnkEYqKipg1axatWrXa7hokVS8DlFRPDRw4kLFjx/K73/2Os846i/Lyci699NLKu+OaN2++0R1yW9KnX38uOed0zjj3Ilrt05rlH37IqlUr2L9d+yrVsV/bz3Px935A3yMGbNS+8qOP2Gvvz9Gs2e7MmzePZ599dnu+JgDLly+nTZs2NGnShKlTp/L2228DbPIdPzu/fPly2rVrR6NGjSgpKam8tqu6HXHEEdx7770cffTRvP7667z22mvb3Oatt96iT58+9OnT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\n",
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Visualization\n",
"\n",
"# Dictionary made by manually entering data from three previous cells.\n",
"# I wish I knew how to do this programmatically.\n",
"\n",
"d = {'Humanities Prep': [74.266667, 73.725000, 78.062500],\n",
" 'Other Manhattan Highs': [70.562738, 70.612695, 72.814383],\n",
" 'High Schools Other Boroughs': [67.399191, 65.028724, 67.557191]}\n",
"new_df = pd.DataFrame(data = d, index = ['2015', '2016', '2017'])\n",
"new_df.plot(kind = 'bar', figsize = (10, 5))"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "207154ad",
"metadata": {},
"outputs": [],
"source": [
"# a more elegant way to create the dictionary\n",
"\n",
"test0 = df[df['School DBN'] == '02M605'].groupby(['Year'])['Mean Score'].mean()\n",
"test1 = df[(df['School DBN'] != '02M605')\n",
" & (df['School Level'] == 'High school')\n",
" & (df['School DBN'].str.contains('M'))\n",
" & (df['Regents Exam']).str.contains('English')\n",
" ].groupby(['Year'])['Mean Score'].mean()\n",
"test2 = df[(df['School DBN'] != '02M605')\n",
" & (df['School Level'] == 'High school')\n",
" & (~df['School DBN'].str.contains('M'))\n",
" & (df['Regents Exam']).str.contains('English')\n",
" ].groupby(['Year'])['Mean Score'].mean()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "19a88bc3",
"metadata": {},
"outputs": [],
"source": [
"# 3 dictionaries to 3 dataframes\n",
"\n",
"dict0 = pd.DataFrame.from_dict(test0)\n",
"dict1 = pd.DataFrame.from_dict(test1)\n",
"dict2 = pd.DataFrame.from_dict(test2)\n"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "7349a50d",
"metadata": {},
"outputs": [],
"source": [
"# join dataframes dict0 and dict1\n",
"\n",
"temp = dict0.join(dict1, lsuffix='_Humanities_Prep', rsuffix='_Other_Manhattan_Highs')\n",
"\n",
"# join temp and dict2\n",
"\n",
"newest_df = temp.join(dict2)\n",
"\n",
"# rename last column\n",
"\n",
"newest_df = newest_df.rename(columns = {'Mean Score': 'High Schools Other Boroughs'})"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "6d645276",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='Year'>"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlAAAAFMCAYAAAAEHoI4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAx0ElEQVR4nO3dd3hUZfrG8fthQLp0EEEJIgIxwYChCSJFiq4FVESkRJGiogK7oqiLxM4Ku7rY2dWlCCGIBRZ2lSIxorQAoSNYQhF+EhFQEJAk7++PDLPBBJIDEzIk38915ZqZU5+ZOSE37znnfc05JwAAAORdsYIuAAAA4FxDgAIAAPCIAAUAAOARAQoAAMAjAhQAAIBHBCgAAACPip/NnVWtWtWFhYWdzV0CAACclpUrV/7onKuW07yzGqDCwsKUlJR0NncJAABwWsxs28nmcQoPAADAozwFKDMbbmYbzGy9mcWZWSkzq2xm881sq/+xUn4XCwAAEApyDVBmVkvSQ5KinXMRknyS7pA0UtJC51x9SQv9rwEAAAq9vF4DVVxSaTM7JqmMpF2SHpPUzj9/kqQESY8GuT7grDp27Jh27typI0eOFHQpQKFWqlQp1a5dWyVKlCjoUoDTkmuAcs59b2bjJG2XdFjSPOfcPDOr4Zzb7V9mt5lVz2l9MxskaZAkXXzxxcGrHMgHO3fuVPny5RUWFiYzK+hygELJOae9e/dq586dqlu3bkGXA5yWvJzCqyTpZkl1JV0oqayZ9cnrDpxzE5xz0c656GrVcrwTEAgZR44cUZUqVQhPQD4yM1WpUoWWXpzT8nIR+bWSvnPOpTrnjkn6QNJVkn4ws5qS5H/ck39lAmcP4QnIf/ye4VyXlwC1XVJLMytjmUd8R0mbJM2WFONfJkbSrPwpEQAAILTk5RqoZWY2U9IqSWmSVkuaIKmcpBlmdo8yQ1aP/CwUKAhhI+cGdXspY/6Q6zJmpj59+mjKlCmSpLS0NNWsWVMtWrTQnDlzglpPVkuXLtXQoUN19OhRHT16VD179lRsbGy+7S8nxzvbrVq1qiQpISFB48aNy9f3fSrXX3+9pk2bJkmaNm2a7r//fknSrl279NBDD2nmzJlB2U9YWJjKly+vYsWKqUaNGpo8ebIuuOCCoGwbQP7IUz9QzrnRzrmGzrkI51xf59xR59xe51xH51x9/+NP+V0sUBSULVtW69ev1+HDhyVJ8+fPV61atfJ9vzExMZowYYKSk5O1fv163X777We8zfT09CBUVnD+85//qGLFitq/f79ef/31wPQLL7wwaOHpuEWLFmnNmjWKjo7W888/f8I855wyMjKCuj8AZ+asDuUCIG+uu+46zZ07V7fddpvi4uLUq1cvff7555KkQ4cO6cEHH9S6deuUlpam2NhY3XzzzUpJSVHfvn116NAhSdKrr76qq666SgkJCYqNjVXVqlW1fv16XXnllXr33XezXYOyZ88e1axZU5Lk8/kUHh4uSTp48KAefPBBJSUlycw0evRo3XrrrYqLi9Pzzz8v55z+8Ic/6C9/+YskqVy5cvrjH/+oTz75RH/961+VkpKi8ePH67ffflOLFi30+uuvy+fzef5MYmNjVa5cOT388MOSpIiIiEDLVNeuXdWmTRstXbpUV1xxhe6++26NHj1ae/bs0dSpU9W8eXMtX75cw4YN0+HDh1W6dGn961//UoMGDTRx4kTNnj1bv/76q7755ht1795dL774oqT/tYiNHDlS33zzjaKiotSpUycNGTJEN9xwg9avX6/09HSNHDlSCQkJOnr0qIYMGaLBgwdr9+7d6tmzp37++WelpaXpjTfe0NVXX53r+2zbtq3Gjx+vlJQUXXfddWrfvr2WLFmijz76SDNmzNCMGTN09OhRde/eXU899ZRSUlLUtWtXtWjRQqtXr9Zll12myZMnq0yZMp4/46Ig2K3KXuSlBRrnDoZyAULQHXfcoenTp+vIkSNau3atWrRoEZj33HPPqUOHDlqxYoUWLVqkESNG6NChQ6pevbrmz5+vVatWKT4+Xg899FBgndWrV+vll1/Wxo0b9e233+qLL77Its/hw4erQYMG6t69u956663AHVLPPPOMKlSooHXr1mnt2rXq0KGDdu3apUcffVSffvqpkpOTtWLFCn300UeSMgNeRESEli1bpipVqig+Pl5ffPGFkpOT5fP5NHXq1FO+9/bt2ysqKkpRUVEaMGBAnj6vr7/+WkOHDtXatWu1efNmTZs2TYsXL9a4ceMCrTkNGzZUYmKiVq9eraefflqPP/54YP3k5GTFx8dr3bp1io+P144dO07Y/pgxY1SvXj0lJydr7NixJ8x7++23VaFCBa1YsUIrVqzQP/7xD3333XeaNm2aunTpouTkZK1Zs0ZR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IJ/Pp2uvv0mStOyLz7Rp7Rr1vqFDoNbKVavl+J6dczKzPE+XpI4dO6pChcwL/cPDw7Vt2zbt379fGzduVOvWrSVJv/32W2AAXknq2bNnjtv6vVtuuUXTp0/XsmXL9NZbb50wb/z48frwww8lSTt27NDWrVtVpUoVnXfeeYFWmyuvvFLz588PrNOtWzcVK1ZM4eHhgZYp55wef/xxJSYmqlixYvr+++9PaLU6mWPHjp3Rd53V1KlTA6fqjo+r93uLFy8OvN+uXbuqUqVKgXl169ZVVFRU4D2npKRIyjyGe/furW7duqlbt265vqciIdg3pXjaNzewBBsBCghRN910kx5++GElJCQEWjikzD+677//vho0aHDC8rGxsapRo4bWrFmjjIwMlSpVKjCvZMmSgec+n09paWk57vOisLq6KOwe3XJnjNpFXar9+37KDDA6McCc6rTQeSVLBVqRnJNu7HGHho4cfdLlj7v88su1evVqZWRkqFixzMbxjIwMrVmzRo0aNdLOnTuzrZPT+3LOqVOnToqLi8txP2XLls21FimzFbBp06aKiYkJ1CNlntpasGCBlixZojJlyqhdu3Y64m+tK1GiRCDs/f5zzlrr8c9v6tSpSk1N1cqVK1WiRAmFhYUFtnUqL7300hl/116c6vv+/f6On8KbO3euEhMTNXv2bD3zzDPasGHDCadBgXMdp/CAU4k9ENwfD/r3768nn3wy2zhpXbp00SuvvBL4o7Z69WpJmXew1axZU8WKFdOUKVNOeq3RySQu/CSwze3ffSNfMZ/Kn19Brdq21/RJ/zsV9fP+/YpscqVWLv1C+37aq/T0dH08631Ft2ydbZstWrfVgrmztffH1Mwa9+3Trp3bsy0nZV643aRJEz377LOBac8++6yaNm2qSy+9VOXLlz/hzriTadmypb744gt9/fXXkqRff/31hBaavLr44ov13HPPBS7kPu7AgQOqVKmSypQpo82bN2vp0qWet511W9WrV1eJEiW0aNEibdu2TZKyvdffvz7T79qrNm3aaMaMGZIyW0D37dt3yuUzMjK0Y8cOtW/fXi+++KL2798fuA4NKCwIUECIql27toYOHZpt+qhRo3Ts2DE1btxYERERgYuu77//fk2aNEktW7bUli1b8tzSctyc9+N10zXNdHuXq/XE0Hv1/PgJ8vl8GvTQw/r5wH7d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\n",
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Visualization 2\n",
"\n",
"newest_df.plot(kind = 'bar', figsize = (10, 5))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "6749209e",
"metadata": {},
"outputs": [],
"source": [
"# Conclusions\n",
"\n",
"# We lost a lot of data from the dataset by dropping the 's' values. Maybe we should have done mean imputation.\n",
"# Humanities Prep Academy scored higher in the English Regents exam than other high schools in Manhattan\n",
"# and higher than schools in other boroughs, for every year surveyed."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}