diff --git a/your-code/main.ipynb b/your-code/main.ipynb
index 4128c1e..cdbdc1e 100755
--- a/your-code/main.ipynb
+++ b/your-code/main.ipynb
@@ -16,7 +16,9 @@
"metadata": {},
"outputs": [],
"source": [
- "# import numpy and pandas\n"
+ "# import numpy and pandas\n",
+ "import numpy as np\n",
+ "import pandas as pd"
]
},
{
@@ -30,7 +32,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@@ -48,11 +50,131 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Name | \n",
+ " Job Titles | \n",
+ " Department | \n",
+ " Full or Part-Time | \n",
+ " Salary or Hourly | \n",
+ " Typical Hours | \n",
+ " Annual Salary | \n",
+ " Hourly Rate | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " AARON, JEFFERY M | \n",
+ " SERGEANT | \n",
+ " POLICE | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 101442.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " AARON, KARINA | \n",
+ " POLICE OFFICER (ASSIGNED AS DETECTIVE) | \n",
+ " POLICE | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 94122.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " AARON, KIMBERLEI R | \n",
+ " CHIEF CONTRACT EXPEDITER | \n",
+ " GENERAL SERVICES | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 101592.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " ABAD JR, VICENTE M | \n",
+ " CIVIL ENGINEER IV | \n",
+ " WATER MGMNT | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 110064.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " ABASCAL, REECE E | \n",
+ " TRAFFIC CONTROL AIDE-HOURLY | \n",
+ " OEMC | \n",
+ " P | \n",
+ " Hourly | \n",
+ " 20.0 | \n",
+ " NaN | \n",
+ " 19.86 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Name Job Titles \\\n",
+ "0 AARON, JEFFERY M SERGEANT \n",
+ "1 AARON, KARINA POLICE OFFICER (ASSIGNED AS DETECTIVE) \n",
+ "2 AARON, KIMBERLEI R CHIEF CONTRACT EXPEDITER \n",
+ "3 ABAD JR, VICENTE M CIVIL ENGINEER IV \n",
+ "4 ABASCAL, REECE E TRAFFIC CONTROL AIDE-HOURLY \n",
+ "\n",
+ " Department Full or Part-Time Salary or Hourly Typical Hours \\\n",
+ "0 POLICE F Salary NaN \n",
+ "1 POLICE F Salary NaN \n",
+ "2 GENERAL SERVICES F Salary NaN \n",
+ "3 WATER MGMNT F Salary NaN \n",
+ "4 OEMC P Hourly 20.0 \n",
+ "\n",
+ " Annual Salary Hourly Rate \n",
+ "0 101442.0 NaN \n",
+ "1 94122.0 NaN \n",
+ "2 101592.0 NaN \n",
+ "3 110064.0 NaN \n",
+ "4 NaN 19.86 "
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "# Your code here:\n"
+ "# Your code here:\n",
+ "salaries.head()"
]
},
{
@@ -64,11 +186,31 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 4,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Name 0\n",
+ "Job Titles 0\n",
+ "Department 0\n",
+ "Full or Part-Time 0\n",
+ "Salary or Hourly 0\n",
+ "Typical Hours 25161\n",
+ "Annual Salary 8022\n",
+ "Hourly Rate 25161\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "# Your code here:\n"
+ "# Your code here:\n",
+ "salaries.isnull().sum()"
]
},
{
@@ -80,12 +222,26 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 8,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Salary 25161\n",
+ "Hourly 8022\n",
+ "Name: Salary or Hourly, dtype: int64"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"# Your code here:\n",
- "\n"
+ "\n",
+ "salaries[\"Salary or Hourly\"].value_counts()"
]
},
{
@@ -104,11 +260,58 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 13,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "POLICE 13414\n",
+ "FIRE 4641\n",
+ "STREETS & SAN 2198\n",
+ "OEMC 2102\n",
+ "WATER MGMNT 1879\n",
+ "AVIATION 1629\n",
+ "TRANSPORTN 1140\n",
+ "PUBLIC LIBRARY 1015\n",
+ "GENERAL SERVICES 980\n",
+ "FAMILY & SUPPORT 615\n",
+ "FINANCE 560\n",
+ "HEALTH 488\n",
+ "CITY COUNCIL 411\n",
+ "LAW 407\n",
+ "BUILDINGS 269\n",
+ "COMMUNITY DEVELOPMENT 207\n",
+ "BUSINESS AFFAIRS 171\n",
+ "COPA 116\n",
+ "BOARD OF ELECTION 107\n",
+ "DoIT 99\n",
+ "PROCUREMENT 92\n",
+ "INSPECTOR GEN 87\n",
+ "MAYOR'S OFFICE 85\n",
+ "CITY CLERK 84\n",
+ "ANIMAL CONTRL 81\n",
+ "HUMAN RESOURCES 79\n",
+ "CULTURAL AFFAIRS 65\n",
+ "BUDGET & MGMT 46\n",
+ "ADMIN HEARNG 39\n",
+ "DISABILITIES 28\n",
+ "TREASURER 22\n",
+ "HUMAN RELATIONS 16\n",
+ "BOARD OF ETHICS 8\n",
+ "POLICE BOARD 2\n",
+ "LICENSE APPL COMM 1\n",
+ "Name: Department, dtype: int64"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "# Your code here:\n"
+ "# Your code here:\n",
+ "salaries[\"Department\"].value_counts()"
]
},
{
@@ -122,11 +325,234 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
- "# Your code here:\n"
+ "from scipy.stats import trim_mean, mode, skew, gaussian_kde, pearsonr, spearmanr, beta\n",
+ "from statsmodels.stats.weightstats import ztest as ztest\n",
+ "from scipy.stats import ttest_ind, norm, t\n",
+ "from scipy.stats import f_oneway"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Name | \n",
+ " Job Titles | \n",
+ " Department | \n",
+ " Full or Part-Time | \n",
+ " Salary or Hourly | \n",
+ " Typical Hours | \n",
+ " Annual Salary | \n",
+ " Hourly Rate | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 4 | \n",
+ " ABASCAL, REECE E | \n",
+ " TRAFFIC CONTROL AIDE-HOURLY | \n",
+ " OEMC | \n",
+ " P | \n",
+ " Hourly | \n",
+ " 20.0 | \n",
+ " NaN | \n",
+ " 19.86 | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " ABBATACOLA, ROBERT J | \n",
+ " ELECTRICAL MECHANIC | \n",
+ " AVIATION | \n",
+ " F | \n",
+ " Hourly | \n",
+ " 40.0 | \n",
+ " NaN | \n",
+ " 46.10 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " ABBATE, JOSEPH L | \n",
+ " POOL MOTOR TRUCK DRIVER | \n",
+ " STREETS & SAN | \n",
+ " F | \n",
+ " Hourly | \n",
+ " 40.0 | \n",
+ " NaN | \n",
+ " 35.60 | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " ABBOTT, BETTY L | \n",
+ " FOSTER GRANDPARENT | \n",
+ " FAMILY & SUPPORT | \n",
+ " P | \n",
+ " Hourly | \n",
+ " 20.0 | \n",
+ " NaN | \n",
+ " 2.65 | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " ABDULLAH, LAKENYA N | \n",
+ " CROSSING GUARD | \n",
+ " OEMC | \n",
+ " P | \n",
+ " Hourly | \n",
+ " 20.0 | \n",
+ " NaN | \n",
+ " 17.68 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Name Job Titles Department \\\n",
+ "4 ABASCAL, REECE E TRAFFIC CONTROL AIDE-HOURLY OEMC \n",
+ "6 ABBATACOLA, ROBERT J ELECTRICAL MECHANIC AVIATION \n",
+ "7 ABBATE, JOSEPH L POOL MOTOR TRUCK DRIVER STREETS & SAN \n",
+ "10 ABBOTT, BETTY L FOSTER GRANDPARENT FAMILY & SUPPORT \n",
+ "18 ABDULLAH, LAKENYA N CROSSING GUARD OEMC \n",
+ "\n",
+ " Full or Part-Time Salary or Hourly Typical Hours Annual Salary \\\n",
+ "4 P Hourly 20.0 NaN \n",
+ "6 F Hourly 40.0 NaN \n",
+ "7 F Hourly 40.0 NaN \n",
+ "10 P Hourly 20.0 NaN \n",
+ "18 P Hourly 20.0 NaN \n",
+ "\n",
+ " Hourly Rate \n",
+ "4 19.86 \n",
+ "6 46.10 \n",
+ "7 35.60 \n",
+ "10 2.65 \n",
+ "18 17.68 "
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Your code here:\n",
+ "only_hourly = salaries[salaries[\"Salary or Hourly\"] == \"Hourly\"]\n",
+ "only_hourly.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "8022"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(only_hourly)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "32.78855771628128"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# The hourly wage of all hourly workers is significantly different from $30/hr\n",
+ "only_hourly[\"Hourly Rate\"].mean()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "statistic, p_value = ztest(only_hourly[\"Hourly Rate\"], value = 30, alternative=\"two-sided\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1.8228873859286195e-94"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "p_value"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The hourly wage is not significantly different\n"
+ ]
+ }
+ ],
+ "source": [
+ "if p_value < 0.05:\n",
+ " print (\"The hourly wage is not significantly different\")\n",
+ "else:\n",
+ " print (\"There is not enough information to accept H0\")"
]
},
{
@@ -144,7 +570,338 @@
"metadata": {},
"outputs": [],
"source": [
- "# Your code here:\n"
+ "# Your code here:\n",
+ "ly_mean = 86000\n",
+ "ty_mean higher"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Name | \n",
+ " Job Titles | \n",
+ " Department | \n",
+ " Full or Part-Time | \n",
+ " Salary or Hourly | \n",
+ " Typical Hours | \n",
+ " Annual Salary | \n",
+ " Hourly Rate | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " AARON, JEFFERY M | \n",
+ " SERGEANT | \n",
+ " POLICE | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 101442.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " AARON, KARINA | \n",
+ " POLICE OFFICER (ASSIGNED AS DETECTIVE) | \n",
+ " POLICE | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 94122.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " ABBATE, TERRY M | \n",
+ " POLICE OFFICER | \n",
+ " POLICE | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 93354.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " ABDALLAH, ZAID | \n",
+ " POLICE OFFICER | \n",
+ " POLICE | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 84054.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " ABDELHADI, ABDALMAHD | \n",
+ " POLICE OFFICER | \n",
+ " POLICE | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 87006.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Name Job Titles Department \\\n",
+ "0 AARON, JEFFERY M SERGEANT POLICE \n",
+ "1 AARON, KARINA POLICE OFFICER (ASSIGNED AS DETECTIVE) POLICE \n",
+ "9 ABBATE, TERRY M POLICE OFFICER POLICE \n",
+ "11 ABDALLAH, ZAID POLICE OFFICER POLICE \n",
+ "12 ABDELHADI, ABDALMAHD POLICE OFFICER POLICE \n",
+ "\n",
+ " Full or Part-Time Salary or Hourly Typical Hours Annual Salary \\\n",
+ "0 F Salary NaN 101442.0 \n",
+ "1 F Salary NaN 94122.0 \n",
+ "9 F Salary NaN 93354.0 \n",
+ "11 F Salary NaN 84054.0 \n",
+ "12 F Salary NaN 87006.0 \n",
+ "\n",
+ " Hourly Rate \n",
+ "0 NaN \n",
+ "1 NaN \n",
+ "9 NaN \n",
+ "11 NaN \n",
+ "12 NaN "
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "only_police = salaries[salaries[\"Department\"] == \"POLICE\"]\n",
+ "only_police.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Name | \n",
+ " Job Titles | \n",
+ " Department | \n",
+ " Full or Part-Time | \n",
+ " Salary or Hourly | \n",
+ " Typical Hours | \n",
+ " Annual Salary | \n",
+ " Hourly Rate | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " AARON, JEFFERY M | \n",
+ " SERGEANT | \n",
+ " POLICE | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 101442.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " AARON, KARINA | \n",
+ " POLICE OFFICER (ASSIGNED AS DETECTIVE) | \n",
+ " POLICE | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 94122.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " ABBATE, TERRY M | \n",
+ " POLICE OFFICER | \n",
+ " POLICE | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 93354.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " ABDALLAH, ZAID | \n",
+ " POLICE OFFICER | \n",
+ " POLICE | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 84054.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " ABDELHADI, ABDALMAHD | \n",
+ " POLICE OFFICER | \n",
+ " POLICE | \n",
+ " F | \n",
+ " Salary | \n",
+ " NaN | \n",
+ " 87006.0 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Name Job Titles Department \\\n",
+ "0 AARON, JEFFERY M SERGEANT POLICE \n",
+ "1 AARON, KARINA POLICE OFFICER (ASSIGNED AS DETECTIVE) POLICE \n",
+ "9 ABBATE, TERRY M POLICE OFFICER POLICE \n",
+ "11 ABDALLAH, ZAID POLICE OFFICER POLICE \n",
+ "12 ABDELHADI, ABDALMAHD POLICE OFFICER POLICE \n",
+ "\n",
+ " Full or Part-Time Salary or Hourly Typical Hours Annual Salary \\\n",
+ "0 F Salary NaN 101442.0 \n",
+ "1 F Salary NaN 94122.0 \n",
+ "9 F Salary NaN 93354.0 \n",
+ "11 F Salary NaN 84054.0 \n",
+ "12 F Salary NaN 87006.0 \n",
+ "\n",
+ " Hourly Rate \n",
+ "0 NaN \n",
+ "1 NaN \n",
+ "9 NaN \n",
+ "11 NaN \n",
+ "12 NaN "
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "only_police2 = only_police[only_police[\"Salary or Hourly\"] == \"Salary\"]\n",
+ "only_police2.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "86486.41450313339"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "only_police2[\"Annual Salary\"].mean()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "statistic, p_value = ztest(only_police2[\"Annual Salary\"], value = 86000, alternative=\"smaller\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.9989719154712452"
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "p_value"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "There is not enough information to accept H0\n"
+ ]
+ }
+ ],
+ "source": [
+ "if p_value < 0.025:\n",
+ " print (\"Salaries this year are higher than last year's mean of $86000/year a year for all salaried employees\")\n",
+ "else:\n",
+ " print (\"There is not enough information to accept H0\")"
]
},
{
@@ -156,11 +913,330 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 43,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | Salary or Hourly | \n",
+ " Hourly | \n",
+ "
\n",
+ " \n",
+ " | Department | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | ANIMAL CONTRL | \n",
+ " 19 | \n",
+ "
\n",
+ " \n",
+ " | AVIATION | \n",
+ " 1082 | \n",
+ "
\n",
+ " \n",
+ " | BUDGET & MGMT | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | BUSINESS AFFAIRS | \n",
+ " 7 | \n",
+ "
\n",
+ " \n",
+ " | CITY COUNCIL | \n",
+ " 64 | \n",
+ "
\n",
+ " \n",
+ " | COMMUNITY DEVELOPMENT | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | CULTURAL AFFAIRS | \n",
+ " 7 | \n",
+ "
\n",
+ " \n",
+ " | FAMILY & SUPPORT | \n",
+ " 287 | \n",
+ "
\n",
+ " \n",
+ " | FINANCE | \n",
+ " 44 | \n",
+ "
\n",
+ " \n",
+ " | FIRE | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | GENERAL SERVICES | \n",
+ " 765 | \n",
+ "
\n",
+ " \n",
+ " | HEALTH | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | HUMAN RESOURCES | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | LAW | \n",
+ " 40 | \n",
+ "
\n",
+ " \n",
+ " | MAYOR'S OFFICE | \n",
+ " 8 | \n",
+ "
\n",
+ " \n",
+ " | OEMC | \n",
+ " 1273 | \n",
+ "
\n",
+ " \n",
+ " | POLICE | \n",
+ " 10 | \n",
+ "
\n",
+ " \n",
+ " | PROCUREMENT | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | PUBLIC LIBRARY | \n",
+ " 299 | \n",
+ "
\n",
+ " \n",
+ " | STREETS & SAN | \n",
+ " 1862 | \n",
+ "
\n",
+ " \n",
+ " | TRANSPORTN | \n",
+ " 725 | \n",
+ "
\n",
+ " \n",
+ " | WATER MGMNT | \n",
+ " 1513 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "Salary or Hourly Hourly\n",
+ "Department \n",
+ "ANIMAL CONTRL 19\n",
+ "AVIATION 1082\n",
+ "BUDGET & MGMT 2\n",
+ "BUSINESS AFFAIRS 7\n",
+ "CITY COUNCIL 64\n",
+ "COMMUNITY DEVELOPMENT 4\n",
+ "CULTURAL AFFAIRS 7\n",
+ "FAMILY & SUPPORT 287\n",
+ "FINANCE 44\n",
+ "FIRE 2\n",
+ "GENERAL SERVICES 765\n",
+ "HEALTH 3\n",
+ "HUMAN RESOURCES 4\n",
+ "LAW 40\n",
+ "MAYOR'S OFFICE 8\n",
+ "OEMC 1273\n",
+ "POLICE 10\n",
+ "PROCUREMENT 2\n",
+ "PUBLIC LIBRARY 299\n",
+ "STREETS & SAN 1862\n",
+ "TRANSPORTN 725\n",
+ "WATER MGMNT 1513"
+ ]
+ },
+ "execution_count": 43,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Your code here:\n",
+ "my_crosstab = pd.crosstab(only_hourly[\"Department\"], only_hourly[\"Salary or Hourly\"])\n",
+ "my_crosstab"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | Salary or Hourly | \n",
+ " Hourly | \n",
+ "
\n",
+ " \n",
+ " | Department | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | STREETS & SAN | \n",
+ " 1862 | \n",
+ "
\n",
+ " \n",
+ " | WATER MGMNT | \n",
+ " 1513 | \n",
+ "
\n",
+ " \n",
+ " | OEMC | \n",
+ " 1273 | \n",
+ "
\n",
+ " \n",
+ " | AVIATION | \n",
+ " 1082 | \n",
+ "
\n",
+ " \n",
+ " | GENERAL SERVICES | \n",
+ " 765 | \n",
+ "
\n",
+ " \n",
+ " | TRANSPORTN | \n",
+ " 725 | \n",
+ "
\n",
+ " \n",
+ " | PUBLIC LIBRARY | \n",
+ " 299 | \n",
+ "
\n",
+ " \n",
+ " | FAMILY & SUPPORT | \n",
+ " 287 | \n",
+ "
\n",
+ " \n",
+ " | CITY COUNCIL | \n",
+ " 64 | \n",
+ "
\n",
+ " \n",
+ " | FINANCE | \n",
+ " 44 | \n",
+ "
\n",
+ " \n",
+ " | LAW | \n",
+ " 40 | \n",
+ "
\n",
+ " \n",
+ " | ANIMAL CONTRL | \n",
+ " 19 | \n",
+ "
\n",
+ " \n",
+ " | POLICE | \n",
+ " 10 | \n",
+ "
\n",
+ " \n",
+ " | MAYOR'S OFFICE | \n",
+ " 8 | \n",
+ "
\n",
+ " \n",
+ " | CULTURAL AFFAIRS | \n",
+ " 7 | \n",
+ "
\n",
+ " \n",
+ " | BUSINESS AFFAIRS | \n",
+ " 7 | \n",
+ "
\n",
+ " \n",
+ " | HUMAN RESOURCES | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | COMMUNITY DEVELOPMENT | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | HEALTH | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | FIRE | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | PROCUREMENT | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | BUDGET & MGMT | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "Salary or Hourly Hourly\n",
+ "Department \n",
+ "STREETS & SAN 1862\n",
+ "WATER MGMNT 1513\n",
+ "OEMC 1273\n",
+ "AVIATION 1082\n",
+ "GENERAL SERVICES 765\n",
+ "TRANSPORTN 725\n",
+ "PUBLIC LIBRARY 299\n",
+ "FAMILY & SUPPORT 287\n",
+ "CITY COUNCIL 64\n",
+ "FINANCE 44\n",
+ "LAW 40\n",
+ "ANIMAL CONTRL 19\n",
+ "POLICE 10\n",
+ "MAYOR'S OFFICE 8\n",
+ "CULTURAL AFFAIRS 7\n",
+ "BUSINESS AFFAIRS 7\n",
+ "HUMAN RESOURCES 4\n",
+ "COMMUNITY DEVELOPMENT 4\n",
+ "HEALTH 3\n",
+ "FIRE 2\n",
+ "PROCUREMENT 2\n",
+ "BUDGET & MGMT 2"
+ ]
+ },
+ "execution_count": 44,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "# Your code here:\n"
+ "my_crosstab.sort_values('Hourly', ascending=False)"
]
},
{
@@ -172,11 +1248,97 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
- "# Your code here:\n"
+ "streets_and_san = only_hourly[only_hourly[\"Department\"] == \"STREETS & SAN\"]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "dtype('float64')"
+ ]
+ },
+ "execution_count": 63,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "streets_and_san[\"Hourly Rate\"].dtype"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The probability that the two samples have the same mean is: nan\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "C:\\Users\\Marc\\AppData\\Local\\Temp\\ipykernel_2132\\3637988850.py:2: RuntimeWarning: Precision loss occurred in moment calculation due to catastrophic cancellation. This occurs when the data are nearly identical. Results may be unreliable.\n",
+ " p_value = ttest_ind(streets_and_san[\"Hourly Rate\"], 35)[1]\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Your code here:\n",
+ "p_value = ttest_ind(streets_and_san[\"Hourly Rate\"], 35)[1] \n",
+ "\n",
+ "print(f\"The probability that the two samples have the same mean is: {p_value}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Running a ztest as an alternative"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "statistic, p_value = ztest(streets_and_san[\"Hourly Rate\"], value = 35, alternative=\"smaller\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "5.478855641943434e-22"
+ ]
+ },
+ "execution_count": 51,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "p_value"
]
},
{
@@ -200,11 +1362,43 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": 69,
"metadata": {},
"outputs": [],
"source": [
- "# Your code here:\n"
+ "import scipy.stats as st"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "new_list_hourly = salaries[salaries['Salary or Hourly']== 'Hourly' ]['Hourly Rate']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(32.52345834488529, 33.05365708767727)"
+ ]
+ },
+ "execution_count": 77,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Your code here:\n",
+ "st.t.interval(confidence=0.95, df=len(new_list_hourly)-1,\n",
+ " loc=np.mean(new_list_hourly),\n",
+ " scale=st.sem(new_list_hourly))"
]
},
{
@@ -216,11 +1410,52 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 73,
"metadata": {},
"outputs": [],
"source": [
- "# Your code here:\n"
+ "# Your code here:\n",
+ "only_police = salaries[salaries['Department'] == 'POLICE']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "new_salary_list = only_police[only_police[\"Salary or Hourly\"] == \"Salary\"]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 81,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "new_salary_list2 = new_salary_list[\"Annual Salary\"]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 82,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(86177.05631531784, 86795.77269094894)"
+ ]
+ },
+ "execution_count": 82,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "st.t.interval(confidence=0.95, df=len(new_salary_list2)-1,\n",
+ " loc=np.mean(new_salary_list2),\n",
+ " scale=st.sem(new_salary_list2))"
]
},
{
@@ -248,7 +1483,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -262,7 +1497,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.7.3"
+ "version": "3.10.4"
}
},
"nbformat": 4,