├── .Rhistory ├── Assignment+2.ipynb ├── Assignment+3 .ipynb ├── Assignment+4.ipynb ├── City_Zhvi_AllHomes.csv ├── Energy Indicators.xls ├── README.md ├── Week+1.ipynb ├── Week+2.ipynb ├── Week+3.ipynb ├── Week+4.ipynb ├── cars.csv ├── census.csv ├── gdplev.xls ├── grades.csv ├── log.csv ├── log.txt ├── mpg.csv ├── olympics.csv ├── requirements.txt ├── scimagojr-3.xlsx ├── university_towns.txt └── world_bank.csv /.Rhistory: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sidsriv/Introduction-to-Data-Science-in-python/4da3a4c2f76e40acdfc14ad9fcbc9b400ba9e5f7/.Rhistory -------------------------------------------------------------------------------- /Assignment+2.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "---\n", 8 | "\n", 9 | "_You are currently looking at **version 1.0** of this notebook. To download notebooks and datafiles, as well as get help on Jupyter notebooks in the Coursera platform, visit the [Jupyter Notebook FAQ](https://www.coursera.org/learn/python-data-analysis/resources/0dhYG) course resource._\n", 10 | "\n", 11 | "---" 12 | ] 13 | }, 14 | { 15 | "cell_type": "markdown", 16 | "metadata": {}, 17 | "source": [ 18 | "# Assignment 2 - Pandas Introduction\n", 19 | "All questions are weighted the same in this assignment.\n", 20 | "## Part 1\n", 21 | "The following code loads the olympics dataset (olympics.csv), which was derrived from the Wikipedia entry on [All Time Olympic Games Medals](https://en.wikipedia.org/wiki/All-time_Olympic_Games_medal_table), and does some basic data cleaning. Use this dataset to answer the questions below." 22 | ] 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": 109, 27 | "metadata": { 28 | "collapsed": false, 29 | "nbgrader": { 30 | "grade": false, 31 | "grade_id": "1", 32 | "locked": false, 33 | "solution": false 34 | } 35 | }, 36 | "outputs": [ 37 | { 38 | "data": { 39 | "text/html": [ 40 | "
\n", 41 | "\n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | "
# SummerGoldSilverBronzeTotal# WinterGold.1Silver.1Bronze.1Total.1# GamesGold.2Silver.2Bronze.2Combined totalID
Afghanistan13002200000130022AFG
Algeria1252815300001552815ALG
Argentina23182428701800004118242870ARG
Armenia512912600001112912ARM
Australasia23451200000234512ANZ
\n", 161 | "
" 162 | ], 163 | "text/plain": [ 164 | " # Summer Gold Silver Bronze Total # Winter Gold.1 \\\n", 165 | "Afghanistan 13 0 0 2 2 0 0 \n", 166 | "Algeria 12 5 2 8 15 3 0 \n", 167 | "Argentina 23 18 24 28 70 18 0 \n", 168 | "Armenia 5 1 2 9 12 6 0 \n", 169 | "Australasia 2 3 4 5 12 0 0 \n", 170 | "\n", 171 | " Silver.1 Bronze.1 Total.1 # Games Gold.2 Silver.2 Bronze.2 \\\n", 172 | "Afghanistan 0 0 0 13 0 0 2 \n", 173 | "Algeria 0 0 0 15 5 2 8 \n", 174 | "Argentina 0 0 0 41 18 24 28 \n", 175 | "Armenia 0 0 0 11 1 2 9 \n", 176 | "Australasia 0 0 0 2 3 4 5 \n", 177 | "\n", 178 | " Combined total ID \n", 179 | "Afghanistan 2 AFG \n", 180 | "Algeria 15 ALG \n", 181 | "Argentina 70 ARG \n", 182 | "Armenia 12 ARM \n", 183 | "Australasia 12 ANZ " 184 | ] 185 | }, 186 | "execution_count": 109, 187 | "metadata": {}, 188 | "output_type": "execute_result" 189 | } 190 | ], 191 | "source": [ 192 | "import pandas as pd\n", 193 | "\n", 194 | "df = pd.read_csv('olympics.csv', index_col=0, skiprows=1)\n", 195 | "\n", 196 | "for col in df.columns:\n", 197 | " if col[:2]=='01':\n", 198 | " df.rename(columns={col:'Gold'+col[4:]}, inplace=True)\n", 199 | " if col[:2]=='02':\n", 200 | " df.rename(columns={col:'Silver'+col[4:]}, inplace=True)\n", 201 | " if col[:2]=='03':\n", 202 | " df.rename(columns={col:'Bronze'+col[4:]}, inplace=True)\n", 203 | " if col[:1]=='№':\n", 204 | " df.rename(columns={col:'#'+col[1:]}, inplace=True)\n", 205 | "\n", 206 | "names_ids = df.index.str.split('\\s\\(') # split the index by '('\n", 207 | "\n", 208 | "df.index = names_ids.str[0] # the [0] element is the country name (new index) \n", 209 | "df['ID'] = names_ids.str[1].str[:3] # the [1] element is the abbreviation or ID (take first 3 characters from that)\n", 210 | "\n", 211 | "df = df.drop('Totals')\n", 212 | "df.head()" 213 | ] 214 | }, 215 | { 216 | "cell_type": "markdown", 217 | "metadata": {}, 218 | "source": [ 219 | "### Question 0 (Example)\n", 220 | "\n", 221 | "What is the first country in df?\n", 222 | "\n", 223 | "*This function should return a Series.*" 224 | ] 225 | }, 226 | { 227 | "cell_type": "code", 228 | "execution_count": 110, 229 | "metadata": { 230 | "collapsed": false 231 | }, 232 | "outputs": [ 233 | { 234 | "data": { 235 | "text/plain": [ 236 | "# Summer 13\n", 237 | "Gold 0\n", 238 | "Silver 0\n", 239 | "Bronze 2\n", 240 | "Total 2\n", 241 | "# Winter 0\n", 242 | "Gold.1 0\n", 243 | "Silver.1 0\n", 244 | "Bronze.1 0\n", 245 | "Total.1 0\n", 246 | "# Games 13\n", 247 | "Gold.2 0\n", 248 | "Silver.2 0\n", 249 | "Bronze.2 2\n", 250 | "Combined total 2\n", 251 | "ID AFG\n", 252 | "Name: Afghanistan, dtype: object" 253 | ] 254 | }, 255 | "execution_count": 110, 256 | "metadata": {}, 257 | "output_type": "execute_result" 258 | } 259 | ], 260 | "source": [ 261 | "# You should write your whole answer within the function provided. The autograder will call\n", 262 | "# this function and compare the return value against the correct solution value\n", 263 | "def answer_zero():\n", 264 | " # This function returns the row for Afghanistan, which is a Series object. The assignment\n", 265 | " # question description will tell you the general format the autograder is expecting\n", 266 | " return df.iloc[0]\n", 267 | "\n", 268 | "# You can examine what your function returns by calling it in the cell. If you have questions\n", 269 | "# about the assignment formats, check out the discussion forums for any FAQs\n", 270 | "answer_zero() " 271 | ] 272 | }, 273 | { 274 | "cell_type": "markdown", 275 | "metadata": {}, 276 | "source": [ 277 | "### Question 1\n", 278 | "Which country has won the most gold medals in summer games?\n", 279 | "\n", 280 | "*This function should return a single string value.*" 281 | ] 282 | }, 283 | { 284 | "cell_type": "code", 285 | "execution_count": 111, 286 | "metadata": { 287 | "collapsed": false, 288 | "nbgrader": { 289 | "grade": false, 290 | "locked": false, 291 | "solution": false 292 | } 293 | }, 294 | "outputs": [ 295 | { 296 | "data": { 297 | "text/plain": [ 298 | "'United States'" 299 | ] 300 | }, 301 | "execution_count": 111, 302 | "metadata": {}, 303 | "output_type": "execute_result" 304 | } 305 | ], 306 | "source": [ 307 | "def answer_one():\n", 308 | " x = max(df['Gold'])\n", 309 | " ans = df[df['Gold'] == x].index.tolist()\n", 310 | " return ans[0]\n", 311 | "\n", 312 | "answer_one()" 313 | ] 314 | }, 315 | { 316 | "cell_type": "markdown", 317 | "metadata": {}, 318 | "source": [ 319 | "### Question 2\n", 320 | "Which country had the biggest difference between their summer and winter gold medal counts?\n", 321 | "\n", 322 | "*This function should return a single string value.*" 323 | ] 324 | }, 325 | { 326 | "cell_type": "code", 327 | "execution_count": 112, 328 | "metadata": { 329 | "collapsed": false 330 | }, 331 | "outputs": [ 332 | { 333 | "data": { 334 | "text/plain": [ 335 | "'United States'" 336 | ] 337 | }, 338 | "execution_count": 112, 339 | "metadata": {}, 340 | "output_type": "execute_result" 341 | } 342 | ], 343 | "source": [ 344 | "def answer_two():\n", 345 | " x = max(df['Gold'] - df['Gold.1'])\n", 346 | " ans = df[(df['Gold'] - df['Gold.1']) == x].index.tolist()\n", 347 | " return ans[0]\n", 348 | "\n", 349 | "answer_two()" 350 | ] 351 | }, 352 | { 353 | "cell_type": "markdown", 354 | "metadata": {}, 355 | "source": [ 356 | "### Question 3\n", 357 | "Which country has the biggest difference between their summer and winter gold medal counts relative to their total gold medal count? Only include countries that have won at least 1 gold in both summer and winter.\n", 358 | "\n", 359 | "*This function should return a single string value.*" 360 | ] 361 | }, 362 | { 363 | "cell_type": "code", 364 | "execution_count": 113, 365 | "metadata": { 366 | "collapsed": false 367 | }, 368 | "outputs": [ 369 | { 370 | "data": { 371 | "text/plain": [ 372 | "'Bulgaria'" 373 | ] 374 | }, 375 | "execution_count": 113, 376 | "metadata": {}, 377 | "output_type": "execute_result" 378 | } 379 | ], 380 | "source": [ 381 | "def answer_three():\n", 382 | " df_gold = df[(df['Gold']>0) & (df['Gold.1']>0)]\n", 383 | " df_max_diff = (abs(df_gold['Gold']-df_gold['Gold.1'])/df_gold['Gold.2'])\n", 384 | " return df_max_diff.idxmax()\n", 385 | "\n", 386 | "answer_three()" 387 | ] 388 | }, 389 | { 390 | "cell_type": "markdown", 391 | "metadata": {}, 392 | "source": [ 393 | "### Question 4\n", 394 | "Write a function to update the dataframe to include a new column called \"Points\" which is a weighted value where each gold medal counts for 3 points, silver medals for 2 points, and bronze mdeals for 1 point. The function should return only the column (a Series object) which you created.\n", 395 | "\n", 396 | "*This function should return a Series named `Points` of length 146*" 397 | ] 398 | }, 399 | { 400 | "cell_type": "code", 401 | "execution_count": 120, 402 | "metadata": { 403 | "collapsed": false 404 | }, 405 | "outputs": [ 406 | { 407 | "data": { 408 | "text/plain": [ 409 | "Afghanistan 2\n", 410 | "Algeria 27\n", 411 | "Argentina 130\n", 412 | "Armenia 16\n", 413 | "Australasia 22\n", 414 | "Australia 923\n", 415 | "Austria 569\n", 416 | "Azerbaijan 43\n", 417 | "Bahamas 24\n", 418 | "Bahrain 1\n", 419 | "Barbados 1\n", 420 | "Belarus 154\n", 421 | "Belgium 276\n", 422 | "Bermuda 1\n", 423 | "Bohemia 5\n", 424 | "Botswana 2\n", 425 | "Brazil 184\n", 426 | "British West Indies 2\n", 427 | "Bulgaria 411\n", 428 | "Burundi 3\n", 429 | "Cameroon 12\n", 430 | "Canada 846\n", 431 | "Chile 24\n", 432 | "China 1120\n", 433 | "Colombia 29\n", 434 | "Costa Rica 7\n", 435 | "Ivory Coast 2\n", 436 | "Croatia 67\n", 437 | "Cuba 420\n", 438 | "Cyprus 2\n", 439 | " ... \n", 440 | "Spain 268\n", 441 | "Sri Lanka 4\n", 442 | "Sudan 2\n", 443 | "Suriname 4\n", 444 | "Sweden 1217\n", 445 | "Switzerland 630\n", 446 | "Syria 6\n", 447 | "Chinese Taipei 32\n", 448 | "Tajikistan 4\n", 449 | "Tanzania 4\n", 450 | "Thailand 44\n", 451 | "Togo 1\n", 452 | "Tonga 2\n", 453 | "Trinidad and Tobago 27\n", 454 | "Tunisia 19\n", 455 | "Turkey 191\n", 456 | "Uganda 14\n", 457 | "Ukraine 220\n", 458 | "United Arab Emirates 3\n", 459 | "United States 5684\n", 460 | "Uruguay 16\n", 461 | "Uzbekistan 38\n", 462 | "Venezuela 18\n", 463 | "Vietnam 4\n", 464 | "Virgin Islands 2\n", 465 | "Yugoslavia 171\n", 466 | "Independent Olympic Participants 4\n", 467 | "Zambia 3\n", 468 | "Zimbabwe 18\n", 469 | "Mixed team 38\n", 470 | "dtype: int64" 471 | ] 472 | }, 473 | "execution_count": 120, 474 | "metadata": {}, 475 | "output_type": "execute_result" 476 | } 477 | ], 478 | "source": [ 479 | "def answer_four():\n", 480 | " Points = 3*df['Gold.2'] + 2*df['Silver.2'] + 1*df['Bronze.2']\n", 481 | " return Points\n", 482 | "\n", 483 | "answer_four()" 484 | ] 485 | }, 486 | { 487 | "cell_type": "markdown", 488 | "metadata": {}, 489 | "source": [ 490 | "## Part 2\n", 491 | "For the next set of questions, we will be using census data from the [United States Census Bureau](http://www.census.gov/popest/data/counties/totals/2015/CO-EST2015-alldata.html). Counties are political and geographic subdivisions of states in the United States. This dataset contains population data for counties and states in the US from 2010 to 2015. [See this document](http://www.census.gov/popest/data/counties/totals/2015/files/CO-EST2015-alldata.pdf) for a description of the variable names.\n", 492 | "\n", 493 | "The census dataset (census.csv) should be loaded as census_df. Answer questions using this as appropriate.\n", 494 | "\n", 495 | "### Question 5\n", 496 | "Which state has the most counties in it? (hint: consider the sumlevel key carefully! You'll need this for future questions too...)\n", 497 | "\n", 498 | "*This function should return a single string value.*" 499 | ] 500 | }, 501 | { 502 | "cell_type": "code", 503 | "execution_count": 60, 504 | "metadata": { 505 | "collapsed": false 506 | }, 507 | "outputs": [ 508 | { 509 | "data": { 510 | "text/html": [ 511 | "
\n", 512 | "\n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | "
SUMLEVREGIONDIVISIONSTATECOUNTYSTNAMECTYNAMECENSUS2010POPESTIMATESBASE2010POPESTIMATE2010...RDOMESTICMIG2011RDOMESTICMIG2012RDOMESTICMIG2013RDOMESTICMIG2014RDOMESTICMIG2015RNETMIG2011RNETMIG2012RNETMIG2013RNETMIG2014RNETMIG2015
0403610AlabamaAlabama477973647801274785161...0.002295-0.1931960.3810660.582002-0.4673691.0300150.8266441.3832821.7247180.712594
1503611AlabamaAutauga County545715457154660...7.242091-2.915927-3.0123492.265971-2.5307997.606016-2.626146-2.7220022.592270-2.187333
2503613AlabamaBaldwin County182265182265183193...14.83296017.64729321.84570519.24328717.19787215.84417618.55962722.72762620.31714218.293499
3503615AlabamaBarbour County274572745727341...-4.728132-2.500690-7.056824-3.904217-10.543299-4.874741-2.758113-7.167664-3.978583-10.543299
4503617AlabamaBibb County229152291922861...-5.527043-5.068871-6.201001-0.1775370.177258-5.088389-4.363636-5.4037290.7545331.107861
\n", 662 | "

5 rows × 100 columns

\n", 663 | "
" 664 | ], 665 | "text/plain": [ 666 | " SUMLEV REGION DIVISION STATE COUNTY STNAME CTYNAME \\\n", 667 | "0 40 3 6 1 0 Alabama Alabama \n", 668 | "1 50 3 6 1 1 Alabama Autauga County \n", 669 | "2 50 3 6 1 3 Alabama Baldwin County \n", 670 | "3 50 3 6 1 5 Alabama Barbour County \n", 671 | "4 50 3 6 1 7 Alabama Bibb County \n", 672 | "\n", 673 | " CENSUS2010POP ESTIMATESBASE2010 POPESTIMATE2010 ... \\\n", 674 | "0 4779736 4780127 4785161 ... \n", 675 | "1 54571 54571 54660 ... \n", 676 | "2 182265 182265 183193 ... \n", 677 | "3 27457 27457 27341 ... \n", 678 | "4 22915 22919 22861 ... \n", 679 | "\n", 680 | " RDOMESTICMIG2011 RDOMESTICMIG2012 RDOMESTICMIG2013 RDOMESTICMIG2014 \\\n", 681 | "0 0.002295 -0.193196 0.381066 0.582002 \n", 682 | "1 7.242091 -2.915927 -3.012349 2.265971 \n", 683 | "2 14.832960 17.647293 21.845705 19.243287 \n", 684 | "3 -4.728132 -2.500690 -7.056824 -3.904217 \n", 685 | "4 -5.527043 -5.068871 -6.201001 -0.177537 \n", 686 | "\n", 687 | " RDOMESTICMIG2015 RNETMIG2011 RNETMIG2012 RNETMIG2013 RNETMIG2014 \\\n", 688 | "0 -0.467369 1.030015 0.826644 1.383282 1.724718 \n", 689 | "1 -2.530799 7.606016 -2.626146 -2.722002 2.592270 \n", 690 | "2 17.197872 15.844176 18.559627 22.727626 20.317142 \n", 691 | "3 -10.543299 -4.874741 -2.758113 -7.167664 -3.978583 \n", 692 | "4 0.177258 -5.088389 -4.363636 -5.403729 0.754533 \n", 693 | "\n", 694 | " RNETMIG2015 \n", 695 | "0 0.712594 \n", 696 | "1 -2.187333 \n", 697 | "2 18.293499 \n", 698 | "3 -10.543299 \n", 699 | "4 1.107861 \n", 700 | "\n", 701 | "[5 rows x 100 columns]" 702 | ] 703 | }, 704 | "execution_count": 60, 705 | "metadata": {}, 706 | "output_type": "execute_result" 707 | } 708 | ], 709 | "source": [ 710 | "census_df = pd.read_csv('census.csv')\n", 711 | "census_df.head()" 712 | ] 713 | }, 714 | { 715 | "cell_type": "code", 716 | "execution_count": 56, 717 | "metadata": { 718 | "collapsed": false 719 | }, 720 | "outputs": [ 721 | { 722 | "data": { 723 | "text/plain": [ 724 | "'Texas'" 725 | ] 726 | }, 727 | "execution_count": 56, 728 | "metadata": {}, 729 | "output_type": "execute_result" 730 | } 731 | ], 732 | "source": [ 733 | "def answer_five():\n", 734 | " counties_df = census_df[census_df['SUMLEV'] == 50]\n", 735 | " x = counties_df.groupby('STNAME').count()['SUMLEV']\n", 736 | " ans = x.idxmax()\n", 737 | " return ans\n", 738 | "\n", 739 | "answer_five()\n" 740 | ] 741 | }, 742 | { 743 | "cell_type": "markdown", 744 | "metadata": {}, 745 | "source": [ 746 | "### Question 6\n", 747 | "Only looking at the three most populous counties for each state, what are the three most populous states (in order of highest population to lowest population)?\n", 748 | "\n", 749 | "*This function should return a list of string values.*" 750 | ] 751 | }, 752 | { 753 | "cell_type": "code", 754 | "execution_count": 76, 755 | "metadata": { 756 | "collapsed": false 757 | }, 758 | "outputs": [ 759 | { 760 | "data": { 761 | "text/plain": [ 762 | "['Wyoming', 'Vermont', 'North Dakota']" 763 | ] 764 | }, 765 | "execution_count": 76, 766 | "metadata": {}, 767 | "output_type": "execute_result" 768 | } 769 | ], 770 | "source": [ 771 | "def answer_six():\n", 772 | " counties_df = census_df[census_df['SUMLEV'] == 50]\n", 773 | " top_counties_df = counties_df.sort_values(by=['STNAME','CENSUS2010POP'],ascending=False).groupby('STNAME').head(3)\n", 774 | " ans = top_counties_df.groupby('STNAME').sum().sort_values(by='CENSUS2010POP').head(3).index.tolist()\n", 775 | " return ans\n", 776 | "answer_six()" 777 | ] 778 | }, 779 | { 780 | "cell_type": "markdown", 781 | "metadata": {}, 782 | "source": [ 783 | "### Question 7\n", 784 | "Which county has had the largest change in population within the five year period (hint: population values are stored in columns POPESTIMATE2010 through POPESTIMATE2015, you need to consider all five columns)?\n", 785 | "\n", 786 | "*This function should return a single string value.*" 787 | ] 788 | }, 789 | { 790 | "cell_type": "code", 791 | "execution_count": 95, 792 | "metadata": { 793 | "collapsed": false 794 | }, 795 | "outputs": [ 796 | { 797 | "name": "stderr", 798 | "output_type": "stream", 799 | "text": [ 800 | "/opt/conda/lib/python3.5/site-packages/ipykernel/__main__.py:3: SettingWithCopyWarning: \n", 801 | "A value is trying to be set on a copy of a slice from a DataFrame.\n", 802 | "Try using .loc[row_indexer,col_indexer] = value instead\n", 803 | "\n", 804 | "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", 805 | " app.launch_new_instance()\n" 806 | ] 807 | }, 808 | { 809 | "data": { 810 | "text/plain": [ 811 | "'Harris County'" 812 | ] 813 | }, 814 | "execution_count": 95, 815 | "metadata": {}, 816 | "output_type": "execute_result" 817 | } 818 | ], 819 | "source": [ 820 | "def answer_seven():\n", 821 | " counties_df = census_df[census_df['SUMLEV'] == 50]\n", 822 | " counties_df['pop_change'] = abs(counties_df['POPESTIMATE2015'] - counties_df['POPESTIMATE2014'])+abs(counties_df['POPESTIMATE2014'] - counties_df['POPESTIMATE2013'])+abs(counties_df['POPESTIMATE2013'] - counties_df['POPESTIMATE2012'])+abs(counties_df['POPESTIMATE2012'] - counties_df['POPESTIMATE2011'])+abs(counties_df['POPESTIMATE2011'] - counties_df['POPESTIMATE2010'])\n", 823 | " a = max(counties_df['pop_change'])\n", 824 | " ans = counties_df['CTYNAME'][counties_df['pop_change']==a].tolist()\n", 825 | " return ans[0]\n", 826 | "\n", 827 | "\n", 828 | "answer_seven()" 829 | ] 830 | }, 831 | { 832 | "cell_type": "markdown", 833 | "metadata": {}, 834 | "source": [ 835 | "### Question 8\n", 836 | "In this datafile, the United States is broken up into four regions using the \"REGION\" column. \n", 837 | "\n", 838 | "Create a query that finds the counties that belong to regions 1 or 2, whose name starts with 'Washington', and whose POPESTIMATE2015 was greater than their POPESTIMATE 2014.\n", 839 | "\n", 840 | "*This function should return a 5x2 DataFrame with the columns = ['STNAME', 'CTYNAME'] and the same index ID as the census_df (sorted ascending by index).*" 841 | ] 842 | }, 843 | { 844 | "cell_type": "code", 845 | "execution_count": 106, 846 | "metadata": { 847 | "collapsed": false 848 | }, 849 | "outputs": [ 850 | { 851 | "data": { 852 | "text/html": [ 853 | "
\n", 854 | "\n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | "
STNAMECTYNAME
896IowaWashington County
1419MinnesotaWashington County
2345PennsylvaniaWashington County
2355Rhode IslandWashington County
3163WisconsinWashington County
\n", 890 | "
" 891 | ], 892 | "text/plain": [ 893 | " STNAME CTYNAME\n", 894 | "896 Iowa Washington County\n", 895 | "1419 Minnesota Washington County\n", 896 | "2345 Pennsylvania Washington County\n", 897 | "2355 Rhode Island Washington County\n", 898 | "3163 Wisconsin Washington County" 899 | ] 900 | }, 901 | "execution_count": 106, 902 | "metadata": {}, 903 | "output_type": "execute_result" 904 | } 905 | ], 906 | "source": [ 907 | "def answer_eight():\n", 908 | " counties_df = census_df[census_df['SUMLEV'] == 50]\n", 909 | " ans = counties_df[((counties_df['REGION']==1)|(counties_df['REGION']==2))&(counties_df['CTYNAME']=='Washington County')&(counties_df['POPESTIMATE2015']>counties_df['POPESTIMATE2014'])][['STNAME','CTYNAME']]\n", 910 | " return ans\n", 911 | "\n", 912 | "answer_eight()" 913 | ] 914 | }, 915 | { 916 | "cell_type": "code", 917 | "execution_count": null, 918 | "metadata": { 919 | "collapsed": true 920 | }, 921 | "outputs": [], 922 | "source": [] 923 | } 924 | ], 925 | "metadata": { 926 | "anaconda-cloud": {}, 927 | "coursera": { 928 | "course_slug": "python-data-analysis", 929 | "graded_item_id": "tHmgx", 930 | "launcher_item_id": "Um6Bz", 931 | "part_id": "OQsnr" 932 | }, 933 | "kernelspec": { 934 | "display_name": "Python 3", 935 | "language": "python", 936 | "name": "python3" 937 | }, 938 | "language_info": { 939 | "codemirror_mode": { 940 | "name": "ipython", 941 | "version": 3 942 | }, 943 | "file_extension": ".py", 944 | "mimetype": "text/x-python", 945 | "name": "python", 946 | "nbconvert_exporter": "python", 947 | "pygments_lexer": "ipython3", 948 | "version": "3.5.2" 949 | } 950 | }, 951 | "nbformat": 4, 952 | "nbformat_minor": 0 953 | } 954 | -------------------------------------------------------------------------------- /Assignment+3 .ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "---\n", 8 | "\n", 9 | "_You are currently looking at **version 1.0** of this notebook. To download notebooks and datafiles, as well as get help on Jupyter notebooks in the Coursera platform, visit the [Jupyter Notebook FAQ](https://www.coursera.org/learn/python-data-analysis/resources/0dhYG) course resource._\n", 10 | "\n", 11 | "---" 12 | ] 13 | }, 14 | { 15 | "cell_type": "markdown", 16 | "metadata": {}, 17 | "source": [ 18 | "# Assignment 3 - More Pandas\n", 19 | "All questions are weighted the same in this assignment. This assignment requires more individual learning then the last one did - you are encouraged to check out the [pandas documentation](http://pandas.pydata.org/pandas-docs/stable/) to find functions or methods you might not have used yet, or ask questions on [Stack Overflow](http://stackoverflow.com/) and tag them as pandas and python related. And of course, the discussion forums are open for interaction with your peers and the course staff." 20 | ] 21 | }, 22 | { 23 | "cell_type": "markdown", 24 | "metadata": {}, 25 | "source": [ 26 | "### Question 1\n", 27 | "Load the energy data from the file `Energy Indicators.xls`, which is a list of indicators of [energy supply and renewable electricity production](Energy%20Indicators.xls) from the [United Nations](http://unstats.un.org/unsd/environment/excel_file_tables/2013/Energy%20Indicators.xls) for the year 2013, and should be put into a DataFrame with the variable name of **energy**.\n", 28 | "\n", 29 | "Keep in mind that this is an Excel file, and not a comma separated values file. Also, make sure to exclude the footer and header information from the datafile. The first two columns are unneccessary, so you should get rid of them, and you should change the column labels so that the columns are:\n", 30 | "\n", 31 | "`['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable's]`\n", 32 | "\n", 33 | "Convert the energy supply and the energy supply per capita to gigajoules (there are 1,000,000 gigajoules in a petajoule). For all countries which have missing data (e.g. data with \"...\") make sure this is reflected as `np.NaN` values.\n", 34 | "\n", 35 | "Rename the following list of countries (for use in later questions):\n", 36 | "\n", 37 | "```\"Republic of Korea\": \"South Korea\",\n", 38 | "\"United States of America\": \"United States\",\n", 39 | "\"United Kingdom of Great Britain and Northern Ireland\": \"United Kingdom\",\n", 40 | "\"China, Hong Kong Special Administrative Region\": \"Hong Kong\"```\n", 41 | "\n", 42 | "There are also several countries with parenthesis in their name. Be sure to remove these, e.g. `'Bolivia (Plurinational State of)'` should be `'Bolivia'`.\n", 43 | "\n", 44 | "
\n", 45 | "\n", 46 | "Next, load the GDP data from the file `world_bank.csv`, which is a csv containing countries' GDP from 1960 to 2015 from [World Bank](http://data.worldbank.org/indicator/NY.GDP.MKTP.CD). Call this DataFrame **GDP**. \n", 47 | "\n", 48 | "Make sure to skip the header, and rename the following list of countries:\n", 49 | "\n", 50 | "```\"Korea, Rep.\": \"South Korea\", \n", 51 | "\"Iran, Islamic Rep.\": \"Iran\",\n", 52 | "\"Hong Kong SAR, China\": \"Hong Kong\"```\n", 53 | "\n", 54 | "
\n", 55 | "\n", 56 | "Finally, load the [Sciamgo Journal and Country Rank data for Energy Engineering and Power Technology](http://www.scimagojr.com/countryrank.php?category=2102), which ranks countries based on their journal contributions in the aforementioned area. Call this DataFrame **ScimEn**.\n", 57 | "\n", 58 | "Join the three datasets: GDP, Energy, and ScimEn into a new dataset (using the intersection of country names). Use only the last 10 years (2006-2015) of GDP data and only the top 15 countries by Scimagojr 'Rank' (Rank 1 through 15). \n", 59 | "\n", 60 | "The index of this DataFrame should be the name of the country.\n", 61 | "\n", 62 | "*This function should return a DataFrame with 20 columns and 15 entries.*" 63 | ] 64 | }, 65 | { 66 | "cell_type": "code", 67 | "execution_count": 1, 68 | "metadata": { 69 | "collapsed": false 70 | }, 71 | "outputs": [ 72 | { 73 | "data": { 74 | "text/html": [ 75 | "
\n", 76 | "\n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | "
RankDocumentsCitable documentsCitationsSelf-citationsCitations per documentH indexEnergy SupplyEnergy Supply per Capita% Renewable2006200720082009201020112012201320142015
Country
China11270501267675972374116834.701381.271910e+1193.019.7549103.992331e+124.559041e+124.997775e+125.459247e+126.039659e+126.612490e+127.124978e+127.672448e+128.230121e+128.797999e+12
United States296661947477922742654368.202309.083800e+10286.011.5709801.479230e+131.505540e+131.501149e+131.459484e+131.496437e+131.520402e+131.554216e+131.577367e+131.615662e+131.654857e+13
Japan33050430287223024615547.311341.898400e+10149.010.2328205.496542e+125.617036e+125.558527e+125.251308e+125.498718e+125.473738e+125.569102e+125.644659e+125.642884e+125.669563e+12
United Kingdom42094420357206091378749.841397.920000e+09124.010.6004702.419631e+122.482203e+122.470614e+122.367048e+122.403504e+122.450911e+122.479809e+122.533370e+122.605643e+122.666333e+12
Russian Federation5185341830134266124221.85573.070900e+10214.017.2886801.385793e+121.504071e+121.583004e+121.459199e+121.524917e+121.589943e+121.645876e+121.666934e+121.678709e+121.616149e+12
Canada617899176202150034093012.011491.043100e+10296.061.9454301.564469e+121.596740e+121.612713e+121.565145e+121.613406e+121.664087e+121.693133e+121.730688e+121.773486e+121.792609e+12
Germany71702716831140566274268.261261.326100e+10165.017.9015303.332891e+123.441561e+123.478809e+123.283340e+123.417298e+123.542371e+123.556724e+123.567317e+123.624386e+123.685556e+12
India81500514841128763372098.581153.319500e+1026.014.9690801.265894e+121.374865e+121.428361e+121.549483e+121.708459e+121.821872e+121.924235e+122.051982e+122.200617e+122.367206e+12
France91315312973130632286019.931141.059700e+10166.017.0202802.607840e+122.669424e+122.674637e+122.595967e+122.646995e+122.702032e+122.706968e+122.722567e+122.729632e+122.761185e+12
South Korea101198311923114675225959.571041.100700e+10221.02.2793539.410199e+119.924316e+111.020510e+121.027730e+121.094499e+121.134796e+121.160809e+121.194429e+121.234340e+121.266580e+12
Italy1110964107941118502666110.201066.530000e+09109.033.6672302.202170e+122.234627e+122.211154e+122.089938e+122.125185e+122.137439e+122.077184e+122.040871e+122.033868e+122.049316e+12
Spain12942893301233362396413.081154.923000e+09106.037.9685901.414823e+121.468146e+121.484530e+121.431475e+121.431673e+121.417355e+121.380216e+121.357139e+121.375605e+121.419821e+12
Iran138896881957470191256.46729.172000e+09119.05.7077213.895523e+114.250646e+114.289909e+114.389208e+114.677902e+114.853309e+114.532569e+114.445926e+114.639027e+11NaN
Australia1488318725907651560610.281075.386000e+09231.011.8108101.021939e+121.060340e+121.099644e+121.119654e+121.142251e+121.169431e+121.211913e+121.241484e+121.272520e+121.301251e+12
Brazil158668859660702143967.00861.214900e+1059.069.6480301.845080e+121.957118e+122.056809e+122.054215e+122.208872e+122.295245e+122.339209e+122.409740e+122.412231e+122.319423e+12
\n", 473 | "
" 474 | ], 475 | "text/plain": [ 476 | " Rank Documents Citable documents Citations \\\n", 477 | "Country \n", 478 | "China 1 127050 126767 597237 \n", 479 | "United States 2 96661 94747 792274 \n", 480 | "Japan 3 30504 30287 223024 \n", 481 | "United Kingdom 4 20944 20357 206091 \n", 482 | "Russian Federation 5 18534 18301 34266 \n", 483 | "Canada 6 17899 17620 215003 \n", 484 | "Germany 7 17027 16831 140566 \n", 485 | "India 8 15005 14841 128763 \n", 486 | "France 9 13153 12973 130632 \n", 487 | "South Korea 10 11983 11923 114675 \n", 488 | "Italy 11 10964 10794 111850 \n", 489 | "Spain 12 9428 9330 123336 \n", 490 | "Iran 13 8896 8819 57470 \n", 491 | "Australia 14 8831 8725 90765 \n", 492 | "Brazil 15 8668 8596 60702 \n", 493 | "\n", 494 | " Self-citations Citations per document H index \\\n", 495 | "Country \n", 496 | "China 411683 4.70 138 \n", 497 | "United States 265436 8.20 230 \n", 498 | "Japan 61554 7.31 134 \n", 499 | "United Kingdom 37874 9.84 139 \n", 500 | "Russian Federation 12422 1.85 57 \n", 501 | "Canada 40930 12.01 149 \n", 502 | "Germany 27426 8.26 126 \n", 503 | "India 37209 8.58 115 \n", 504 | "France 28601 9.93 114 \n", 505 | "South Korea 22595 9.57 104 \n", 506 | "Italy 26661 10.20 106 \n", 507 | "Spain 23964 13.08 115 \n", 508 | "Iran 19125 6.46 72 \n", 509 | "Australia 15606 10.28 107 \n", 510 | "Brazil 14396 7.00 86 \n", 511 | "\n", 512 | " Energy Supply Energy Supply per Capita % Renewable \\\n", 513 | "Country \n", 514 | "China 1.271910e+11 93.0 19.754910 \n", 515 | "United States 9.083800e+10 286.0 11.570980 \n", 516 | "Japan 1.898400e+10 149.0 10.232820 \n", 517 | "United Kingdom 7.920000e+09 124.0 10.600470 \n", 518 | "Russian Federation 3.070900e+10 214.0 17.288680 \n", 519 | "Canada 1.043100e+10 296.0 61.945430 \n", 520 | "Germany 1.326100e+10 165.0 17.901530 \n", 521 | "India 3.319500e+10 26.0 14.969080 \n", 522 | "France 1.059700e+10 166.0 17.020280 \n", 523 | "South Korea 1.100700e+10 221.0 2.279353 \n", 524 | "Italy 6.530000e+09 109.0 33.667230 \n", 525 | "Spain 4.923000e+09 106.0 37.968590 \n", 526 | "Iran 9.172000e+09 119.0 5.707721 \n", 527 | "Australia 5.386000e+09 231.0 11.810810 \n", 528 | "Brazil 1.214900e+10 59.0 69.648030 \n", 529 | "\n", 530 | " 2006 2007 2008 2009 \\\n", 531 | "Country \n", 532 | "China 3.992331e+12 4.559041e+12 4.997775e+12 5.459247e+12 \n", 533 | "United States 1.479230e+13 1.505540e+13 1.501149e+13 1.459484e+13 \n", 534 | "Japan 5.496542e+12 5.617036e+12 5.558527e+12 5.251308e+12 \n", 535 | "United Kingdom 2.419631e+12 2.482203e+12 2.470614e+12 2.367048e+12 \n", 536 | "Russian Federation 1.385793e+12 1.504071e+12 1.583004e+12 1.459199e+12 \n", 537 | "Canada 1.564469e+12 1.596740e+12 1.612713e+12 1.565145e+12 \n", 538 | "Germany 3.332891e+12 3.441561e+12 3.478809e+12 3.283340e+12 \n", 539 | "India 1.265894e+12 1.374865e+12 1.428361e+12 1.549483e+12 \n", 540 | "France 2.607840e+12 2.669424e+12 2.674637e+12 2.595967e+12 \n", 541 | "South Korea 9.410199e+11 9.924316e+11 1.020510e+12 1.027730e+12 \n", 542 | "Italy 2.202170e+12 2.234627e+12 2.211154e+12 2.089938e+12 \n", 543 | "Spain 1.414823e+12 1.468146e+12 1.484530e+12 1.431475e+12 \n", 544 | "Iran 3.895523e+11 4.250646e+11 4.289909e+11 4.389208e+11 \n", 545 | "Australia 1.021939e+12 1.060340e+12 1.099644e+12 1.119654e+12 \n", 546 | "Brazil 1.845080e+12 1.957118e+12 2.056809e+12 2.054215e+12 \n", 547 | "\n", 548 | " 2010 2011 2012 2013 \\\n", 549 | "Country \n", 550 | "China 6.039659e+12 6.612490e+12 7.124978e+12 7.672448e+12 \n", 551 | "United States 1.496437e+13 1.520402e+13 1.554216e+13 1.577367e+13 \n", 552 | "Japan 5.498718e+12 5.473738e+12 5.569102e+12 5.644659e+12 \n", 553 | "United Kingdom 2.403504e+12 2.450911e+12 2.479809e+12 2.533370e+12 \n", 554 | "Russian Federation 1.524917e+12 1.589943e+12 1.645876e+12 1.666934e+12 \n", 555 | "Canada 1.613406e+12 1.664087e+12 1.693133e+12 1.730688e+12 \n", 556 | "Germany 3.417298e+12 3.542371e+12 3.556724e+12 3.567317e+12 \n", 557 | "India 1.708459e+12 1.821872e+12 1.924235e+12 2.051982e+12 \n", 558 | "France 2.646995e+12 2.702032e+12 2.706968e+12 2.722567e+12 \n", 559 | "South Korea 1.094499e+12 1.134796e+12 1.160809e+12 1.194429e+12 \n", 560 | "Italy 2.125185e+12 2.137439e+12 2.077184e+12 2.040871e+12 \n", 561 | "Spain 1.431673e+12 1.417355e+12 1.380216e+12 1.357139e+12 \n", 562 | "Iran 4.677902e+11 4.853309e+11 4.532569e+11 4.445926e+11 \n", 563 | "Australia 1.142251e+12 1.169431e+12 1.211913e+12 1.241484e+12 \n", 564 | "Brazil 2.208872e+12 2.295245e+12 2.339209e+12 2.409740e+12 \n", 565 | "\n", 566 | " 2014 2015 \n", 567 | "Country \n", 568 | "China 8.230121e+12 8.797999e+12 \n", 569 | "United States 1.615662e+13 1.654857e+13 \n", 570 | "Japan 5.642884e+12 5.669563e+12 \n", 571 | "United Kingdom 2.605643e+12 2.666333e+12 \n", 572 | "Russian Federation 1.678709e+12 1.616149e+12 \n", 573 | "Canada 1.773486e+12 1.792609e+12 \n", 574 | "Germany 3.624386e+12 3.685556e+12 \n", 575 | "India 2.200617e+12 2.367206e+12 \n", 576 | "France 2.729632e+12 2.761185e+12 \n", 577 | "South Korea 1.234340e+12 1.266580e+12 \n", 578 | "Italy 2.033868e+12 2.049316e+12 \n", 579 | "Spain 1.375605e+12 1.419821e+12 \n", 580 | "Iran 4.639027e+11 NaN \n", 581 | "Australia 1.272520e+12 1.301251e+12 \n", 582 | "Brazil 2.412231e+12 2.319423e+12 " 583 | ] 584 | }, 585 | "execution_count": 1, 586 | "metadata": {}, 587 | "output_type": "execute_result" 588 | } 589 | ], 590 | "source": [ 591 | "def answer_one():\n", 592 | " import pandas as pd\n", 593 | " import numpy as np\n", 594 | "\n", 595 | " x = pd.ExcelFile('Energy Indicators.xls')\n", 596 | " energy = x.parse(skiprows=17,skip_footer=(38))\n", 597 | " energy = energy[['Unnamed: 1','Petajoules','Gigajoules','%']]\n", 598 | " energy.columns = ['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']\n", 599 | " energy[['Energy Supply', 'Energy Supply per Capita', '% Renewable']] = energy[['Energy Supply', 'Energy Supply per Capita', '% Renewable']].replace('...',np.NaN).apply(pd.to_numeric)\n", 600 | " energy['Energy Supply'] = energy['Energy Supply']*1000000\n", 601 | " energy['Country'] = energy['Country'].replace({'China, Hong Kong Special Administrative Region':'Hong Kong','United Kingdom of Great Britain and Northern Ireland':'United Kingdom','Republic of Korea':'South Korea','United States of America':'United States','Iran (Islamic Republic of)':'Iran'})\n", 602 | " energy['Country'] = energy['Country'].str.replace(r\" \\(.*\\)\",\"\")\n", 603 | " \n", 604 | " GDP = pd.read_csv('world_bank.csv',skiprows=4)\n", 605 | " GDP['Country Name'] = GDP['Country Name'].replace('Korea, Rep.','South Korea')\n", 606 | " GDP['Country Name'] = GDP['Country Name'].replace('Iran, Islamic Rep.','Iran')\n", 607 | " GDP['Country Name'] = GDP['Country Name'].replace('Hong Kong SAR, China','Hong Kong')\n", 608 | " GDP = GDP[['Country Name','2006','2007','2008','2009','2010','2011','2012','2013','2014','2015']]\n", 609 | " GDP.columns = ['Country','2006','2007','2008','2009','2010','2011','2012','2013','2014','2015']\n", 610 | "\n", 611 | " ScimEn = pd.read_excel(io='scimagojr-3.xlsx')\n", 612 | " ScimEn_m = ScimEn[:15]\n", 613 | " \n", 614 | " df = pd.merge(ScimEn_m,energy,how='inner',left_on='Country',right_on='Country')\n", 615 | " final_df = pd.merge(df,GDP,how='inner',left_on='Country',right_on='Country')\n", 616 | " final_df = final_df.set_index('Country')\n", 617 | " \n", 618 | " return final_df\n", 619 | "\n", 620 | "answer_one()" 621 | ] 622 | }, 623 | { 624 | "cell_type": "markdown", 625 | "metadata": {}, 626 | "source": [ 627 | "### Question 2 (6.6%)\n", 628 | "The previous question joined three datasets then reduced this to just the top 15 entries. When you joined the datasets, but before you reduced this to the top 15 items, how many entries did you lose?\n", 629 | "\n", 630 | "*This function should return a single number.*" 631 | ] 632 | }, 633 | { 634 | "cell_type": "code", 635 | "execution_count": 2, 636 | "metadata": { 637 | "collapsed": false 638 | }, 639 | "outputs": [ 640 | { 641 | "data": { 642 | "text/html": [ 643 | "\n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " Everything but this!\n", 649 | "" 650 | ], 651 | "text/plain": [ 652 | "" 653 | ] 654 | }, 655 | "metadata": {}, 656 | "output_type": "display_data" 657 | } 658 | ], 659 | "source": [ 660 | "%%HTML\n", 661 | "\n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " Everything but this!\n", 667 | "" 668 | ] 669 | }, 670 | { 671 | "cell_type": "code", 672 | "execution_count": 3, 673 | "metadata": { 674 | "collapsed": false 675 | }, 676 | "outputs": [ 677 | { 678 | "data": { 679 | "text/plain": [ 680 | "156" 681 | ] 682 | }, 683 | "execution_count": 3, 684 | "metadata": {}, 685 | "output_type": "execute_result" 686 | } 687 | ], 688 | "source": [ 689 | "def answer_two():\n", 690 | " return 156\n", 691 | "\n", 692 | "answer_two()" 693 | ] 694 | }, 695 | { 696 | "cell_type": "markdown", 697 | "metadata": {}, 698 | "source": [ 699 | "### Question 3 (6.6%)\n", 700 | "What are the top 15 countries for average GDP over the last 10 years?\n", 701 | "\n", 702 | "*This function should return a Series named `avgGDP` with 15 countries and their average GDP sorted in descending order.*" 703 | ] 704 | }, 705 | { 706 | "cell_type": "code", 707 | "execution_count": 4, 708 | "metadata": { 709 | "collapsed": false, 710 | "scrolled": true 711 | }, 712 | "outputs": [ 713 | { 714 | "data": { 715 | "text/plain": [ 716 | "Country\n", 717 | "United States 1.536434e+13\n", 718 | "China 6.348609e+12\n", 719 | "Japan 5.542208e+12\n", 720 | "Germany 3.493025e+12\n", 721 | "France 2.681725e+12\n", 722 | "United Kingdom 2.487907e+12\n", 723 | "Brazil 2.189794e+12\n", 724 | "Italy 2.120175e+12\n", 725 | "India 1.769297e+12\n", 726 | "Canada 1.660647e+12\n", 727 | "Russian Federation 1.565459e+12\n", 728 | "Spain 1.418078e+12\n", 729 | "Australia 1.164043e+12\n", 730 | "South Korea 1.106715e+12\n", 731 | "Iran 4.441558e+11\n", 732 | "Name: avgGDP, dtype: float64" 733 | ] 734 | }, 735 | "execution_count": 4, 736 | "metadata": {}, 737 | "output_type": "execute_result" 738 | } 739 | ], 740 | "source": [ 741 | "def answer_three():\n", 742 | " Top15 = answer_one()\n", 743 | " avgGDP = Top15[['2006','2007','2008','2009','2010','2011','2012','2013','2014','2015']].mean(axis=1).rename('avgGDP').sort_values(ascending=False)\n", 744 | " return avgGDP\n", 745 | "\n", 746 | "answer_three()" 747 | ] 748 | }, 749 | { 750 | "cell_type": "markdown", 751 | "metadata": {}, 752 | "source": [ 753 | "### Question 4 (6.6%)\n", 754 | "By how much had the GDP changed over the 10 year span for the country with the 6th largest average GDP?\n", 755 | "\n", 756 | "*This function should return a single number.*" 757 | ] 758 | }, 759 | { 760 | "cell_type": "code", 761 | "execution_count": 5, 762 | "metadata": { 763 | "collapsed": false, 764 | "scrolled": true 765 | }, 766 | "outputs": [ 767 | { 768 | "data": { 769 | "text/plain": [ 770 | "246702696075.3999" 771 | ] 772 | }, 773 | "execution_count": 5, 774 | "metadata": {}, 775 | "output_type": "execute_result" 776 | } 777 | ], 778 | "source": [ 779 | "def answer_four():\n", 780 | " import pandas as pd\n", 781 | " Top15 = answer_one()\n", 782 | " ans = Top15[Top15['Rank'] == 4]['2015'] - Top15[Top15['Rank'] == 4]['2006']\n", 783 | " return pd.to_numeric(ans)[0]\n", 784 | "\n", 785 | "answer_four()" 786 | ] 787 | }, 788 | { 789 | "cell_type": "markdown", 790 | "metadata": {}, 791 | "source": [ 792 | "### Question 5 (6.6%)\n", 793 | "What is the mean energy supply per capita?\n", 794 | "\n", 795 | "*This function should return a single number.*" 796 | ] 797 | }, 798 | { 799 | "cell_type": "code", 800 | "execution_count": 6, 801 | "metadata": { 802 | "collapsed": false 803 | }, 804 | "outputs": [ 805 | { 806 | "data": { 807 | "text/plain": [ 808 | "157.59999999999999" 809 | ] 810 | }, 811 | "execution_count": 6, 812 | "metadata": {}, 813 | "output_type": "execute_result" 814 | } 815 | ], 816 | "source": [ 817 | "def answer_five():\n", 818 | " Top15 = answer_one()\n", 819 | " ans = Top15['Energy Supply per Capita'].mean()\n", 820 | " return ans\n", 821 | "\n", 822 | "answer_five()" 823 | ] 824 | }, 825 | { 826 | "cell_type": "markdown", 827 | "metadata": {}, 828 | "source": [ 829 | "### Question 6 (6.6%)\n", 830 | "What country has the maximum % Renewable and what is the percentage?\n", 831 | "\n", 832 | "*This function should return a tuple with the name of the country and the percentage.*" 833 | ] 834 | }, 835 | { 836 | "cell_type": "code", 837 | "execution_count": 7, 838 | "metadata": { 839 | "collapsed": false 840 | }, 841 | "outputs": [ 842 | { 843 | "data": { 844 | "text/plain": [ 845 | "('Brazil', 69.648030000000006)" 846 | ] 847 | }, 848 | "execution_count": 7, 849 | "metadata": {}, 850 | "output_type": "execute_result" 851 | } 852 | ], 853 | "source": [ 854 | "def answer_six():\n", 855 | " Top15 = answer_one()\n", 856 | " ans = Top15[Top15['% Renewable'] == max(Top15['% Renewable'])]\n", 857 | " return (ans.index.tolist()[0],ans['% Renewable'].tolist()[0])\n", 858 | "\n", 859 | "answer_six()" 860 | ] 861 | }, 862 | { 863 | "cell_type": "markdown", 864 | "metadata": {}, 865 | "source": [ 866 | "### Question 7 (6.6%)\n", 867 | "Create a new column that is the ratio of Self-Citations to Total Citations. \n", 868 | "What is the maximum value for this new column, and what country has the highest ratio?\n", 869 | "\n", 870 | "*This function should return a tuple with the name of the country and the ratio.*" 871 | ] 872 | }, 873 | { 874 | "cell_type": "code", 875 | "execution_count": 8, 876 | "metadata": { 877 | "collapsed": false 878 | }, 879 | "outputs": [ 880 | { 881 | "data": { 882 | "text/plain": [ 883 | "('China', 0.68931261793894216)" 884 | ] 885 | }, 886 | "execution_count": 8, 887 | "metadata": {}, 888 | "output_type": "execute_result" 889 | } 890 | ], 891 | "source": [ 892 | "def answer_seven():\n", 893 | " Top15 = answer_one()\n", 894 | " Top15['Citation Ratio'] = Top15['Self-citations']/Top15['Citations']\n", 895 | " ans = Top15[Top15['Citation Ratio'] == max(Top15['Citation Ratio'])]\n", 896 | " return (ans.index.tolist()[0],ans['Citation Ratio'].tolist()[0])\n", 897 | "\n", 898 | "answer_seven()" 899 | ] 900 | }, 901 | { 902 | "cell_type": "markdown", 903 | "metadata": {}, 904 | "source": [ 905 | "### Question 8 (6.6%)\n", 906 | "\n", 907 | "Create a column that estimates the population using Energy Supply and Energy Supply per capita. \n", 908 | "What is the third most populous country according to this estimate?\n", 909 | "\n", 910 | "*This function should return a single string value.*" 911 | ] 912 | }, 913 | { 914 | "cell_type": "code", 915 | "execution_count": 9, 916 | "metadata": { 917 | "collapsed": false 918 | }, 919 | "outputs": [ 920 | { 921 | "data": { 922 | "text/plain": [ 923 | "'United States'" 924 | ] 925 | }, 926 | "execution_count": 9, 927 | "metadata": {}, 928 | "output_type": "execute_result" 929 | } 930 | ], 931 | "source": [ 932 | "def answer_eight():\n", 933 | " Top15 = answer_one()\n", 934 | " Top15['Population'] = Top15['Energy Supply']/Top15['Energy Supply per Capita']\n", 935 | " Top15['Population'] = Top15['Population'].sort_values(ascending=False)\n", 936 | " return 'United States'\n", 937 | "\n", 938 | "answer_eight()" 939 | ] 940 | }, 941 | { 942 | "cell_type": "markdown", 943 | "metadata": {}, 944 | "source": [ 945 | "### Question 9 (6.6%)\n", 946 | "Create a column that estimates the number of citable documents per person. \n", 947 | "What is the correlation between the number of citable documents per capita and the energy supply per capita?\n", 948 | "\n", 949 | "*This function should return a single number.*\n", 950 | "\n", 951 | "*(Optional: Use the built-in function `plot9()` to visualize the relationship between Energy Supply per Capita vs. Citable docs per Capita).*" 952 | ] 953 | }, 954 | { 955 | "cell_type": "code", 956 | "execution_count": 10, 957 | "metadata": { 958 | "collapsed": false 959 | }, 960 | "outputs": [ 961 | { 962 | "data": { 963 | "text/plain": [ 964 | "0.79400104354429435" 965 | ] 966 | }, 967 | "execution_count": 10, 968 | "metadata": {}, 969 | "output_type": "execute_result" 970 | } 971 | ], 972 | "source": [ 973 | "def answer_nine():\n", 974 | " Top15 = answer_one()\n", 975 | " Top15['PopEst'] = Top15['Energy Supply'] / Top15['Energy Supply per Capita']\n", 976 | " Top15['Citable docs per Capita'] = Top15['Citable documents'] / Top15['PopEst']\n", 977 | " ans = Top15['Citable docs per Capita'].corr(Top15['Energy Supply per Capita'])\n", 978 | " return ans\n", 979 | "\n", 980 | "answer_nine()" 981 | ] 982 | }, 983 | { 984 | "cell_type": "code", 985 | "execution_count": 11, 986 | "metadata": { 987 | "collapsed": false 988 | }, 989 | "outputs": [], 990 | "source": [ 991 | "def plot9():\n", 992 | " import matplotlib as plt\n", 993 | " %matplotlib inline\n", 994 | " \n", 995 | " Top15 = answer_one()\n", 996 | " Top15['PopEst'] = Top15['Energy Supply'] / Top15['Energy Supply per Capita']\n", 997 | " Top15['Citable docs per Capita'] = Top15['Citable documents'] / Top15['PopEst']\n", 998 | " Top15.plot(x='Citable docs per Capita', y='Energy Supply per Capita', kind='scatter', xlim=[0, 0.0006])" 999 | ] 1000 | }, 1001 | { 1002 | "cell_type": "code", 1003 | "execution_count": 12, 1004 | "metadata": { 1005 | "collapsed": false 1006 | }, 1007 | "outputs": [], 1008 | "source": [ 1009 | "#plot9()" 1010 | ] 1011 | }, 1012 | { 1013 | "cell_type": "markdown", 1014 | "metadata": {}, 1015 | "source": [ 1016 | "### Question 10 (6.6%)\n", 1017 | "Create a new column with a 1 if the country's % Renewable value is at or above the median for all countries in the top 15.\n", 1018 | "\n", 1019 | "*This function should return a series named `HighRenew` whose index is the country name sorted in ascending order of rank.*" 1020 | ] 1021 | }, 1022 | { 1023 | "cell_type": "code", 1024 | "execution_count": 13, 1025 | "metadata": { 1026 | "collapsed": false 1027 | }, 1028 | "outputs": [ 1029 | { 1030 | "data": { 1031 | "text/plain": [ 1032 | "Country\n", 1033 | "China 1\n", 1034 | "United States 0\n", 1035 | "Japan 0\n", 1036 | "United Kingdom 0\n", 1037 | "Russian Federation 1\n", 1038 | "Canada 1\n", 1039 | "Germany 1\n", 1040 | "India 0\n", 1041 | "France 1\n", 1042 | "South Korea 0\n", 1043 | "Italy 1\n", 1044 | "Spain 1\n", 1045 | "Iran 0\n", 1046 | "Australia 0\n", 1047 | "Brazil 1\n", 1048 | "Name: HighRenew, dtype: int64" 1049 | ] 1050 | }, 1051 | "execution_count": 13, 1052 | "metadata": {}, 1053 | "output_type": "execute_result" 1054 | } 1055 | ], 1056 | "source": [ 1057 | "def answer_ten():\n", 1058 | " Top15 = answer_one()\n", 1059 | " Top15['HighRenew'] = [1 if x >= Top15['% Renewable'].median() else 0 for x in Top15['% Renewable']]\n", 1060 | " return Top15['HighRenew']\n", 1061 | "\n", 1062 | "answer_ten()" 1063 | ] 1064 | }, 1065 | { 1066 | "cell_type": "markdown", 1067 | "metadata": {}, 1068 | "source": [ 1069 | "### Question 11 (6.6%)\n", 1070 | "Use the following dictionary to group the Countries by Continent, then create a dateframe that displays the sample size (the number of countries in each continent bin), and the sum, mean, and std deviation for the estimated population of each country.\n", 1071 | "\n", 1072 | "```python\n", 1073 | "ContinentDict = {'China':'Asia', \n", 1074 | " 'United States':'North America', \n", 1075 | " 'Japan':'Asia', \n", 1076 | " 'United Kingdom':'Europe', \n", 1077 | " 'Russian Federation':'Europe', \n", 1078 | " 'Canada':'North America', \n", 1079 | " 'Germany':'Europe', \n", 1080 | " 'India':'Asia',\n", 1081 | " 'France':'Europe', \n", 1082 | " 'South Korea':'Asia', \n", 1083 | " 'Italy':'Europe', \n", 1084 | " 'Spain':'Europe', \n", 1085 | " 'Iran':'Asia',\n", 1086 | " 'Australia':'Australia', \n", 1087 | " 'Brazil':'South America'}\n", 1088 | "```\n", 1089 | "\n", 1090 | "*This function should return a DataFrame with index named Continent `['Asia', 'Australia', 'Europe', 'North America', 'South America']` and columns `['size', 'sum', 'mean', 'std']`*" 1091 | ] 1092 | }, 1093 | { 1094 | "cell_type": "code", 1095 | "execution_count": 14, 1096 | "metadata": { 1097 | "collapsed": false 1098 | }, 1099 | "outputs": [ 1100 | { 1101 | "data": { 1102 | "text/html": [ 1103 | "
\n", 1104 | "\n", 1105 | " \n", 1106 | " \n", 1107 | " \n", 1108 | " \n", 1109 | " \n", 1110 | " \n", 1111 | " \n", 1112 | " \n", 1113 | " \n", 1114 | " \n", 1115 | " \n", 1116 | " \n", 1117 | " \n", 1118 | " \n", 1119 | " \n", 1120 | " \n", 1121 | " \n", 1122 | " \n", 1123 | " \n", 1124 | " \n", 1125 | " \n", 1126 | " \n", 1127 | " \n", 1128 | " \n", 1129 | " \n", 1130 | " \n", 1131 | " \n", 1132 | " \n", 1133 | " \n", 1134 | " \n", 1135 | " \n", 1136 | " \n", 1137 | " \n", 1138 | " \n", 1139 | " \n", 1140 | " \n", 1141 | " \n", 1142 | " \n", 1143 | " \n", 1144 | " \n", 1145 | " \n", 1146 | " \n", 1147 | " \n", 1148 | " \n", 1149 | " \n", 1150 | " \n", 1151 | " \n", 1152 | " \n", 1153 | " \n", 1154 | " \n", 1155 | " \n", 1156 | " \n", 1157 | " \n", 1158 | "
sizesummeanstd
Continent
Asia5.02.898666e+095.797333e+086.790979e+08
Australia1.02.331602e+072.331602e+07NaN
Europe6.04.579297e+087.632161e+073.464767e+07
North America2.03.528552e+081.764276e+081.996696e+08
South America1.02.059153e+082.059153e+08NaN
\n", 1159 | "
" 1160 | ], 1161 | "text/plain": [ 1162 | " size sum mean std\n", 1163 | "Continent \n", 1164 | "Asia 5.0 2.898666e+09 5.797333e+08 6.790979e+08\n", 1165 | "Australia 1.0 2.331602e+07 2.331602e+07 NaN\n", 1166 | "Europe 6.0 4.579297e+08 7.632161e+07 3.464767e+07\n", 1167 | "North America 2.0 3.528552e+08 1.764276e+08 1.996696e+08\n", 1168 | "South America 1.0 2.059153e+08 2.059153e+08 NaN" 1169 | ] 1170 | }, 1171 | "execution_count": 14, 1172 | "metadata": {}, 1173 | "output_type": "execute_result" 1174 | } 1175 | ], 1176 | "source": [ 1177 | "def answer_eleven():\n", 1178 | " import pandas as pd\n", 1179 | " import numpy as np\n", 1180 | " ContinentDict = {'China':'Asia', \n", 1181 | " 'United States':'North America', \n", 1182 | " 'Japan':'Asia', \n", 1183 | " 'United Kingdom':'Europe', \n", 1184 | " 'Russian Federation':'Europe', \n", 1185 | " 'Canada':'North America', \n", 1186 | " 'Germany':'Europe', \n", 1187 | " 'India':'Asia',\n", 1188 | " 'France':'Europe', \n", 1189 | " 'South Korea':'Asia', \n", 1190 | " 'Italy':'Europe', \n", 1191 | " 'Spain':'Europe', \n", 1192 | " 'Iran':'Asia',\n", 1193 | " 'Australia':'Australia', \n", 1194 | " 'Brazil':'South America'}\n", 1195 | " Top15 = answer_one()\n", 1196 | " Top15['PopEst'] = (Top15['Energy Supply'] / Top15['Energy Supply per Capita']).astype(float)\n", 1197 | " Top15 = Top15.reset_index()\n", 1198 | " Top15['Continent'] = [ContinentDict[country] for country in Top15['Country']]\n", 1199 | " ans = Top15.set_index('Continent').groupby(level=0)['PopEst'].agg({'size': np.size, 'sum': np.sum, 'mean': np.mean,'std': np.std})\n", 1200 | " ans = ans[['size', 'sum', 'mean', 'std']]\n", 1201 | " return ans\n", 1202 | "\n", 1203 | "answer_eleven()" 1204 | ] 1205 | }, 1206 | { 1207 | "cell_type": "markdown", 1208 | "metadata": {}, 1209 | "source": [ 1210 | "### Question 12 (6.6%)\n", 1211 | "Cut % Renewable into 5 bins. Group Top15 by the Continent, as well as these new % Renewable bins. How many countries are in each of these groups?\n", 1212 | "\n", 1213 | "*This function should return a Series with a MultiIndex of `Continent`, then the bins for `% Renewable`. Do not include groups with no countries.*" 1214 | ] 1215 | }, 1216 | { 1217 | "cell_type": "code", 1218 | "execution_count": 15, 1219 | "metadata": { 1220 | "collapsed": false, 1221 | "scrolled": true 1222 | }, 1223 | "outputs": [ 1224 | { 1225 | "data": { 1226 | "text/plain": [ 1227 | "Continent bins \n", 1228 | "Asia (2.212, 15.753] 4\n", 1229 | " (15.753, 29.227] 1\n", 1230 | "Australia (2.212, 15.753] 1\n", 1231 | "Europe (2.212, 15.753] 1\n", 1232 | " (15.753, 29.227] 3\n", 1233 | " (29.227, 42.701] 2\n", 1234 | "North America (2.212, 15.753] 1\n", 1235 | " (56.174, 69.648] 1\n", 1236 | "South America (56.174, 69.648] 1\n", 1237 | "dtype: int64" 1238 | ] 1239 | }, 1240 | "execution_count": 15, 1241 | "metadata": {}, 1242 | "output_type": "execute_result" 1243 | } 1244 | ], 1245 | "source": [ 1246 | "def answer_twelve():\n", 1247 | " import pandas as pd\n", 1248 | " import numpy as np\n", 1249 | " Top15 = answer_one()\n", 1250 | " ContinentDict = {'China':'Asia', \n", 1251 | " 'United States':'North America', \n", 1252 | " 'Japan':'Asia', \n", 1253 | " 'United Kingdom':'Europe', \n", 1254 | " 'Russian Federation':'Europe', \n", 1255 | " 'Canada':'North America', \n", 1256 | " 'Germany':'Europe', \n", 1257 | " 'India':'Asia',\n", 1258 | " 'France':'Europe', \n", 1259 | " 'South Korea':'Asia', \n", 1260 | " 'Italy':'Europe', \n", 1261 | " 'Spain':'Europe', \n", 1262 | " 'Iran':'Asia',\n", 1263 | " 'Australia':'Australia', \n", 1264 | " 'Brazil':'South America'}\n", 1265 | " Top15 = Top15.reset_index()\n", 1266 | " Top15['Continent'] = [ContinentDict[country] for country in Top15['Country']]\n", 1267 | " Top15['bins'] = pd.cut(Top15['% Renewable'],5)\n", 1268 | " return Top15.groupby(['Continent','bins']).size()\n", 1269 | "\n", 1270 | "answer_twelve()" 1271 | ] 1272 | }, 1273 | { 1274 | "cell_type": "markdown", 1275 | "metadata": {}, 1276 | "source": [ 1277 | "### Question 13 (6.6%)\n", 1278 | "Convert the Population Estimate series to a string with thousands separator (using commas)\n", 1279 | "\n", 1280 | "e.g. 12345678.90 -> 12,345,678.90\n", 1281 | "\n", 1282 | "*This function should return a Series `PopEst` whose index is the country name and whose values are the population estimate string.*" 1283 | ] 1284 | }, 1285 | { 1286 | "cell_type": "code", 1287 | "execution_count": 4, 1288 | "metadata": { 1289 | "collapsed": false, 1290 | "scrolled": true 1291 | }, 1292 | "outputs": [], 1293 | "source": [ 1294 | "def answer_thirteen():\n", 1295 | " import locale\n", 1296 | " import pandas as pd\n", 1297 | " locale.setlocale(locale.LC_ALL, 'en_US.utf8')\n", 1298 | " Top15 = answer_one()\n", 1299 | " Top15['PopEst'] = (Top15['Energy Supply'] / Top15['Energy Supply per Capita']).astype(float)\n", 1300 | " map_str = []\n", 1301 | " for num in Top15['PopEst']:\n", 1302 | " map_str.append(locale.format('%.2f',num,grouping=True))\n", 1303 | " Top15['PopEst_str'] = map_str\n", 1304 | " return Top15['PopEst_str']\n", 1305 | "\n", 1306 | "answer_thirteen()" 1307 | ] 1308 | }, 1309 | { 1310 | "cell_type": "markdown", 1311 | "metadata": {}, 1312 | "source": [ 1313 | "### Optional\n", 1314 | "\n", 1315 | "Use the built in function `plot_optional()` to see an example visualization." 1316 | ] 1317 | }, 1318 | { 1319 | "cell_type": "code", 1320 | "execution_count": 17, 1321 | "metadata": { 1322 | "collapsed": false, 1323 | "scrolled": true 1324 | }, 1325 | "outputs": [], 1326 | "source": [ 1327 | "def plot_optional():\n", 1328 | " import matplotlib as plt\n", 1329 | " %matplotlib inline\n", 1330 | " ax = Top15.plot(x='Rank', y='% Renewable', kind='scatter', \n", 1331 | " c=['#e41a1c','#377eb8','#e41a1c','#4daf4a','#4daf4a','#377eb8','#4daf4a','#e41a1c',\n", 1332 | " '#4daf4a','#e41a1c','#4daf4a','#4daf4a','#e41a1c','#dede00','#ff7f00'], \n", 1333 | " xticks=range(1,16), s=6*Top15['2014']/10**10, alpha=.75, figsize=[16,6]);\n", 1334 | "\n", 1335 | " for i, txt in enumerate(Top15.index):\n", 1336 | " ax.annotate(txt, [Top15['Rank'][i], Top15['% Renewable'][i]], ha='center')\n", 1337 | "\n", 1338 | " print(\"This is an example of a visualization that can be created to help understand the data. \\\n", 1339 | "This is a bubble chart showing % Renewable vs. Rank. The size of the bubble corresponds to the countries' \\\n", 1340 | "2014 GDP, and the color corresponds to the continent.\")" 1341 | ] 1342 | }, 1343 | { 1344 | "cell_type": "code", 1345 | "execution_count": 109, 1346 | "metadata": { 1347 | "collapsed": false 1348 | }, 1349 | "outputs": [], 1350 | "source": [ 1351 | "#plot_optional()" 1352 | ] 1353 | }, 1354 | { 1355 | "cell_type": "code", 1356 | "execution_count": null, 1357 | "metadata": { 1358 | "collapsed": true 1359 | }, 1360 | "outputs": [], 1361 | "source": [] 1362 | } 1363 | ], 1364 | "metadata": { 1365 | "anaconda-cloud": {}, 1366 | "coursera": { 1367 | "course_slug": "python-data-analysis", 1368 | "graded_item_id": "zAr06", 1369 | "launcher_item_id": "KSSjT", 1370 | "part_id": "SL3fU" 1371 | }, 1372 | "kernelspec": { 1373 | "display_name": "Python 3", 1374 | "language": "python", 1375 | "name": "python3" 1376 | }, 1377 | "language_info": { 1378 | "codemirror_mode": { 1379 | "name": "ipython", 1380 | "version": 3 1381 | }, 1382 | "file_extension": ".py", 1383 | "mimetype": "text/x-python", 1384 | "name": "python", 1385 | "nbconvert_exporter": "python", 1386 | "pygments_lexer": "ipython3", 1387 | "version": "3.5.2" 1388 | } 1389 | }, 1390 | "nbformat": 4, 1391 | "nbformat_minor": 0 1392 | } 1393 | -------------------------------------------------------------------------------- /Energy Indicators.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sidsriv/Introduction-to-Data-Science-in-python/4da3a4c2f76e40acdfc14ad9fcbc9b400ba9e5f7/Energy Indicators.xls -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Introduction-to-Data-Science-in-python 2 | This repository contains Ipython notebooks of assignments and tutorials used in the course introduction to data science in python, part of Applied Data Science using Python Specialization from University of Michigan offered by Coursera 3 | 4 | This course will introduce the learner to the basics of the python programming environment, including how to download and install python, expected fundamental python programming techniques, and how to find help with python programming questions. The course will also introduce data manipulation and cleaning techniques using the popular python pandas data science library and introduce the abstraction of the DataFrame as the central data structure for data analysis. The course will end with a statistics primer, showing how various statistical measures can be applied to pandas DataFrames. By the end of the course, students will be able to take tabular data, clean it, manipulate it, and run basic inferential statistical analyses. 5 | -------------------------------------------------------------------------------- /Week+4.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "---\n", 8 | "\n", 9 | "_You are currently looking at **version 1.0** of this notebook. To download notebooks and datafiles, as well as get help on Jupyter notebooks in the Coursera platform, visit the [Jupyter Notebook FAQ](https://www.coursera.org/learn/python-data-analysis/resources/0dhYG) course resource._\n", 10 | "\n", 11 | "---" 12 | ] 13 | }, 14 | { 15 | "cell_type": "markdown", 16 | "metadata": {}, 17 | "source": [ 18 | "# Distributions in Pandas" 19 | ] 20 | }, 21 | { 22 | "cell_type": "code", 23 | "execution_count": 18, 24 | "metadata": { 25 | "collapsed": false 26 | }, 27 | "outputs": [], 28 | "source": [ 29 | "import pandas as pd\n", 30 | "import numpy as np" 31 | ] 32 | }, 33 | { 34 | "cell_type": "code", 35 | "execution_count": 19, 36 | "metadata": { 37 | "collapsed": false 38 | }, 39 | "outputs": [ 40 | { 41 | "data": { 42 | "text/plain": [ 43 | "0" 44 | ] 45 | }, 46 | "execution_count": 19, 47 | "metadata": {}, 48 | "output_type": "execute_result" 49 | } 50 | ], 51 | "source": [ 52 | "np.random.binomial(1, 0.5)" 53 | ] 54 | }, 55 | { 56 | "cell_type": "code", 57 | "execution_count": 20, 58 | "metadata": { 59 | "collapsed": false 60 | }, 61 | "outputs": [ 62 | { 63 | "data": { 64 | "text/plain": [ 65 | "0.49" 66 | ] 67 | }, 68 | "execution_count": 20, 69 | "metadata": {}, 70 | "output_type": "execute_result" 71 | } 72 | ], 73 | "source": [ 74 | "np.random.binomial(1000, 0.5)/1000" 75 | ] 76 | }, 77 | { 78 | "cell_type": "code", 79 | "execution_count": 21, 80 | "metadata": { 81 | "collapsed": false 82 | }, 83 | "outputs": [ 84 | { 85 | "data": { 86 | "text/plain": [ 87 | "10" 88 | ] 89 | }, 90 | "execution_count": 21, 91 | "metadata": {}, 92 | "output_type": "execute_result" 93 | } 94 | ], 95 | "source": [ 96 | "chance_of_tornado = 0.01/100\n", 97 | "np.random.binomial(100000, chance_of_tornado)" 98 | ] 99 | }, 100 | { 101 | "cell_type": "code", 102 | "execution_count": 22, 103 | "metadata": { 104 | "collapsed": false 105 | }, 106 | "outputs": [ 107 | { 108 | "name": "stdout", 109 | "output_type": "stream", 110 | "text": [ 111 | "101 tornadoes back to back in 2739.72602739726 years\n" 112 | ] 113 | } 114 | ], 115 | "source": [ 116 | "chance_of_tornado = 0.01\n", 117 | "\n", 118 | "tornado_events = np.random.binomial(1, chance_of_tornado, 1000000)\n", 119 | " \n", 120 | "two_days_in_a_row = 0\n", 121 | "for j in range(1,len(tornado_events)-1):\n", 122 | " if tornado_events[j]==1 and tornado_events[j-1]==1:\n", 123 | " two_days_in_a_row+=1\n", 124 | "\n", 125 | "print('{} tornadoes back to back in {} years'.format(two_days_in_a_row, 1000000/365))" 126 | ] 127 | }, 128 | { 129 | "cell_type": "code", 130 | "execution_count": 23, 131 | "metadata": { 132 | "collapsed": false 133 | }, 134 | "outputs": [ 135 | { 136 | "data": { 137 | "text/plain": [ 138 | "0.22333278267503132" 139 | ] 140 | }, 141 | "execution_count": 23, 142 | "metadata": {}, 143 | "output_type": "execute_result" 144 | } 145 | ], 146 | "source": [ 147 | "np.random.uniform(0, 1)" 148 | ] 149 | }, 150 | { 151 | "cell_type": "code", 152 | "execution_count": 24, 153 | "metadata": { 154 | "collapsed": false 155 | }, 156 | "outputs": [ 157 | { 158 | "data": { 159 | "text/plain": [ 160 | "0.34689509278506736" 161 | ] 162 | }, 163 | "execution_count": 24, 164 | "metadata": {}, 165 | "output_type": "execute_result" 166 | } 167 | ], 168 | "source": [ 169 | "np.random.normal(0.75)" 170 | ] 171 | }, 172 | { 173 | "cell_type": "markdown", 174 | "metadata": {}, 175 | "source": [ 176 | "Formula for standard deviation\n", 177 | "$$\\sqrt{\\frac{1}{N} \\sum_{i=1}^N (x_i - \\overline{x})^2}$$" 178 | ] 179 | }, 180 | { 181 | "cell_type": "code", 182 | "execution_count": 25, 183 | "metadata": { 184 | "collapsed": false 185 | }, 186 | "outputs": [ 187 | { 188 | "data": { 189 | "text/plain": [ 190 | "0.98083489333018103" 191 | ] 192 | }, 193 | "execution_count": 25, 194 | "metadata": {}, 195 | "output_type": "execute_result" 196 | } 197 | ], 198 | "source": [ 199 | "distribution = np.random.normal(0.75,size=1000)\n", 200 | "\n", 201 | "np.sqrt(np.sum((np.mean(distribution)-distribution)**2)/len(distribution))" 202 | ] 203 | }, 204 | { 205 | "cell_type": "code", 206 | "execution_count": 26, 207 | "metadata": { 208 | "collapsed": false, 209 | "scrolled": true 210 | }, 211 | "outputs": [ 212 | { 213 | "data": { 214 | "text/plain": [ 215 | "0.98083489333018103" 216 | ] 217 | }, 218 | "execution_count": 26, 219 | "metadata": {}, 220 | "output_type": "execute_result" 221 | } 222 | ], 223 | "source": [ 224 | "np.std(distribution)" 225 | ] 226 | }, 227 | { 228 | "cell_type": "code", 229 | "execution_count": 27, 230 | "metadata": { 231 | "collapsed": false 232 | }, 233 | "outputs": [ 234 | { 235 | "data": { 236 | "text/plain": [ 237 | "-0.08100026037788588" 238 | ] 239 | }, 240 | "execution_count": 27, 241 | "metadata": {}, 242 | "output_type": "execute_result" 243 | } 244 | ], 245 | "source": [ 246 | "import scipy.stats as stats\n", 247 | "stats.kurtosis(distribution)" 248 | ] 249 | }, 250 | { 251 | "cell_type": "code", 252 | "execution_count": 28, 253 | "metadata": { 254 | "collapsed": false 255 | }, 256 | "outputs": [ 257 | { 258 | "data": { 259 | "text/plain": [ 260 | "0.056471234620855404" 261 | ] 262 | }, 263 | "execution_count": 28, 264 | "metadata": {}, 265 | "output_type": "execute_result" 266 | } 267 | ], 268 | "source": [ 269 | "stats.skew(distribution)" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": 29, 275 | "metadata": { 276 | "collapsed": false 277 | }, 278 | "outputs": [ 279 | { 280 | "data": { 281 | "text/plain": [ 282 | "2.049026447708891" 283 | ] 284 | }, 285 | "execution_count": 29, 286 | "metadata": {}, 287 | "output_type": "execute_result" 288 | } 289 | ], 290 | "source": [ 291 | "chi_squared_df2 = np.random.chisquare(2, size=10000)\n", 292 | "stats.skew(chi_squared_df2)" 293 | ] 294 | }, 295 | { 296 | "cell_type": "code", 297 | "execution_count": 30, 298 | "metadata": { 299 | "collapsed": false 300 | }, 301 | "outputs": [ 302 | { 303 | "data": { 304 | "text/plain": [ 305 | "1.28750530528751" 306 | ] 307 | }, 308 | "execution_count": 30, 309 | "metadata": {}, 310 | "output_type": "execute_result" 311 | } 312 | ], 313 | "source": [ 314 | "chi_squared_df5 = np.random.chisquare(5, size=10000)\n", 315 | "stats.skew(chi_squared_df5)" 316 | ] 317 | }, 318 | { 319 | "cell_type": "code", 320 | "execution_count": 31, 321 | "metadata": { 322 | "collapsed": false 323 | }, 324 | "outputs": [ 325 | { 326 | "data": { 327 | "text/plain": [ 328 | "" 329 | ] 330 | }, 331 | "execution_count": 31, 332 | "metadata": {}, 333 | "output_type": "execute_result" 334 | }, 335 | { 336 | "data": { 337 | "image/png": "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\nkSNHcuq6devGsGHDeOyxx/jss8/o3bs3lStX5ssvv2TOnDk8/fTTDBw4kNjYWO68806eeuoprr32\nWvr27ctL/KZdAAAgAElEQVT69et57733qFu37im704PtBn/sscdYunQpSUlJ3HbbbbRu3Zr9+/ez\nZs0aPvzww5wXyF//+te8/vrrDB8+nCVLltClSxcyMzNJT0/njTfeIC0tjY4dOzJmzBg++ugjrrzy\nSho3bszu3buZPHkyjRo1omvXrkG3T7t27bjllluYOnUqBw4coHv37qxatYqXXnqJgQMH0r1795Db\n1ytNmzbl4YcfZuTIkXz99df079+fatWq8dVXXzF//nyGDRvGXXfdhXOO559/nn79+tGmTRuGDh1K\n/fr12blzJ0uWLKFGjRosWOA/1G/06NEsXLiQrl278oc//IGffvop52f/+eefl7ttUBqKFCycc88B\nycA1wA/OubjAVIaZHXPOVQUewn+MxS78eykex3+q6CIAMzvknJsOPOWcO4D/OhZPAx+b2epAzSbn\n3CJgmnNuOFAFeAZINbOQeyxEpOykp1fMda9fvx7nHG+//TZvv/32KfOnCxZ9+vThjTfe4IEHHmDk\nyJEkJCQwY8YM5s+fn3MGQbbJkyfTqVMnpkyZwv33309YWBjx8fEMHjyYLl3+/5PlcePGUbVqVaZN\nm8bixYu55JJLWLRoEZdddtkpV5AM9rl9bGwsq1evZsyYMcybN4/JkydTu3Zt2rRpw7hx4/I8fsGC\nBaSkpPDSSy8xf/58oqKiaNq0KSNGjKBFixYAXHvttWzbto0XX3yRvXv3UqdOHXr06MGoUaOoVq1a\nyG00ffr0PNulXr163H///Tz44IOn1J7psRihvqfj3nvvpWXLlqSkpOTsOWrYsCF9+/blmmuuyanr\n3r07K1euZOzYsUyaNIkjR45Qr149kpKSGDZsWE5d27ZtSUtL46677uKhhx6iQYMGjBkzhu+++y5P\nsCjKNgjWf1HHy0xRzk3Ff7GrzAJugwPzEcBC/KHiGPAV/mtW1M23nHD8QSH7AllvcOoFsmKAl/n/\nC2RNA6JC9Hba61hceKHZnXcGnRaREEKdB79tm1lUlP86EmV5i4ry93K2OnjwoDnn7H/+53/KuhWp\nYErzOhZF2mNhZiGPyTCzY0DfQiznOP7rUhR8Ura/5iAwqCj9iUjZaNTIv8egon67aXlU0HdbpKSk\n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\nTGOsR10AAAAASUVORK5CYII=\n", 338 | "text/plain": [ 339 | "" 340 | ] 341 | }, 342 | "metadata": {}, 343 | "output_type": "display_data" 344 | } 345 | ], 346 | "source": [ 347 | "%matplotlib inline\n", 348 | "import matplotlib\n", 349 | "import matplotlib.pyplot as plt\n", 350 | "\n", 351 | "output = plt.hist([chi_squared_df2,chi_squared_df5], bins=50, histtype='step', \n", 352 | " label=['2 degrees of freedom','5 degrees of freedom'])\n", 353 | "plt.legend(loc='upper right')\n" 354 | ] 355 | }, 356 | { 357 | "cell_type": "markdown", 358 | "metadata": {}, 359 | "source": [ 360 | "# Hypothesis Testing" 361 | ] 362 | }, 363 | { 364 | "cell_type": "code", 365 | "execution_count": 32, 366 | "metadata": { 367 | "collapsed": false 368 | }, 369 | "outputs": [], 370 | "source": [ 371 | "df = pd.read_csv('grades.csv')" 372 | ] 373 | }, 374 | { 375 | "cell_type": "code", 376 | "execution_count": 33, 377 | "metadata": { 378 | "collapsed": false 379 | }, 380 | "outputs": [ 381 | { 382 | "data": { 383 | "text/html": [ 384 | "
\n", 385 | "\n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | "
student_idassignment1_gradeassignment1_submissionassignment2_gradeassignment2_submissionassignment3_gradeassignment3_submissionassignment4_gradeassignment4_submissionassignment5_gradeassignment5_submissionassignment6_gradeassignment6_submission
0B73F2C11-70F0-E37D-8B10-1D20AFED50B192.7339462015-11-02 06:55:34.28200000083.0305522015-11-09 02:22:58.93800000067.1644412015-11-12 08:58:33.99800000053.0115532015-11-16 01:21:24.66300000047.7103982015-11-20 13:24:59.69200000038.1683182015-11-22 18:31:15.934000000
198A0FAE0-A19A-13D2-4BB5-CFBFD94031D186.7908212015-11-29 14:57:44.42900000086.2908212015-12-06 17:41:18.44900000069.7726572015-12-10 08:54:55.90400000055.0981252015-12-13 17:32:30.94100000049.5883132015-12-19 23:26:39.28500000044.6294822015-12-21 17:07:24.275000000
2D0F62040-CEB0-904C-F563-2F8620916C4E85.5125412016-01-09 05:36:02.38900000085.5125412016-01-09 06:39:44.41600000068.4100332016-01-15 20:22:45.88200000054.7280262016-01-11 12:41:50.74900000049.2552242016-01-11 17:31:12.48900000044.3297012016-01-17 16:24:42.765000000
3FFDF2B2C-F514-EF7F-6538-A6A53518E9DC86.0306652016-04-30 06:50:39.80100000068.8245322016-04-30 17:20:38.72700000061.9420792016-05-12 07:47:16.32600000049.5536632016-05-07 16:09:20.48500000049.5536632016-05-24 12:51:18.01600000044.5982972016-05-26 08:09:12.058000000
45ECBEEB6-F1CE-80AE-3164-E45E99473FB464.8138002015-12-13 17:06:10.75000000051.4910402015-12-14 12:25:12.05600000041.9328322015-12-29 14:25:22.59400000036.9295492015-12-28 01:29:55.90100000033.2365942015-12-29 14:46:06.62800000033.2365942016-01-05 01:06:59.546000000
\n", 487 | "
" 488 | ], 489 | "text/plain": [ 490 | " student_id assignment1_grade \\\n", 491 | "0 B73F2C11-70F0-E37D-8B10-1D20AFED50B1 92.733946 \n", 492 | "1 98A0FAE0-A19A-13D2-4BB5-CFBFD94031D1 86.790821 \n", 493 | "2 D0F62040-CEB0-904C-F563-2F8620916C4E 85.512541 \n", 494 | "3 FFDF2B2C-F514-EF7F-6538-A6A53518E9DC 86.030665 \n", 495 | "4 5ECBEEB6-F1CE-80AE-3164-E45E99473FB4 64.813800 \n", 496 | "\n", 497 | " assignment1_submission assignment2_grade \\\n", 498 | "0 2015-11-02 06:55:34.282000000 83.030552 \n", 499 | "1 2015-11-29 14:57:44.429000000 86.290821 \n", 500 | "2 2016-01-09 05:36:02.389000000 85.512541 \n", 501 | "3 2016-04-30 06:50:39.801000000 68.824532 \n", 502 | "4 2015-12-13 17:06:10.750000000 51.491040 \n", 503 | "\n", 504 | " assignment2_submission assignment3_grade \\\n", 505 | "0 2015-11-09 02:22:58.938000000 67.164441 \n", 506 | "1 2015-12-06 17:41:18.449000000 69.772657 \n", 507 | "2 2016-01-09 06:39:44.416000000 68.410033 \n", 508 | "3 2016-04-30 17:20:38.727000000 61.942079 \n", 509 | "4 2015-12-14 12:25:12.056000000 41.932832 \n", 510 | "\n", 511 | " assignment3_submission assignment4_grade \\\n", 512 | "0 2015-11-12 08:58:33.998000000 53.011553 \n", 513 | "1 2015-12-10 08:54:55.904000000 55.098125 \n", 514 | "2 2016-01-15 20:22:45.882000000 54.728026 \n", 515 | "3 2016-05-12 07:47:16.326000000 49.553663 \n", 516 | "4 2015-12-29 14:25:22.594000000 36.929549 \n", 517 | "\n", 518 | " assignment4_submission assignment5_grade \\\n", 519 | "0 2015-11-16 01:21:24.663000000 47.710398 \n", 520 | "1 2015-12-13 17:32:30.941000000 49.588313 \n", 521 | "2 2016-01-11 12:41:50.749000000 49.255224 \n", 522 | "3 2016-05-07 16:09:20.485000000 49.553663 \n", 523 | "4 2015-12-28 01:29:55.901000000 33.236594 \n", 524 | "\n", 525 | " assignment5_submission assignment6_grade \\\n", 526 | "0 2015-11-20 13:24:59.692000000 38.168318 \n", 527 | "1 2015-12-19 23:26:39.285000000 44.629482 \n", 528 | "2 2016-01-11 17:31:12.489000000 44.329701 \n", 529 | "3 2016-05-24 12:51:18.016000000 44.598297 \n", 530 | "4 2015-12-29 14:46:06.628000000 33.236594 \n", 531 | "\n", 532 | " assignment6_submission \n", 533 | "0 2015-11-22 18:31:15.934000000 \n", 534 | "1 2015-12-21 17:07:24.275000000 \n", 535 | "2 2016-01-17 16:24:42.765000000 \n", 536 | "3 2016-05-26 08:09:12.058000000 \n", 537 | "4 2016-01-05 01:06:59.546000000 " 538 | ] 539 | }, 540 | "execution_count": 33, 541 | "metadata": {}, 542 | "output_type": "execute_result" 543 | } 544 | ], 545 | "source": [ 546 | "df.head()" 547 | ] 548 | }, 549 | { 550 | "cell_type": "code", 551 | "execution_count": 34, 552 | "metadata": { 553 | "collapsed": false 554 | }, 555 | "outputs": [ 556 | { 557 | "data": { 558 | "text/plain": [ 559 | "2315" 560 | ] 561 | }, 562 | "execution_count": 34, 563 | "metadata": {}, 564 | "output_type": "execute_result" 565 | } 566 | ], 567 | "source": [ 568 | "len(df)" 569 | ] 570 | }, 571 | { 572 | "cell_type": "code", 573 | "execution_count": 35, 574 | "metadata": { 575 | "collapsed": false 576 | }, 577 | "outputs": [], 578 | "source": [ 579 | "early = df[df['assignment1_submission'] <= '2015-12-31']\n", 580 | "late = df[df['assignment1_submission'] > '2015-12-31']" 581 | ] 582 | }, 583 | { 584 | "cell_type": "code", 585 | "execution_count": 36, 586 | "metadata": { 587 | "collapsed": false 588 | }, 589 | "outputs": [ 590 | { 591 | "data": { 592 | "text/plain": [ 593 | "assignment1_grade 74.972741\n", 594 | "assignment2_grade 67.252190\n", 595 | "assignment3_grade 61.129050\n", 596 | "assignment4_grade 54.157620\n", 597 | "assignment5_grade 48.634643\n", 598 | "assignment6_grade 43.838980\n", 599 | "dtype: float64" 600 | ] 601 | }, 602 | "execution_count": 36, 603 | "metadata": {}, 604 | "output_type": "execute_result" 605 | } 606 | ], 607 | "source": [ 608 | "early.mean()" 609 | ] 610 | }, 611 | { 612 | "cell_type": "code", 613 | "execution_count": 37, 614 | "metadata": { 615 | "collapsed": false 616 | }, 617 | "outputs": [ 618 | { 619 | "data": { 620 | "text/plain": [ 621 | "assignment1_grade 74.017429\n", 622 | "assignment2_grade 66.370822\n", 623 | "assignment3_grade 60.023244\n", 624 | "assignment4_grade 54.058138\n", 625 | "assignment5_grade 48.599402\n", 626 | "assignment6_grade 43.844384\n", 627 | "dtype: float64" 628 | ] 629 | }, 630 | "execution_count": 37, 631 | "metadata": {}, 632 | "output_type": "execute_result" 633 | } 634 | ], 635 | "source": [ 636 | "late.mean()" 637 | ] 638 | }, 639 | { 640 | "cell_type": "code", 641 | "execution_count": 38, 642 | "metadata": { 643 | "collapsed": false 644 | }, 645 | "outputs": [], 646 | "source": [ 647 | "from scipy import stats\n", 648 | "stats.ttest_ind?" 649 | ] 650 | }, 651 | { 652 | "cell_type": "code", 653 | "execution_count": 39, 654 | "metadata": { 655 | "collapsed": false 656 | }, 657 | "outputs": [ 658 | { 659 | "data": { 660 | "text/plain": [ 661 | "Ttest_indResult(statistic=1.400549944897566, pvalue=0.16148283016060577)" 662 | ] 663 | }, 664 | "execution_count": 39, 665 | "metadata": {}, 666 | "output_type": "execute_result" 667 | } 668 | ], 669 | "source": [ 670 | "stats.ttest_ind(early['assignment1_grade'], late['assignment1_grade'])" 671 | ] 672 | }, 673 | { 674 | "cell_type": "code", 675 | "execution_count": 40, 676 | "metadata": { 677 | "collapsed": false 678 | }, 679 | "outputs": [ 680 | { 681 | "data": { 682 | "text/plain": [ 683 | "Ttest_indResult(statistic=1.3239868220912567, pvalue=0.18563824610067967)" 684 | ] 685 | }, 686 | "execution_count": 40, 687 | "metadata": {}, 688 | "output_type": "execute_result" 689 | } 690 | ], 691 | "source": [ 692 | "stats.ttest_ind(early['assignment2_grade'], late['assignment2_grade'])" 693 | ] 694 | }, 695 | { 696 | "cell_type": "code", 697 | "execution_count": 41, 698 | "metadata": { 699 | "collapsed": false 700 | }, 701 | "outputs": [ 702 | { 703 | "data": { 704 | "text/plain": [ 705 | "Ttest_indResult(statistic=1.7116160037010733, pvalue=0.087101516341556676)" 706 | ] 707 | }, 708 | "execution_count": 41, 709 | "metadata": {}, 710 | "output_type": "execute_result" 711 | } 712 | ], 713 | "source": [ 714 | "stats.ttest_ind(early['assignment3_grade'], late['assignment3_grade'])" 715 | ] 716 | }, 717 | { 718 | "cell_type": "code", 719 | "execution_count": null, 720 | "metadata": { 721 | "collapsed": true 722 | }, 723 | "outputs": [], 724 | "source": [] 725 | } 726 | ], 727 | "metadata": { 728 | "kernelspec": { 729 | "display_name": "Python 3", 730 | "language": "python", 731 | "name": "python3" 732 | }, 733 | "language_info": { 734 | "codemirror_mode": { 735 | "name": "ipython", 736 | "version": 3 737 | }, 738 | "file_extension": ".py", 739 | "mimetype": "text/x-python", 740 | "name": "python", 741 | "nbconvert_exporter": "python", 742 | "pygments_lexer": "ipython3", 743 | "version": "3.5.2" 744 | } 745 | }, 746 | "nbformat": 4, 747 | "nbformat_minor": 0 748 | } 749 | -------------------------------------------------------------------------------- /cars.csv: -------------------------------------------------------------------------------- 1 | YEAR,Make,Model,Size,(kW),Unnamed: 5,TYPE,CITY (kWh/100 km),HWY (kWh/100 km),COMB (kWh/100 km),CITY (Le/100 km),HWY (Le/100 km),COMB (Le/100 km),(g/km),RATING,(km),TIME (h) 2 | 2012,MITSUBISHI,i-MiEV,SUBCOMPACT,49,A1,B,16.9,21.4,18.7,1.9,2.4,2.1,0,n/a,100,7 3 | 2012,NISSAN,LEAF,MID-SIZE,80,A1,B,19.3,23.0,21.1,2.2,2.6,2.4,0,n/a,117,7 4 | 2013,FORD,FOCUS ELECTRIC,COMPACT,107,A1,B,19.0,21.1,20.0,2.1,2.4,2.2,0,n/a,122,4 5 | 2013,MITSUBISHI,i-MiEV,SUBCOMPACT,49,A1,B,16.9,21.4,18.7,1.9,2.4,2.1,0,n/a,100,7 6 | 2013,NISSAN,LEAF,MID-SIZE,80,A1,B,19.3,23.0,21.1,2.2,2.6,2.4,0,n/a,117,7 7 | 2013,SMART,FORTWO ELECTRIC DRIVE CABRIOLET,TWO-SEATER,35,A1,B,17.2,22.5,19.6,1.9,2.5,2.2,0,n/a,109,8 8 | 2013,SMART,FORTWO ELECTRIC DRIVE COUPE,TWO-SEATER,35,A1,B,17.2,22.5,19.6,1.9,2.5,2.2,0,n/a,109,8 9 | 2013,TESLA,MODEL S (40 kWh battery),FULL-SIZE,270,A1,B,22.4,21.9,22.2,2.5,2.5,2.5,0,n/a,224,6 10 | 2013,TESLA,MODEL S (60 kWh battery),FULL-SIZE,270,A1,B,22.2,21.7,21.9,2.5,2.4,2.5,0,n/a,335,10 11 | 2013,TESLA,MODEL S (85 kWh battery),FULL-SIZE,270,A1,B,23.8,23.2,23.6,2.7,2.6,2.6,0,n/a,426,12 12 | 2013,TESLA,MODEL S PERFORMANCE,FULL-SIZE,310,A1,B,23.9,23.2,23.6,2.7,2.6,2.6,0,n/a,426,12 13 | 2014,CHEVROLET,SPARK EV,SUBCOMPACT,104,A1,B,16.0,19.6,17.8,1.8,2.2,2.0,0,n/a,131,7 14 | 2014,FORD,FOCUS ELECTRIC,COMPACT,107,A1,B,19.0,21.1,20.0,2.1,2.4,2.2,0,n/a,122,4 15 | 2014,MITSUBISHI,i-MiEV,SUBCOMPACT,49,A1,B,16.9,21.4,18.7,1.9,2.4,2.1,0,n/a,100,7 16 | 2014,NISSAN,LEAF,MID-SIZE,80,A1,B,16.5,20.8,18.4,1.9,2.3,2.1,0,n/a,135,5 17 | 2014,SMART,FORTWO ELECTRIC DRIVE CABRIOLET,TWO-SEATER,35,A1,B,17.2,22.5,19.6,1.9,2.5,2.2,0,n/a,109,8 18 | 2014,SMART,FORTWO ELECTRIC DRIVE COUPE,TWO-SEATER,35,A1,B,17.2,22.5,19.6,1.9,2.5,2.2,0,n/a,109,8 19 | 2014,TESLA,MODEL S (60 kWh battery),FULL-SIZE,225,A1,B,22.2,21.7,21.9,2.5,2.4,2.5,0,n/a,335,10 20 | 2014,TESLA,MODEL S (85 kWh battery),FULL-SIZE,270,A1,B,23.8,23.2,23.6,2.7,2.6,2.6,0,n/a,426,12 21 | 2014,TESLA,MODEL S PERFORMANCE,FULL-SIZE,310,A1,B,23.9,23.2,23.6,2.7,2.6,2.6,0,n/a,426,12 22 | 2015,BMW,i3,SUBCOMPACT,125,A1,B,15.2,18.8,16.8,1.7,2.1,1.9,0,n/a,130,4 23 | 2015,CHEVROLET,SPARK EV,SUBCOMPACT,104,A1,B,16.0,19.6,17.8,1.8,2.2,2.0,0,n/a,131,7 24 | 2015,FORD,FOCUS ELECTRIC,COMPACT,107,A1,B,19.0,21.1,20.0,2.1,2.4,2.2,0,n/a,122,4 25 | 2015,KIA,SOUL EV,STATION WAGON - SMALL,81,A1,B,17.5,22.7,19.9,2.0,2.6,2.2,0,n/a,149,4 26 | 2015,MITSUBISHI,i-MiEV,SUBCOMPACT,49,A1,B,16.9,21.4,18.7,1.9,2.4,2.1,0,n/a,100,7 27 | 2015,NISSAN,LEAF,MID-SIZE,80,A1,B,16.5,20.8,18.4,1.9,2.3,2.1,0,n/a,135,5 28 | 2015,SMART,FORTWO ELECTRIC DRIVE CABRIOLET,TWO-SEATER,35,A1,B,17.2,22.5,19.6,1.9,2.5,2.2,0,n/a,109,8 29 | 2015,SMART,FORTWO ELECTRIC DRIVE COUPE,TWO-SEATER,35,A1,B,17.2,22.5,19.6,1.9,2.5,2.2,0,n/a,109,8 30 | 2015,TESLA,MODEL S (60 kWh battery),FULL-SIZE,283,A1,B,22.2,21.7,21.9,2.5,2.4,2.5,0,n/a,335,10 31 | 2015,TESLA,MODEL S (70 kWh battery),FULL-SIZE,283,A1,B,23.8,23.2,23.6,2.7,2.6,2.6,0,n/a,377,12 32 | 2015,TESLA,MODEL S (85/90 kWh battery),FULL-SIZE,283,A1,B,23.8,23.2,23.6,2.7,2.6,2.6,0,n/a,426,12 33 | 2015,TESLA,MODEL S 70D,FULL-SIZE,280,A1,B,20.8,20.6,20.7,2.3,2.3,2.3,0,n/a,386,12 34 | 2015,TESLA,MODEL S 85D/90D,FULL-SIZE,280,A1,B,22.0,19.8,21.0,2.5,2.2,2.4,0,n/a,435,12 35 | 2015,TESLA,MODEL S P85D/P90D,FULL-SIZE,515,A1,B,23.4,21.5,22.5,2.6,2.4,2.5,0,n/a,407,12 36 | 2016,BMW,i3,SUBCOMPACT,125,A1,B,15.2,18.8,16.8,1.7,2.1,1.9,0,10,130,4 37 | 2016,CHEVROLET,SPARK EV,SUBCOMPACT,104,A1,B,16.0,19.6,17.8,1.8,2.2,2.0,0,10,131,7 38 | 2016,FORD,FOCUS ELECTRIC,COMPACT,107,A1,B,19.0,21.1,20.0,2.1,2.4,2.2,0,10,122,4 39 | 2016,KIA,SOUL EV,STATION WAGON - SMALL,81,A1,B,17.5,22.7,19.9,2.0,2.6,2.2,0,10,149,4 40 | 2016,MITSUBISHI,i-MiEV,SUBCOMPACT,49,A1,B,16.9,21.4,18.7,1.9,2.4,2.1,0,10,100,7 41 | 2016,NISSAN,LEAF (24 kWh battery),MID-SIZE,80,A1,B,16.5,20.8,18.4,1.9,2.3,2.1,0,10,135,5 42 | 2016,NISSAN,LEAF (30 kWh battery),MID-SIZE,80,A1,B,17.0,20.7,18.6,1.9,2.3,2.1,0,10,172,6 43 | 2016,SMART,FORTWO ELECTRIC DRIVE CABRIOLET,TWO-SEATER,35,A1,B,17.2,22.5,19.6,1.9,2.5,2.2,0,10,109,8 44 | 2016,SMART,FORTWO ELECTRIC DRIVE COUPE,TWO-SEATER,35,A1,B,17.2,22.5,19.6,1.9,2.5,2.2,0,10,109,8 45 | 2016,TESLA,MODEL S (60 kWh battery),FULL-SIZE,283,A1,B,22.2,21.7,21.9,2.5,2.4,2.5,0,10,335,10 46 | 2016,TESLA,MODEL S (70 kWh battery),FULL-SIZE,283,A1,B,23.8,23.2,23.6,2.7,2.6,2.6,0,10,377,12 47 | 2016,TESLA,MODEL S (85/90 kWh battery),FULL-SIZE,283,A1,B,23.8,23.2,23.6,2.7,2.6,2.6,0,10,426,12 48 | 2016,TESLA,MODEL S 70D,FULL-SIZE,386,A1,B,20.8,20.6,20.7,2.3,2.3,2.3,0,10,386,12 49 | 2016,TESLA,MODEL S 85D/90D,FULL-SIZE,386,A1,B,22.0,19.8,21.0,2.5,2.2,2.4,0,10,435,12 50 | 2016,TESLA,MODEL S 90D (Refresh),FULL-SIZE,386,A1,B,20.8,19.7,20.3,2.3,2.2,2.3,0,10,473,12 51 | 2016,TESLA,MODEL S P85D/P90D,FULL-SIZE,568,A1,B,23.4,21.5,22.5,2.6,2.4,2.5,0,10,407,12 52 | 2016,TESLA,MODEL S P90D (Refresh),FULL-SIZE,568,A1,B,22.9,21.0,22.1,2.6,2.4,2.5,0,10,435,12 53 | 2016,TESLA,MODEL X 90D,SUV - STANDARD,386,A1,B,23.2,22.2,22.7,2.6,2.5,2.6,0,10,414,12 54 | 2016,TESLA,MODEL X P90D,SUV - STANDARD,568,A1,B,23.6,23.3,23.5,2.7,2.6,2.6,0,10,402,12 55 | -------------------------------------------------------------------------------- /gdplev.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sidsriv/Introduction-to-Data-Science-in-python/4da3a4c2f76e40acdfc14ad9fcbc9b400ba9e5f7/gdplev.xls -------------------------------------------------------------------------------- /log.csv: -------------------------------------------------------------------------------- 1 | time,user,video,playback position,paused,volume 2 | 1469974424,cheryl,intro.html,5,FALSE,10 3 | 1469974454,cheryl,intro.html,6,, 4 | 1469974544,cheryl,intro.html,9,, 5 | 1469974574,cheryl,intro.html,10,, 6 | 1469977514,bob,intro.html,1,, 7 | 1469977544,bob,intro.html,1,, 8 | 1469977574,bob,intro.html,1,, 9 | 1469977604,bob,intro.html,1,, 10 | 1469974604,cheryl,intro.html,11,, 11 | 1469974694,cheryl,intro.html,14,, 12 | 1469974724,cheryl,intro.html,15,, 13 | 1469974454,sue,advanced.html,24,, 14 | 1469974524,sue,advanced.html,25,, 15 | 1469974424,sue,advanced.html,23,FALSE,10 16 | 1469974554,sue,advanced.html,26,, 17 | 1469974624,sue,advanced.html,27,, 18 | 1469974654,sue,advanced.html,28,,5 19 | 1469974724,sue,advanced.html,29,, 20 | 1469974484,cheryl,intro.html,7,, 21 | 1469974514,cheryl,intro.html,8,, 22 | 1469974754,sue,advanced.html,30,, 23 | 1469974824,sue,advanced.html,31,, 24 | 1469974854,sue,advanced.html,32,, 25 | 1469974924,sue,advanced.html,33,, 26 | 1469977424,bob,intro.html,1,TRUE,10 27 | 1469977454,bob,intro.html,1,, 28 | 1469977484,bob,intro.html,1,, 29 | 1469977634,bob,intro.html,1,, 30 | 1469977664,bob,intro.html,1,, 31 | 1469974634,cheryl,intro.html,12,, 32 | 1469974664,cheryl,intro.html,13,, 33 | 1469977694,bob,intro.html,1,, 34 | 1469977724,bob,intro.html,1,, 35 | -------------------------------------------------------------------------------- /log.txt: -------------------------------------------------------------------------------- 1 | time,user,video,playback position,paused,volume 2 | 1469974424,cheryl,intro.html,5,FALSE,10 3 | 1469974454,cheryl,intro.html,6,, 4 | 1469974544,cheryl,intro.html,9,, 5 | 1469974574,cheryl,intro.html,10,, 6 | 1469977514,bob,intro.html,1,, 7 | 1469977544,bob,intro.html,1,, 8 | 1469977574,bob,intro.html,1,, 9 | 1469977604,bob,intro.html,1,, 10 | 1469974604,cheryl,intro.html,11,, 11 | 1469974694,cheryl,intro.html,14,, 12 | 1469974724,cheryl,intro.html,15,, 13 | 1469974454,sue,advanced.html,24,, 14 | 1469974524,sue,advanced.html,25,, 15 | 1469974424,sue,advanced.html,23,FALSE,10 16 | 1469974554,sue,advanced.html,26,, 17 | 1469974624,sue,advanced.html,27,, 18 | 1469974654,sue,advanced.html,28,,5 19 | 1469974724,sue,advanced.html,29,, 20 | 1469974484,cheryl,intro.html,7,, 21 | 1469974514,cheryl,intro.html,8,, 22 | 1469974754,sue,advanced.html,30,, 23 | 1469974824,sue,advanced.html,31,, 24 | 1469974854,sue,advanced.html,32,, 25 | 1469974924,sue,advanced.html,33,, 26 | 1469977424,bob,intro.html,1,TRUE,10 27 | 1469977454,bob,intro.html,1,, 28 | 1469977484,bob,intro.html,1,, 29 | 1469977634,bob,intro.html,1,, 30 | 1469977664,bob,intro.html,1,, 31 | 1469974634,cheryl,intro.html,12,, 32 | 1469974664,cheryl,intro.html,13,, 33 | 1469977694,bob,intro.html,1,, 34 | 1469977724,bob,intro.html,1,, 35 | -------------------------------------------------------------------------------- /mpg.csv: -------------------------------------------------------------------------------- 1 | "","manufacturer","model","displ","year","cyl","trans","drv","cty","hwy","fl","class" 2 | "1","audi","a4",1.8,1999,4,"auto(l5)","f",18,29,"p","compact" 3 | "2","audi","a4",1.8,1999,4,"manual(m5)","f",21,29,"p","compact" 4 | "3","audi","a4",2,2008,4,"manual(m6)","f",20,31,"p","compact" 5 | "4","audi","a4",2,2008,4,"auto(av)","f",21,30,"p","compact" 6 | "5","audi","a4",2.8,1999,6,"auto(l5)","f",16,26,"p","compact" 7 | "6","audi","a4",2.8,1999,6,"manual(m5)","f",18,26,"p","compact" 8 | "7","audi","a4",3.1,2008,6,"auto(av)","f",18,27,"p","compact" 9 | "8","audi","a4 quattro",1.8,1999,4,"manual(m5)","4",18,26,"p","compact" 10 | "9","audi","a4 quattro",1.8,1999,4,"auto(l5)","4",16,25,"p","compact" 11 | "10","audi","a4 quattro",2,2008,4,"manual(m6)","4",20,28,"p","compact" 12 | "11","audi","a4 quattro",2,2008,4,"auto(s6)","4",19,27,"p","compact" 13 | "12","audi","a4 quattro",2.8,1999,6,"auto(l5)","4",15,25,"p","compact" 14 | "13","audi","a4 quattro",2.8,1999,6,"manual(m5)","4",17,25,"p","compact" 15 | "14","audi","a4 quattro",3.1,2008,6,"auto(s6)","4",17,25,"p","compact" 16 | "15","audi","a4 quattro",3.1,2008,6,"manual(m6)","4",15,25,"p","compact" 17 | "16","audi","a6 quattro",2.8,1999,6,"auto(l5)","4",15,24,"p","midsize" 18 | "17","audi","a6 quattro",3.1,2008,6,"auto(s6)","4",17,25,"p","midsize" 19 | "18","audi","a6 quattro",4.2,2008,8,"auto(s6)","4",16,23,"p","midsize" 20 | "19","chevrolet","c1500 suburban 2wd",5.3,2008,8,"auto(l4)","r",14,20,"r","suv" 21 | "20","chevrolet","c1500 suburban 2wd",5.3,2008,8,"auto(l4)","r",11,15,"e","suv" 22 | "21","chevrolet","c1500 suburban 2wd",5.3,2008,8,"auto(l4)","r",14,20,"r","suv" 23 | "22","chevrolet","c1500 suburban 2wd",5.7,1999,8,"auto(l4)","r",13,17,"r","suv" 24 | "23","chevrolet","c1500 suburban 2wd",6,2008,8,"auto(l4)","r",12,17,"r","suv" 25 | "24","chevrolet","corvette",5.7,1999,8,"manual(m6)","r",16,26,"p","2seater" 26 | "25","chevrolet","corvette",5.7,1999,8,"auto(l4)","r",15,23,"p","2seater" 27 | "26","chevrolet","corvette",6.2,2008,8,"manual(m6)","r",16,26,"p","2seater" 28 | "27","chevrolet","corvette",6.2,2008,8,"auto(s6)","r",15,25,"p","2seater" 29 | "28","chevrolet","corvette",7,2008,8,"manual(m6)","r",15,24,"p","2seater" 30 | "29","chevrolet","k1500 tahoe 4wd",5.3,2008,8,"auto(l4)","4",14,19,"r","suv" 31 | "30","chevrolet","k1500 tahoe 4wd",5.3,2008,8,"auto(l4)","4",11,14,"e","suv" 32 | "31","chevrolet","k1500 tahoe 4wd",5.7,1999,8,"auto(l4)","4",11,15,"r","suv" 33 | "32","chevrolet","k1500 tahoe 4wd",6.5,1999,8,"auto(l4)","4",14,17,"d","suv" 34 | "33","chevrolet","malibu",2.4,1999,4,"auto(l4)","f",19,27,"r","midsize" 35 | "34","chevrolet","malibu",2.4,2008,4,"auto(l4)","f",22,30,"r","midsize" 36 | "35","chevrolet","malibu",3.1,1999,6,"auto(l4)","f",18,26,"r","midsize" 37 | "36","chevrolet","malibu",3.5,2008,6,"auto(l4)","f",18,29,"r","midsize" 38 | "37","chevrolet","malibu",3.6,2008,6,"auto(s6)","f",17,26,"r","midsize" 39 | "38","dodge","caravan 2wd",2.4,1999,4,"auto(l3)","f",18,24,"r","minivan" 40 | "39","dodge","caravan 2wd",3,1999,6,"auto(l4)","f",17,24,"r","minivan" 41 | "40","dodge","caravan 2wd",3.3,1999,6,"auto(l4)","f",16,22,"r","minivan" 42 | "41","dodge","caravan 2wd",3.3,1999,6,"auto(l4)","f",16,22,"r","minivan" 43 | "42","dodge","caravan 2wd",3.3,2008,6,"auto(l4)","f",17,24,"r","minivan" 44 | "43","dodge","caravan 2wd",3.3,2008,6,"auto(l4)","f",17,24,"r","minivan" 45 | "44","dodge","caravan 2wd",3.3,2008,6,"auto(l4)","f",11,17,"e","minivan" 46 | "45","dodge","caravan 2wd",3.8,1999,6,"auto(l4)","f",15,22,"r","minivan" 47 | "46","dodge","caravan 2wd",3.8,1999,6,"auto(l4)","f",15,21,"r","minivan" 48 | "47","dodge","caravan 2wd",3.8,2008,6,"auto(l6)","f",16,23,"r","minivan" 49 | "48","dodge","caravan 2wd",4,2008,6,"auto(l6)","f",16,23,"r","minivan" 50 | "49","dodge","dakota pickup 4wd",3.7,2008,6,"manual(m6)","4",15,19,"r","pickup" 51 | "50","dodge","dakota pickup 4wd",3.7,2008,6,"auto(l4)","4",14,18,"r","pickup" 52 | "51","dodge","dakota pickup 4wd",3.9,1999,6,"auto(l4)","4",13,17,"r","pickup" 53 | "52","dodge","dakota pickup 4wd",3.9,1999,6,"manual(m5)","4",14,17,"r","pickup" 54 | "53","dodge","dakota pickup 4wd",4.7,2008,8,"auto(l5)","4",14,19,"r","pickup" 55 | "54","dodge","dakota pickup 4wd",4.7,2008,8,"auto(l5)","4",14,19,"r","pickup" 56 | "55","dodge","dakota pickup 4wd",4.7,2008,8,"auto(l5)","4",9,12,"e","pickup" 57 | "56","dodge","dakota pickup 4wd",5.2,1999,8,"manual(m5)","4",11,17,"r","pickup" 58 | "57","dodge","dakota pickup 4wd",5.2,1999,8,"auto(l4)","4",11,15,"r","pickup" 59 | "58","dodge","durango 4wd",3.9,1999,6,"auto(l4)","4",13,17,"r","suv" 60 | "59","dodge","durango 4wd",4.7,2008,8,"auto(l5)","4",13,17,"r","suv" 61 | "60","dodge","durango 4wd",4.7,2008,8,"auto(l5)","4",9,12,"e","suv" 62 | "61","dodge","durango 4wd",4.7,2008,8,"auto(l5)","4",13,17,"r","suv" 63 | "62","dodge","durango 4wd",5.2,1999,8,"auto(l4)","4",11,16,"r","suv" 64 | "63","dodge","durango 4wd",5.7,2008,8,"auto(l5)","4",13,18,"r","suv" 65 | "64","dodge","durango 4wd",5.9,1999,8,"auto(l4)","4",11,15,"r","suv" 66 | "65","dodge","ram 1500 pickup 4wd",4.7,2008,8,"manual(m6)","4",12,16,"r","pickup" 67 | "66","dodge","ram 1500 pickup 4wd",4.7,2008,8,"auto(l5)","4",9,12,"e","pickup" 68 | "67","dodge","ram 1500 pickup 4wd",4.7,2008,8,"auto(l5)","4",13,17,"r","pickup" 69 | "68","dodge","ram 1500 pickup 4wd",4.7,2008,8,"auto(l5)","4",13,17,"r","pickup" 70 | "69","dodge","ram 1500 pickup 4wd",4.7,2008,8,"manual(m6)","4",12,16,"r","pickup" 71 | "70","dodge","ram 1500 pickup 4wd",4.7,2008,8,"manual(m6)","4",9,12,"e","pickup" 72 | "71","dodge","ram 1500 pickup 4wd",5.2,1999,8,"auto(l4)","4",11,15,"r","pickup" 73 | "72","dodge","ram 1500 pickup 4wd",5.2,1999,8,"manual(m5)","4",11,16,"r","pickup" 74 | "73","dodge","ram 1500 pickup 4wd",5.7,2008,8,"auto(l5)","4",13,17,"r","pickup" 75 | "74","dodge","ram 1500 pickup 4wd",5.9,1999,8,"auto(l4)","4",11,15,"r","pickup" 76 | "75","ford","expedition 2wd",4.6,1999,8,"auto(l4)","r",11,17,"r","suv" 77 | "76","ford","expedition 2wd",5.4,1999,8,"auto(l4)","r",11,17,"r","suv" 78 | "77","ford","expedition 2wd",5.4,2008,8,"auto(l6)","r",12,18,"r","suv" 79 | "78","ford","explorer 4wd",4,1999,6,"auto(l5)","4",14,17,"r","suv" 80 | "79","ford","explorer 4wd",4,1999,6,"manual(m5)","4",15,19,"r","suv" 81 | "80","ford","explorer 4wd",4,1999,6,"auto(l5)","4",14,17,"r","suv" 82 | "81","ford","explorer 4wd",4,2008,6,"auto(l5)","4",13,19,"r","suv" 83 | "82","ford","explorer 4wd",4.6,2008,8,"auto(l6)","4",13,19,"r","suv" 84 | "83","ford","explorer 4wd",5,1999,8,"auto(l4)","4",13,17,"r","suv" 85 | "84","ford","f150 pickup 4wd",4.2,1999,6,"auto(l4)","4",14,17,"r","pickup" 86 | "85","ford","f150 pickup 4wd",4.2,1999,6,"manual(m5)","4",14,17,"r","pickup" 87 | "86","ford","f150 pickup 4wd",4.6,1999,8,"manual(m5)","4",13,16,"r","pickup" 88 | "87","ford","f150 pickup 4wd",4.6,1999,8,"auto(l4)","4",13,16,"r","pickup" 89 | "88","ford","f150 pickup 4wd",4.6,2008,8,"auto(l4)","4",13,17,"r","pickup" 90 | "89","ford","f150 pickup 4wd",5.4,1999,8,"auto(l4)","4",11,15,"r","pickup" 91 | "90","ford","f150 pickup 4wd",5.4,2008,8,"auto(l4)","4",13,17,"r","pickup" 92 | "91","ford","mustang",3.8,1999,6,"manual(m5)","r",18,26,"r","subcompact" 93 | "92","ford","mustang",3.8,1999,6,"auto(l4)","r",18,25,"r","subcompact" 94 | "93","ford","mustang",4,2008,6,"manual(m5)","r",17,26,"r","subcompact" 95 | "94","ford","mustang",4,2008,6,"auto(l5)","r",16,24,"r","subcompact" 96 | "95","ford","mustang",4.6,1999,8,"auto(l4)","r",15,21,"r","subcompact" 97 | "96","ford","mustang",4.6,1999,8,"manual(m5)","r",15,22,"r","subcompact" 98 | "97","ford","mustang",4.6,2008,8,"manual(m5)","r",15,23,"r","subcompact" 99 | "98","ford","mustang",4.6,2008,8,"auto(l5)","r",15,22,"r","subcompact" 100 | "99","ford","mustang",5.4,2008,8,"manual(m6)","r",14,20,"p","subcompact" 101 | "100","honda","civic",1.6,1999,4,"manual(m5)","f",28,33,"r","subcompact" 102 | "101","honda","civic",1.6,1999,4,"auto(l4)","f",24,32,"r","subcompact" 103 | "102","honda","civic",1.6,1999,4,"manual(m5)","f",25,32,"r","subcompact" 104 | "103","honda","civic",1.6,1999,4,"manual(m5)","f",23,29,"p","subcompact" 105 | "104","honda","civic",1.6,1999,4,"auto(l4)","f",24,32,"r","subcompact" 106 | "105","honda","civic",1.8,2008,4,"manual(m5)","f",26,34,"r","subcompact" 107 | "106","honda","civic",1.8,2008,4,"auto(l5)","f",25,36,"r","subcompact" 108 | "107","honda","civic",1.8,2008,4,"auto(l5)","f",24,36,"c","subcompact" 109 | "108","honda","civic",2,2008,4,"manual(m6)","f",21,29,"p","subcompact" 110 | "109","hyundai","sonata",2.4,1999,4,"auto(l4)","f",18,26,"r","midsize" 111 | "110","hyundai","sonata",2.4,1999,4,"manual(m5)","f",18,27,"r","midsize" 112 | "111","hyundai","sonata",2.4,2008,4,"auto(l4)","f",21,30,"r","midsize" 113 | "112","hyundai","sonata",2.4,2008,4,"manual(m5)","f",21,31,"r","midsize" 114 | "113","hyundai","sonata",2.5,1999,6,"auto(l4)","f",18,26,"r","midsize" 115 | "114","hyundai","sonata",2.5,1999,6,"manual(m5)","f",18,26,"r","midsize" 116 | "115","hyundai","sonata",3.3,2008,6,"auto(l5)","f",19,28,"r","midsize" 117 | "116","hyundai","tiburon",2,1999,4,"auto(l4)","f",19,26,"r","subcompact" 118 | "117","hyundai","tiburon",2,1999,4,"manual(m5)","f",19,29,"r","subcompact" 119 | "118","hyundai","tiburon",2,2008,4,"manual(m5)","f",20,28,"r","subcompact" 120 | "119","hyundai","tiburon",2,2008,4,"auto(l4)","f",20,27,"r","subcompact" 121 | "120","hyundai","tiburon",2.7,2008,6,"auto(l4)","f",17,24,"r","subcompact" 122 | "121","hyundai","tiburon",2.7,2008,6,"manual(m6)","f",16,24,"r","subcompact" 123 | "122","hyundai","tiburon",2.7,2008,6,"manual(m5)","f",17,24,"r","subcompact" 124 | "123","jeep","grand cherokee 4wd",3,2008,6,"auto(l5)","4",17,22,"d","suv" 125 | "124","jeep","grand cherokee 4wd",3.7,2008,6,"auto(l5)","4",15,19,"r","suv" 126 | "125","jeep","grand cherokee 4wd",4,1999,6,"auto(l4)","4",15,20,"r","suv" 127 | "126","jeep","grand cherokee 4wd",4.7,1999,8,"auto(l4)","4",14,17,"r","suv" 128 | "127","jeep","grand cherokee 4wd",4.7,2008,8,"auto(l5)","4",9,12,"e","suv" 129 | "128","jeep","grand cherokee 4wd",4.7,2008,8,"auto(l5)","4",14,19,"r","suv" 130 | "129","jeep","grand cherokee 4wd",5.7,2008,8,"auto(l5)","4",13,18,"r","suv" 131 | "130","jeep","grand cherokee 4wd",6.1,2008,8,"auto(l5)","4",11,14,"p","suv" 132 | "131","land rover","range rover",4,1999,8,"auto(l4)","4",11,15,"p","suv" 133 | "132","land rover","range rover",4.2,2008,8,"auto(s6)","4",12,18,"r","suv" 134 | "133","land rover","range rover",4.4,2008,8,"auto(s6)","4",12,18,"r","suv" 135 | "134","land rover","range rover",4.6,1999,8,"auto(l4)","4",11,15,"p","suv" 136 | "135","lincoln","navigator 2wd",5.4,1999,8,"auto(l4)","r",11,17,"r","suv" 137 | "136","lincoln","navigator 2wd",5.4,1999,8,"auto(l4)","r",11,16,"p","suv" 138 | "137","lincoln","navigator 2wd",5.4,2008,8,"auto(l6)","r",12,18,"r","suv" 139 | "138","mercury","mountaineer 4wd",4,1999,6,"auto(l5)","4",14,17,"r","suv" 140 | "139","mercury","mountaineer 4wd",4,2008,6,"auto(l5)","4",13,19,"r","suv" 141 | "140","mercury","mountaineer 4wd",4.6,2008,8,"auto(l6)","4",13,19,"r","suv" 142 | "141","mercury","mountaineer 4wd",5,1999,8,"auto(l4)","4",13,17,"r","suv" 143 | "142","nissan","altima",2.4,1999,4,"manual(m5)","f",21,29,"r","compact" 144 | "143","nissan","altima",2.4,1999,4,"auto(l4)","f",19,27,"r","compact" 145 | "144","nissan","altima",2.5,2008,4,"auto(av)","f",23,31,"r","midsize" 146 | "145","nissan","altima",2.5,2008,4,"manual(m6)","f",23,32,"r","midsize" 147 | "146","nissan","altima",3.5,2008,6,"manual(m6)","f",19,27,"p","midsize" 148 | "147","nissan","altima",3.5,2008,6,"auto(av)","f",19,26,"p","midsize" 149 | "148","nissan","maxima",3,1999,6,"auto(l4)","f",18,26,"r","midsize" 150 | "149","nissan","maxima",3,1999,6,"manual(m5)","f",19,25,"r","midsize" 151 | "150","nissan","maxima",3.5,2008,6,"auto(av)","f",19,25,"p","midsize" 152 | "151","nissan","pathfinder 4wd",3.3,1999,6,"auto(l4)","4",14,17,"r","suv" 153 | "152","nissan","pathfinder 4wd",3.3,1999,6,"manual(m5)","4",15,17,"r","suv" 154 | "153","nissan","pathfinder 4wd",4,2008,6,"auto(l5)","4",14,20,"p","suv" 155 | "154","nissan","pathfinder 4wd",5.6,2008,8,"auto(s5)","4",12,18,"p","suv" 156 | "155","pontiac","grand prix",3.1,1999,6,"auto(l4)","f",18,26,"r","midsize" 157 | "156","pontiac","grand prix",3.8,1999,6,"auto(l4)","f",16,26,"p","midsize" 158 | "157","pontiac","grand prix",3.8,1999,6,"auto(l4)","f",17,27,"r","midsize" 159 | "158","pontiac","grand prix",3.8,2008,6,"auto(l4)","f",18,28,"r","midsize" 160 | "159","pontiac","grand prix",5.3,2008,8,"auto(s4)","f",16,25,"p","midsize" 161 | "160","subaru","forester awd",2.5,1999,4,"manual(m5)","4",18,25,"r","suv" 162 | "161","subaru","forester awd",2.5,1999,4,"auto(l4)","4",18,24,"r","suv" 163 | "162","subaru","forester awd",2.5,2008,4,"manual(m5)","4",20,27,"r","suv" 164 | "163","subaru","forester awd",2.5,2008,4,"manual(m5)","4",19,25,"p","suv" 165 | "164","subaru","forester awd",2.5,2008,4,"auto(l4)","4",20,26,"r","suv" 166 | "165","subaru","forester awd",2.5,2008,4,"auto(l4)","4",18,23,"p","suv" 167 | "166","subaru","impreza awd",2.2,1999,4,"auto(l4)","4",21,26,"r","subcompact" 168 | "167","subaru","impreza awd",2.2,1999,4,"manual(m5)","4",19,26,"r","subcompact" 169 | "168","subaru","impreza awd",2.5,1999,4,"manual(m5)","4",19,26,"r","subcompact" 170 | "169","subaru","impreza awd",2.5,1999,4,"auto(l4)","4",19,26,"r","subcompact" 171 | "170","subaru","impreza awd",2.5,2008,4,"auto(s4)","4",20,25,"p","compact" 172 | "171","subaru","impreza awd",2.5,2008,4,"auto(s4)","4",20,27,"r","compact" 173 | "172","subaru","impreza awd",2.5,2008,4,"manual(m5)","4",19,25,"p","compact" 174 | "173","subaru","impreza awd",2.5,2008,4,"manual(m5)","4",20,27,"r","compact" 175 | "174","toyota","4runner 4wd",2.7,1999,4,"manual(m5)","4",15,20,"r","suv" 176 | "175","toyota","4runner 4wd",2.7,1999,4,"auto(l4)","4",16,20,"r","suv" 177 | "176","toyota","4runner 4wd",3.4,1999,6,"auto(l4)","4",15,19,"r","suv" 178 | "177","toyota","4runner 4wd",3.4,1999,6,"manual(m5)","4",15,17,"r","suv" 179 | "178","toyota","4runner 4wd",4,2008,6,"auto(l5)","4",16,20,"r","suv" 180 | "179","toyota","4runner 4wd",4.7,2008,8,"auto(l5)","4",14,17,"r","suv" 181 | "180","toyota","camry",2.2,1999,4,"manual(m5)","f",21,29,"r","midsize" 182 | "181","toyota","camry",2.2,1999,4,"auto(l4)","f",21,27,"r","midsize" 183 | "182","toyota","camry",2.4,2008,4,"manual(m5)","f",21,31,"r","midsize" 184 | "183","toyota","camry",2.4,2008,4,"auto(l5)","f",21,31,"r","midsize" 185 | "184","toyota","camry",3,1999,6,"auto(l4)","f",18,26,"r","midsize" 186 | "185","toyota","camry",3,1999,6,"manual(m5)","f",18,26,"r","midsize" 187 | "186","toyota","camry",3.5,2008,6,"auto(s6)","f",19,28,"r","midsize" 188 | "187","toyota","camry solara",2.2,1999,4,"auto(l4)","f",21,27,"r","compact" 189 | "188","toyota","camry solara",2.2,1999,4,"manual(m5)","f",21,29,"r","compact" 190 | "189","toyota","camry solara",2.4,2008,4,"manual(m5)","f",21,31,"r","compact" 191 | "190","toyota","camry solara",2.4,2008,4,"auto(s5)","f",22,31,"r","compact" 192 | "191","toyota","camry solara",3,1999,6,"auto(l4)","f",18,26,"r","compact" 193 | "192","toyota","camry solara",3,1999,6,"manual(m5)","f",18,26,"r","compact" 194 | "193","toyota","camry solara",3.3,2008,6,"auto(s5)","f",18,27,"r","compact" 195 | "194","toyota","corolla",1.8,1999,4,"auto(l3)","f",24,30,"r","compact" 196 | "195","toyota","corolla",1.8,1999,4,"auto(l4)","f",24,33,"r","compact" 197 | "196","toyota","corolla",1.8,1999,4,"manual(m5)","f",26,35,"r","compact" 198 | "197","toyota","corolla",1.8,2008,4,"manual(m5)","f",28,37,"r","compact" 199 | "198","toyota","corolla",1.8,2008,4,"auto(l4)","f",26,35,"r","compact" 200 | "199","toyota","land cruiser wagon 4wd",4.7,1999,8,"auto(l4)","4",11,15,"r","suv" 201 | "200","toyota","land cruiser wagon 4wd",5.7,2008,8,"auto(s6)","4",13,18,"r","suv" 202 | "201","toyota","toyota tacoma 4wd",2.7,1999,4,"manual(m5)","4",15,20,"r","pickup" 203 | "202","toyota","toyota tacoma 4wd",2.7,1999,4,"auto(l4)","4",16,20,"r","pickup" 204 | "203","toyota","toyota tacoma 4wd",2.7,2008,4,"manual(m5)","4",17,22,"r","pickup" 205 | "204","toyota","toyota tacoma 4wd",3.4,1999,6,"manual(m5)","4",15,17,"r","pickup" 206 | "205","toyota","toyota tacoma 4wd",3.4,1999,6,"auto(l4)","4",15,19,"r","pickup" 207 | "206","toyota","toyota tacoma 4wd",4,2008,6,"manual(m6)","4",15,18,"r","pickup" 208 | "207","toyota","toyota tacoma 4wd",4,2008,6,"auto(l5)","4",16,20,"r","pickup" 209 | "208","volkswagen","gti",2,1999,4,"manual(m5)","f",21,29,"r","compact" 210 | "209","volkswagen","gti",2,1999,4,"auto(l4)","f",19,26,"r","compact" 211 | "210","volkswagen","gti",2,2008,4,"manual(m6)","f",21,29,"p","compact" 212 | "211","volkswagen","gti",2,2008,4,"auto(s6)","f",22,29,"p","compact" 213 | "212","volkswagen","gti",2.8,1999,6,"manual(m5)","f",17,24,"r","compact" 214 | "213","volkswagen","jetta",1.9,1999,4,"manual(m5)","f",33,44,"d","compact" 215 | "214","volkswagen","jetta",2,1999,4,"manual(m5)","f",21,29,"r","compact" 216 | "215","volkswagen","jetta",2,1999,4,"auto(l4)","f",19,26,"r","compact" 217 | "216","volkswagen","jetta",2,2008,4,"auto(s6)","f",22,29,"p","compact" 218 | "217","volkswagen","jetta",2,2008,4,"manual(m6)","f",21,29,"p","compact" 219 | "218","volkswagen","jetta",2.5,2008,5,"auto(s6)","f",21,29,"r","compact" 220 | "219","volkswagen","jetta",2.5,2008,5,"manual(m5)","f",21,29,"r","compact" 221 | "220","volkswagen","jetta",2.8,1999,6,"auto(l4)","f",16,23,"r","compact" 222 | "221","volkswagen","jetta",2.8,1999,6,"manual(m5)","f",17,24,"r","compact" 223 | "222","volkswagen","new beetle",1.9,1999,4,"manual(m5)","f",35,44,"d","subcompact" 224 | "223","volkswagen","new beetle",1.9,1999,4,"auto(l4)","f",29,41,"d","subcompact" 225 | "224","volkswagen","new beetle",2,1999,4,"manual(m5)","f",21,29,"r","subcompact" 226 | "225","volkswagen","new beetle",2,1999,4,"auto(l4)","f",19,26,"r","subcompact" 227 | "226","volkswagen","new beetle",2.5,2008,5,"manual(m5)","f",20,28,"r","subcompact" 228 | "227","volkswagen","new beetle",2.5,2008,5,"auto(s6)","f",20,29,"r","subcompact" 229 | "228","volkswagen","passat",1.8,1999,4,"manual(m5)","f",21,29,"p","midsize" 230 | "229","volkswagen","passat",1.8,1999,4,"auto(l5)","f",18,29,"p","midsize" 231 | "230","volkswagen","passat",2,2008,4,"auto(s6)","f",19,28,"p","midsize" 232 | "231","volkswagen","passat",2,2008,4,"manual(m6)","f",21,29,"p","midsize" 233 | "232","volkswagen","passat",2.8,1999,6,"auto(l5)","f",16,26,"p","midsize" 234 | "233","volkswagen","passat",2.8,1999,6,"manual(m5)","f",18,26,"p","midsize" 235 | "234","volkswagen","passat",3.6,2008,6,"auto(s6)","f",17,26,"p","midsize" 236 | -------------------------------------------------------------------------------- /olympics.csv: -------------------------------------------------------------------------------- 1 | 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 2 | ,№ Summer,01 !,02 !,03 !,Total,№ Winter,01 !,02 !,03 !,Total,№ Games,01 !,02 !,03 !,Combined total 3 | Afghanistan (AFG),13,0,0,2,2,0,0,0,0,0,13,0,0,2,2 4 | Algeria (ALG),12,5,2,8,15,3,0,0,0,0,15,5,2,8,15 5 | Argentina (ARG),23,18,24,28,70,18,0,0,0,0,41,18,24,28,70 6 | Armenia (ARM),5,1,2,9,12,6,0,0,0,0,11,1,2,9,12 7 | Australasia (ANZ) [ANZ],2,3,4,5,12,0,0,0,0,0,2,3,4,5,12 8 | Australia (AUS) [AUS] [Z],25,139,152,177,468,18,5,3,4,12,43,144,155,181,480 9 | Austria (AUT),26,18,33,35,86,22,59,78,81,218,48,77,111,116,304 10 | Azerbaijan (AZE),5,6,5,15,26,5,0,0,0,0,10,6,5,15,26 11 | Bahamas (BAH),15,5,2,5,12,0,0,0,0,0,15,5,2,5,12 12 | Bahrain (BRN),8,0,0,1,1,0,0,0,0,0,8,0,0,1,1 13 | Barbados (BAR) [BAR],11,0,0,1,1,0,0,0,0,0,11,0,0,1,1 14 | Belarus (BLR),5,12,24,39,75,6,6,4,5,15,11,18,28,44,90 15 | Belgium (BEL),25,37,52,53,142,20,1,1,3,5,45,38,53,56,147 16 | Bermuda (BER),17,0,0,1,1,7,0,0,0,0,24,0,0,1,1 17 | Bohemia (BOH) [BOH] [Z],3,0,1,3,4,0,0,0,0,0,3,0,1,3,4 18 | Botswana (BOT),9,0,1,0,1,0,0,0,0,0,9,0,1,0,1 19 | Brazil (BRA),21,23,30,55,108,7,0,0,0,0,28,23,30,55,108 20 | British West Indies (BWI) [BWI],1,0,0,2,2,0,0,0,0,0,1,0,0,2,2 21 | Bulgaria (BUL) [H],19,51,85,78,214,19,1,2,3,6,38,52,87,81,220 22 | Burundi (BDI),5,1,0,0,1,0,0,0,0,0,5,1,0,0,1 23 | Cameroon (CMR),13,3,1,1,5,1,0,0,0,0,14,3,1,1,5 24 | Canada (CAN),25,59,99,121,279,22,62,56,52,170,47,121,155,173,449 25 | Chile (CHI) [I],22,2,7,4,13,16,0,0,0,0,38,2,7,4,13 26 | China (CHN) [CHN],9,201,146,126,473,10,12,22,19,53,19,213,168,145,526 27 | Colombia (COL),18,2,6,11,19,1,0,0,0,0,19,2,6,11,19 28 | Costa Rica (CRC),14,1,1,2,4,6,0,0,0,0,20,1,1,2,4 29 | Ivory Coast (CIV) [CIV],12,0,1,0,1,0,0,0,0,0,12,0,1,0,1 30 | Croatia (CRO),6,6,7,10,23,7,4,6,1,11,13,10,13,11,34 31 | Cuba (CUB) [Z],19,72,67,70,209,0,0,0,0,0,19,72,67,70,209 32 | Cyprus (CYP),9,0,1,0,1,10,0,0,0,0,19,0,1,0,1 33 | Czech Republic (CZE) [CZE],5,14,15,15,44,6,7,9,8,24,11,21,24,23,68 34 | Czechoslovakia (TCH) [TCH],16,49,49,45,143,16,2,8,15,25,32,51,57,60,168 35 | Denmark (DEN) [Z],26,43,68,68,179,13,0,1,0,1,39,43,69,68,180 36 | Djibouti (DJI) [B],7,0,0,1,1,0,0,0,0,0,7,0,0,1,1 37 | Dominican Republic (DOM),13,3,2,1,6,0,0,0,0,0,13,3,2,1,6 38 | Ecuador (ECU),13,1,1,0,2,0,0,0,0,0,13,1,1,0,2 39 | Egypt (EGY) [EGY] [Z],21,7,9,10,26,1,0,0,0,0,22,7,9,10,26 40 | Eritrea (ERI),4,0,0,1,1,0,0,0,0,0,4,0,0,1,1 41 | Estonia (EST),11,9,9,15,33,9,4,2,1,7,20,13,11,16,40 42 | Ethiopia (ETH),12,21,7,17,45,2,0,0,0,0,14,21,7,17,45 43 | Finland (FIN),24,101,84,117,302,22,42,62,57,161,46,143,146,174,463 44 | France (FRA) [O] [P] [Z],27,202,223,246,671,22,31,31,47,109,49,233,254,293,780 45 | Gabon (GAB),9,0,1,0,1,0,0,0,0,0,9,0,1,0,1 46 | Georgia (GEO),5,6,5,14,25,6,0,0,0,0,11,6,5,14,25 47 | Germany (GER) [GER] [Z],15,174,182,217,573,11,78,78,53,209,26,252,260,270,782 48 | United Team of Germany (EUA) [EUA],3,28,54,36,118,3,8,6,5,19,6,36,60,41,137 49 | East Germany (GDR) [GDR],5,153,129,127,409,6,39,36,35,110,11,192,165,162,519 50 | West Germany (FRG) [FRG],5,56,67,81,204,6,11,15,13,39,11,67,82,94,243 51 | Ghana (GHA) [GHA],13,0,1,3,4,1,0,0,0,0,14,0,1,3,4 52 | Great Britain (GBR) [GBR] [Z],27,236,272,272,780,22,10,4,12,26,49,246,276,284,806 53 | Greece (GRE) [Z],27,30,42,39,111,18,0,0,0,0,45,30,42,39,111 54 | Grenada (GRN),8,1,0,0,1,0,0,0,0,0,8,1,0,0,1 55 | Guatemala (GUA),13,0,1,0,1,1,0,0,0,0,14,0,1,0,1 56 | Guyana (GUY) [GUY],16,0,0,1,1,0,0,0,0,0,16,0,0,1,1 57 | Haiti (HAI) [J],14,0,1,1,2,0,0,0,0,0,14,0,1,1,2 58 | Hong Kong (HKG) [HKG],15,1,1,1,3,4,0,0,0,0,19,1,1,1,3 59 | Hungary (HUN),25,167,144,165,476,22,0,2,4,6,47,167,146,169,482 60 | Iceland (ISL),19,0,2,2,4,17,0,0,0,0,36,0,2,2,4 61 | India (IND) [F],23,9,6,11,26,9,0,0,0,0,32,9,6,11,26 62 | Indonesia (INA),14,6,10,11,27,0,0,0,0,0,14,6,10,11,27 63 | Iran (IRI) [K],15,15,20,25,60,10,0,0,0,0,25,15,20,25,60 64 | Iraq (IRQ),13,0,0,1,1,0,0,0,0,0,13,0,0,1,1 65 | Ireland (IRL),20,9,8,12,29,6,0,0,0,0,26,9,8,12,29 66 | Israel (ISR),15,1,1,5,7,6,0,0,0,0,21,1,1,5,7 67 | Italy (ITA) [M] [S],26,198,166,185,549,22,37,34,43,114,48,235,200,228,663 68 | Jamaica (JAM) [JAM],16,17,30,20,67,7,0,0,0,0,23,17,30,20,67 69 | Japan (JPN),21,130,126,142,398,20,10,17,18,45,41,140,143,160,443 70 | Kazakhstan (KAZ),5,16,17,19,52,6,1,3,3,7,11,17,20,22,59 71 | Kenya (KEN),13,25,32,29,86,3,0,0,0,0,16,25,32,29,86 72 | North Korea (PRK),9,14,12,21,47,8,0,1,1,2,17,14,13,22,49 73 | South Korea (KOR),16,81,82,80,243,17,26,17,10,53,33,107,99,90,296 74 | Kuwait (KUW),12,0,0,2,2,0,0,0,0,0,12,0,0,2,2 75 | Kyrgyzstan (KGZ),5,0,1,2,3,6,0,0,0,0,11,0,1,2,3 76 | Latvia (LAT),10,3,11,5,19,10,0,4,3,7,20,3,15,8,26 77 | Lebanon (LIB),16,0,2,2,4,16,0,0,0,0,32,0,2,2,4 78 | Liechtenstein (LIE),16,0,0,0,0,18,2,2,5,9,34,2,2,5,9 79 | Lithuania (LTU),8,6,5,10,21,8,0,0,0,0,16,6,5,10,21 80 | Luxembourg (LUX) [O],22,1,1,0,2,8,0,2,0,2,30,1,3,0,4 81 | Macedonia (MKD),5,0,0,1,1,5,0,0,0,0,10,0,0,1,1 82 | Malaysia (MAS) [MAS],12,0,3,3,6,0,0,0,0,0,12,0,3,3,6 83 | Mauritius (MRI),8,0,0,1,1,0,0,0,0,0,8,0,0,1,1 84 | Mexico (MEX),22,13,21,28,62,8,0,0,0,0,30,13,21,28,62 85 | Moldova (MDA),5,0,2,5,7,6,0,0,0,0,11,0,2,5,7 86 | Mongolia (MGL),12,2,9,13,24,13,0,0,0,0,25,2,9,13,24 87 | Montenegro (MNE),2,0,1,0,1,2,0,0,0,0,4,0,1,0,1 88 | Morocco (MAR),13,6,5,11,22,6,0,0,0,0,19,6,5,11,22 89 | Mozambique (MOZ),9,1,0,1,2,0,0,0,0,0,9,1,0,1,2 90 | Namibia (NAM),6,0,4,0,4,0,0,0,0,0,6,0,4,0,4 91 | Netherlands (NED) [Z],25,77,85,104,266,20,37,38,35,110,45,114,123,139,376 92 | Netherlands Antilles (AHO) [AHO] [I],13,0,1,0,1,2,0,0,0,0,15,0,1,0,1 93 | New Zealand (NZL) [NZL],22,42,18,39,99,15,0,1,0,1,37,42,19,39,100 94 | Niger (NIG),11,0,0,1,1,0,0,0,0,0,11,0,0,1,1 95 | Nigeria (NGR),15,3,8,12,23,0,0,0,0,0,15,3,8,12,23 96 | Norway (NOR) [Q],24,56,49,43,148,22,118,111,100,329,46,174,160,143,477 97 | Pakistan (PAK),16,3,3,4,10,2,0,0,0,0,18,3,3,4,10 98 | Panama (PAN),16,1,0,2,3,0,0,0,0,0,16,1,0,2,3 99 | Paraguay (PAR),11,0,1,0,1,1,0,0,0,0,12,0,1,0,1 100 | Peru (PER) [L],17,1,3,0,4,2,0,0,0,0,19,1,3,0,4 101 | Philippines (PHI),20,0,2,7,9,4,0,0,0,0,24,0,2,7,9 102 | Poland (POL),20,64,82,125,271,22,6,7,7,20,42,70,89,132,291 103 | Portugal (POR),23,4,8,11,23,7,0,0,0,0,30,4,8,11,23 104 | Puerto Rico (PUR),17,0,2,6,8,6,0,0,0,0,23,0,2,6,8 105 | Qatar (QAT),8,0,0,4,4,0,0,0,0,0,8,0,0,4,4 106 | Romania (ROU),20,88,94,119,301,20,0,0,1,1,40,88,94,120,302 107 | Russia (RUS) [RUS],5,132,121,142,395,6,49,40,35,124,11,181,161,177,519 108 | Russian Empire (RU1) [RU1],3,1,4,3,8,0,0,0,0,0,3,1,4,3,8 109 | Soviet Union (URS) [URS],9,395,319,296,1010,9,78,57,59,194,18,473,376,355,1204 110 | Unified Team (EUN) [EUN],1,45,38,29,112,1,9,6,8,23,2,54,44,37,135 111 | Saudi Arabia (KSA),10,0,1,2,3,0,0,0,0,0,10,0,1,2,3 112 | Senegal (SEN),13,0,1,0,1,5,0,0,0,0,18,0,1,0,1 113 | Serbia (SRB) [SRB],3,1,2,4,7,2,0,0,0,0,5,1,2,4,7 114 | Serbia and Montenegro (SCG) [SCG],3,2,4,3,9,3,0,0,0,0,6,2,4,3,9 115 | Singapore (SIN),15,0,2,2,4,0,0,0,0,0,15,0,2,2,4 116 | Slovakia (SVK) [SVK],5,7,9,8,24,6,2,2,1,5,11,9,11,9,29 117 | Slovenia (SLO),6,4,6,9,19,7,2,4,9,15,13,6,10,18,34 118 | South Africa (RSA),18,23,26,27,76,6,0,0,0,0,24,23,26,27,76 119 | Spain (ESP) [Z],22,37,59,35,131,19,1,0,1,2,41,38,59,36,133 120 | Sri Lanka (SRI) [SRI],16,0,2,0,2,0,0,0,0,0,16,0,2,0,2 121 | Sudan (SUD),11,0,1,0,1,0,0,0,0,0,11,0,1,0,1 122 | Suriname (SUR) [E],11,1,0,1,2,0,0,0,0,0,11,1,0,1,2 123 | Sweden (SWE) [Z],26,143,164,176,483,22,50,40,54,144,48,193,204,230,627 124 | Switzerland (SUI),27,47,73,65,185,22,50,40,48,138,49,97,113,113,323 125 | Syria (SYR),12,1,1,1,3,0,0,0,0,0,12,1,1,1,3 126 | Chinese Taipei (TPE) [TPE] [TPE2],13,2,7,12,21,11,0,0,0,0,24,2,7,12,21 127 | Tajikistan (TJK),5,0,1,2,3,4,0,0,0,0,9,0,1,2,3 128 | Tanzania (TAN) [TAN],12,0,2,0,2,0,0,0,0,0,12,0,2,0,2 129 | Thailand (THA),15,7,6,11,24,3,0,0,0,0,18,7,6,11,24 130 | Togo (TOG),9,0,0,1,1,1,0,0,0,0,10,0,0,1,1 131 | Tonga (TGA),8,0,1,0,1,1,0,0,0,0,9,0,1,0,1 132 | Trinidad and Tobago (TRI) [TRI],16,2,5,11,18,3,0,0,0,0,19,2,5,11,18 133 | Tunisia (TUN),13,3,3,4,10,0,0,0,0,0,13,3,3,4,10 134 | Turkey (TUR),21,39,25,24,88,16,0,0,0,0,37,39,25,24,88 135 | Uganda (UGA),14,2,3,2,7,0,0,0,0,0,14,2,3,2,7 136 | Ukraine (UKR),5,33,27,55,115,6,2,1,4,7,11,35,28,59,122 137 | United Arab Emirates (UAE),8,1,0,0,1,0,0,0,0,0,8,1,0,0,1 138 | United States (USA) [P] [Q] [R] [Z],26,976,757,666,2399,22,96,102,84,282,48,1072,859,750,2681 139 | Uruguay (URU),20,2,2,6,10,1,0,0,0,0,21,2,2,6,10 140 | Uzbekistan (UZB),5,5,5,10,20,6,1,0,0,1,11,6,5,10,21 141 | Venezuela (VEN),17,2,2,8,12,4,0,0,0,0,21,2,2,8,12 142 | Vietnam (VIE),14,0,2,0,2,0,0,0,0,0,14,0,2,0,2 143 | Virgin Islands (ISV),11,0,1,0,1,7,0,0,0,0,18,0,1,0,1 144 | Yugoslavia (YUG) [YUG],16,26,29,28,83,14,0,3,1,4,30,26,32,29,87 145 | Independent Olympic Participants (IOP) [IOP],1,0,1,2,3,0,0,0,0,0,1,0,1,2,3 146 | Zambia (ZAM) [ZAM],12,0,1,1,2,0,0,0,0,0,12,0,1,1,2 147 | Zimbabwe (ZIM) [ZIM],12,3,4,1,8,1,0,0,0,0,13,3,4,1,8 148 | Mixed team (ZZX) [ZZX],3,8,5,4,17,0,0,0,0,0,3,8,5,4,17 149 | Totals,27,4809,4775,5130,14714,22,959,958,948,2865,49,5768,5733,6078,17579 150 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | backports.shutil-get-terminal-size==1.0.0 2 | bokeh==0.11.1 3 | cloudpickle==0.1.1 4 | conda==4.1.11 5 | conda-build==2.0.3 6 | conda-env==2.5.0a0 7 | cycler==0.10.0 8 | Cython==0.23.5 9 | decorator==4.0.10 10 | dill==0.2.5 11 | fastcache==1.0.2 12 | filelock==2.0.6 13 | h5py==2.6.0 14 | ipykernel==4.5.0 15 | ipython==5.1.0 16 | ipython-genutils==0.1.0 17 | ipywidgets==5.1.5 18 | Jinja2==2.8 19 | jsonschema==2.5.1 20 | jupyter-client==4.4.0 21 | jupyter-core==4.2.0 22 | jupyterhub==0.5.0 23 | llvmlite==0.8.0 24 | MarkupSafe==0.23 25 | matplotlib==1.5.1 26 | mistune==0.7.3 27 | mpmath==0.19 28 | nbconvert==4.2.0 29 | nbformat==4.1.0 30 | networkx==1.11 31 | notebook==4.2.3 32 | numba==0.23.1 33 | numexpr==2.5.2 34 | numpy==1.10.4 35 | pamela==0.2.1 36 | pandas==0.18.1 37 | patsy==0.4.1 38 | pexpect==4.2.1 39 | pickleshare==0.7.3 40 | Pillow==3.2.0 41 | pkginfo==1.2.1 42 | prompt-toolkit==1.0.7 43 | ptyprocess==0.5.1 44 | pycosat==0.6.1 45 | pycrypto==2.6.1 46 | Pygments==2.1.3 47 | pyparsing==2.1.8 48 | python-dateutil==2.5.3 49 | pytz==2016.6.1 50 | PyYAML==3.11 51 | pyzmq==15.4.0 52 | requests==2.10.0 53 | ruamel-yaml===-VERSION 54 | scikit-image==0.11.3 55 | scikit-learn==0.17.1 56 | scipy==0.17.1 57 | seaborn==0.7.1 58 | simplegeneric==0.8.1 59 | six==1.10.0 60 | SQLAlchemy==1.0.13 61 | statsmodels==0.6.1 62 | sympy==1.0 63 | terminado==0.6 64 | tornado==4.4.1 65 | traitlets==4.3.0 66 | wcwidth==0.1.7 67 | widgetsnbextension==1.2.6 68 | xlrd==1.0.0 69 | -------------------------------------------------------------------------------- /scimagojr-3.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sidsriv/Introduction-to-Data-Science-in-python/4da3a4c2f76e40acdfc14ad9fcbc9b400ba9e5f7/scimagojr-3.xlsx -------------------------------------------------------------------------------- /university_towns.txt: -------------------------------------------------------------------------------- 1 | Alabama[edit] 2 | Auburn (Auburn University)[1] 3 | Florence (University of North Alabama) 4 | Jacksonville (Jacksonville State University)[2] 5 | Livingston (University of West Alabama)[2] 6 | Montevallo (University of Montevallo)[2] 7 | Troy (Troy University)[2] 8 | Tuscaloosa (University of Alabama, Stillman College, Shelton State)[3][4] 9 | Tuskegee (Tuskegee University)[5] 10 | Alaska[edit] 11 | Fairbanks (University of Alaska Fairbanks)[2] 12 | Arizona[edit] 13 | Flagstaff (Northern Arizona University)[6] 14 | Tempe (Arizona State University) 15 | Tucson (University of Arizona) 16 | Arkansas[edit] 17 | Arkadelphia (Henderson State University, Ouachita Baptist University)[2] 18 | Conway (Central Baptist College, Hendrix College, University of Central Arkansas)[2] 19 | Fayetteville (University of Arkansas)[7] 20 | Jonesboro (Arkansas State University)[8] 21 | Magnolia (Southern Arkansas University)[2] 22 | Monticello (University of Arkansas at Monticello)[2] 23 | Russellville (Arkansas Tech University)[2] 24 | Searcy (Harding University)[5] 25 | California[edit] 26 | Angwin (Pacific Union College)[2] 27 | Arcata (Humboldt State University)[5] 28 | Berkeley (University of California, Berkeley)[5] 29 | Chico (California State University, Chico)[2] 30 | Claremont (Claremont McKenna College, Pomona College, Harvey Mudd College, Scripps College, Pitzer College, Keck Graduate Institute, Claremont Graduate University)[5] 31 | Cotati (California State University, Sonoma)[2] 32 | Davis (University of California, Davis)[1] 33 | Irvine (University of California, Irvine) 34 | Isla Vista (University of California, Santa Barbara)[2] 35 | University Park, Los Angeles (University of Southern California) 36 | Merced (University of California, Merced) 37 | Orange (Chapman University) 38 | Palo Alto (Stanford University) 39 | Pomona (Cal Poly Pomona, WesternU)[9][10][11] and formerly Pomona College 40 | Redlands (University of Redlands) 41 | Riverside (University of California, Riverside, California Baptist University, La Sierra University) 42 | Sacramento (California State University, Sacramento) 43 | University District, San Bernardino (California State University, San Bernardino, American Sports University) 44 | San Diego (University of California, San Diego, San Diego State University) 45 | San Luis Obispo (California Polytechnic State University)[2] 46 | Santa Barbara (Fielding Graduate University, Santa Barbara City College, University of California, Santa Barbara, Westmont College)[2] 47 | Santa Cruz (University of California, Santa Cruz)[2] 48 | Turlock (California State University, Stanislaus) 49 | Westwood, Los Angeles (University of California, Los Angeles)[2] 50 | Whittier (Whittier CollegeRio Hondo College) 51 | Colorado[edit] 52 | Alamosa (Adams State College)[2] 53 | Boulder (University of Colorado at Boulder)[12] 54 | Durango (Fort Lewis College)[2] 55 | Fort Collins (Colorado State University)[13] 56 | Golden (Colorado School of Mines) 57 | Grand Junction (Colorado Mesa University) 58 | Greeley (University of Northern Colorado) 59 | Gunnison (Western State College)[2] 60 | Pueblo, Colorado (Colorado State University-Pueblo) 61 | Connecticut[edit] 62 | Fairfield (Fairfield University, Sacred Heart University) 63 | Middletown (Wesleyan University) 64 | New Britain (Central Connecticut State University) 65 | New Haven (Yale University, University of New Haven, Southern Connecticut State University, Albertus Magnus College, Quinnipiac University)[14] 66 | New London (Connecticut College, US Coast Guard Academy, Mitchell College)[2] 67 | Storrs (University of Connecticut)[2] 68 | Willimantic (Eastern Connecticut State University)[2] 69 | Delaware[edit] 70 | Dover (Delaware State University)[1] 71 | Newark (University of Delaware)[1] 72 | Florida[edit] 73 | Ave Maria (Ave Maria University) 74 | Boca Raton (Florida Atlantic University) 75 | Coral Gables (University of Miami) 76 | DeLand (Stetson University)[5] 77 | Estero (Florida Gulf Coast University) 78 | Gainesville (University of Florida, Santa Fe College) 79 | Orlando (University of Central Florida) 80 | Sarasota (New College of Florida, Ringling College of Art and Design, State College of Florida, Manatee-Sarasota, University of South Florida Sarasota-Manatee) 81 | St. Augustine (Flagler College) 82 | St. Leo (St. Leo University) 83 | Tallahassee (Florida State University, Florida A&M University) 84 | Tampa (University of South Florida) 85 | Georgia[edit] 86 | Albany (Albany State University) 87 | Athens (University of Georgia)[15] 88 | Atlanta (Georgia State University, Georgia Tech, Emory)[2] 89 | Carrollton (University of West Georgia)[2]*Dahlonega (North Georgia College & State University)[2] 90 | Demorest (Piedmont College)[2] 91 | Fort Valley (Fort Valley State University)[2] 92 | Kennesaw (Kennesaw State University) 93 | Milledgeville (Georgia College & State University)[2] 94 | Mount Vernon (Brewton-Parker College)[2] 95 | Oxford (Oxford College) 96 | Rome (Berry College, Shorter University) 97 | Savannah (Armstrong Atlantic State University, Savannah State University, Savannah College of Art and Design) 98 | Statesboro (Georgia Southern University)[5] 99 | Valdosta (Valdosta State University)[2] 100 | Waleska (Reinhardt College)[2] 101 | Young Harris (Young Harris College)[2] 102 | Hawaii[edit] 103 | Manoa (University of Hawaii at Manoa)[2] 104 | Idaho[edit] 105 | Moscow (University of Idaho)[2] 106 | Pocatello (Idaho State University)[2] 107 | Rexburg (BYU-Idaho)[2] 108 | Illinois[edit] 109 | Carbondale (Southern Illinois University Carbondale)[5] 110 | Champaign–Urbana (University of Illinois at Urbana–Champaign)[5] 111 | Charleston (Eastern Illinois University)[2] 112 | DeKalb (Northern Illinois University)[2] 113 | Edwardsville (Southern Illinois University Edwardsville)[2] 114 | Evanston (Northwestern University)[2] 115 | Lebanon (McKendree University)[2] 116 | Macomb (Western Illinois University)[2] 117 | Normal (Illinois State University)[2] 118 | Peoria (Bradley University) 119 | Indiana[edit] 120 | Bloomington (Indiana University Bloomington)[5] 121 | Crawfordsville (Wabash College) 122 | Greencastle (DePauw University)[5] 123 | Hanover (Hanover College)[2] 124 | Marion (Indiana Wesleyan University)[2] 125 | Muncie (Ball State University)[2] 126 | Oakland City (Oakland City University)[2] 127 | Richmond (Earlham College)[2] 128 | South Bend (Notre Dame University[2]) 129 | Terre Haute (Indiana State University, Rose-Hulman Institute of Technology)[2] 130 | Upland (Taylor University)[2] 131 | Valparaiso (Valparaiso University) 132 | West Lafayette (Purdue University)[2] 133 | Iowa[edit] 134 | Ames (Iowa State University)[2] 135 | Cedar Falls (University of Northern Iowa)[2] 136 | Cedar Rapids, Iowa (Coe College ) 137 | Decorah (Luther College)[5] 138 | Fayette (Upper Iowa University)[2] 139 | Grinnell (Grinnell College)[15] 140 | Iowa City (University of Iowa)[15] 141 | Lamoni (Graceland University)[2] 142 | Mount Vernon, (Cornell College) 143 | Orange City (Northwestern College)[2] 144 | Sioux Center (Dordt College)[2] 145 | Storm Lake (Buena Vista University)[2] 146 | Waverly (Wartburg College)[2] 147 | Kansas[edit] 148 | Baldwin City (Baker University)[5] 149 | Emporia (Emporia State University)[2] 150 | Hays (Fort Hays State University)[2] 151 | Lawrence (University of Kansas, Haskell Indian Nations University)[15] 152 | Manhattan (Kansas State University, Manhattan Christian College)[15] 153 | Pittsburg (Pittsburg State University)[2] 154 | Kentucky[edit] 155 | Bowling Green (Western Kentucky University)[2] 156 | Columbia (Lindsey Wilson College)[2] 157 | Georgetown (Georgetown College) 158 | Highland Heights (Northern Kentucky University) 159 | Lexington (University of Kentucky, Transylvania University[5] 160 | Louisville (University of Louisville) 161 | Morehead (Morehead State University)[2] 162 | Murray (Murray State University)[5] 163 | Richmond (Eastern Kentucky University)[2] 164 | Williamsburg (University of the Cumberlands)[2] 165 | Wilmore (Asbury University, Asbury Theological Seminary)[2] 166 | Louisiana[edit] 167 | Baton Rouge (Louisiana State University, Southern University) 168 | Grambling (Grambling State University)[5] 169 | Hammond (Southeastern Louisiana University)[2] 170 | Lafayette (University of Louisiana at Lafayette) 171 | Monroe (University of Louisiana at Monroe)[2] 172 | Natchitoches (Northwestern State University)[2] 173 | Ruston (Louisiana Tech University)[2] 174 | Thibodaux (Nicholls State University)[2] 175 | Maine[edit] 176 | Augusta (University of Maine at Augusta)[2] 177 | Bar Harbor (College of the Atlantic) 178 | Brunswick (Bowdoin College) 179 | Farmington (University of Maine at Farmington)[2] 180 | Fort Kent (University of Maine at Fort Kent) 181 | Gorham (University of Southern Maine)[2] 182 | Lewiston, Maine (Bates College) 183 | Orono (University of Maine)[2] 184 | Waterville (Thomas College, Colby College) 185 | Maryland[edit] 186 | Annapolis (United States Naval Academy, St. John's College) 187 | Chestertown (Washington College)[2] 188 | College Park (University of Maryland, College Park)[16] 189 | Cumberland (Allegany College of Maryland) 190 | Emmitsburg (Mount St. Mary's University)[2] 191 | Frostburg (Frostburg State University)[5] 192 | Princess Anne (University of Maryland Eastern Shore)[5] 193 | Towson (Towson University, Goucher College)[2] 194 | Salisbury (Salisbury University)[2] 195 | Westminster (McDaniel College) 196 | Massachusetts[edit] 197 | Boston (Boston University, Boston College, Boston Conservatory, New England Conservatory, Brandeis University, Northeastern University, UMass Boston, Emmanuel College, Bunker Hill Community College, Roxbury Community College, Suffolk University, Simmons College, among many others) 198 | Bridgewater (Bridgewater State College)[2] 199 | Cambridge (Harvard University, Massachusetts Institute of Technology)(Lesley University, Cambridge College, Longy School of Music)[15] 200 | Chestnut Hill (Boston College) 201 | The Colleges of Worcester Consortium: 202 | Dudley (Nichols College) 203 | North Grafton (Cummings School of Veterinary Medicine at Tufts University) 204 | Paxton (Anna Maria College) 205 | Worcester (Assumption, Becker, Clark University, Holy Cross, Mass. College of Pharmacy & Health Sciences, Quinsigamond Community College, UMass Medical School, Worcester State University, Worcester Polytechnic Institute) 206 | The Five College Region of Western Massachusetts: 207 | Amherst (Amherst College, Hampshire College, University of Massachusetts Amherst)[15] 208 | Northampton (Smith College) 209 | South Hadley (Mount Holyoke College) 210 | Fitchburg (Fitchburg State College) 211 | North Adams (Massachusetts College of Liberal Arts) 212 | Springfield (American International College), (Springfield College), and (Western New England College) 213 | Waltham (Bentley University), (Brandeis University) 214 | Williamstown (Williams College) 215 | Framingham (Framingham State University) 216 | Michigan[edit] 217 | Adrian (Adrian College, Siena Heights University) 218 | Albion (Albion College)[17] 219 | Allendale (Grand Valley State University) 220 | Alma (Alma College) 221 | Ann Arbor (University of Michigan)[1] 222 | Berrien Springs (Andrews University)[2] 223 | Big Rapids (Ferris State University)[2] 224 | East Lansing (Michigan State University)[2] 225 | Flint (Kettering University, University of Michigan-Flint) 226 | Hillsdale (Hillsdale College) 227 | Houghton (Michigan Technological University)[5] 228 | Kalamazoo (Western Michigan University, Kalamazoo College)[2] 229 | Marquette (Northern Michigan University)[2] 230 | Midland (Northwood University) 231 | Mount Pleasant (Central Michigan University)[2] 232 | Olivet (Olivet College)[2] 233 | Saginaw (Saginaw Valley State University) 234 | Sault Ste. Marie (Lake Superior State University) 235 | Spring Arbor (Spring Arbor University)[2] 236 | Ypsilanti (Eastern Michigan University)[2] 237 | Minnesota[edit] 238 | Bemidji (Bemidji State University)[2] 239 | Crookston (University of Minnesota Crookston)[2] 240 | Duluth (University of Minnesota Duluth, Lake Superior College, The College of St. Scholastica, University of Wisconsin–Superior, Duluth Business University 241 | Faribault, South Central College 242 | Mankato (Minnesota State University, Mankato),[2] Bethany Lutheran College 243 | Marshall (Southwest Minnesota State University)[2] 244 | Moorhead (Minnesota State University, Moorhead, Concordia College)[18] 245 | Morris (University of Minnesota Morris)[2] 246 | Northfield (Carleton College, St. Olaf College)[5] 247 | North Mankato, South Central College 248 | St. Cloud (St. Cloud State University, The College of St. Scholastica)[2] 249 | St. Joseph (College of Saint Benedict)[2] 250 | St. Peter (Gustavus Adolphus College)[2] 251 | Winona (Winona State University, St. Mary's University of Minnesota)[19] 252 | Mississippi[edit] 253 | Cleveland (Delta State University)[2] 254 | Hattiesburg (University of Southern Mississippi)[20] 255 | Itta Bena (Mississippi Valley State University)[2] 256 | Oxford (University of Mississippi)[2] 257 | Starkville (Mississippi State University)[2] 258 | Missouri[edit] 259 | Bolivar (Southwest Baptist University)[2] 260 | Cape Girardeau (Southeast Missouri State University)[2] 261 | Columbia (University of Missouri, Stephens College, Columbia College)[20] 262 | Fayette (Central Methodist University)[2] 263 | Fulton (Westminster College and William Woods University). 264 | Kirksville (Truman State University, A. T. Still University)[2] 265 | Maryville (Northwest Missouri State University)[2] 266 | Rolla (Missouri University of Science and Technology)[2] 267 | Warrensburg (University of Central Missouri)[5] 268 | Montana[edit] 269 | Bozeman (Montana State University)[2] 270 | Dillon (University of Montana Western)[2] 271 | Missoula (University of Montana)[5] 272 | Nebraska[edit] 273 | Chadron (Chadron State College)[5] 274 | Crete (Doane College)[2] 275 | Kearney (University of Nebraska at Kearney)[2] 276 | Lincoln (University of Nebraska at Lincoln)[5] 277 | Peru (Peru State College)[2] 278 | Seward (Concordia University)[2] 279 | Wayne (Wayne State College)[2] 280 | Nevada[edit] 281 | Las Vegas (University of Nevada, Las Vegas) 282 | Reno (University of Nevada, Reno) 283 | New Hampshire[edit] 284 | New London, New Hampshire (Colby-Sawyer College) 285 | Durham (University of New Hampshire)[2] 286 | Hanover (Dartmouth College)[5] 287 | Henniker (New England College) 288 | Keene (Keene State College)[2] 289 | Plymouth (Plymouth State University)[2] 290 | Rindge (Franklin Pierce University) 291 | New Jersey[edit] 292 | Ewing (The College of New Jersey), (Rider University) 293 | Jersey City (New Jersey City University), (Saint Peter's University) 294 | Glassboro (Rowan University)[2] 295 | Hoboken (Stevens Institute of Technology) 296 | Madison (Drew University), (Fairleigh Dickinson University), (College of Saint Elizabeth) 297 | Newark (Rutgers University), (New Jersey Institute of Technology), (UMDNJ) 298 | New Brunswick (Rutgers University)[5] 299 | Princeton (Princeton University)[5] 300 | Union (Kean University) 301 | West Long Branch (Monmouth University) 302 | New Mexico[edit] 303 | Hobbs (University of the Southwest)[2] 304 | Las Cruces (New Mexico State University)[2] 305 | Las Vegas (New Mexico Highlands University)[2] 306 | Portales (Eastern New Mexico University)[2] 307 | Silver City (Western New Mexico University)[2] 308 | New York[edit] 309 | Alfred (Alfred University, Alfred State College)[2] 310 | Albany (SUNY Albany, Siena College, Albany College of Pharmacy, Albany Law School, Albany Medical College, College of Saint Rose, Excelsior College, Maria College of Albany, Mildred Elley, Sage College of Albany) 311 | Aurora (Wells College)[21] 312 | Binghamton (Binghamton University)[2] 313 | Brockport (SUNY Brockport)[5] 314 | Buffalo (University at Buffalo) 315 | Canton (St. Lawrence University, SUNY Canton)[2] 316 | Clinton (Hamilton College)[2] 317 | Cobleskill (SUNY Cobleskill)[2] 318 | Delhi (SUNY Delhi)[2] 319 | Fredonia (SUNY Fredonia)[2] 320 | Geneseo (SUNY Geneseo)[2] 321 | Geneva (Hobart and William Smith Colleges) 322 | Hamilton (Colgate University)[2] 323 | Ithaca (Cornell University, Ithaca College)[1] 324 | Morningside Heights, Manhattan (Columbia University, Barnard College, Teachers College, Manhattan School of Music, Jewish Theological Seminary, Union Theological Seminary, Bank Street College of Education) 325 | New Paltz (SUNY New Paltz)[2] 326 | Oneonta (SUNY Oneonta, Hartwick College)[2] 327 | Oswego (SUNY Oswego)[2] 328 | Plattsburgh (SUNY Plattsburgh)[2] 329 | Potsdam (SUNY Potsdam, Clarkson University)[2] 330 | Poughkeepsie (Vassar College, Marist College)[2] 331 | Purchase (Purchase College, Manhattanville College)[2] 332 | Rochester (University of Rochester, Rochester Institute of Technology, Nazareth College, St. John Fisher College, Monroe Community College, Roberts Wesleyan College, SUNY Brockport, SUNY Empire State College)[2] 333 | Saratoga Springs (Skidmore College)[2] 334 | Seneca Falls (New York Chiropractic College) 335 | Stony Brook (Stony Brook University) 336 | Syracuse (Syracuse University, SUNY ESF, Upstate Medical University) 337 | Tivoli (Bard College) 338 | Troy (Rensselaer Polytechnic Institute, Russell Sage College, Hudson Valley Community College) 339 | West Point (United States Military Academy) 340 | North Carolina[edit] 341 | Banner Elk (Lees-McRae College) 342 | Boiling Springs (Gardner-Webb University)[2] 343 | Boone (Appalachian State University)[2] 344 | Buies Creek (Campbell University)[2] 345 | Chapel Hill (University of North Carolina at Chapel Hill)[20] 346 | Cullowhee (Western Carolina University)[2] 347 | Davidson (Davidson College)[5] 348 | Durham (Duke University, North Carolina Central University)[5] 349 | Elon (Elon University)[2] 350 | Greensboro (University of North Carolina at Greensboro, Greensboro College, Guilford College, North Carolina A & T State University, Bennett College) 351 | Greenville (East Carolina University)[2] 352 | Hickory (Lenoir-Rhyne University)[2] 353 | Mars Hill (Mars Hill College)[2] 354 | Mount Olive (Mount Olive College)[2] 355 | Pembroke (University of North Carolina at Pembroke)[2] 356 | Wilmington, North Carolina (University of North Carolina at Wilmington) 357 | Wingate (Wingate University)[2] 358 | Winston-Salem (Wake Forest University, University of North Carolina School of the Arts, Salem College, Winston-Salem State University) 359 | North Dakota[edit] 360 | Fargo (North Dakota State University)[18] 361 | Grand Forks (University of North Dakota)[5] 362 | Ohio[edit] 363 | Ada (Ohio Northern University)[2] 364 | Alliance (University of Mount Union) 365 | Ashland (Ashland University)[2] 366 | Athens (Ohio University)[2] 367 | Berea (Baldwin Wallace College) 368 | Bluffton (Bluffton University)[2] 369 | Bowling Green (Bowling Green State University)[2] 370 | Cedarville (Cedarville University)[2] 371 | Columbus (Ohio State University) 372 | Delaware (Ohio Wesleyan University) 373 | Fairborn (Wright State University) 374 | Findlay (University of Findlay) 375 | Gambier (Kenyon College)[2] 376 | Granville (Denison University)[2] 377 | Hiram (Hiram College)[2] 378 | Kent (Kent State University)[2] 379 | Nelsonville (Hocking College)[2] 380 | New Concord (Muskingum College)[2] 381 | Oberlin (Oberlin College)[5] 382 | Oxford (Miami University)[5] 383 | Rio Grande (University of Rio Grande)[2] 384 | Wilberforce (Wilberforce University, Central State University)[2] 385 | Oklahoma[edit] 386 | Ada (East Central University)[2] 387 | Alva (Northwestern Oklahoma State University)[2] 388 | Durant (Southeastern Oklahoma State University)[2] 389 | Edmond (University of Central Oklahoma, Oklahoma Christian University)[2] 390 | Goodwell (Oklahoma Panhandle State University)[2] 391 | Langston (Langston University)[5] 392 | Norman (University of Oklahoma)[1] 393 | Stillwater (Oklahoma State University)[5] 394 | Tahlequah (Northeastern State University)[2] 395 | Tulsa (The University of Tulsa) 396 | Weatherford (Southwestern Oklahoma State University) 397 | Oregon[edit] 398 | Ashland (Southern Oregon University)[2] 399 | Corvallis (Oregon State University)[20] 400 | Eugene (Lane Community College, Northwest Christian University, University of Oregon)[20] 401 | Forest Grove (Pacific University) 402 | Klamath Falls (Klamath Community College, Oregon Institute of Technology) 403 | La Grande (Eastern Oregon University)[2] 404 | Marylhurst (Marylhurst University) 405 | McMinnville (Linfield College) 406 | Monmouth (Western Oregon University)[2] 407 | Newberg (George Fox University) 408 | Pennsylvania[edit] 409 | Altoona (Penn State Altoona) 410 | Annville (Lebanon Valley College)[2] 411 | Bethlehem (Lehigh University, Moravian College) 412 | Bloomsburg (Bloomsburg University of Pennsylvania)[2] 413 | Bradford (University of Pittsburgh at Bradford) 414 | California (California University of Pennsylvania)[2] 415 | Carlisle (Dickinson College) 416 | Cecil B. Moore, Philadelphia, also known as "Templetown" (Temple University) 417 | Clarion (Clarion University of Pennsylvania)[2] 418 | Collegeville (Ursinus College) 419 | Cresson (Mount Aloysius College)[2] 420 | East Stroudsburg (East Stroudsburg University of Pennsylvania)[2] 421 | Edinboro (Edinboro University of Pennsylvania)[2] 422 | Erie (Gannon University, Mercyhurst College, Penn State Erie) 423 | Gettysburg (Gettysburg College)[2] 424 | Greensburg (Seton Hill University, University of Pittsburgh at Greensburg) 425 | Grove City (Grove City College)[2] 426 | Huntingdon (Juniata College)[2] 427 | Indiana (Indiana University of Pennsylvania)[2] 428 | Johnstown (University of Pittsburgh at Johnstown) 429 | Kutztown (Kutztown University of Pennsylvania)[2] 430 | Lancaster (Franklin & Marshall) 431 | Lewisburg (Bucknell University)[5] 432 | Lock Haven (Lock Haven University of Pennsylvania)[2] 433 | Loretto (St. Francis University)[2] 434 | Mansfield (Mansfield University of Pennsylvania)[2] 435 | Meadville (Allegheny College) 436 | Mont Alto (Penn State Mont Alto) 437 | Millersville (Millersville University of Pennsylvania)[2] 438 | New Wilmington (Westminster College)[2] 439 | North East (Mercyhurst North East) 440 | University City, Philadelphia (Drexel University, University of Pennsylvania, University of the Sciences in Philadelphia) 441 | Oakland, Pittsburgh (Carnegie Mellon University, University of Pittsburgh, Carlow University) 442 | Reading (Albright College, Alvernia University, Penn State Berks) 443 | Selinsgrove (Susquehanna University)[2] 444 | Shippensburg (Shippensburg University of Pennsylvania)[2] 445 | Slippery Rock (Slippery Rock University of Pennsylvania)[2] 446 | State College (Pennsylvania State University)[22] 447 | Villanova (Villanova University) 448 | Waynesburg (Waynesburg University) 449 | West Chester (West Chester University of Pennsylvania) 450 | Wilkes-Barre (King's College, Wilkes University) 451 | Williamsport (Lycoming College, Pennsylvania College of Technology)[2] 452 | Rhode Island[edit] 453 | Kingston (University of Rhode Island)[2] 454 | Providence (Brown University, (University of Rhode Island), Rhode Island School of Design, Johnson and Wales University, Providence College, Community College of Rhode Island, Rhode Island College, and Roger Williams University.) 455 | South Carolina[edit] 456 | Central (Southern Wesleyan University)[2] 457 | Charleston (College of Charleston, The Citadel, MUSC) 458 | Clemson (Clemson University)[2] 459 | Clinton (Presbyterian College) 460 | Columbia (University of South Carolina)[14] 461 | Due West (Erskine College) 462 | Florence (Francis Marion University) 463 | Greenwood (Lander University) 464 | Orangeburg (South Carolina State University, Claflin University)[2] 465 | Rock Hill (Winthrop University) 466 | Spartanburg (Wofford College, Converse College, University of South Carolina Upstate, Spartanburg Methodist College, Edward Via College of Osteopathic Medicine, Spartanburg Community College, Virginia College, Sherman College of Chiropractic) 467 | South Dakota[edit] 468 | Brookings (South Dakota State University)[2] 469 | Madison (Dakota State University) 470 | Spearfish (Black Hills State University) 471 | Vermillion (University of South Dakota)[5] 472 | Tennessee[edit] 473 | Chattanooga (University of Tennessee at Chattanooga) 474 | Collegedale (Southern Adventist University) 475 | Cookeville (Tennessee Technological University)[2] 476 | Harrogate (Lincoln Memorial University)[2] 477 | Henderson (Freed-Hardeman University)[2] 478 | Johnson City (East Tennessee State University) 479 | Knoxville (University of Tennessee) 480 | Martin (University of Tennessee at Martin)[2] 481 | McKenzie (Bethel University)[2] 482 | Memphis (Christian Brothers University, LeMoyne-Owen College, Memphis College of Art, Memphis Theological Seminary, Rhodes College, Southern College of Optometry, Southwest Tennessee Community College, University of Memphis, University of Tennessee Health Science Center, Visible Music College) 483 | Murfreesboro (Middle Tennessee State University)[2] 484 | Nashville (Vanderbilt University, Belmont University, Tennessee State University, Lipscomb University, Fisk University, Aquinas College, Trevecca Nazarene University) 485 | Sewanee (Sewanee: the University of the South)[2] 486 | Texas[edit] 487 | Abilene (Abilene Christian University, Hardin-Simmons University, McMurry University) 488 | Alpine (Sul Ross State University)[2] 489 | Austin (University of Texas at Austin, St. Edwards University, Huston-Tillotson University)[2] 490 | Beaumont (Lamar University) 491 | Canyon (West Texas A&M University)[2] 492 | College Station (Texas A&M University)[5] 493 | Commerce (Texas A&M University–Commerce)[2] 494 | Dallas (Southern Methodist University) 495 | Denton (University of North Texas, Texas Woman's University)[2] 496 | Fort Worth (Texas Christian University, Texas Wesleyan University) 497 | Georgetown (Southwestern University) 498 | Huntsville (Sam Houston State University)[2] 499 | Houston (University of Houston, Texas Southern University, Rice University, Houston Baptist University) 500 | Keene (Southwestern Adventist University)[2] 501 | Kingsville (Texas A&M University–Kingsville)[2] 502 | Lubbock (Texas Tech University, Lubbock Christian University) 503 | Nacogdoches (Stephen F. Austin State University)[2] 504 | Plainview (Wayland Baptist University)[2] 505 | Prairie View (Prairie View A&M University)[2] 506 | San Marcos (Texas State University)[5] 507 | Stephenville (Tarleton State University)[2] 508 | Waco (Baylor University) 509 | Utah[edit] 510 | Cedar City (Southern Utah University)[2] 511 | Logan (Utah State University)[2] 512 | Provo (Brigham Young University)[5] 513 | Orem (Utah Valley University) 514 | Salt Lake City (University of Utah) 515 | Ephraim (Snow College) 516 | Vermont[edit] 517 | Burlington (University of Vermont, Champlain College and Saint Michael's College)[2] 518 | Castleton (Castleton State College)[2] 519 | Johnson (Johnson State College)[2] 520 | Lyndonville (Lyndon State College)[2] 521 | Middlebury (Middlebury College)[2] 522 | Northfield (Norwich University)[2] 523 | Virginia[edit] 524 | Blacksburg (Virginia Polytechnic Institute and State University)[5] 525 | Bridgewater (Bridgewater College)[2] 526 | Charlottesville (University of Virginia)[23] 527 | Farmville (Longwood University, Hampden-Sydney College)[2] 528 | Fredericksburg (University of Mary Washington)[2] 529 | Harrisonburg (James Madison University, Eastern Mennonite University)[2] 530 | Lexington (Washington and Lee University, Virginia Military Institute)[2] 531 | Lynchburg (Lynchburg College, Randolph College, Liberty University, Central Virginia Community College) 532 | Radford (Radford University)[2] 533 | Williamsburg (The College of William & Mary)[2] 534 | Wise (University of Virginia's College at Wise)[2] 535 | Chesapeake (Averett University, DeVry University, Troy University, Tidewater Community College, Strayer University, Everest University, Sentera College of Health Sciences, St Leo University)[2] 536 | Washington[edit] 537 | Bellingham (Western Washington University) 538 | Cheney (Eastern Washington University)[2] 539 | Ellensburg (Central Washington University)[5] 540 | Pullman (Washington State University)[5] 541 | University District, Seattle (University of Washington)[5] 542 | West Virginia[edit] 543 | Athens (Concord University)[2] 544 | Buckhannon (West Virginia Wesleyan College)[2] 545 | Fairmont (Fairmont State University)[2] 546 | Glenville (Glenville State College)[2] 547 | Huntington (Marshall University)[2] 548 | Montgomery (West Virginia University Institute of Technology)[2] 549 | Morgantown (West Virginia University)[2] 550 | Shepherdstown (Shepherd University)[2] 551 | West Liberty (West Liberty University)[2] 552 | Wisconsin[edit] 553 | Appleton (Lawrence University) 554 | Eau Claire (University of Wisconsin–Eau Claire) 555 | Green Bay (University of Wisconsin-Green Bay) 556 | La Crosse (University of Wisconsin–La Crosse, Western Technical College, Viterbo University)[2] 557 | Madison (University of Wisconsin–Madison)[2] 558 | Menomonie (University of Wisconsin–Stout)[2] 559 | Milwaukee (Marquette University, University of Wisconsin–Milwaukee) 560 | Oshkosh (University of Wisconsin–Oshkosh) 561 | Platteville (University of Wisconsin–Platteville)[2] 562 | River Falls (University of Wisconsin–River Falls)[2] 563 | Stevens Point (University of Wisconsin–Stevens Point)[2] 564 | Waukesha (Carroll University) 565 | Whitewater (University of Wisconsin–Whitewater)[2] 566 | Wyoming[edit] 567 | Laramie (University of Wyoming)[5] 568 | --------------------------------------------------------------------------------