Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save LouisJenkinsCS/202b1f214de611b52003dbe237a301fc to your computer and use it in GitHub Desktop.

Select an option

Save LouisJenkinsCS/202b1f214de611b52003dbe237a301fc to your computer and use it in GitHub Desktop.
DSC 201/401 Python Demo
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, world!\n"
]
}
],
"source": [
"print(\"Hello, world!\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"2+2"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = 2\n",
"x"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"y = \"Hello, world!\""
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Hello, world!'"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, world!\n"
]
}
],
"source": [
"print(y)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'HELLO, WORLD!'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y.upper()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"pets = [\"cat\", \"dog\", \"fish\"]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['cat', 'dog', 'fish']"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pets"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"mylist = [x, y, pets]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[2, 'Hello, world!', ['cat', 'dog', 'fish']]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mylist"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"z = 3"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"mylist.append(z)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[2, 'Hello, world!', ['cat', 'dog', 'fish'], 3]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mylist"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mylist[0]"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mylist[-1]"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[2, 'Hello, world!']"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mylist[0:2]"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"myset1 = {2, 3, 4, 5}\n",
"myset2 = {1, 3, 4, 7}"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{2, 3, 4, 5}"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"myset1"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 3, 4, 7}"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"myset2"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3, 4, 5, 7}"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"myset1 | myset2"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{3, 4}"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"myset1 & myset2"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{2, 5}"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"myset1 - myset2"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(myset1)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"mytuple = (1, 2, 3)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1, 2, 3)"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mytuple"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tuple"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(mytuple)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"set"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(myset1)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"d = {'state': 'NY', 'capital': 'Albany'}"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'state': 'NY', 'capital': 'Albany'}"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"drivers = {\n",
" 'alice': 'toyota',\n",
" 'bob': 'kia',\n",
" 'charlie': 'ford'\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'alice': 'toyota', 'bob': 'kia', 'charlie': 'ford'}"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"drivers"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['alice', 'bob', 'charlie'])"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"drivers.keys()"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"toyota\n"
]
}
],
"source": [
"print(drivers['alice'])"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[{'state': 'AL', 'capital': 'Montgomery'},\n",
" {'state': 'NY', 'capital': 'Albany'}]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"statecapitals = []\n",
"new_state = {'state': 'AL', 'capital': 'Montgomery'}\n",
"statecapitals.append(new_state)\n",
"statecapitals.append(d)\n",
"statecapitals"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"l = []\n",
"for i in range(1,8):\n",
" l.append(i)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4, 5, 6, 7]"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"l"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"sum is 28\n",
"length is 7\n"
]
}
],
"source": [
"l_sum = sum(l)\n",
"l_len = len(l)\n",
"print('sum is', l_sum)\n",
"print('length is', l_len)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"toyota\n",
"honda\n",
"ford\n",
"kia\n"
]
}
],
"source": [
"cars = ['toyota', 'honda', 'ford', 'kia']\n",
"for cartype in cars:\n",
" print(cartype)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"2\n",
"3\n",
"4\n"
]
}
],
"source": [
"x = 1\n",
"while x < 5:\n",
" print(x)\n",
" x = x + 1"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Car is toyota\n",
"Car is not toyota\n",
"Car is not toyota\n",
"Car is not toyota\n"
]
}
],
"source": [
"for cartype in cars:\n",
" if cartype == 'toyota':\n",
" print(\"Car is toyota\")\n",
" else:\n",
" print(\"Car is not toyota\")"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
"def say_hello_name(name = 'alice'):\n",
" print(\"Hello \" + name)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello alice\n"
]
}
],
"source": [
"say_hello_name()"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello bob\n"
]
}
],
"source": [
"say_hello_name('bob')"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"def build_state_capital(state, capital):\n",
" statecap = {'state': state, 'capital': capital}\n",
" return statecap"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'state': 'NY', 'capital': 'Albany'}"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"build_state_capital('NY', 'Albany')"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"capitals = build_state_capital('NY', 'Albany')"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'state': 'NY', 'capital': 'Albany'}"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"capitals"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"squares = [x**2 for x in range(16)]"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225]"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"squares"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"alpha 1\n",
"bravo 2\n",
"charlie 3\n",
"delta 4\n",
"\n"
]
}
],
"source": [
"infile = 'my_input.txt'\n",
"with open(infile) as f:\n",
" contents = f.read()\n",
" print(contents)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['alpha', 1]\n",
"['bravo', 2]\n",
"['charlie', 3]\n",
"['delta', 4]\n"
]
}
],
"source": [
"infile = 'my_input.txt'\n",
"with open(infile) as f:\n",
" for line in f:\n",
" [letter, number] = line.split()\n",
" mylist = [letter, int(number)]\n",
" print(mylist)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [],
"source": [
"outfile = 'cars.txt'\n",
"with open(outfile, 'w') as f:\n",
" f.write(\"cars\")"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [],
"source": [
"nested_list = []\n",
"infile = 'my_input.txt'\n",
"with open(infile) as f:\n",
" for line in f:\n",
" [letter, number] = line.split()\n",
" mylist = [letter, int(number)]\n",
" nested_list.append(mylist)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[['alpha', 1], ['bravo', 2], ['charlie', 3], ['delta', 4]]"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nested_list"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [],
"source": [
"import pickle\n",
"\n",
"outfile = \"nested_list.pickle\"\n",
"with open(outfile, 'wb') as f:\n",
" pickle.dump(nested_list, f)"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m = np.arange(10)\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"n = np.arange(10, 20)\n",
"n"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28])"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v = m + n\n",
"v"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v.size"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dtype('int64')"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v.dtype"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0, 1, 2, 3, 4],\n",
" [5, 6, 7, 8, 9]])"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M = m.reshape(2,5)\n",
"M"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[10, 11, 12, 13, 14],\n",
" [15, 16, 17, 18, 19]])"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"N = n.reshape(2,5)\n",
"N"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[10, 12, 14, 16, 18],\n",
" [20, 22, 24, 26, 28]])"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"V = M + N\n",
"V"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"numpy.ndarray"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(V)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1., 2., 3.])"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"U = np.array([1.0, 2.0, 3.0])\n",
"U"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dtype('float64')"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"U.dtype"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [],
"source": [
"A = np.array([[1,1], [0,1]])"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1, 1],\n",
" [0, 1]])"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[2, 0],\n",
" [3, 4]])"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"B = np.array([[2,0], [3,4]])\n",
"B"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"B[1,1]"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[2, 0],\n",
" [0, 4]])"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A * B"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[5, 4],\n",
" [3, 4]])"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A @ B"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [],
"source": [
"Z = np.zeros((2,3), dtype = np.int64)"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0, 0, 0],\n",
" [0, 0, 0]])"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Z"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [],
"source": [
"Z = np.zeros((2,3), dtype = np.float64)"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0., 0., 0.],\n",
" [0., 0., 0.]])"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Z"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0., 0.],\n",
" [0., 0.],\n",
" [0., 0.]])"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Z.T"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0., 0., 0.],\n",
" [0., 0., 0.]])"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Z"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [],
"source": [
"x = np.linspace(0, 10, 100)"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"100"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(x)"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"numpy.ndarray"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(x)"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [],
"source": [
"y = x**2"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x2b2b0aee07b8>]"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x, y, label = 'quadratic function')"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x, y, label = 'quadratic function')\n",
"plt.xlabel('x')\n",
"plt.ylabel('y')\n",
"plt.title(\"Quadratic Function Plot\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x2b2b0b444438>]"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'r+')"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [],
"source": [
"data = pd.Series([0.1, 0.2, 0.3], index = ['a', 'b', 'c'])"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"a 0.1\n",
"b 0.2\n",
"c 0.3\n",
"dtype: float64"
]
},
"execution_count": 91,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [],
"source": [
"my_data = {'state': ['NY', 'NY', 'NY','CA', 'CA'],\n",
" 'zip': [14059, 14092, 14303, 96214, 97625],\n",
" 'cases': [45, 37, 18, 11, 17]}"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'state': ['NY', 'NY', 'NY', 'CA', 'CA'],\n",
" 'zip': [14059, 14092, 14303, 96214, 97625],\n",
" 'cases': [45, 37, 18, 11, 17]}"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"my_data"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [],
"source": [
"df = pd.DataFrame(my_data)"
]
},
{
"cell_type": "code",
"execution_count": 98,
"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>state</th>\n",
" <th>zip</th>\n",
" <th>cases</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NY</td>\n",
" <td>14059</td>\n",
" <td>45</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>NY</td>\n",
" <td>14092</td>\n",
" <td>37</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>NY</td>\n",
" <td>14303</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>CA</td>\n",
" <td>96214</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>CA</td>\n",
" <td>97625</td>\n",
" <td>17</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" state zip cases\n",
"0 NY 14059 45\n",
"1 NY 14092 37\n",
"2 NY 14303 18\n",
"3 CA 96214 11\n",
"4 CA 97625 17"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 NY\n",
"1 NY\n",
"2 NY\n",
"3 CA\n",
"4 CA\n",
"Name: state, dtype: object"
]
},
"execution_count": 99,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.state"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.series.Series"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(df.state)"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 NY\n",
"1 NY\n",
"2 NY\n",
"3 CA\n",
"4 CA\n",
"Name: state, dtype: object"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['state']"
]
},
{
"cell_type": "code",
"execution_count": 102,
"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>state</th>\n",
" <th>zip</th>\n",
" <th>cases</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>NY</td>\n",
" <td>14092</td>\n",
" <td>37</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" state zip cases\n",
"1 NY 14092 37"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[1:2]"
]
},
{
"cell_type": "code",
"execution_count": 103,
"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>state</th>\n",
" <th>zip</th>\n",
" <th>cases</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NY</td>\n",
" <td>14059</td>\n",
" <td>45</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>NY</td>\n",
" <td>14092</td>\n",
" <td>37</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>NY</td>\n",
" <td>14303</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>CA</td>\n",
" <td>97625</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>CA</td>\n",
" <td>96214</td>\n",
" <td>11</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" state zip cases\n",
"0 NY 14059 45\n",
"1 NY 14092 37\n",
"2 NY 14303 18\n",
"4 CA 97625 17\n",
"3 CA 96214 11"
]
},
"execution_count": 103,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.sort_values(by = 'cases', ascending = False)"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"14303"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.iloc[2, 1]"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"18"
]
},
"execution_count": 105,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc[2, 'cases']"
]
},
{
"cell_type": "code",
"execution_count": 106,
"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>zip</th>\n",
" <th>cases</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>5.000000</td>\n",
" <td>5.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>47258.600000</td>\n",
" <td>25.600000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>45336.833274</td>\n",
" <td>14.587666</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>14059.000000</td>\n",
" <td>11.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>14092.000000</td>\n",
" <td>17.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>14303.000000</td>\n",
" <td>18.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>96214.000000</td>\n",
" <td>37.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>97625.000000</td>\n",
" <td>45.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" zip cases\n",
"count 5.000000 5.000000\n",
"mean 47258.600000 25.600000\n",
"std 45336.833274 14.587666\n",
"min 14059.000000 11.000000\n",
"25% 14092.000000 17.000000\n",
"50% 14303.000000 18.000000\n",
"75% 96214.000000 37.000000\n",
"max 97625.000000 45.000000"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "code",
"execution_count": 107,
"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>state</th>\n",
" <th>zip</th>\n",
" <th>cases</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NY</td>\n",
" <td>14059</td>\n",
" <td>45</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>NY</td>\n",
" <td>14092</td>\n",
" <td>37</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" state zip cases\n",
"0 NY 14059 45\n",
"1 NY 14092 37"
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc[df['cases'] > 18]"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"45"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['cases'].max()"
]
},
{
"cell_type": "code",
"execution_count": 109,
"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>state</th>\n",
" <th>zip</th>\n",
" <th>cases</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NY</td>\n",
" <td>14059</td>\n",
" <td>45</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" state zip cases\n",
"0 NY 14059 45"
]
},
"execution_count": 109,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc[df['cases'] == df['cases'].max()]"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [],
"source": [
"df.loc[5] = ['CA', 98713, 45]"
]
},
{
"cell_type": "code",
"execution_count": 111,
"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>state</th>\n",
" <th>zip</th>\n",
" <th>cases</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NY</td>\n",
" <td>14059</td>\n",
" <td>45</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>NY</td>\n",
" <td>14092</td>\n",
" <td>37</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>NY</td>\n",
" <td>14303</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>CA</td>\n",
" <td>96214</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>CA</td>\n",
" <td>97625</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>CA</td>\n",
" <td>98713</td>\n",
" <td>45</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" state zip cases\n",
"0 NY 14059 45\n",
"1 NY 14092 37\n",
"2 NY 14303 18\n",
"3 CA 96214 11\n",
"4 CA 97625 17\n",
"5 CA 98713 45"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [],
"source": [
"df['deaths'] = [0, 1, 0, 2, 3, 1]"
]
},
{
"cell_type": "code",
"execution_count": 113,
"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>state</th>\n",
" <th>zip</th>\n",
" <th>cases</th>\n",
" <th>deaths</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NY</td>\n",
" <td>14059</td>\n",
" <td>45</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>NY</td>\n",
" <td>14092</td>\n",
" <td>37</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>NY</td>\n",
" <td>14303</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>CA</td>\n",
" <td>96214</td>\n",
" <td>11</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>CA</td>\n",
" <td>97625</td>\n",
" <td>17</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>CA</td>\n",
" <td>98713</td>\n",
" <td>45</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" state zip cases deaths\n",
"0 NY 14059 45 0\n",
"1 NY 14092 37 1\n",
"2 NY 14303 18 0\n",
"3 CA 96214 11 2\n",
"4 CA 97625 17 3\n",
"5 CA 98713 45 1"
]
},
"execution_count": 113,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [],
"source": [
"df?"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 NY\n",
"1 NY\n",
"2 NY\n",
"3 CA\n",
"4 CA\n",
"5 CA\n",
"Name: state, dtype: object"
]
},
"execution_count": 115,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['state']"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [],
"source": [
"statelist = df['state']"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 NY\n",
"1 NY\n",
"2 NY\n",
"3 CA\n",
"4 CA\n",
"5 CA\n",
"Name: state, dtype: object"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"statelist"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {},
"outputs": [],
"source": [
"statelist = statelist.tolist()"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['NY', 'NY', 'NY', 'CA', 'CA', 'CA']"
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"statelist"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"zip 55834.333333\n",
"cases 28.833333\n",
"deaths 1.166667\n",
"dtype: float64"
]
},
"execution_count": 120,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.mean(axis = 'rows')"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [],
"source": [
"df.to_csv('~/Downloads/out.csv')"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'{\"state\":{\"0\":\"NY\",\"1\":\"NY\",\"2\":\"NY\",\"3\":\"CA\",\"4\":\"CA\",\"5\":\"CA\"},\"zip\":{\"0\":14059,\"1\":14092,\"2\":14303,\"3\":96214,\"4\":97625,\"5\":98713},\"cases\":{\"0\":45,\"1\":37,\"2\":18,\"3\":11,\"4\":17,\"5\":45},\"deaths\":{\"0\":0,\"1\":1,\"2\":0,\"3\":2,\"4\":3,\"5\":1}}'"
]
},
"execution_count": 122,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.to_json()"
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'[{\"state\":\"NY\",\"zip\":14059,\"cases\":45,\"deaths\":0},{\"state\":\"NY\",\"zip\":14092,\"cases\":37,\"deaths\":1},{\"state\":\"NY\",\"zip\":14303,\"cases\":18,\"deaths\":0},{\"state\":\"CA\",\"zip\":96214,\"cases\":11,\"deaths\":2},{\"state\":\"CA\",\"zip\":97625,\"cases\":17,\"deaths\":3},{\"state\":\"CA\",\"zip\":98713,\"cases\":45,\"deaths\":1}]'"
]
},
"execution_count": 124,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.to_json(orient = \"records\")"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [],
"source": [
"df.to_json('data_df.json', orient = \"records\")"
]
},
{
"cell_type": "code",
"execution_count": 126,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {},
"outputs": [],
"source": [
"cars = pd.read_csv(\"/public/bmort/python/mtcars.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.frame.DataFrame"
]
},
"execution_count": 128,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(cars)"
]
},
{
"cell_type": "code",
"execution_count": 129,
"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>car</th>\n",
" <th>mpg</th>\n",
" <th>cyl</th>\n",
" <th>disp</th>\n",
" <th>hp</th>\n",
" <th>drat</th>\n",
" <th>wt</th>\n",
" <th>qsec</th>\n",
" <th>vs</th>\n",
" <th>am</th>\n",
" <th>gear</th>\n",
" <th>carb</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Mazda RX4</td>\n",
" <td>21.0</td>\n",
" <td>6</td>\n",
" <td>160.0</td>\n",
" <td>110</td>\n",
" <td>3.90</td>\n",
" <td>2.620</td>\n",
" <td>16.46</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Mazda RX4 Wag</td>\n",
" <td>21.0</td>\n",
" <td>6</td>\n",
" <td>160.0</td>\n",
" <td>110</td>\n",
" <td>3.90</td>\n",
" <td>2.875</td>\n",
" <td>17.02</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Datsun 710</td>\n",
" <td>22.8</td>\n",
" <td>4</td>\n",
" <td>108.0</td>\n",
" <td>93</td>\n",
" <td>3.85</td>\n",
" <td>2.320</td>\n",
" <td>18.61</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Hornet 4 Drive</td>\n",
" <td>21.4</td>\n",
" <td>6</td>\n",
" <td>258.0</td>\n",
" <td>110</td>\n",
" <td>3.08</td>\n",
" <td>3.215</td>\n",
" <td>19.44</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Hornet Sportabout</td>\n",
" <td>18.7</td>\n",
" <td>8</td>\n",
" <td>360.0</td>\n",
" <td>175</td>\n",
" <td>3.15</td>\n",
" <td>3.440</td>\n",
" <td>17.02</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Valiant</td>\n",
" <td>18.1</td>\n",
" <td>6</td>\n",
" <td>225.0</td>\n",
" <td>105</td>\n",
" <td>2.76</td>\n",
" <td>3.460</td>\n",
" <td>20.22</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" car mpg cyl disp hp drat wt qsec vs am gear \\\n",
"0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 \n",
"1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 \n",
"2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 \n",
"3 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 \n",
"4 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 \n",
"5 Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 \n",
"\n",
" carb \n",
"0 4 \n",
"1 4 \n",
"2 1 \n",
"3 1 \n",
"4 2 \n",
"5 1 "
]
},
"execution_count": 129,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cars[0:6]"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {},
"outputs": [],
"source": [
"X = cars['wt']"
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.series.Series"
]
},
"execution_count": 131,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(X)"
]
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([2.62 , 2.875, 2.32 , 3.215, 3.44 , 3.46 , 3.57 , 3.19 , 3.15 ,\n",
" 3.44 , 3.44 , 4.07 , 3.73 , 3.78 , 5.25 , 5.424, 5.345, 2.2 ,\n",
" 1.615, 1.835, 2.465, 3.52 , 3.435, 3.84 , 3.845, 1.935, 2.14 ,\n",
" 1.513, 3.17 , 2.77 , 3.57 , 2.78 ])"
]
},
"execution_count": 132,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.to_numpy()"
]
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {},
"outputs": [],
"source": [
"X = X.to_numpy()"
]
},
{
"cell_type": "code",
"execution_count": 134,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"numpy.ndarray"
]
},
"execution_count": 134,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(X)"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {},
"outputs": [],
"source": [
"y = cars['mpg'].to_numpy()"
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"numpy.ndarray"
]
},
"execution_count": 136,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(y)"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([21. , 21. , 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19.2, 17.8,\n",
" 16.4, 17.3, 15.2, 10.4, 10.4, 14.7, 32.4, 30.4, 33.9, 21.5, 15.5,\n",
" 15.2, 13.3, 19.2, 27.3, 26. , 30.4, 15.8, 19.7, 15. , 21.4])"
]
},
"execution_count": 137,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y"
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(X, y, 'ro')\n",
"plt.axis([0, 10, 0, 50])\n",
"plt.xlabel('weight klbs')\n",
"plt.ylabel('mpg')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {},
"outputs": [],
"source": [
"X_b = np.c_[np.ones(len(X)), X]"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1. , 2.62 ],\n",
" [1. , 2.875],\n",
" [1. , 2.32 ],\n",
" [1. , 3.215],\n",
" [1. , 3.44 ],\n",
" [1. , 3.46 ],\n",
" [1. , 3.57 ],\n",
" [1. , 3.19 ],\n",
" [1. , 3.15 ],\n",
" [1. , 3.44 ],\n",
" [1. , 3.44 ],\n",
" [1. , 4.07 ],\n",
" [1. , 3.73 ],\n",
" [1. , 3.78 ],\n",
" [1. , 5.25 ],\n",
" [1. , 5.424],\n",
" [1. , 5.345],\n",
" [1. , 2.2 ],\n",
" [1. , 1.615],\n",
" [1. , 1.835],\n",
" [1. , 2.465],\n",
" [1. , 3.52 ],\n",
" [1. , 3.435],\n",
" [1. , 3.84 ],\n",
" [1. , 3.845],\n",
" [1. , 1.935],\n",
" [1. , 2.14 ],\n",
" [1. , 1.513],\n",
" [1. , 3.17 ],\n",
" [1. , 2.77 ],\n",
" [1. , 3.57 ],\n",
" [1. , 2.78 ]])"
]
},
"execution_count": 140,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_b"
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {},
"outputs": [],
"source": [
"theta_hat = np.linalg.inv(X_b.T @ X_b) @ (X_b.T @ y)"
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([37.28512617, -5.34447157])"
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"theta_hat"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {},
"outputs": [],
"source": [
"xi = np.linspace(0, 10, 100)\n",
"yi = theta_hat[0] + theta_hat[1]*xi"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(X, y, 'ro')\n",
"plt.plot(xi, yi)\n",
"plt.axis([0, 10, 0, 50])\n",
"plt.xlabel('weight klbs')\n",
"plt.ylabel('mpg')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {},
"outputs": [],
"source": [
"X_new = np.array([2.5])"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {},
"outputs": [],
"source": [
"X_new_b = np.c_[np.ones(1), X_new]"
]
},
{
"cell_type": "code",
"execution_count": 147,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1. , 2.5]])"
]
},
"execution_count": 147,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_new_b"
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {},
"outputs": [],
"source": [
"y_predict = X_new_b.dot(theta_hat)"
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([23.92394724])"
]
},
"execution_count": 149,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_predict"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression"
]
},
{
"cell_type": "code",
"execution_count": 151,
"metadata": {},
"outputs": [],
"source": [
"model = LinearRegression()"
]
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)"
]
},
"execution_count": 152,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit(X_b, y)"
]
},
{
"cell_type": "code",
"execution_count": 153,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"37.28512616734204 [ 0. -5.34447157]\n"
]
}
],
"source": [
"print(model.intercept_, model.coef_)"
]
},
{
"cell_type": "code",
"execution_count": 154,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([23.92394724])"
]
},
"execution_count": 154,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.predict(X_new_b)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (anaconda3 2019.03)",
"language": "python",
"name": "anaconda3-2019.03"
},
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment