├── data └── python_process.jpg ├── notebooks ├── 2011_comparison.png ├── autocorrect │ ├── jaro-example.png │ ├── jaro-algorithm.png │ └── Creating our own auto-correct-Problem Statement.ipynb ├── mpg.csv ├── economics.csv ├── Classes.ipynb └── heights.csv ├── greyatom.yml ├── SECURITY.md ├── LICENSE ├── README.md ├── requirements.txt └── .gitignore /data/python_process.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pratos/python4ds/master/data/python_process.jpg -------------------------------------------------------------------------------- /notebooks/2011_comparison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pratos/python4ds/master/notebooks/2011_comparison.png -------------------------------------------------------------------------------- /notebooks/autocorrect/jaro-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pratos/python4ds/master/notebooks/autocorrect/jaro-example.png -------------------------------------------------------------------------------- /notebooks/autocorrect/jaro-algorithm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pratos/python4ds/master/notebooks/autocorrect/jaro-algorithm.png -------------------------------------------------------------------------------- /greyatom.yml: -------------------------------------------------------------------------------- 1 | name: greyatom 2 | channels: 3 | - defaults 4 | dependencies: 5 | - ca-certificates=2018.03.07=0 6 | - certifi=2018.4.16=py36_0 7 | - libcxx=4.0.1=h579ed51_0 8 | - libcxxabi=4.0.1=hebd6815_0 9 | - libedit=3.1.20170329=hb402a30_2 10 | - libffi=3.2.1=h475c297_4 11 | - ncurses=6.1=h0a44026_0 12 | - openssl=1.0.2o=h1de35cc_1 13 | - pip=10.0.1=py36_0 14 | - python=3.6.6=hc167b69_0 15 | - readline=7.0=hc1231fa_4 16 | - setuptools=40.0.0=py36_0 17 | - sqlite=3.24.0=ha441bb4_0 18 | - tk=8.6.7=h35a86e2_3 19 | - wheel=0.31.1=py36_0 20 | - xz=5.2.4=h1de35cc_4 21 | - zlib=1.2.11=hf3cbc9b_2 22 | prefix: /Users/pratos/miniconda3/envs/greyatom 23 | 24 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | ------------------ | 10 | | 5.1.x | :white_check_mark: | 11 | | 5.0.x | :x: | 12 | | 4.0.x | :white_check_mark: | 13 | | < 4.0 | :x: | 14 | 15 | ## Reporting a Vulnerability 16 | 17 | Use this section to tell people how to report a vulnerability. 18 | 19 | Tell them where to go, how often they can expect to get an update on a 20 | reported vulnerability, what to expect if the vulnerability is accepted or 21 | declined, etc. 22 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Prathamesh 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Python for Data Science 2 | 3 | ## How to setup your Anaconda environment and repository 4 | 5 | - Make sure you have **Anaconda distribution**, if not then visit: [Miniconda Installation](https://conda.io/miniconda.html) to install it (Especially for Windows folks). 6 | - For a faster installation on MacOS and Linux distributions, run command (on terminal): `curl -L mini.conda.ml | bash` (Courtesy: [@mikb0b](https://twitter.com/mikb0b)) 7 | - Use `git` to clone this repository. Run command: `git clone https://github.com/pratos/python4ds.git` 8 | - This would ask you your github credentials, enter them and the repository to should be downloaded instantly to your repo. 9 | - For any queries regarding conda environment, visit: [Managing Conda Environments](https://conda.io/docs/user-guide/tasks/manage-environments.html) 10 | - You'll encounter `greyatom.yml` file. 11 | - In the terminal run command: `conda env create -f greyatom.yml` 12 | - Once done, run: `source activate greyatom`. Your virtual environment is setup successfully! 13 | 14 | **NOTE: If you aren't successful with using git then you can view the snippets directly by finding /notebooks folder and clicking on the notebook that you want. Github renders those notebooks automatically in a readable format. Copy and paste the code in your own notebook or python shell** 15 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | appnope==0.1.0 2 | args==0.1.0 3 | backcall==0.1.0 4 | bleach==3.1.4 5 | certifi==2018.4.16 6 | click==6.7 7 | clint==0.5.1 8 | cloudpickle==0.5.3 9 | cycler==0.10.0 10 | dask==0.18.2 11 | decorator==4.3.0 12 | entrypoints==0.2.3 13 | Flask==1.0.2 14 | Flask-Cors==3.0.4 15 | gevent==1.2.2 16 | greenlet==0.4.13 17 | html5lib==1.0.1 18 | ipykernel==4.8.2 19 | ipython==6.5.0 20 | ipython-genutils==0.2.0 21 | ipywidgets==7.4.0 22 | itsdangerous==0.24 23 | jedi==0.12.1 24 | Jinja2==2.10 25 | jsonschema==2.6.0 26 | jupyter==1.0.0 27 | jupyter-client==5.2.3 28 | jupyter-console==5.2.0 29 | jupyter-core==4.4.0 30 | kiwisolver==1.0.1 31 | MarkupSafe==1.0 32 | marshmallow==2.15.0 33 | matplotlib==2.2.2 34 | mistune==0.8.3 35 | nbconvert==5.3.1 36 | nbformat==4.4.0 37 | networkx==2.1 38 | notebook>=5.7.2 39 | numpy==1.15.0 40 | pandas==0.23.4 41 | pandocfilters==1.4.2 42 | parso==0.3.1 43 | pathlib2==2.3.0 44 | pexpect==4.6.0 45 | pickleshare==0.7.4 46 | Pillow==5.1.0 47 | prometheus-client==0.3.1 48 | prompt-toolkit==1.0.15 49 | ptyprocess==0.6.0 50 | Pygments==2.2.0 51 | pyparsing==2.2.0 52 | python-dateutil==2.7.3 53 | pytz==2018.4 54 | PyWavelets==0.5.2 55 | pyzmq==17.1.2 56 | qtconsole==4.3.1 57 | raven==6.3.0 58 | scikit-image==0.14.0 59 | scikit-learn==0.19.2 60 | scipy==1.1.0 61 | seaborn==0.9.0 62 | Send2Trash==1.5.0 63 | simplegeneric==0.8.1 64 | six==1.11.0 65 | tabulate==0.8.2 66 | terminado==0.8.1 67 | testpath==0.3.1 68 | toolz==0.9.0 69 | tornado==5.1 70 | tqdm==4.24.0 71 | traitlets==4.3.2 72 | wcwidth==0.1.7 73 | webencodings==0.5.1 74 | Werkzeug==0.15.3 75 | widgetsnbextension==3.4.0 76 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | .DS_Store 7 | 8 | # C extensions 9 | *.so 10 | 11 | # Distribution / packaging 12 | .Python 13 | build/ 14 | develop-eggs/ 15 | dist/ 16 | downloads/ 17 | eggs/ 18 | .eggs/ 19 | lib/ 20 | lib64/ 21 | parts/ 22 | sdist/ 23 | var/ 24 | wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | .hypothesis/ 50 | .pytest_cache/ 51 | 52 | # Translations 53 | *.mo 54 | *.pot 55 | 56 | # Django stuff: 57 | *.log 58 | local_settings.py 59 | db.sqlite3 60 | 61 | # Flask stuff: 62 | instance/ 63 | .webassets-cache 64 | 65 | # Scrapy stuff: 66 | .scrapy 67 | 68 | # Sphinx documentation 69 | docs/_build/ 70 | 71 | # PyBuilder 72 | target/ 73 | 74 | # Jupyter Notebook 75 | .ipynb_checkpoints 76 | 77 | # pyenv 78 | .python-version 79 | 80 | # celery beat schedule file 81 | celerybeat-schedule 82 | 83 | # SageMath parsed files 84 | *.sage.py 85 | 86 | # Environments 87 | .env 88 | .venv 89 | env/ 90 | venv/ 91 | ENV/ 92 | env.bak/ 93 | venv.bak/ 94 | 95 | # Spyder project settings 96 | .spyderproject 97 | .spyproject 98 | 99 | # Rope project settings 100 | .ropeproject 101 | 102 | # mkdocs documentation 103 | /site 104 | 105 | # mypy 106 | .mypy_cache/ 107 | -------------------------------------------------------------------------------- /notebooks/mpg.csv: -------------------------------------------------------------------------------- 1 | manufacturer,model,displ,year,cyl,trans,drv,cty,hwy,fl,class 2 | audi,a4,1.8,1999,4,auto(l5),f,18,29,p,compact 3 | audi,a4,1.8,1999,4,manual(m5),f,21,29,p,compact 4 | audi,a4,2,2008,4,manual(m6),f,20,31,p,compact 5 | audi,a4,2,2008,4,auto(av),f,21,30,p,compact 6 | audi,a4,2.8,1999,6,auto(l5),f,16,26,p,compact 7 | audi,a4,2.8,1999,6,manual(m5),f,18,26,p,compact 8 | audi,a4,3.1,2008,6,auto(av),f,18,27,p,compact 9 | audi,a4 quattro,1.8,1999,4,manual(m5),4,18,26,p,compact 10 | audi,a4 quattro,1.8,1999,4,auto(l5),4,16,25,p,compact 11 | audi,a4 quattro,2,2008,4,manual(m6),4,20,28,p,compact 12 | audi,a4 quattro,2,2008,4,auto(s6),4,19,27,p,compact 13 | audi,a4 quattro,2.8,1999,6,auto(l5),4,15,25,p,compact 14 | audi,a4 quattro,2.8,1999,6,manual(m5),4,17,25,p,compact 15 | audi,a4 quattro,3.1,2008,6,auto(s6),4,17,25,p,compact 16 | audi,a4 quattro,3.1,2008,6,manual(m6),4,15,25,p,compact 17 | audi,a6 quattro,2.8,1999,6,auto(l5),4,15,24,p,midsize 18 | audi,a6 quattro,3.1,2008,6,auto(s6),4,17,25,p,midsize 19 | audi,a6 quattro,4.2,2008,8,auto(s6),4,16,23,p,midsize 20 | chevrolet,c1500 suburban 2wd,5.3,2008,8,auto(l4),r,14,20,r,suv 21 | chevrolet,c1500 suburban 2wd,5.3,2008,8,auto(l4),r,11,15,e,suv 22 | chevrolet,c1500 suburban 2wd,5.3,2008,8,auto(l4),r,14,20,r,suv 23 | chevrolet,c1500 suburban 2wd,5.7,1999,8,auto(l4),r,13,17,r,suv 24 | chevrolet,c1500 suburban 2wd,6,2008,8,auto(l4),r,12,17,r,suv 25 | chevrolet,corvette,5.7,1999,8,manual(m6),r,16,26,p,2seater 26 | chevrolet,corvette,5.7,1999,8,auto(l4),r,15,23,p,2seater 27 | chevrolet,corvette,6.2,2008,8,manual(m6),r,16,26,p,2seater 28 | chevrolet,corvette,6.2,2008,8,auto(s6),r,15,25,p,2seater 29 | chevrolet,corvette,7,2008,8,manual(m6),r,15,24,p,2seater 30 | chevrolet,k1500 tahoe 4wd,5.3,2008,8,auto(l4),4,14,19,r,suv 31 | chevrolet,k1500 tahoe 4wd,5.3,2008,8,auto(l4),4,11,14,e,suv 32 | chevrolet,k1500 tahoe 4wd,5.7,1999,8,auto(l4),4,11,15,r,suv 33 | chevrolet,k1500 tahoe 4wd,6.5,1999,8,auto(l4),4,14,17,d,suv 34 | chevrolet,malibu,2.4,1999,4,auto(l4),f,19,27,r,midsize 35 | chevrolet,malibu,2.4,2008,4,auto(l4),f,22,30,r,midsize 36 | chevrolet,malibu,3.1,1999,6,auto(l4),f,18,26,r,midsize 37 | chevrolet,malibu,3.5,2008,6,auto(l4),f,18,29,r,midsize 38 | chevrolet,malibu,3.6,2008,6,auto(s6),f,17,26,r,midsize 39 | dodge,caravan 2wd,2.4,1999,4,auto(l3),f,18,24,r,minivan 40 | dodge,caravan 2wd,3,1999,6,auto(l4),f,17,24,r,minivan 41 | dodge,caravan 2wd,3.3,1999,6,auto(l4),f,16,22,r,minivan 42 | dodge,caravan 2wd,3.3,1999,6,auto(l4),f,16,22,r,minivan 43 | dodge,caravan 2wd,3.3,2008,6,auto(l4),f,17,24,r,minivan 44 | dodge,caravan 2wd,3.3,2008,6,auto(l4),f,17,24,r,minivan 45 | dodge,caravan 2wd,3.3,2008,6,auto(l4),f,11,17,e,minivan 46 | dodge,caravan 2wd,3.8,1999,6,auto(l4),f,15,22,r,minivan 47 | dodge,caravan 2wd,3.8,1999,6,auto(l4),f,15,21,r,minivan 48 | dodge,caravan 2wd,3.8,2008,6,auto(l6),f,16,23,r,minivan 49 | dodge,caravan 2wd,4,2008,6,auto(l6),f,16,23,r,minivan 50 | dodge,dakota pickup 4wd,3.7,2008,6,manual(m6),4,15,19,r,pickup 51 | dodge,dakota pickup 4wd,3.7,2008,6,auto(l4),4,14,18,r,pickup 52 | dodge,dakota pickup 4wd,3.9,1999,6,auto(l4),4,13,17,r,pickup 53 | dodge,dakota pickup 4wd,3.9,1999,6,manual(m5),4,14,17,r,pickup 54 | dodge,dakota pickup 4wd,4.7,2008,8,auto(l5),4,14,19,r,pickup 55 | dodge,dakota pickup 4wd,4.7,2008,8,auto(l5),4,14,19,r,pickup 56 | dodge,dakota pickup 4wd,4.7,2008,8,auto(l5),4,9,12,e,pickup 57 | dodge,dakota pickup 4wd,5.2,1999,8,manual(m5),4,11,17,r,pickup 58 | dodge,dakota pickup 4wd,5.2,1999,8,auto(l4),4,11,15,r,pickup 59 | dodge,durango 4wd,3.9,1999,6,auto(l4),4,13,17,r,suv 60 | dodge,durango 4wd,4.7,2008,8,auto(l5),4,13,17,r,suv 61 | dodge,durango 4wd,4.7,2008,8,auto(l5),4,9,12,e,suv 62 | dodge,durango 4wd,4.7,2008,8,auto(l5),4,13,17,r,suv 63 | dodge,durango 4wd,5.2,1999,8,auto(l4),4,11,16,r,suv 64 | dodge,durango 4wd,5.7,2008,8,auto(l5),4,13,18,r,suv 65 | dodge,durango 4wd,5.9,1999,8,auto(l4),4,11,15,r,suv 66 | dodge,ram 1500 pickup 4wd,4.7,2008,8,manual(m6),4,12,16,r,pickup 67 | dodge,ram 1500 pickup 4wd,4.7,2008,8,auto(l5),4,9,12,e,pickup 68 | dodge,ram 1500 pickup 4wd,4.7,2008,8,auto(l5),4,13,17,r,pickup 69 | dodge,ram 1500 pickup 4wd,4.7,2008,8,auto(l5),4,13,17,r,pickup 70 | dodge,ram 1500 pickup 4wd,4.7,2008,8,manual(m6),4,12,16,r,pickup 71 | dodge,ram 1500 pickup 4wd,4.7,2008,8,manual(m6),4,9,12,e,pickup 72 | dodge,ram 1500 pickup 4wd,5.2,1999,8,auto(l4),4,11,15,r,pickup 73 | dodge,ram 1500 pickup 4wd,5.2,1999,8,manual(m5),4,11,16,r,pickup 74 | dodge,ram 1500 pickup 4wd,5.7,2008,8,auto(l5),4,13,17,r,pickup 75 | dodge,ram 1500 pickup 4wd,5.9,1999,8,auto(l4),4,11,15,r,pickup 76 | ford,expedition 2wd,4.6,1999,8,auto(l4),r,11,17,r,suv 77 | ford,expedition 2wd,5.4,1999,8,auto(l4),r,11,17,r,suv 78 | ford,expedition 2wd,5.4,2008,8,auto(l6),r,12,18,r,suv 79 | ford,explorer 4wd,4,1999,6,auto(l5),4,14,17,r,suv 80 | ford,explorer 4wd,4,1999,6,manual(m5),4,15,19,r,suv 81 | ford,explorer 4wd,4,1999,6,auto(l5),4,14,17,r,suv 82 | ford,explorer 4wd,4,2008,6,auto(l5),4,13,19,r,suv 83 | ford,explorer 4wd,4.6,2008,8,auto(l6),4,13,19,r,suv 84 | ford,explorer 4wd,5,1999,8,auto(l4),4,13,17,r,suv 85 | ford,f150 pickup 4wd,4.2,1999,6,auto(l4),4,14,17,r,pickup 86 | ford,f150 pickup 4wd,4.2,1999,6,manual(m5),4,14,17,r,pickup 87 | ford,f150 pickup 4wd,4.6,1999,8,manual(m5),4,13,16,r,pickup 88 | ford,f150 pickup 4wd,4.6,1999,8,auto(l4),4,13,16,r,pickup 89 | ford,f150 pickup 4wd,4.6,2008,8,auto(l4),4,13,17,r,pickup 90 | ford,f150 pickup 4wd,5.4,1999,8,auto(l4),4,11,15,r,pickup 91 | ford,f150 pickup 4wd,5.4,2008,8,auto(l4),4,13,17,r,pickup 92 | ford,mustang,3.8,1999,6,manual(m5),r,18,26,r,subcompact 93 | ford,mustang,3.8,1999,6,auto(l4),r,18,25,r,subcompact 94 | ford,mustang,4,2008,6,manual(m5),r,17,26,r,subcompact 95 | ford,mustang,4,2008,6,auto(l5),r,16,24,r,subcompact 96 | ford,mustang,4.6,1999,8,auto(l4),r,15,21,r,subcompact 97 | ford,mustang,4.6,1999,8,manual(m5),r,15,22,r,subcompact 98 | ford,mustang,4.6,2008,8,manual(m5),r,15,23,r,subcompact 99 | ford,mustang,4.6,2008,8,auto(l5),r,15,22,r,subcompact 100 | ford,mustang,5.4,2008,8,manual(m6),r,14,20,p,subcompact 101 | honda,civic,1.6,1999,4,manual(m5),f,28,33,r,subcompact 102 | honda,civic,1.6,1999,4,auto(l4),f,24,32,r,subcompact 103 | honda,civic,1.6,1999,4,manual(m5),f,25,32,r,subcompact 104 | honda,civic,1.6,1999,4,manual(m5),f,23,29,p,subcompact 105 | honda,civic,1.6,1999,4,auto(l4),f,24,32,r,subcompact 106 | honda,civic,1.8,2008,4,manual(m5),f,26,34,r,subcompact 107 | honda,civic,1.8,2008,4,auto(l5),f,25,36,r,subcompact 108 | honda,civic,1.8,2008,4,auto(l5),f,24,36,c,subcompact 109 | honda,civic,2,2008,4,manual(m6),f,21,29,p,subcompact 110 | hyundai,sonata,2.4,1999,4,auto(l4),f,18,26,r,midsize 111 | hyundai,sonata,2.4,1999,4,manual(m5),f,18,27,r,midsize 112 | hyundai,sonata,2.4,2008,4,auto(l4),f,21,30,r,midsize 113 | hyundai,sonata,2.4,2008,4,manual(m5),f,21,31,r,midsize 114 | hyundai,sonata,2.5,1999,6,auto(l4),f,18,26,r,midsize 115 | hyundai,sonata,2.5,1999,6,manual(m5),f,18,26,r,midsize 116 | hyundai,sonata,3.3,2008,6,auto(l5),f,19,28,r,midsize 117 | hyundai,tiburon,2,1999,4,auto(l4),f,19,26,r,subcompact 118 | hyundai,tiburon,2,1999,4,manual(m5),f,19,29,r,subcompact 119 | hyundai,tiburon,2,2008,4,manual(m5),f,20,28,r,subcompact 120 | hyundai,tiburon,2,2008,4,auto(l4),f,20,27,r,subcompact 121 | hyundai,tiburon,2.7,2008,6,auto(l4),f,17,24,r,subcompact 122 | hyundai,tiburon,2.7,2008,6,manual(m6),f,16,24,r,subcompact 123 | hyundai,tiburon,2.7,2008,6,manual(m5),f,17,24,r,subcompact 124 | jeep,grand cherokee 4wd,3,2008,6,auto(l5),4,17,22,d,suv 125 | jeep,grand cherokee 4wd,3.7,2008,6,auto(l5),4,15,19,r,suv 126 | jeep,grand cherokee 4wd,4,1999,6,auto(l4),4,15,20,r,suv 127 | jeep,grand cherokee 4wd,4.7,1999,8,auto(l4),4,14,17,r,suv 128 | jeep,grand cherokee 4wd,4.7,2008,8,auto(l5),4,9,12,e,suv 129 | jeep,grand cherokee 4wd,4.7,2008,8,auto(l5),4,14,19,r,suv 130 | jeep,grand cherokee 4wd,5.7,2008,8,auto(l5),4,13,18,r,suv 131 | jeep,grand cherokee 4wd,6.1,2008,8,auto(l5),4,11,14,p,suv 132 | land rover,range rover,4,1999,8,auto(l4),4,11,15,p,suv 133 | land rover,range rover,4.2,2008,8,auto(s6),4,12,18,r,suv 134 | land rover,range rover,4.4,2008,8,auto(s6),4,12,18,r,suv 135 | land rover,range rover,4.6,1999,8,auto(l4),4,11,15,p,suv 136 | lincoln,navigator 2wd,5.4,1999,8,auto(l4),r,11,17,r,suv 137 | lincoln,navigator 2wd,5.4,1999,8,auto(l4),r,11,16,p,suv 138 | lincoln,navigator 2wd,5.4,2008,8,auto(l6),r,12,18,r,suv 139 | mercury,mountaineer 4wd,4,1999,6,auto(l5),4,14,17,r,suv 140 | mercury,mountaineer 4wd,4,2008,6,auto(l5),4,13,19,r,suv 141 | mercury,mountaineer 4wd,4.6,2008,8,auto(l6),4,13,19,r,suv 142 | mercury,mountaineer 4wd,5,1999,8,auto(l4),4,13,17,r,suv 143 | nissan,altima,2.4,1999,4,manual(m5),f,21,29,r,compact 144 | nissan,altima,2.4,1999,4,auto(l4),f,19,27,r,compact 145 | nissan,altima,2.5,2008,4,auto(av),f,23,31,r,midsize 146 | nissan,altima,2.5,2008,4,manual(m6),f,23,32,r,midsize 147 | nissan,altima,3.5,2008,6,manual(m6),f,19,27,p,midsize 148 | nissan,altima,3.5,2008,6,auto(av),f,19,26,p,midsize 149 | nissan,maxima,3,1999,6,auto(l4),f,18,26,r,midsize 150 | nissan,maxima,3,1999,6,manual(m5),f,19,25,r,midsize 151 | nissan,maxima,3.5,2008,6,auto(av),f,19,25,p,midsize 152 | nissan,pathfinder 4wd,3.3,1999,6,auto(l4),4,14,17,r,suv 153 | nissan,pathfinder 4wd,3.3,1999,6,manual(m5),4,15,17,r,suv 154 | nissan,pathfinder 4wd,4,2008,6,auto(l5),4,14,20,p,suv 155 | nissan,pathfinder 4wd,5.6,2008,8,auto(s5),4,12,18,p,suv 156 | pontiac,grand prix,3.1,1999,6,auto(l4),f,18,26,r,midsize 157 | pontiac,grand prix,3.8,1999,6,auto(l4),f,16,26,p,midsize 158 | pontiac,grand prix,3.8,1999,6,auto(l4),f,17,27,r,midsize 159 | pontiac,grand prix,3.8,2008,6,auto(l4),f,18,28,r,midsize 160 | pontiac,grand prix,5.3,2008,8,auto(s4),f,16,25,p,midsize 161 | subaru,forester awd,2.5,1999,4,manual(m5),4,18,25,r,suv 162 | subaru,forester awd,2.5,1999,4,auto(l4),4,18,24,r,suv 163 | subaru,forester awd,2.5,2008,4,manual(m5),4,20,27,r,suv 164 | subaru,forester awd,2.5,2008,4,manual(m5),4,19,25,p,suv 165 | subaru,forester awd,2.5,2008,4,auto(l4),4,20,26,r,suv 166 | subaru,forester awd,2.5,2008,4,auto(l4),4,18,23,p,suv 167 | subaru,impreza awd,2.2,1999,4,auto(l4),4,21,26,r,subcompact 168 | subaru,impreza awd,2.2,1999,4,manual(m5),4,19,26,r,subcompact 169 | subaru,impreza awd,2.5,1999,4,manual(m5),4,19,26,r,subcompact 170 | subaru,impreza awd,2.5,1999,4,auto(l4),4,19,26,r,subcompact 171 | subaru,impreza awd,2.5,2008,4,auto(s4),4,20,25,p,compact 172 | subaru,impreza awd,2.5,2008,4,auto(s4),4,20,27,r,compact 173 | subaru,impreza awd,2.5,2008,4,manual(m5),4,19,25,p,compact 174 | subaru,impreza awd,2.5,2008,4,manual(m5),4,20,27,r,compact 175 | toyota,4runner 4wd,2.7,1999,4,manual(m5),4,15,20,r,suv 176 | toyota,4runner 4wd,2.7,1999,4,auto(l4),4,16,20,r,suv 177 | toyota,4runner 4wd,3.4,1999,6,auto(l4),4,15,19,r,suv 178 | toyota,4runner 4wd,3.4,1999,6,manual(m5),4,15,17,r,suv 179 | toyota,4runner 4wd,4,2008,6,auto(l5),4,16,20,r,suv 180 | toyota,4runner 4wd,4.7,2008,8,auto(l5),4,14,17,r,suv 181 | toyota,camry,2.2,1999,4,manual(m5),f,21,29,r,midsize 182 | toyota,camry,2.2,1999,4,auto(l4),f,21,27,r,midsize 183 | toyota,camry,2.4,2008,4,manual(m5),f,21,31,r,midsize 184 | toyota,camry,2.4,2008,4,auto(l5),f,21,31,r,midsize 185 | toyota,camry,3,1999,6,auto(l4),f,18,26,r,midsize 186 | toyota,camry,3,1999,6,manual(m5),f,18,26,r,midsize 187 | toyota,camry,3.5,2008,6,auto(s6),f,19,28,r,midsize 188 | toyota,camry solara,2.2,1999,4,auto(l4),f,21,27,r,compact 189 | toyota,camry solara,2.2,1999,4,manual(m5),f,21,29,r,compact 190 | toyota,camry solara,2.4,2008,4,manual(m5),f,21,31,r,compact 191 | toyota,camry solara,2.4,2008,4,auto(s5),f,22,31,r,compact 192 | toyota,camry solara,3,1999,6,auto(l4),f,18,26,r,compact 193 | toyota,camry solara,3,1999,6,manual(m5),f,18,26,r,compact 194 | toyota,camry solara,3.3,2008,6,auto(s5),f,18,27,r,compact 195 | toyota,corolla,1.8,1999,4,auto(l3),f,24,30,r,compact 196 | toyota,corolla,1.8,1999,4,auto(l4),f,24,33,r,compact 197 | toyota,corolla,1.8,1999,4,manual(m5),f,26,35,r,compact 198 | toyota,corolla,1.8,2008,4,manual(m5),f,28,37,r,compact 199 | toyota,corolla,1.8,2008,4,auto(l4),f,26,35,r,compact 200 | toyota,land cruiser wagon 4wd,4.7,1999,8,auto(l4),4,11,15,r,suv 201 | toyota,land cruiser wagon 4wd,5.7,2008,8,auto(s6),4,13,18,r,suv 202 | toyota,toyota tacoma 4wd,2.7,1999,4,manual(m5),4,15,20,r,pickup 203 | toyota,toyota tacoma 4wd,2.7,1999,4,auto(l4),4,16,20,r,pickup 204 | toyota,toyota tacoma 4wd,2.7,2008,4,manual(m5),4,17,22,r,pickup 205 | toyota,toyota tacoma 4wd,3.4,1999,6,manual(m5),4,15,17,r,pickup 206 | toyota,toyota tacoma 4wd,3.4,1999,6,auto(l4),4,15,19,r,pickup 207 | toyota,toyota tacoma 4wd,4,2008,6,manual(m6),4,15,18,r,pickup 208 | toyota,toyota tacoma 4wd,4,2008,6,auto(l5),4,16,20,r,pickup 209 | volkswagen,gti,2,1999,4,manual(m5),f,21,29,r,compact 210 | volkswagen,gti,2,1999,4,auto(l4),f,19,26,r,compact 211 | volkswagen,gti,2,2008,4,manual(m6),f,21,29,p,compact 212 | volkswagen,gti,2,2008,4,auto(s6),f,22,29,p,compact 213 | volkswagen,gti,2.8,1999,6,manual(m5),f,17,24,r,compact 214 | volkswagen,jetta,1.9,1999,4,manual(m5),f,33,44,d,compact 215 | volkswagen,jetta,2,1999,4,manual(m5),f,21,29,r,compact 216 | volkswagen,jetta,2,1999,4,auto(l4),f,19,26,r,compact 217 | volkswagen,jetta,2,2008,4,auto(s6),f,22,29,p,compact 218 | volkswagen,jetta,2,2008,4,manual(m6),f,21,29,p,compact 219 | volkswagen,jetta,2.5,2008,5,auto(s6),f,21,29,r,compact 220 | volkswagen,jetta,2.5,2008,5,manual(m5),f,21,29,r,compact 221 | volkswagen,jetta,2.8,1999,6,auto(l4),f,16,23,r,compact 222 | volkswagen,jetta,2.8,1999,6,manual(m5),f,17,24,r,compact 223 | volkswagen,new beetle,1.9,1999,4,manual(m5),f,35,44,d,subcompact 224 | volkswagen,new beetle,1.9,1999,4,auto(l4),f,29,41,d,subcompact 225 | volkswagen,new beetle,2,1999,4,manual(m5),f,21,29,r,subcompact 226 | volkswagen,new beetle,2,1999,4,auto(l4),f,19,26,r,subcompact 227 | volkswagen,new beetle,2.5,2008,5,manual(m5),f,20,28,r,subcompact 228 | volkswagen,new beetle,2.5,2008,5,auto(s6),f,20,29,r,subcompact 229 | volkswagen,passat,1.8,1999,4,manual(m5),f,21,29,p,midsize 230 | volkswagen,passat,1.8,1999,4,auto(l5),f,18,29,p,midsize 231 | volkswagen,passat,2,2008,4,auto(s6),f,19,28,p,midsize 232 | volkswagen,passat,2,2008,4,manual(m6),f,21,29,p,midsize 233 | volkswagen,passat,2.8,1999,6,auto(l5),f,16,26,p,midsize 234 | volkswagen,passat,2.8,1999,6,manual(m5),f,18,26,p,midsize 235 | volkswagen,passat,3.6,2008,6,auto(s6),f,17,26,p,midsize 236 | -------------------------------------------------------------------------------- /notebooks/autocorrect/Creating our own auto-correct-Problem Statement.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Auto Correct in Python\n", 8 | "\n", 9 | "Given a word w, find the most likely correction `c = correct(w)`.\n", 10 | "\n", 11 | "Approach: Try all candidate words `c` that are known words that are near `w`. Choose the most likely one.\n", 12 | "\n", 13 | "Our main data from where we'll be pulling out words is from [this location](http://www.openbookproject.net/courses/python4fun/_static/spellcheck/spell.words)" 14 | ] 15 | }, 16 | { 17 | "cell_type": "markdown", 18 | "metadata": {}, 19 | "source": [ 20 | "## 1. Download the data programmatically or via CLI (choose your poison)\n", 21 | "\n", 22 | "### 1.1. Programmatically" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": null, 28 | "metadata": {}, 29 | "outputs": [], 30 | "source": [] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": null, 35 | "metadata": {}, 36 | "outputs": [], 37 | "source": [] 38 | }, 39 | { 40 | "cell_type": "markdown", 41 | "metadata": {}, 42 | "source": [ 43 | "### 1.2. Via CLI" 44 | ] 45 | }, 46 | { 47 | "cell_type": "code", 48 | "execution_count": null, 49 | "metadata": {}, 50 | "outputs": [], 51 | "source": [] 52 | }, 53 | { 54 | "cell_type": "markdown", 55 | "metadata": {}, 56 | "source": [ 57 | "***\n", 58 | "\n", 59 | "## 2. Look around to read the file\n", 60 | "\n", 61 | "### Choose the option that you are familiar with covered during the course" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": null, 67 | "metadata": {}, 68 | "outputs": [], 69 | "source": [] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": null, 74 | "metadata": {}, 75 | "outputs": [], 76 | "source": [] 77 | }, 78 | { 79 | "cell_type": "markdown", 80 | "metadata": {}, 81 | "source": [ 82 | "***\n", 83 | "## 3. Make sure that the words don't contain any special characters. If you find any try to clean up the files" 84 | ] 85 | }, 86 | { 87 | "cell_type": "code", 88 | "execution_count": null, 89 | "metadata": {}, 90 | "outputs": [], 91 | "source": [] 92 | }, 93 | { 94 | "cell_type": "code", 95 | "execution_count": null, 96 | "metadata": {}, 97 | "outputs": [], 98 | "source": [] 99 | }, 100 | { 101 | "cell_type": "markdown", 102 | "metadata": {}, 103 | "source": [ 104 | "***\n", 105 | "## 4. What does the theory say?\n", 106 | "\n", 107 | "### 4.1 Generally, if we want to check if the word in contention is correct or not we need to calculate the edit distance:\n", 108 | "\n", 109 | "> Edit distance is a way of quantifying how dissimilar two strings (e.g., words) are to one another by counting the minimum number of operations required to transform one string into the other. \n", 110 | "\n", 111 | "> Edit distances find applications in natural language processing, where automatic spelling correction can determine candidate corrections for a misspelled word by selecting words from a dictionary that have a low distance to the word in question" 112 | ] 113 | }, 114 | { 115 | "cell_type": "markdown", 116 | "metadata": {}, 117 | "source": [ 118 | "### 4.2 Most commonly taught one is Levenstein's distance:\n", 119 | "\n", 120 | "#### Example: \n", 121 | "\n", 122 | "The Levenshtein distance between \"kitten\" and \"sitting\" is 3. A minimal edit script that transforms the former into the latter is:\n", 123 | "\n", 124 | "![](https://olimex.files.wordpress.com/2014/11/74bc0fa858652701ff47bfd125c83eeb.png)" 125 | ] 126 | }, 127 | { 128 | "cell_type": "markdown", 129 | "metadata": {}, 130 | "source": [ 131 | "### 4.3. But we won't be going that way, instead we'll be generating encodings first\n", 132 | "\n", 133 | "In generic terms what are encodings:\n", 134 | "\n", 135 | "![](https://www.w3.org/International/articles/definitions-characters/index-data/encodings.png)" 136 | ] 137 | }, 138 | { 139 | "cell_type": "markdown", 140 | "metadata": {}, 141 | "source": [ 142 | "## The encoding algorithm that you'll have to write is: _Soundex Encoding_ (albeit it's variant)" 143 | ] 144 | }, 145 | { 146 | "cell_type": "markdown", 147 | "metadata": {}, 148 | "source": [ 149 | "***\n", 150 | "## 5. Implementing Soundex Algorithm\n", 151 | "\n", 152 | "What are the steps in Soundex Algorithm\n", 153 | "\n", 154 | "- Retain the first letter of the name\n", 155 | "- Replace consonants with digits as follows (after the first letter):\n", 156 | " - a, e, i, o, u, y, h, w = 0\n", 157 | " - b, f, p, v = 1\n", 158 | " - c, g, j, k, q, s, x, z = 2\n", 159 | " - d, t = 3\n", 160 | " - l = 4\n", 161 | " - m, n = 5\n", 162 | " - r = 6\n", 163 | "- If two or more letters with the same number are adjacent in the original name (before step 1), only retain the first letter\n", 164 | "- (__We won't be coding this part__) If you have too few letters in your word that you can't assign three numbers, append with zeros until there are three numbers. If you have more than 3 letters, just retain the first 3 numbers." 165 | ] 166 | }, 167 | { 168 | "cell_type": "markdown", 169 | "metadata": {}, 170 | "source": [ 171 | "### 5.1. Retaining the first letter of the name\n", 172 | "\n", 173 | "Example: Suppose your word is `comittee`. You need to retain: `c` from `comittee` separately. The next steps will be run on `omittee`" 174 | ] 175 | }, 176 | { 177 | "cell_type": "code", 178 | "execution_count": null, 179 | "metadata": {}, 180 | "outputs": [], 181 | "source": [] 182 | }, 183 | { 184 | "cell_type": "code", 185 | "execution_count": null, 186 | "metadata": {}, 187 | "outputs": [], 188 | "source": [] 189 | }, 190 | { 191 | "cell_type": "markdown", 192 | "metadata": {}, 193 | "source": [ 194 | "### 5.2. Replace consonants with digits (__refer above__):\n", 195 | "\n", 196 | "Example: `omittee` would be eventually --> `0503300`" 197 | ] 198 | }, 199 | { 200 | "cell_type": "code", 201 | "execution_count": null, 202 | "metadata": {}, 203 | "outputs": [], 204 | "source": [] 205 | }, 206 | { 207 | "cell_type": "code", 208 | "execution_count": null, 209 | "metadata": {}, 210 | "outputs": [], 211 | "source": [] 212 | }, 213 | { 214 | "cell_type": "markdown", 215 | "metadata": {}, 216 | "source": [ 217 | "### 5.3. If two or more letters with the same number are adjacent in the original name (before step 1), only retain the first letter\n", 218 | "\n", 219 | "Example: `0503300` would be --> `05030`, i.e. the adjacent `33` would be just replaced by `3`. Similar with `00`" 220 | ] 221 | }, 222 | { 223 | "cell_type": "code", 224 | "execution_count": null, 225 | "metadata": {}, 226 | "outputs": [], 227 | "source": [] 228 | }, 229 | { 230 | "cell_type": "code", 231 | "execution_count": null, 232 | "metadata": {}, 233 | "outputs": [], 234 | "source": [] 235 | }, 236 | { 237 | "cell_type": "markdown", 238 | "metadata": {}, 239 | "source": [ 240 | "***\n", 241 | "## 6. Above are the building blocks for the algorithm. Now create a function `generate_soundex_encodings`\n", 242 | "\n", 243 | "#### `generate_soundex_encodings` would take in a list of the words (remember `words` from task two?) and return: `soundex_encodings`" 244 | ] 245 | }, 246 | { 247 | "cell_type": "code", 248 | "execution_count": null, 249 | "metadata": {}, 250 | "outputs": [], 251 | "source": [] 252 | }, 253 | { 254 | "cell_type": "code", 255 | "execution_count": null, 256 | "metadata": {}, 257 | "outputs": [], 258 | "source": [] 259 | }, 260 | { 261 | "cell_type": "code", 262 | "execution_count": null, 263 | "metadata": {}, 264 | "outputs": [], 265 | "source": [] 266 | }, 267 | { 268 | "cell_type": "markdown", 269 | "metadata": {}, 270 | "source": [ 271 | "***\n", 272 | "## 7. Now create another function to calculate the encodings for the entire list `words` against this and save this as a `pickle` file. Read about pickle [here](https://stackoverflow.com/questions/4530611/saving-and-loading-objects-and-using-pickle)" 273 | ] 274 | }, 275 | { 276 | "cell_type": "code", 277 | "execution_count": null, 278 | "metadata": {}, 279 | "outputs": [], 280 | "source": [] 281 | }, 282 | { 283 | "cell_type": "code", 284 | "execution_count": null, 285 | "metadata": {}, 286 | "outputs": [], 287 | "source": [] 288 | }, 289 | { 290 | "cell_type": "markdown", 291 | "metadata": {}, 292 | "source": [ 293 | "***\n", 294 | "## 8. Once we have the soundex encodings generated, next task is to find out a way to calculate distances comparing the encoding of the incoming word and the already generated soundex encodings\n", 295 | "\n", 296 | "### 8.1. Below are the steps for the Jaro distance algorithm\n", 297 | "\n", 298 | "> The Jaro distance is a measure of similarity between two strings.\n", 299 | "\n", 300 | "> The higher the Jaro distance for two strings is, the more similar the strings are.\n", 301 | "\n", 302 | "> The score is normalized such that 0 equates to no similarity and 1 is an exact match.\n", 303 | "\n", 304 | "![](jaro-algorithm.png)\n", 305 | "\n", 306 | "### 8.2. Example:\n", 307 | "\n", 308 | "![](jaro-example.png)" 309 | ] 310 | }, 311 | { 312 | "cell_type": "markdown", 313 | "metadata": {}, 314 | "source": [ 315 | "### 8.3 Find the number of matching characters" 316 | ] 317 | }, 318 | { 319 | "cell_type": "code", 320 | "execution_count": null, 321 | "metadata": {}, 322 | "outputs": [], 323 | "source": [] 324 | }, 325 | { 326 | "cell_type": "code", 327 | "execution_count": null, 328 | "metadata": {}, 329 | "outputs": [], 330 | "source": [] 331 | }, 332 | { 333 | "cell_type": "code", 334 | "execution_count": null, 335 | "metadata": {}, 336 | "outputs": [], 337 | "source": [] 338 | }, 339 | { 340 | "cell_type": "markdown", 341 | "metadata": {}, 342 | "source": [ 343 | "### 8.4 Find the lengths of the two given strings" 344 | ] 345 | }, 346 | { 347 | "cell_type": "code", 348 | "execution_count": null, 349 | "metadata": {}, 350 | "outputs": [], 351 | "source": [] 352 | }, 353 | { 354 | "cell_type": "code", 355 | "execution_count": null, 356 | "metadata": {}, 357 | "outputs": [], 358 | "source": [] 359 | }, 360 | { 361 | "cell_type": "code", 362 | "execution_count": null, 363 | "metadata": {}, 364 | "outputs": [], 365 | "source": [] 366 | }, 367 | { 368 | "cell_type": "markdown", 369 | "metadata": {}, 370 | "source": [ 371 | "### 8.5 Find `t` i.e. half number of transpositions\n", 372 | "\n", 373 | "`t` is the number of characters that are shared but are in different positions, divided by `2`. \n", 374 | "\n", 375 | "For __MARTHA__ and __MARHTA__ , 2 characters (H and T) are shared but are in different positions so `t = 2/2 = 1`.\n", 376 | "\n", 377 | "But for __DWAYNE__ and __DUANE__ it is `t = 0/2 = 0`." 378 | ] 379 | }, 380 | { 381 | "cell_type": "code", 382 | "execution_count": null, 383 | "metadata": {}, 384 | "outputs": [], 385 | "source": [] 386 | }, 387 | { 388 | "cell_type": "code", 389 | "execution_count": null, 390 | "metadata": {}, 391 | "outputs": [], 392 | "source": [] 393 | }, 394 | { 395 | "cell_type": "code", 396 | "execution_count": null, 397 | "metadata": {}, 398 | "outputs": [], 399 | "source": [] 400 | }, 401 | { 402 | "cell_type": "markdown", 403 | "metadata": {}, 404 | "source": [ 405 | "### 8.6 Write a function, `get_jaro_distance()` to calculate Jaro distance for both the strings " 406 | ] 407 | }, 408 | { 409 | "cell_type": "code", 410 | "execution_count": null, 411 | "metadata": {}, 412 | "outputs": [], 413 | "source": [] 414 | }, 415 | { 416 | "cell_type": "code", 417 | "execution_count": null, 418 | "metadata": {}, 419 | "outputs": [], 420 | "source": [] 421 | }, 422 | { 423 | "cell_type": "code", 424 | "execution_count": null, 425 | "metadata": {}, 426 | "outputs": [], 427 | "source": [] 428 | }, 429 | { 430 | "cell_type": "code", 431 | "execution_count": null, 432 | "metadata": {}, 433 | "outputs": [], 434 | "source": [] 435 | }, 436 | { 437 | "cell_type": "markdown", 438 | "metadata": {}, 439 | "source": [ 440 | "***\n", 441 | "\n", 442 | "## 9. Next step will be to write a function: `autocorrect()` that will take in: Soundex encodings for all the words and the `target_word` that needs to be autocorrected\n", 443 | "\n", 444 | "Example: autocorrect(words_encodings, target_word=\"comittee\") --> output would be top five choices of words for which the jaro distance (__see above__) is highest\n", 445 | "\n", 446 | "Output expected: `['committee', 'commit', 'comet', 'committed', 'com']` (__NOTE: Not a representative example__)" 447 | ] 448 | }, 449 | { 450 | "cell_type": "code", 451 | "execution_count": null, 452 | "metadata": {}, 453 | "outputs": [], 454 | "source": [] 455 | }, 456 | { 457 | "cell_type": "code", 458 | "execution_count": null, 459 | "metadata": {}, 460 | "outputs": [], 461 | "source": [] 462 | }, 463 | { 464 | "cell_type": "code", 465 | "execution_count": null, 466 | "metadata": {}, 467 | "outputs": [], 468 | "source": [] 469 | }, 470 | { 471 | "cell_type": "markdown", 472 | "metadata": {}, 473 | "source": [ 474 | "### Finally, you done folks with your own auto-correct" 475 | ] 476 | } 477 | ], 478 | "metadata": { 479 | "kernelspec": { 480 | "display_name": "Python 3", 481 | "language": "python", 482 | "name": "python3" 483 | }, 484 | "language_info": { 485 | "codemirror_mode": { 486 | "name": "ipython", 487 | "version": 3 488 | }, 489 | "file_extension": ".py", 490 | "mimetype": "text/x-python", 491 | "name": "python", 492 | "nbconvert_exporter": "python", 493 | "pygments_lexer": "ipython3", 494 | "version": "3.6.7" 495 | } 496 | }, 497 | "nbformat": 4, 498 | "nbformat_minor": 2 499 | } 500 | -------------------------------------------------------------------------------- /notebooks/economics.csv: -------------------------------------------------------------------------------- 1 | date,pce,pop,psavert,uempmed,unemploy 2 | 1967-07-01,507.4,198712,12.5,4.5,2944 3 | 1967-08-01,510.5,198911,12.5,4.7,2945 4 | 1967-09-01,516.3,199113,11.7,4.6,2958 5 | 1967-10-01,512.9,199311,12.5,4.9,3143 6 | 1967-11-01,518.1,199498,12.5,4.7,3066 7 | 1967-12-01,525.8,199657,12.1,4.8,3018 8 | 1968-01-01,531.5,199808,11.7,5.1,2878 9 | 1968-02-01,534.2,199920,12.2,4.5,3001 10 | 1968-03-01,544.9,200056,11.6,4.1,2877 11 | 1968-04-01,544.6,200208,12.2,4.6,2709 12 | 1968-05-01,550.4,200361,12,4.4,2740 13 | 1968-06-01,556.8,200536,11.6,4.4,2938 14 | 1968-07-01,563.8,200706,10.6,4.5,2883 15 | 1968-08-01,567.6,200898,10.4,4.2,2768 16 | 1968-09-01,568.8,201095,10.4,4.6,2686 17 | 1968-10-01,572.3,201290,10.6,4.8,2689 18 | 1968-11-01,577.4,201466,10.4,4.4,2715 19 | 1968-12-01,577.2,201621,10.9,4.4,2685 20 | 1969-01-01,584.2,201760,10,4.4,2718 21 | 1969-02-01,589.5,201881,9.4,4.9,2692 22 | 1969-03-01,589.7,202023,9.9,4,2712 23 | 1969-04-01,594.7,202161,9.5,4,2758 24 | 1969-05-01,601.1,202331,10,4.2,2713 25 | 1969-06-01,601.7,202507,10.9,4.4,2816 26 | 1969-07-01,603.5,202677,11.7,4.4,2868 27 | 1969-08-01,610.8,202877,11.5,4.4,2856 28 | 1969-09-01,614.1,203090,11.5,4.7,3040 29 | 1969-10-01,619.4,203302,11.3,4.5,3049 30 | 1969-11-01,621.4,203500,11.5,4.8,2856 31 | 1969-12-01,623.7,203675,11.7,4.6,2884 32 | 1970-01-01,629.6,203849,11.7,4.6,3201 33 | 1970-02-01,634.9,204008,11.6,4.5,3453 34 | 1970-03-01,633.2,204156,12.3,4.6,3635 35 | 1970-04-01,637,204401,13.3,4.1,3797 36 | 1970-05-01,643.4,204607,12.3,4.7,3919 37 | 1970-06-01,647.2,204830,11.7,4.9,4071 38 | 1970-07-01,649.5,205052,13.2,5.1,4175 39 | 1970-08-01,653.9,205295,13.1,5.4,4256 40 | 1970-09-01,660.1,205540,12.9,5.2,4456 41 | 1970-10-01,659.3,205788,13,5.2,4591 42 | 1970-11-01,657.6,206024,13.3,5.6,4898 43 | 1970-12-01,666.6,206238,12.9,5.9,5076 44 | 1971-01-01,677.2,206466,13.1,6.2,4986 45 | 1971-02-01,680.4,206668,13.1,6.3,4903 46 | 1971-03-01,683,206855,13.3,6.4,4987 47 | 1971-04-01,689.8,207065,13,6.5,4959 48 | 1971-05-01,692.2,207260,13.4,6.7,4996 49 | 1971-06-01,700.8,207462,14.4,5.7,4949 50 | 1971-07-01,699.9,207661,13.6,6.2,5035 51 | 1971-08-01,706,207881,13.6,6.4,5134 52 | 1971-09-01,714.1,208114,12.9,5.8,5042 53 | 1971-10-01,716.9,208345,13,6.5,4954 54 | 1971-11-01,722.1,208555,12.8,6.4,5161 55 | 1971-12-01,729.6,208740,12.9,6.2,5154 56 | 1972-01-01,732.6,208917,12.4,6.2,5019 57 | 1972-02-01,737.3,209061,12.6,6.6,4928 58 | 1972-03-01,750.4,209212,11.5,6.6,5038 59 | 1972-04-01,753.8,209386,11.3,6.7,4959 60 | 1972-05-01,759.2,209545,11.5,6.6,4922 61 | 1972-06-01,762.9,209725,11.4,5.4,4923 62 | 1972-07-01,771.2,209896,11.4,6.1,4913 63 | 1972-08-01,777.7,210075,11.8,6,4939 64 | 1972-09-01,782.5,210278,12,5.6,4849 65 | 1972-10-01,796.3,210479,12.7,5.7,4875 66 | 1972-11-01,801.8,210656,13.4,5.7,4602 67 | 1972-12-01,807.5,210821,13.4,6.1,4543 68 | 1973-01-01,817.9,210985,12.1,5.7,4326 69 | 1973-02-01,827.2,211120,12.2,5.2,4452 70 | 1973-03-01,834.2,211254,12.4,5.5,4394 71 | 1973-04-01,837.2,211420,12.8,5,4459 72 | 1973-05-01,843.1,211577,12.8,4.9,4329 73 | 1973-06-01,845.8,211746,13.2,5,4363 74 | 1973-07-01,855.7,211909,12.8,5.2,4305 75 | 1973-08-01,854.9,212092,13.6,4.9,4305 76 | 1973-09-01,870.9,212289,12.8,5.4,4350 77 | 1973-10-01,869.8,212475,14,5.5,4144 78 | 1973-11-01,878.6,212634,14,5.1,4396 79 | 1973-12-01,878.4,212785,14.4,4.7,4489 80 | 1974-01-01,886.4,212932,14,5,4644 81 | 1974-02-01,891.6,213074,13.8,5.1,4731 82 | 1974-03-01,903.3,213211,13,4.8,4634 83 | 1974-04-01,912.7,213361,12.7,5,4618 84 | 1974-05-01,924.3,213513,12.3,4.6,4705 85 | 1974-06-01,929.9,213686,12.5,5.3,4927 86 | 1974-07-01,939.8,213854,12.7,5.7,5063 87 | 1974-08-01,956.6,214042,11.6,5,5022 88 | 1974-09-01,956.8,214246,12.3,5.3,5437 89 | 1974-10-01,961,214451,13,5.5,5523 90 | 1974-11-01,958,214625,13.4,5.2,6140 91 | 1974-12-01,963.6,214782,13.6,5.7,6636 92 | 1975-01-01,977.4,214931,12.8,6.3,7501 93 | 1975-02-01,991.3,215065,12.1,7.1,7520 94 | 1975-03-01,992.6,215198,12.3,7.2,7978 95 | 1975-04-01,997.2,215353,13.9,8.7,8210 96 | 1975-05-01,1021.2,215523,17,9.4,8433 97 | 1975-06-01,1029.1,215768,13.9,8.8,8220 98 | 1975-07-01,1042.2,215973,12.3,8.6,8127 99 | 1975-08-01,1049.4,216195,12.6,9.2,7928 100 | 1975-09-01,1057.2,216393,12.6,9.2,7923 101 | 1975-10-01,1063.2,216587,13,8.6,7897 102 | 1975-11-01,1078,216771,12.3,9.5,7794 103 | 1975-12-01,1094.4,216931,11.5,9,7744 104 | 1976-01-01,1109.5,217095,11.3,9,7534 105 | 1976-02-01,1110.1,217249,11.9,8.2,7326 106 | 1976-03-01,1117.3,217381,11.8,8.7,7230 107 | 1976-04-01,1127.8,217528,11.2,8.2,7330 108 | 1976-05-01,1125.1,217685,11.8,8.3,7053 109 | 1976-06-01,1142.9,217861,10.9,7.8,7322 110 | 1976-07-01,1152.1,218035,11.2,7.7,7490 111 | 1976-08-01,1160.5,218233,11.2,7.9,7518 112 | 1976-09-01,1171.4,218440,10.8,7.8,7380 113 | 1976-10-01,1179.5,218644,10.6,7.7,7430 114 | 1976-11-01,1191.7,218834,10.9,8.4,7620 115 | 1976-12-01,1214.1,219006,9.9,8,7545 116 | 1977-01-01,1217.4,219179,9.8,7.5,7280 117 | 1977-02-01,1233.7,219344,8.5,7.2,7443 118 | 1977-03-01,1240.7,219504,9.8,7.2,7307 119 | 1977-04-01,1249.7,219684,9.9,7.3,7059 120 | 1977-05-01,1259.6,219859,9.8,7.9,6911 121 | 1977-06-01,1266.3,220046,10.2,6.2,7134 122 | 1977-07-01,1283.2,220239,10.1,7.1,6829 123 | 1977-08-01,1288.5,220458,10.5,7,6925 124 | 1977-09-01,1297.4,220688,10.7,6.7,6751 125 | 1977-10-01,1314.3,220904,10.7,6.9,6763 126 | 1977-11-01,1330,221109,10.8,7,6815 127 | 1977-12-01,1339.3,221303,11,6.8,6386 128 | 1978-01-01,1333,221477,11.4,6.5,6489 129 | 1978-02-01,1358.9,221629,10.7,6.7,6318 130 | 1978-03-01,1381.4,221792,10.5,6.2,6337 131 | 1978-04-01,1400.2,221991,10.3,6.1,6180 132 | 1978-05-01,1415.9,222176,9.8,5.7,6127 133 | 1978-06-01,1429.8,222379,9.5,6,6028 134 | 1978-07-01,1430.8,222585,10.3,5.8,6309 135 | 1978-08-01,1451,222805,9.9,5.8,6080 136 | 1978-09-01,1456.9,223053,10,5.6,6125 137 | 1978-10-01,1471,223271,10.2,5.9,5947 138 | 1978-11-01,1484.7,223477,10,5.5,6077 139 | 1978-12-01,1500.5,223670,10,5.6,6228 140 | 1979-01-01,1506.3,223865,10.6,5.9,6109 141 | 1979-02-01,1521.6,224053,10.5,5.9,6173 142 | 1979-03-01,1535,224235,10.7,5.9,6109 143 | 1979-04-01,1542.3,224438,10.4,5.4,6069 144 | 1979-05-01,1562.7,224632,9.8,5.6,5840 145 | 1979-06-01,1579.6,224843,9.3,5.6,5959 146 | 1979-07-01,1590.1,225055,10,5.9,5996 147 | 1979-08-01,1619.7,225295,9.2,4.8,6320 148 | 1979-09-01,1638.1,225547,8.9,5.5,6190 149 | 1979-10-01,1646,225801,9.3,5.5,6296 150 | 1979-11-01,1661.7,226027,9.4,5.3,6238 151 | 1979-12-01,1670.7,226243,9.8,5.7,6325 152 | 1980-01-01,1701.6,226451,9.6,5.3,6683 153 | 1980-02-01,1705.6,226656,9.8,5.8,6702 154 | 1980-03-01,1712.4,226849,9.8,6,6729 155 | 1980-04-01,1699.5,227061,10.5,5.8,7358 156 | 1980-05-01,1704.3,227251,10.6,5.7,7984 157 | 1980-06-01,1723,227522,10.4,6.4,8098 158 | 1980-07-01,1751.2,227726,10.5,7,8363 159 | 1980-08-01,1767.7,227953,10.6,7.5,8281 160 | 1980-09-01,1784.1,228186,11.1,7.7,8021 161 | 1980-10-01,1820.4,228417,11,7.5,8088 162 | 1980-11-01,1830.2,228612,11.5,7.7,8023 163 | 1980-12-01,1855.5,228779,11.2,7.5,7718 164 | 1981-01-01,1874.7,228937,10.5,7.4,8071 165 | 1981-02-01,1889.4,229071,10.4,7.1,8051 166 | 1981-03-01,1908.1,229224,10.3,7.1,7982 167 | 1981-04-01,1909.1,229403,10.3,7.4,7869 168 | 1981-05-01,1918.2,229575,10.4,6.9,8174 169 | 1981-06-01,1938.5,229761,10.2,6.6,8098 170 | 1981-07-01,1945.7,229966,11.7,7.1,7863 171 | 1981-08-01,1969.8,230187,11.4,7.2,8036 172 | 1981-09-01,1968.2,230412,11.9,6.8,8230 173 | 1981-10-01,1966.2,230641,12.5,6.8,8646 174 | 1981-11-01,1972.4,230822,12.7,6.9,9029 175 | 1981-12-01,1989.9,230989,12,6.9,9267 176 | 1982-01-01,1997.4,231157,12.2,7.1,9397 177 | 1982-02-01,2021.4,231313,11.6,7.5,9705 178 | 1982-03-01,2024.4,231470,11.7,7.7,9895 179 | 1982-04-01,2027.2,231645,12.4,8.1,10244 180 | 1982-05-01,2045.9,231809,11.7,8.5,10335 181 | 1982-06-01,2050.2,231992,11.6,9.5,10538 182 | 1982-07-01,2075.1,232188,12,8.5,10849 183 | 1982-08-01,2083.7,232392,11.9,8.7,10881 184 | 1982-09-01,2108.9,232599,11.1,9.5,11217 185 | 1982-10-01,2130.7,232816,10.7,9.7,11529 186 | 1982-11-01,2154.7,232993,10.3,10,11938 187 | 1982-12-01,2167.4,233160,10.3,10.2,12051 188 | 1983-01-01,2180.1,233322,10.4,11.1,11534 189 | 1983-02-01,2183.1,233473,10.5,9.8,11545 190 | 1983-03-01,2208.6,233613,10,10.4,11408 191 | 1983-04-01,2231.8,233781,9.6,10.9,11268 192 | 1983-05-01,2251,233922,9.4,12.3,11154 193 | 1983-06-01,2280.8,234118,8.5,11.3,11246 194 | 1983-07-01,2309,234307,9,10.1,10548 195 | 1983-08-01,2324.8,234501,8.7,9.3,10623 196 | 1983-09-01,2339.1,234701,9,9.3,10282 197 | 1983-10-01,2361.8,234907,9.1,9.4,9887 198 | 1983-11-01,2370.4,235078,9.7,9.3,9499 199 | 1983-12-01,2397.9,235235,9.5,8.7,9331 200 | 1984-01-01,2423.8,235385,9.4,9.1,9008 201 | 1984-02-01,2408.1,235527,11.1,8.3,8791 202 | 1984-03-01,2436.4,235675,10.9,8.3,8746 203 | 1984-04-01,2462.6,235839,10.9,8.2,8762 204 | 1984-05-01,2479.8,235993,10.5,9.1,8456 205 | 1984-06-01,2501.2,236160,10.5,7.5,8226 206 | 1984-07-01,2500.5,236348,11,7.5,8537 207 | 1984-08-01,2518.4,236549,11.2,7.3,8519 208 | 1984-09-01,2540.3,236760,11.2,7.6,8367 209 | 1984-10-01,2538.2,236976,11.2,7.2,8381 210 | 1984-11-01,2578.6,237159,10.3,7.2,8198 211 | 1984-12-01,2590,237316,10.6,7.3,8358 212 | 1985-01-01,2626.3,237468,9.7,6.8,8423 213 | 1985-02-01,2648.6,237602,8.5,7.1,8321 214 | 1985-03-01,2656.8,237732,8.1,7.1,8339 215 | 1985-04-01,2668.4,237900,9.4,6.9,8395 216 | 1985-05-01,2705.9,238074,10.5,6.9,8302 217 | 1985-06-01,2699.3,238270,9,6.6,8460 218 | 1985-07-01,2725.9,238466,8.5,6.9,8513 219 | 1985-08-01,2762.7,238679,7.5,7.1,8196 220 | 1985-09-01,2805.6,238898,6.7,6.9,8248 221 | 1985-10-01,2767.1,239113,8.5,7.1,8298 222 | 1985-11-01,2782.7,239307,8.4,7,8128 223 | 1985-12-01,2822.8,239477,8,6.8,8138 224 | 1986-01-01,2838.3,239638,8,6.7,7795 225 | 1986-02-01,2831.2,239788,8.7,6.9,8402 226 | 1986-03-01,2834.7,239928,9.3,6.8,8383 227 | 1986-04-01,2846.5,240094,9.1,6.7,8364 228 | 1986-05-01,2869,240271,8.6,6.8,8439 229 | 1986-06-01,2873.5,240459,8.8,7,8508 230 | 1986-07-01,2893.4,240651,8.7,6.9,8319 231 | 1986-08-01,2911.1,240854,8.4,7.1,8135 232 | 1986-09-01,2984.6,241068,6.6,7.4,8310 233 | 1986-10-01,2945.9,241274,7.8,7,8243 234 | 1986-11-01,2941.7,241467,8.2,7.1,8159 235 | 1986-12-01,3010.8,241620,6.4,7.1,7883 236 | 1987-01-01,2949.9,241784,9.1,6.9,7892 237 | 1987-02-01,3016.5,241930,7.9,6.6,7865 238 | 1987-03-01,3028.4,242079,7.9,6.6,7862 239 | 1987-04-01,3054.1,242252,3.8,7.1,7542 240 | 1987-05-01,3063.9,242423,7.5,6.6,7574 241 | 1987-06-01,3088.4,242608,7,6.5,7398 242 | 1987-07-01,3110.7,242804,6.8,6.5,7268 243 | 1987-08-01,3147,243012,6.5,6.4,7261 244 | 1987-09-01,3142.9,243223,7,6,7102 245 | 1987-10-01,3151.1,243446,7.6,6.3,7227 246 | 1987-11-01,3160.9,243639,7.9,6.2,7035 247 | 1987-12-01,3190.9,243809,8,6,6936 248 | 1988-01-01,3230.7,243981,7.5,6.2,6953 249 | 1988-02-01,3238.5,244131,7.9,6.3,6929 250 | 1988-03-01,3277.8,244279,7.5,6.4,6876 251 | 1988-04-01,3280.4,244445,8.1,5.9,6601 252 | 1988-05-01,3311,244610,7.7,5.9,6779 253 | 1988-06-01,3335.6,244806,7.8,5.8,6546 254 | 1988-07-01,3359.3,245021,7.9,6.1,6605 255 | 1988-08-01,3384.3,245240,7.8,5.9,6843 256 | 1988-09-01,3391.4,245464,8.2,5.7,6604 257 | 1988-10-01,3430.4,245693,8,5.6,6568 258 | 1988-11-01,3447,245884,7.7,5.7,6537 259 | 1988-12-01,3476.3,246056,7.7,5.9,6518 260 | 1989-01-01,3499.9,246224,8,5.6,6682 261 | 1989-02-01,3503.9,246378,8.4,5.4,6359 262 | 1989-03-01,3514.5,246530,8.9,5.4,6205 263 | 1989-04-01,3558.6,246721,7.9,5.4,6468 264 | 1989-05-01,3567.5,246906,7.6,5.3,6375 265 | 1989-06-01,3582.4,247114,7.6,5.4,6577 266 | 1989-07-01,3601.7,247342,7.7,5.6,6495 267 | 1989-08-01,3636.8,247573,7.1,5,6511 268 | 1989-09-01,3638.1,247816,7.5,4.9,6590 269 | 1989-10-01,3650,248067,7.9,4.9,6630 270 | 1989-11-01,3659.7,248281,8,4.8,6725 271 | 1989-12-01,3700.7,248479,7.2,4.9,6667 272 | 1990-01-01,3747.2,248659,7.4,5.1,6752 273 | 1990-02-01,3744.8,248827,8.1,5.3,6651 274 | 1990-03-01,3771.5,249012,7.8,5.1,6598 275 | 1990-04-01,3786.7,249306,8.2,4.8,6797 276 | 1990-05-01,3792.5,249565,8,5.2,6742 277 | 1990-06-01,3821.3,249849,7.9,5.2,6590 278 | 1990-07-01,3838.5,250132,8,5.4,6922 279 | 1990-08-01,3865,250439,7.5,5.4,7188 280 | 1990-09-01,3886.7,250751,7.5,5.6,7368 281 | 1990-10-01,3887.1,251057,7.3,5.8,7459 282 | 1990-11-01,3888.4,251346,7.4,5.7,7764 283 | 1990-12-01,3877.8,251626,8.2,5.9,7901 284 | 1991-01-01,3857.6,251889,8.7,6,8015 285 | 1991-02-01,3883.3,252135,8.3,6.2,8265 286 | 1991-03-01,3929.7,252372,7.4,6.7,8586 287 | 1991-04-01,3923.9,252643,8,6.6,8439 288 | 1991-05-01,3950,252913,7.7,6.4,8736 289 | 1991-06-01,3957.1,253207,8.2,6.9,8692 290 | 1991-07-01,3982.4,253493,7.6,7,8586 291 | 1991-08-01,3985.4,253807,7.9,7.3,8666 292 | 1991-09-01,4001.2,254126,8.1,6.8,8722 293 | 1991-10-01,3992.9,254435,8.6,7.2,8842 294 | 1991-11-01,4020.6,254718,8.4,7.5,8931 295 | 1991-12-01,4037.7,254964,9.1,7.8,9198 296 | 1992-01-01,4101.9,255214,8.8,8.1,9283 297 | 1992-02-01,4116.8,255448,9.2,8.2,9454 298 | 1992-03-01,4134.3,255703,9.2,8.3,9460 299 | 1992-04-01,4149,255992,9.4,8.5,9415 300 | 1992-05-01,4176.1,256285,9.4,8.8,9744 301 | 1992-06-01,4195,256589,9.5,8.7,10040 302 | 1992-07-01,4223,256894,9.1,8.6,9850 303 | 1992-08-01,4239.3,257232,9.2,8.8,9787 304 | 1992-09-01,4273.9,257548,8.2,8.6,9781 305 | 1992-10-01,4303.5,257861,7.4,9,9398 306 | 1992-11-01,4319.5,258147,7.3,9,9565 307 | 1992-12-01,4355.6,258413,9.9,9.3,9557 308 | 1993-01-01,4359.7,258679,8.3,8.6,9325 309 | 1993-02-01,4374.3,258919,8.4,8.5,9183 310 | 1993-03-01,4371.4,259152,8.3,8.5,9056 311 | 1993-04-01,4412.4,259414,8.2,8.4,9110 312 | 1993-05-01,4441.3,259680,7.7,8.1,9149 313 | 1993-06-01,4458.8,259963,7.2,8.3,9121 314 | 1993-07-01,4487.7,260255,7,8.2,8930 315 | 1993-08-01,4499.9,260566,7.1,8.2,8763 316 | 1993-09-01,4530.5,260867,6.3,8.3,8714 317 | 1993-10-01,4552,261163,5.6,8,8750 318 | 1993-11-01,4573.4,261425,5.6,8.3,8542 319 | 1993-12-01,4590.7,261674,8.4,8.3,8477 320 | 1994-01-01,4604.8,261919,6.4,8.6,8630 321 | 1994-02-01,4652.3,262123,5.9,9.2,8583 322 | 1994-03-01,4665.4,262352,6.2,9.3,8470 323 | 1994-04-01,4690.7,262631,5.8,9.1,8331 324 | 1994-05-01,4689.2,262877,7.1,9.2,7915 325 | 1994-06-01,4728.8,263152,6.3,9.3,7927 326 | 1994-07-01,4740.8,263436,6.4,9,7946 327 | 1994-08-01,4783,263724,5.9,8.9,7933 328 | 1994-09-01,4795.5,264017,6.2,9.2,7734 329 | 1994-10-01,4833.3,264301,6.5,10,7632 330 | 1994-11-01,4846,264559,6.4,9,7375 331 | 1994-12-01,4862.3,264804,6.5,8.7,7230 332 | 1995-01-01,4871.9,265044,6.9,8,7375 333 | 1995-02-01,4871.7,265270,7.3,8.1,7187 334 | 1995-03-01,4906.5,265495,7,8.3,7153 335 | 1995-04-01,4911.5,265755,6.3,8.3,7645 336 | 1995-05-01,4954.4,265998,6.5,9.1,7430 337 | 1995-06-01,4999,266270,6.1,7.9,7427 338 | 1995-07-01,4991.8,266557,6.4,8.5,7527 339 | 1995-08-01,5027.1,266843,6.1,8.3,7484 340 | 1995-09-01,5042.5,267152,6.1,7.9,7478 341 | 1995-10-01,5035.9,267456,6.5,8.2,7328 342 | 1995-11-01,5077.8,267715,6,8,7426 343 | 1995-12-01,5120.1,267943,5.5,8.3,7423 344 | 1996-01-01,5108.9,268151,6.1,8.3,7491 345 | 1996-02-01,5156.1,268364,6.1,7.8,7313 346 | 1996-03-01,5196.4,268595,6,8.3,7318 347 | 1996-04-01,5231.6,268853,5,8.6,7415 348 | 1996-05-01,5247.2,269108,6.1,8.6,7423 349 | 1996-06-01,5253.7,269386,6.5,8.3,7095 350 | 1996-07-01,5275.8,269667,6.1,8.3,7337 351 | 1996-08-01,5299,269976,5.9,8.4,6882 352 | 1996-09-01,5320,270284,6,8.5,6979 353 | 1996-10-01,5351.5,270581,5.8,8.3,7031 354 | 1996-11-01,5375,270878,5.8,7.7,7236 355 | 1996-12-01,5401.7,271125,5.7,7.8,7253 356 | 1997-01-01,5434.9,271360,5.6,7.8,7158 357 | 1997-02-01,5457.7,271585,5.7,8.1,7102 358 | 1997-03-01,5477.6,271821,5.8,7.9,7000 359 | 1997-04-01,5482.8,272083,5.9,8.3,6873 360 | 1997-05-01,5484.3,272342,6.2,8,6655 361 | 1997-06-01,5518.2,272622,6,8,6799 362 | 1997-07-01,5573,272912,5.5,8.3,6655 363 | 1997-08-01,5611.8,273237,5.4,7.8,6608 364 | 1997-09-01,5625.6,273553,5.6,8.2,6656 365 | 1997-10-01,5661.2,273852,5.6,7.7,6454 366 | 1997-11-01,5685.2,274126,5.8,7.6,6308 367 | 1997-12-01,5716.4,274372,5.8,7.5,6476 368 | 1998-01-01,5714.4,274626,6.7,7.4,6368 369 | 1998-02-01,5748.4,274838,6.8,7,6306 370 | 1998-03-01,5775,275047,6.9,6.8,6422 371 | 1998-04-01,5812.9,275304,6.6,6.7,5941 372 | 1998-05-01,5863.3,275564,6.3,6,6047 373 | 1998-06-01,5897.2,275836,6.2,6.9,6212 374 | 1998-07-01,5915.6,276115,6.3,6.7,6259 375 | 1998-08-01,5951,276418,6.2,6.8,6179 376 | 1998-09-01,5991.8,276714,5.8,6.7,6300 377 | 1998-10-01,6025.8,277003,5.6,5.8,6280 378 | 1998-11-01,6042.7,277277,5.7,6.6,6100 379 | 1998-12-01,6098.2,277526,5.2,6.8,6032 380 | 1999-01-01,6099.1,277790,5.7,6.9,5976 381 | 1999-02-01,6128.2,277992,5.6,6.8,6111 382 | 1999-03-01,6159.7,278198,5.3,6.8,5783 383 | 1999-04-01,6223.6,278451,4.5,6.2,6004 384 | 1999-05-01,6253.4,278717,4.3,6.5,5796 385 | 1999-06-01,6281.9,279001,4.2,6.3,5951 386 | 1999-07-01,6309.5,279295,4.1,5.8,6025 387 | 1999-08-01,6354.8,279602,4,6.5,5838 388 | 1999-09-01,6407.4,279903,3.5,6,5915 389 | 1999-10-01,6431.2,280203,3.9,6.1,5778 390 | 1999-11-01,6467.2,280471,4.1,6.2,5716 391 | 1999-12-01,6568.2,280716,3.7,5.8,5653 392 | 2000-01-01,6564.7,280976,4.7,5.8,5708 393 | 2000-02-01,6648.7,281190,4.2,6.1,5858 394 | 2000-03-01,6714.8,281409,3.9,6,5733 395 | 2000-04-01,6701,281653,4.4,6.1,5481 396 | 2000-05-01,6737.2,281877,4.2,5.8,5758 397 | 2000-06-01,6773.6,282126,4.2,5.7,5651 398 | 2000-07-01,6793.7,282385,4.6,6,5747 399 | 2000-08-01,6828.7,282653,4.6,6.3,5853 400 | 2000-09-01,6913.1,282932,3.8,5.2,5625 401 | 2000-10-01,6919.6,283201,4,6.1,5534 402 | 2000-11-01,6934.5,283453,3.8,6.1,5639 403 | 2000-12-01,6979.1,283696,3.5,6,5634 404 | 2001-01-01,7009.8,283920,4,5.8,6023 405 | 2001-02-01,7029.3,284137,4.1,6.1,6089 406 | 2001-03-01,7022.1,284350,4.5,6.6,6141 407 | 2001-04-01,7036.2,284581,4.3,5.9,6271 408 | 2001-05-01,7083.1,284810,3.7,6.3,6226 409 | 2001-06-01,7097.1,285062,3.7,6,6484 410 | 2001-07-01,7109.2,285309,5,6.8,6583 411 | 2001-08-01,7146.1,285570,6.1,6.9,7042 412 | 2001-09-01,7054.8,285843,6.3,7.2,7142 413 | 2001-10-01,7250.2,286098,2.7,7.3,7694 414 | 2001-11-01,7209.6,286341,3.4,7.7,8003 415 | 2001-12-01,7190,286570,3.8,8.2,8258 416 | 2002-01-01,7217.7,286788,5.6,8.4,8182 417 | 2002-02-01,7259.7,286994,5.3,8.3,8215 418 | 2002-03-01,7276.7,287190,5.3,8.4,8304 419 | 2002-04-01,7345.6,287397,5.1,8.9,8599 420 | 2002-05-01,7321.8,287623,5.6,9.5,8399 421 | 2002-06-01,7366.1,287864,5.4,11,8393 422 | 2002-07-01,7424.2,288105,4.6,8.9,8390 423 | 2002-08-01,7449,288360,4.4,9,8304 424 | 2002-09-01,7426.1,288618,4.9,9.5,8251 425 | 2002-10-01,7469.3,288870,4.7,9.6,8307 426 | 2002-11-01,7499.8,289106,4.7,9.3,8520 427 | 2002-12-01,7552.6,289313,4.5,9.6,8640 428 | 2003-01-01,7579.5,289518,4.5,9.6,8520 429 | 2003-02-01,7573.6,289714,4.7,9.5,8618 430 | 2003-03-01,7627.5,289911,4.6,9.7,8588 431 | 2003-04-01,7661.7,290125,4.6,10.2,8842 432 | 2003-05-01,7669.2,290346,5.1,9.9,8957 433 | 2003-06-01,7722.9,290584,4.9,11.5,9266 434 | 2003-07-01,7783.8,290820,5.5,10.3,9011 435 | 2003-08-01,7878.9,291072,5.3,10.1,8896 436 | 2003-09-01,7874,291321,4.5,10.2,8921 437 | 2003-10-01,7890.6,291574,4.6,10.4,8732 438 | 2003-11-01,7950.4,291807,4.7,10.3,8576 439 | 2003-12-01,7974.3,292008,4.8,10.4,8317 440 | 2004-01-01,8037.3,292192,4.5,10.6,8370 441 | 2004-02-01,8072.1,292368,4.5,10.2,8167 442 | 2004-03-01,8121,292561,4.5,10.2,8491 443 | 2004-04-01,8141.6,292779,4.7,9.5,8170 444 | 2004-05-01,8212.9,292997,4.7,9.9,8212 445 | 2004-06-01,8204.6,293223,5,11,8286 446 | 2004-07-01,8270.7,293463,4.5,8.9,8136 447 | 2004-08-01,8294.4,293719,4.6,9.2,7990 448 | 2004-09-01,8373,293971,3.9,9.6,7927 449 | 2004-10-01,8417.9,294230,3.8,9.5,8061 450 | 2004-11-01,8458.4,294466,3.4,9.7,7932 451 | 2004-12-01,8516.5,294694,6.3,9.5,7934 452 | 2005-01-01,8521.2,294914,2.9,9.4,7784 453 | 2005-02-01,8575.7,295105,2.7,9.2,7980 454 | 2005-03-01,8622.5,295287,2.7,9.3,7737 455 | 2005-04-01,8715.9,295490,2.1,9,7672 456 | 2005-05-01,8680.6,295704,3,9.1,7651 457 | 2005-06-01,8775.3,295936,2.2,9,7524 458 | 2005-07-01,8867.9,296186,1.9,8.8,7406 459 | 2005-08-01,8872.6,296440,2.4,9.2,7345 460 | 2005-09-01,8923.6,296707,2.3,8.4,7553 461 | 2005-10-01,8959.6,296972,2.6,8.6,7453 462 | 2005-11-01,8987.7,297207,2.7,8.5,7566 463 | 2005-12-01,9026.8,297431,2.8,8.7,7279 464 | 2006-01-01,9100.1,297647,3.7,8.6,7064 465 | 2006-02-01,9134.7,297854,3.8,9.1,7184 466 | 2006-03-01,9168.1,298060,3.7,8.7,7072 467 | 2006-04-01,9223.3,298281,3.4,8.4,7120 468 | 2006-05-01,9254.1,298496,3.2,8.5,6980 469 | 2006-06-01,9283.8,298739,3.4,7.3,7001 470 | 2006-07-01,9360.4,298996,2.9,8,7175 471 | 2006-08-01,9368.6,299263,3,8.4,7091 472 | 2006-09-01,9393.9,299554,3,8,6847 473 | 2006-10-01,9413.3,299835,3.1,7.9,6727 474 | 2006-11-01,9431.2,300094,3.2,8.3,6872 475 | 2006-12-01,9516.5,300340,3,7.5,6762 476 | 2007-01-01,9553.1,300574,3,8.3,7116 477 | 2007-02-01,9590.8,300802,3.3,8.5,6927 478 | 2007-03-01,9631.6,301021,3.6,9.1,6731 479 | 2007-04-01,9670.6,301254,3.2,8.6,6850 480 | 2007-05-01,9708.9,301483,3,8.2,6766 481 | 2007-06-01,9723.3,301739,2.8,7.7,6979 482 | 2007-07-01,9759.6,302004,2.8,8.7,7149 483 | 2007-08-01,9800.6,302267,2.6,8.8,7067 484 | 2007-09-01,9837.5,302546,2.8,8.7,7170 485 | 2007-10-01,9853.9,302807,2.8,8.4,7237 486 | 2007-11-01,9928.6,303054,2.5,8.6,7240 487 | 2007-12-01,9947.6,303287,3,8.4,7645 488 | 2008-01-01,9963.2,303506,3.4,9,7685 489 | 2008-02-01,9955.7,303711,3.9,8.7,7497 490 | 2008-03-01,10004.2,303907,4,8.7,7822 491 | 2008-04-01,10044.6,304117,3.5,9.4,7637 492 | 2008-05-01,10093.3,304323,7.9,7.9,8395 493 | 2008-06-01,10149.4,304556,5.6,9,8575 494 | 2008-07-01,10151.1,304798,4.4,9.7,8937 495 | 2008-08-01,10140.3,305045,3.7,9.7,9438 496 | 2008-09-01,10083.2,305309,4.4,10.2,9494 497 | 2008-10-01,9983.3,305554,5.4,10.4,10074 498 | 2008-11-01,9851.2,305786,6.3,9.8,10538 499 | 2008-12-01,9744.2,306004,6.5,10.5,11286 500 | 2009-01-01,9792.1,306208,6.5,10.7,12058 501 | 2009-02-01,9775.7,306402,5.9,11.7,12898 502 | 2009-03-01,9742.9,306588,6.1,12.3,13426 503 | 2009-04-01,9741.9,306787,6.7,13.1,13853 504 | 2009-05-01,9759.7,306984,8.1,14.2,14499 505 | 2009-06-01,9807.6,307206,6.7,17.2,14707 506 | 2009-07-01,9835.2,307439,6,16,14601 507 | 2009-08-01,9961.9,307685,4.9,16.3,14814 508 | 2009-09-01,9875.4,307946,5.9,17.8,15009 509 | 2009-10-01,9924.6,308189,5.4,18.9,15352 510 | 2009-11-01,9946.1,308418,5.7,19.8,15219 511 | 2009-12-01,10000.6,308633,5.7,20.1,15098 512 | 2010-01-01,10003.4,308833,5.6,20,15046 513 | 2010-02-01,10034.7,309027,5.2,19.9,15113 514 | 2010-03-01,10095.5,309212,5,20.4,15202 515 | 2010-04-01,10106.9,309191,5.6,22.1,15325 516 | 2010-05-01,10140.2,309376,6,22.3,14849 517 | 2010-06-01,10165.9,309562,5.9,25.2,14474 518 | 2010-07-01,10184.3,309767,5.9,22.3,14512 519 | 2010-08-01,10247.1,309989,5.8,21,14648 520 | 2010-09-01,10268.9,310218,5.6,20.3,14579 521 | 2010-10-01,10343.7,310451,5.4,21.2,14516 522 | 2010-11-01,10399.8,310657,5.3,21,15081 523 | 2010-12-01,10436.1,310853,5.9,21.9,14348 524 | 2011-01-01,10474.7,311042,6.2,21.6,14046 525 | 2011-02-01,10512.4,311205,6.4,21.1,13828 526 | 2011-03-01,10583.5,311367,6,21.5,13728 527 | 2011-04-01,10624.6,311548,5.9,20.9,13956 528 | 2011-05-01,10653.1,311729,5.9,21.6,13853 529 | 2011-06-01,10676.4,311923,6.1,22.3,13958 530 | 2011-07-01,10727.1,312139,6.3,22,13756 531 | 2011-08-01,10745.6,312355,6.2,22.4,13806 532 | 2011-09-01,10790.6,312587,5.7,22,13929 533 | 2011-10-01,10827.6,312810,5.5,20.5,13599 534 | 2011-11-01,10828.7,313003,5.6,20.9,13309 535 | 2011-12-01,10827.3,313191,6.4,20.5,13071 536 | 2012-01-01,10905.5,313373,6.6,21,12812 537 | 2012-02-01,10979.2,313537,6.7,19.8,12828 538 | 2012-03-01,10994.3,313705,6.9,19.2,12696 539 | 2012-04-01,11030.2,313881,7,19.1,12636 540 | 2012-05-01,11029,314052,7,19.9,12668 541 | 2012-06-01,11032.5,314247,7.1,20.1,12688 542 | 2012-07-01,11074.8,314449,6.6,17.5,12657 543 | 2012-08-01,11104.8,314673,6.4,18.5,12449 544 | 2012-09-01,11179.6,314909,6.5,18.8,12106 545 | 2012-10-01,11199.9,315129,7.1,19.7,12141 546 | 2012-11-01,11222.8,315341,8.2,18.5,12026 547 | 2012-12-01,11245.2,315532,10.5,17.6,12272 548 | 2013-01-01,11303.2,315701,4.5,16.2,12497 549 | 2013-02-01,11371.4,315869,4.7,17.5,11967 550 | 2013-03-01,11378.8,316041,4.9,17.7,11653 551 | 2013-04-01,11373.3,316220,5.1,17.1,11735 552 | 2013-05-01,11407.1,316395,5.2,17,11671 553 | 2013-06-01,11462.4,316594,5.3,16.6,11736 554 | 2013-07-01,11484.7,316799,5.1,16.3,11357 555 | 2013-08-01,11511.6,317019,5.3,16.8,11241 556 | 2013-09-01,11559.6,317253,5.2,16.5,11251 557 | 2013-10-01,11602.1,317470,4.7,16.1,11161 558 | 2013-11-01,11671.5,317679,4.3,17,10814 559 | 2013-12-01,11686.3,317867,4.1,17,10376 560 | 2014-01-01,11663.9,318032,4.9,15.9,10280 561 | 2014-02-01,11714.4,318200,5,16.2,10387 562 | 2014-03-01,11807.1,318373,4.8,15.9,10384 563 | 2014-04-01,11825.2,318552,5,15.6,9696 564 | 2014-05-01,11864.3,318728,5.1,14.5,9761 565 | 2014-06-01,11922.6,318927,5.1,13.2,9453 566 | 2014-07-01,11944.4,319133,5.1,13.5,9648 567 | 2014-08-01,12017,319354,4.7,13.3,9568 568 | 2014-09-01,12044.6,319588,4.6,13.3,9237 569 | 2014-10-01,12096.4,319804,4.6,13.5,8983 570 | 2014-11-01,12142.2,320013,4.5,12.8,9071 571 | 2014-12-01,12122,320201,5,12.6,8688 572 | 2015-01-01,12080.8,320367,5.5,13.4,8979 573 | 2015-02-01,12095.9,320534,5.7,13.1,8705 574 | 2015-03-01,12161.5,320707,5.2,12.2,8575 575 | 2015-04-01,12158.9,320887,5.6,11.7,8549 576 | -------------------------------------------------------------------------------- /notebooks/Classes.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "## Objects\n", 8 | "\n", 9 | "- Objects in Python are everywhere\n", 10 | "- Consider a string: `Hello World`" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 1, 16 | "metadata": {}, 17 | "outputs": [], 18 | "source": [ 19 | "string1 = \"Hello World\"" 20 | ] 21 | }, 22 | { 23 | "cell_type": "code", 24 | "execution_count": 2, 25 | "metadata": {}, 26 | "outputs": [ 27 | { 28 | "data": { 29 | "text/plain": [ 30 | "['__add__',\n", 31 | " '__class__',\n", 32 | " '__contains__',\n", 33 | " '__delattr__',\n", 34 | " '__dir__',\n", 35 | " '__doc__',\n", 36 | " '__eq__',\n", 37 | " '__format__',\n", 38 | " '__ge__',\n", 39 | " '__getattribute__',\n", 40 | " '__getitem__',\n", 41 | " '__getnewargs__',\n", 42 | " '__gt__',\n", 43 | " '__hash__',\n", 44 | " '__init__',\n", 45 | " '__init_subclass__',\n", 46 | " '__iter__',\n", 47 | " '__le__',\n", 48 | " '__len__',\n", 49 | " '__lt__',\n", 50 | " '__mod__',\n", 51 | " '__mul__',\n", 52 | " '__ne__',\n", 53 | " '__new__',\n", 54 | " '__reduce__',\n", 55 | " '__reduce_ex__',\n", 56 | " '__repr__',\n", 57 | " '__rmod__',\n", 58 | " '__rmul__',\n", 59 | " '__setattr__',\n", 60 | " '__sizeof__',\n", 61 | " '__str__',\n", 62 | " '__subclasshook__',\n", 63 | " 'capitalize',\n", 64 | " 'casefold',\n", 65 | " 'center',\n", 66 | " 'count',\n", 67 | " 'encode',\n", 68 | " 'endswith',\n", 69 | " 'expandtabs',\n", 70 | " 'find',\n", 71 | " 'format',\n", 72 | " 'format_map',\n", 73 | " 'index',\n", 74 | " 'isalnum',\n", 75 | " 'isalpha',\n", 76 | " 'isdecimal',\n", 77 | " 'isdigit',\n", 78 | " 'isidentifier',\n", 79 | " 'islower',\n", 80 | " 'isnumeric',\n", 81 | " 'isprintable',\n", 82 | " 'isspace',\n", 83 | " 'istitle',\n", 84 | " 'isupper',\n", 85 | " 'join',\n", 86 | " 'ljust',\n", 87 | " 'lower',\n", 88 | " 'lstrip',\n", 89 | " 'maketrans',\n", 90 | " 'partition',\n", 91 | " 'replace',\n", 92 | " 'rfind',\n", 93 | " 'rindex',\n", 94 | " 'rjust',\n", 95 | " 'rpartition',\n", 96 | " 'rsplit',\n", 97 | " 'rstrip',\n", 98 | " 'split',\n", 99 | " 'splitlines',\n", 100 | " 'startswith',\n", 101 | " 'strip',\n", 102 | " 'swapcase',\n", 103 | " 'title',\n", 104 | " 'translate',\n", 105 | " 'upper',\n", 106 | " 'zfill']" 107 | ] 108 | }, 109 | "execution_count": 2, 110 | "metadata": {}, 111 | "output_type": "execute_result" 112 | } 113 | ], 114 | "source": [ 115 | "dir(string1)" 116 | ] 117 | }, 118 | { 119 | "cell_type": "markdown", 120 | "metadata": {}, 121 | "source": [ 122 | "## What are Classes?\n", 123 | "\n", 124 | "- Can be a __collection__ of functions that fall under a similar task structure (Performing Machine Learning steps on a dataset)\n", 125 | "- Can be a set of operations (collection of functions) that help us to manipulate an object (e.g. functions that are available with string)\n", 126 | "- it can be a Data Model for a Database (e.g. Django ORM Models)" 127 | ] 128 | }, 129 | { 130 | "cell_type": "markdown", 131 | "metadata": {}, 132 | "source": [ 133 | "## Defining a Class" 134 | ] 135 | }, 136 | { 137 | "cell_type": "code", 138 | "execution_count": 11, 139 | "metadata": {}, 140 | "outputs": [], 141 | "source": [ 142 | "class Employee():\n", 143 | " pass" 144 | ] 145 | }, 146 | { 147 | "cell_type": "code", 148 | "execution_count": 12, 149 | "metadata": {}, 150 | "outputs": [ 151 | { 152 | "data": { 153 | "text/plain": [ 154 | "<__main__.Employee at 0x104257c50>" 155 | ] 156 | }, 157 | "execution_count": 12, 158 | "metadata": {}, 159 | "output_type": "execute_result" 160 | } 161 | ], 162 | "source": [ 163 | "Employee()" 164 | ] 165 | }, 166 | { 167 | "cell_type": "markdown", 168 | "metadata": {}, 169 | "source": [ 170 | "## Next step is to create an `instance` of the Class" 171 | ] 172 | }, 173 | { 174 | "cell_type": "code", 175 | "execution_count": 13, 176 | "metadata": {}, 177 | "outputs": [], 178 | "source": [ 179 | "employee1 = Employee()" 180 | ] 181 | }, 182 | { 183 | "cell_type": "code", 184 | "execution_count": 14, 185 | "metadata": {}, 186 | "outputs": [ 187 | { 188 | "data": { 189 | "text/plain": [ 190 | "<__main__.Employee at 0x104257d30>" 191 | ] 192 | }, 193 | "execution_count": 14, 194 | "metadata": {}, 195 | "output_type": "execute_result" 196 | } 197 | ], 198 | "source": [ 199 | "employee1" 200 | ] 201 | }, 202 | { 203 | "cell_type": "markdown", 204 | "metadata": {}, 205 | "source": [ 206 | "## How do you pass in values to a Class?\n", 207 | "\n", 208 | "### Using the Initializer: `__init__()`" 209 | ] 210 | }, 211 | { 212 | "cell_type": "code", 213 | "execution_count": 16, 214 | "metadata": {}, 215 | "outputs": [], 216 | "source": [ 217 | "class Employee():\n", 218 | " def __init__(self, name, age, position):\n", 219 | " self.name = name\n", 220 | " self.age = age\n", 221 | " self.position = position" 222 | ] 223 | }, 224 | { 225 | "cell_type": "markdown", 226 | "metadata": {}, 227 | "source": [ 228 | "### Variables (or the attributes of `__init__()`) are called instances variables" 229 | ] 230 | }, 231 | { 232 | "cell_type": "code", 233 | "execution_count": 17, 234 | "metadata": {}, 235 | "outputs": [ 236 | { 237 | "ename": "TypeError", 238 | "evalue": "__init__() missing 3 required positional arguments: 'name', 'age', and 'position'", 239 | "output_type": "error", 240 | "traceback": [ 241 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 242 | "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", 243 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0memployee1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mEmployee\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", 244 | "\u001b[0;31mTypeError\u001b[0m: __init__() missing 3 required positional arguments: 'name', 'age', and 'position'" 245 | ] 246 | } 247 | ], 248 | "source": [ 249 | "employee1 = Employee()" 250 | ] 251 | }, 252 | { 253 | "cell_type": "markdown", 254 | "metadata": {}, 255 | "source": [ 256 | "### `__init()__` gets called automatically when the `Employee()` class instance is created" 257 | ] 258 | }, 259 | { 260 | "cell_type": "code", 261 | "execution_count": 18, 262 | "metadata": {}, 263 | "outputs": [], 264 | "source": [ 265 | "employee1 = Employee(name=\"Jay\", age=28, position=\"ML Engineer\")" 266 | ] 267 | }, 268 | { 269 | "cell_type": "code", 270 | "execution_count": 19, 271 | "metadata": {}, 272 | "outputs": [ 273 | { 274 | "data": { 275 | "text/plain": [ 276 | "28" 277 | ] 278 | }, 279 | "execution_count": 19, 280 | "metadata": {}, 281 | "output_type": "execute_result" 282 | } 283 | ], 284 | "source": [ 285 | "employee1.age" 286 | ] 287 | }, 288 | { 289 | "cell_type": "code", 290 | "execution_count": 20, 291 | "metadata": {}, 292 | "outputs": [ 293 | { 294 | "data": { 295 | "text/plain": [ 296 | "'Jay'" 297 | ] 298 | }, 299 | "execution_count": 20, 300 | "metadata": {}, 301 | "output_type": "execute_result" 302 | } 303 | ], 304 | "source": [ 305 | "employee1.name" 306 | ] 307 | }, 308 | { 309 | "cell_type": "code", 310 | "execution_count": 21, 311 | "metadata": {}, 312 | "outputs": [ 313 | { 314 | "data": { 315 | "text/plain": [ 316 | "'ML Engineer'" 317 | ] 318 | }, 319 | "execution_count": 21, 320 | "metadata": {}, 321 | "output_type": "execute_result" 322 | } 323 | ], 324 | "source": [ 325 | "employee1.position" 326 | ] 327 | }, 328 | { 329 | "cell_type": "markdown", 330 | "metadata": {}, 331 | "source": [ 332 | "### Few other methods to get all the information about the Class using `__repr__` and `__str__` methods\n", 333 | "\n", 334 | "> `__str__()` returns the string representation of the object. This method is called when print() or str() function is invoked on an object." 335 | ] 336 | }, 337 | { 338 | "cell_type": "code", 339 | "execution_count": 45, 340 | "metadata": {}, 341 | "outputs": [], 342 | "source": [ 343 | "class Employee():\n", 344 | " def __init__(self, name, age, position):\n", 345 | " self.name = name\n", 346 | " self.age = age\n", 347 | " self.position = position\n", 348 | " \n", 349 | " def __str__(self):\n", 350 | " return f\"Employee Name: {self.name} | Employee Position: {self.position} | Employee Age: {self.age}\"" 351 | ] 352 | }, 353 | { 354 | "cell_type": "code", 355 | "execution_count": 46, 356 | "metadata": {}, 357 | "outputs": [], 358 | "source": [ 359 | "employee1 = Employee(name=\"Jay\", age=28, position=\"ML Engineer\")" 360 | ] 361 | }, 362 | { 363 | "cell_type": "code", 364 | "execution_count": 47, 365 | "metadata": {}, 366 | "outputs": [ 367 | { 368 | "data": { 369 | "text/plain": [ 370 | "<__main__.Employee at 0x104317a58>" 371 | ] 372 | }, 373 | "execution_count": 47, 374 | "metadata": {}, 375 | "output_type": "execute_result" 376 | } 377 | ], 378 | "source": [ 379 | "employee1" 380 | ] 381 | }, 382 | { 383 | "cell_type": "code", 384 | "execution_count": 48, 385 | "metadata": {}, 386 | "outputs": [ 387 | { 388 | "data": { 389 | "text/plain": [ 390 | "'Employee Name: Jay | Employee Position: ML Engineer | Employee Age: 28'" 391 | ] 392 | }, 393 | "execution_count": 48, 394 | "metadata": {}, 395 | "output_type": "execute_result" 396 | } 397 | ], 398 | "source": [ 399 | "str(employee1)" 400 | ] 401 | }, 402 | { 403 | "cell_type": "markdown", 404 | "metadata": {}, 405 | "source": [ 406 | "> `__repr__()` function returns the object representation. It could be any valid python expression such as tuple, dictionary, string etc." 407 | ] 408 | }, 409 | { 410 | "cell_type": "code", 411 | "execution_count": 59, 412 | "metadata": {}, 413 | "outputs": [], 414 | "source": [ 415 | "class Employee():\n", 416 | " def __init__(self, name, age, position):\n", 417 | " self.name = name\n", 418 | " self.age = age\n", 419 | " self.position = position\n", 420 | " \n", 421 | " def __str__(self):\n", 422 | " return f\"Employee Name: {self.name} | Employee Position: {self.position} | Employee Age: {self.age}\"\n", 423 | " \n", 424 | " def __repr__(self):\n", 425 | " return {'Employee Name': self.name, 'Employee Position': self.position, 'Employee Age': self.age}" 426 | ] 427 | }, 428 | { 429 | "cell_type": "code", 430 | "execution_count": 60, 431 | "metadata": {}, 432 | "outputs": [], 433 | "source": [ 434 | "employee1 = Employee(name=\"Jay\", age=28, position=\"ML Engineer\")" 435 | ] 436 | }, 437 | { 438 | "cell_type": "code", 439 | "execution_count": 61, 440 | "metadata": {}, 441 | "outputs": [ 442 | { 443 | "ename": "TypeError", 444 | "evalue": "__repr__ returned non-string (type dict)", 445 | "output_type": "error", 446 | "traceback": [ 447 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 448 | "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", 449 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mrepr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0memployee1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", 450 | "\u001b[0;31mTypeError\u001b[0m: __repr__ returned non-string (type dict)" 451 | ] 452 | } 453 | ], 454 | "source": [ 455 | "repr(employee1)" 456 | ] 457 | }, 458 | { 459 | "cell_type": "code", 460 | "execution_count": 62, 461 | "metadata": {}, 462 | "outputs": [ 463 | { 464 | "data": { 465 | "text/plain": [ 466 | "{'Employee Name': 'Jay',\n", 467 | " 'Employee Position': 'ML Engineer',\n", 468 | " 'Employee Age': 28}" 469 | ] 470 | }, 471 | "execution_count": 62, 472 | "metadata": {}, 473 | "output_type": "execute_result" 474 | } 475 | ], 476 | "source": [ 477 | "employee1.__repr__()" 478 | ] 479 | }, 480 | { 481 | "cell_type": "code", 482 | "execution_count": 63, 483 | "metadata": {}, 484 | "outputs": [ 485 | { 486 | "ename": "TypeError", 487 | "evalue": "__repr__ returned non-string (type dict)", 488 | "output_type": "error", 489 | "traceback": [ 490 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 491 | "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", 492 | "\u001b[0;32m~/miniconda3/envs/greyatom/lib/python3.6/site-packages/IPython/core/formatters.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, obj)\u001b[0m\n\u001b[1;32m 700\u001b[0m \u001b[0mtype_pprinters\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype_printers\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 701\u001b[0m deferred_pprinters=self.deferred_printers)\n\u001b[0;32m--> 702\u001b[0;31m \u001b[0mprinter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpretty\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 703\u001b[0m \u001b[0mprinter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mflush\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 704\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mstream\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetvalue\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 493 | "\u001b[0;32m~/miniconda3/envs/greyatom/lib/python3.6/site-packages/IPython/lib/pretty.py\u001b[0m in \u001b[0;36mpretty\u001b[0;34m(self, obj)\u001b[0m\n\u001b[1;32m 398\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcls\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mobject\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 399\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mcallable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcls\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__dict__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'__repr__'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 400\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_repr_pprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcycle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 401\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 402\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_default_pprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcycle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 494 | "\u001b[0;32m~/miniconda3/envs/greyatom/lib/python3.6/site-packages/IPython/lib/pretty.py\u001b[0m in \u001b[0;36m_repr_pprint\u001b[0;34m(obj, p, cycle)\u001b[0m\n\u001b[1;32m 693\u001b[0m \u001b[0;34m\"\"\"A pprint that just redirects to the normal repr function.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 694\u001b[0m \u001b[0;31m# Find newlines and replace them with p.break_()\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 695\u001b[0;31m \u001b[0moutput\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrepr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 696\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0midx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0moutput_line\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moutput\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplitlines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 697\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0midx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 495 | "\u001b[0;31mTypeError\u001b[0m: __repr__ returned non-string (type dict)" 496 | ] 497 | } 498 | ], 499 | "source": [ 500 | "employee1" 501 | ] 502 | }, 503 | { 504 | "cell_type": "markdown", 505 | "metadata": {}, 506 | "source": [ 507 | "### `self` instance in the Classes: If you don't put in `self` you won't be able to access all the instances variables across all the functions" 508 | ] 509 | }, 510 | { 511 | "cell_type": "code", 512 | "execution_count": 64, 513 | "metadata": {}, 514 | "outputs": [], 515 | "source": [ 516 | "class Employee():\n", 517 | " def __init__(self, name, age, position):\n", 518 | " self.name = name\n", 519 | " self.age = age\n", 520 | " self.position = position\n", 521 | " \n", 522 | " def __str__(self):\n", 523 | " return f\"Employee Name: {name} | Employee Position: {position} | Employee Age: {age}\"\n", 524 | " \n", 525 | " def __repr__(self):\n", 526 | " return {'Employee Name': self.name, 'Employee Position': self.position, 'Employee Age': self.age}" 527 | ] 528 | }, 529 | { 530 | "cell_type": "code", 531 | "execution_count": 65, 532 | "metadata": {}, 533 | "outputs": [], 534 | "source": [ 535 | "employee1 = Employee(name=\"Jay\", age=28, position=\"ML Engineer\")" 536 | ] 537 | }, 538 | { 539 | "cell_type": "code", 540 | "execution_count": 66, 541 | "metadata": {}, 542 | "outputs": [ 543 | { 544 | "ename": "NameError", 545 | "evalue": "name 'name' is not defined", 546 | "output_type": "error", 547 | "traceback": [ 548 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 549 | "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", 550 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0memployee1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", 551 | "\u001b[0;32m\u001b[0m in \u001b[0;36m__str__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__str__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0;34mf\"Employee Name: {name} | Employee Position: {position} | Employee Age: {age}\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__repr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 552 | "\u001b[0;31mNameError\u001b[0m: name 'name' is not defined" 553 | ] 554 | } 555 | ], 556 | "source": [ 557 | "str(employee1)" 558 | ] 559 | }, 560 | { 561 | "cell_type": "markdown", 562 | "metadata": {}, 563 | "source": [ 564 | "### Let's check out the values that can be printed out saved in `self`" 565 | ] 566 | }, 567 | { 568 | "cell_type": "code", 569 | "execution_count": 88, 570 | "metadata": {}, 571 | "outputs": [], 572 | "source": [ 573 | "class Employee():\n", 574 | " def __init__(self, name, age, position):\n", 575 | " self.name = name\n", 576 | " self.age = age\n", 577 | " self.position = position\n", 578 | " \n", 579 | " def __str__(self):\n", 580 | " return f\"Employee Name: {self.name} | Employee Position: {self.position} | Employee Age: {self.age}\"\n", 581 | " \n", 582 | " def __repr__(self):\n", 583 | " return str({'Employee Name': self.name, 'Employee Position': self.position, 'Employee Age': self.age})\n", 584 | " \n", 585 | " def print_self(self):\n", 586 | " print(self)" 587 | ] 588 | }, 589 | { 590 | "cell_type": "code", 591 | "execution_count": 89, 592 | "metadata": {}, 593 | "outputs": [], 594 | "source": [ 595 | "employee1 = Employee(name=\"Jay\", age=28, position=\"ML Engineer\")" 596 | ] 597 | }, 598 | { 599 | "cell_type": "code", 600 | "execution_count": 90, 601 | "metadata": {}, 602 | "outputs": [ 603 | { 604 | "name": "stdout", 605 | "output_type": "stream", 606 | "text": [ 607 | "Employee Name: Jay | Employee Position: ML Engineer | Employee Age: 28\n" 608 | ] 609 | } 610 | ], 611 | "source": [ 612 | "employee1.print_self()" 613 | ] 614 | }, 615 | { 616 | "cell_type": "markdown", 617 | "metadata": {}, 618 | "source": [ 619 | "## Why does printing `self` gives you the output it has?\n", 620 | "\n", 621 | "### When objects are instantiated, the object itself is passed into the self parameter.\n", 622 | "\n", 623 | "### Which means: `employee1.print_self() == print(employee)`" 624 | ] 625 | }, 626 | { 627 | "cell_type": "code", 628 | "execution_count": 92, 629 | "metadata": {}, 630 | "outputs": [ 631 | { 632 | "name": "stdout", 633 | "output_type": "stream", 634 | "text": [ 635 | "Employee Name: Jay | Employee Position: ML Engineer | Employee Age: 28\n" 636 | ] 637 | } 638 | ], 639 | "source": [ 640 | "print(employee1)" 641 | ] 642 | }, 643 | { 644 | "cell_type": "markdown", 645 | "metadata": {}, 646 | "source": [ 647 | "### We have been dealing with instance variables or attributes that are passed on to `__init__()`, but there's one more type that can be useful is: `Class attribute` or `Class variable`" 648 | ] 649 | }, 650 | { 651 | "cell_type": "code", 652 | "execution_count": 93, 653 | "metadata": {}, 654 | "outputs": [], 655 | "source": [ 656 | "class Employee():\n", 657 | " address = \"91Springboard, BKC, Mumbai\"\n", 658 | " \n", 659 | " def __init__(self, name, age, position):\n", 660 | " self.name = name\n", 661 | " self.age = age\n", 662 | " self.position = position\n", 663 | " \n", 664 | " def __str__(self):\n", 665 | " return f\"Employee Name: {self.name} | Employee Position: {self.position} | Employee Age: {self.age}\"\n", 666 | " \n", 667 | " def __repr__(self):\n", 668 | " return str({'Employee Name': self.name, 'Employee Position': self.position, 'Employee Age': self.age})\n", 669 | " \n", 670 | " def print_self(self):\n", 671 | " print(self)" 672 | ] 673 | }, 674 | { 675 | "cell_type": "code", 676 | "execution_count": 94, 677 | "metadata": {}, 678 | "outputs": [], 679 | "source": [ 680 | "employee1 = Employee(name=\"Jay\", age=28, position=\"ML Engineer\")" 681 | ] 682 | }, 683 | { 684 | "cell_type": "code", 685 | "execution_count": 95, 686 | "metadata": {}, 687 | "outputs": [ 688 | { 689 | "data": { 690 | "text/plain": [ 691 | "'91Springboard, BKC, Mumbai'" 692 | ] 693 | }, 694 | "execution_count": 95, 695 | "metadata": {}, 696 | "output_type": "execute_result" 697 | } 698 | ], 699 | "source": [ 700 | "employee1.address" 701 | ] 702 | }, 703 | { 704 | "cell_type": "code", 705 | "execution_count": 96, 706 | "metadata": {}, 707 | "outputs": [], 708 | "source": [ 709 | "employee2 = Employee(name=\"Prathamesh\", age=28, position=\"ML Engineer\")" 710 | ] 711 | }, 712 | { 713 | "cell_type": "code", 714 | "execution_count": 97, 715 | "metadata": {}, 716 | "outputs": [ 717 | { 718 | "data": { 719 | "text/plain": [ 720 | "'91Springboard, BKC, Mumbai'" 721 | ] 722 | }, 723 | "execution_count": 97, 724 | "metadata": {}, 725 | "output_type": "execute_result" 726 | } 727 | ], 728 | "source": [ 729 | "employee2.address" 730 | ] 731 | }, 732 | { 733 | "cell_type": "markdown", 734 | "metadata": {}, 735 | "source": [ 736 | "### This Class variable can be changed" 737 | ] 738 | }, 739 | { 740 | "cell_type": "code", 741 | "execution_count": 98, 742 | "metadata": {}, 743 | "outputs": [], 744 | "source": [ 745 | "employee1.address = '91Springboard, Andheri, Mumbai'" 746 | ] 747 | }, 748 | { 749 | "cell_type": "code", 750 | "execution_count": 99, 751 | "metadata": {}, 752 | "outputs": [ 753 | { 754 | "data": { 755 | "text/plain": [ 756 | "'91Springboard, Andheri, Mumbai'" 757 | ] 758 | }, 759 | "execution_count": 99, 760 | "metadata": {}, 761 | "output_type": "execute_result" 762 | } 763 | ], 764 | "source": [ 765 | "employee1.address" 766 | ] 767 | }, 768 | { 769 | "cell_type": "markdown", 770 | "metadata": {}, 771 | "source": [ 772 | "### Changing the first employee address, would it change the employee address of the second employee?" 773 | ] 774 | }, 775 | { 776 | "cell_type": "code", 777 | "execution_count": null, 778 | "metadata": {}, 779 | "outputs": [], 780 | "source": [] 781 | }, 782 | { 783 | "cell_type": "markdown", 784 | "metadata": {}, 785 | "source": [ 786 | "### If we create a new employee instance: `employee3`, would the address be the changed one or the original one?" 787 | ] 788 | }, 789 | { 790 | "cell_type": "code", 791 | "execution_count": 103, 792 | "metadata": {}, 793 | "outputs": [], 794 | "source": [ 795 | "employee3 = Employee(name=\"Kunal\", age=28, position=\"Founder\")" 796 | ] 797 | }, 798 | { 799 | "cell_type": "code", 800 | "execution_count": null, 801 | "metadata": {}, 802 | "outputs": [], 803 | "source": [] 804 | }, 805 | { 806 | "cell_type": "markdown", 807 | "metadata": {}, 808 | "source": [ 809 | "## Types of Methods:\n", 810 | "\n", 811 | "- instance methods\n", 812 | "- class methods\n", 813 | "- static methods" 814 | ] 815 | }, 816 | { 817 | "cell_type": "markdown", 818 | "metadata": {}, 819 | "source": [ 820 | "### Instance Methods" 821 | ] 822 | }, 823 | { 824 | "cell_type": "code", 825 | "execution_count": 106, 826 | "metadata": {}, 827 | "outputs": [], 828 | "source": [ 829 | "class Employee():\n", 830 | " address = \"91Springboard, BKC, Mumbai\"\n", 831 | " \n", 832 | " def __init__(self, name, age, position):\n", 833 | " self.name = name\n", 834 | " self.age = age\n", 835 | " self.position = position\n", 836 | " \n", 837 | " def __str__(self):\n", 838 | " return f\"Employee Name: {self.name} | Employee Position: {self.position} | Employee Age: {self.age}\"\n", 839 | " \n", 840 | " def __repr__(self):\n", 841 | " return str({'Employee Name': self.name, 'Employee Position': self.position, 'Employee Age': self.age})\n", 842 | " \n", 843 | " def print_self(self):\n", 844 | " \"\"\"Example of Instance Method\n", 845 | " \"\"\"\n", 846 | " print(self)" 847 | ] 848 | }, 849 | { 850 | "cell_type": "markdown", 851 | "metadata": {}, 852 | "source": [ 853 | "### Class methods" 854 | ] 855 | }, 856 | { 857 | "cell_type": "code", 858 | "execution_count": 122, 859 | "metadata": {}, 860 | "outputs": [], 861 | "source": [ 862 | "class Employee():\n", 863 | " address = \"91Springboard, BKC, Mumbai\"\n", 864 | " \n", 865 | " def __init__(self, name, age, position):\n", 866 | " self.name = name\n", 867 | " self.age = age\n", 868 | " self.position = position\n", 869 | " \n", 870 | " def __str__(self):\n", 871 | " return f\"Employee Name: {self.name} | Employee Position: {self.position} | Employee Age: {self.age}\"\n", 872 | " \n", 873 | " def __repr__(self):\n", 874 | " return str({'Employee Name': self.name, 'Employee Position': self.position, 'Employee Age': self.age})\n", 875 | " \n", 876 | " def print_self(self):\n", 877 | " \"\"\"Example of Instance Method\n", 878 | " \"\"\"\n", 879 | " print(self)\n", 880 | " \n", 881 | " @classmethod\n", 882 | " def change_address(cls, new_address):\n", 883 | " \"\"\"Example of Class method\n", 884 | " \"\"\"\n", 885 | " print(\"Accessing the Class method\")\n", 886 | " print(cls)\n", 887 | " cls.address = new_address" 888 | ] 889 | }, 890 | { 891 | "cell_type": "code", 892 | "execution_count": 123, 893 | "metadata": {}, 894 | "outputs": [], 895 | "source": [ 896 | "employee3 = Employee(name=\"Kunal\", age=28, position=\"Founder\")" 897 | ] 898 | }, 899 | { 900 | "cell_type": "code", 901 | "execution_count": 124, 902 | "metadata": {}, 903 | "outputs": [ 904 | { 905 | "name": "stdout", 906 | "output_type": "stream", 907 | "text": [ 908 | "Accessing the Class method\n", 909 | "\n" 910 | ] 911 | } 912 | ], 913 | "source": [ 914 | "employee3.change_address('San Francisco, CA')" 915 | ] 916 | }, 917 | { 918 | "cell_type": "code", 919 | "execution_count": 125, 920 | "metadata": {}, 921 | "outputs": [ 922 | { 923 | "data": { 924 | "text/plain": [ 925 | "'San Francisco, CA'" 926 | ] 927 | }, 928 | "execution_count": 125, 929 | "metadata": {}, 930 | "output_type": "execute_result" 931 | } 932 | ], 933 | "source": [ 934 | "employee3.address" 935 | ] 936 | }, 937 | { 938 | "cell_type": "markdown", 939 | "metadata": {}, 940 | "source": [ 941 | "### Static Methods" 942 | ] 943 | }, 944 | { 945 | "cell_type": "code", 946 | "execution_count": 132, 947 | "metadata": {}, 948 | "outputs": [], 949 | "source": [ 950 | "class Employee():\n", 951 | " address = \"91Springboard, BKC, Mumbai\"\n", 952 | " \n", 953 | " def __init__(self, name, age, position, salary):\n", 954 | " self.name = name\n", 955 | " self.age = age\n", 956 | " self.position = position\n", 957 | " self.salary = salary # Adding new attribute\n", 958 | " \n", 959 | " def __str__(self):\n", 960 | " return f\"Employee Name: {self.name} | Employee Position: {self.position} | Employee Age: {self.age}\"\n", 961 | " \n", 962 | " def __repr__(self):\n", 963 | " return str({'Employee Name': self.name, 'Employee Position': self.position, 'Employee Age': self.age})\n", 964 | " \n", 965 | " def print_self(self):\n", 966 | " \"\"\"Example of Instance Method\n", 967 | " \"\"\"\n", 968 | " print(self)\n", 969 | " \n", 970 | " def print_salary_breakup(self):\n", 971 | " \"\"\"Example of Instance method using a static method\n", 972 | " \"\"\"\n", 973 | " return {'salary': self.salary, 'tds': self.calculate_tds(self.salary, 0.10)}\n", 974 | " \n", 975 | " @classmethod\n", 976 | " def change_address(cls, new_address):\n", 977 | " \"\"\"Example of Class method\n", 978 | " \"\"\"\n", 979 | " print(\"Accessing the Class method\")\n", 980 | " cls.address = new_address\n", 981 | " \n", 982 | " @staticmethod\n", 983 | " def calculate_tds(salary, tax_bracket):\n", 984 | " return salary * tax_bracket" 985 | ] 986 | }, 987 | { 988 | "cell_type": "code", 989 | "execution_count": 133, 990 | "metadata": {}, 991 | "outputs": [], 992 | "source": [ 993 | "employee3 = Employee(name=\"Kunal\", age=28, position=\"Founder\", salary=2100000)" 994 | ] 995 | }, 996 | { 997 | "cell_type": "code", 998 | "execution_count": 134, 999 | "metadata": {}, 1000 | "outputs": [ 1001 | { 1002 | "data": { 1003 | "text/plain": [ 1004 | "{'salary': 2100000, 'tds': 210000.0}" 1005 | ] 1006 | }, 1007 | "execution_count": 134, 1008 | "metadata": {}, 1009 | "output_type": "execute_result" 1010 | } 1011 | ], 1012 | "source": [ 1013 | "employee3.print_salary_breakup()" 1014 | ] 1015 | }, 1016 | { 1017 | "cell_type": "markdown", 1018 | "metadata": {}, 1019 | "source": [ 1020 | "## Inheritance" 1021 | ] 1022 | }, 1023 | { 1024 | "cell_type": "code", 1025 | "execution_count": 145, 1026 | "metadata": {}, 1027 | "outputs": [], 1028 | "source": [ 1029 | "class Employee():\n", 1030 | " address = \"91Springboard, BKC, Mumbai\"\n", 1031 | " \n", 1032 | " def __init__(self, name, age, position, salary):\n", 1033 | " self.name = name\n", 1034 | " self.age = age\n", 1035 | " self.position = position\n", 1036 | " self.salary = salary # Adding new attribute\n", 1037 | " \n", 1038 | " def __str__(self):\n", 1039 | " return f\"Employee Name: {self.name} | Employee Position: {self.position} | Employee Age: {self.age}\"\n", 1040 | " \n", 1041 | " def __repr__(self):\n", 1042 | " return str({'Employee Name': self.name, 'Employee Position': self.position, 'Employee Age': self.age})\n", 1043 | " \n", 1044 | " def print_self(self):\n", 1045 | " \"\"\"Example of Instance Method\n", 1046 | " \"\"\"\n", 1047 | " print(self)\n", 1048 | " \n", 1049 | " def print_salary_breakup(self):\n", 1050 | " \"\"\"Example of Instance method using a static method\n", 1051 | " \"\"\"\n", 1052 | " return {'salary': self.salary, 'tds': self.calculate_tds(self.salary, 0.10)}\n", 1053 | " \n", 1054 | " @classmethod\n", 1055 | " def change_address(cls, new_address):\n", 1056 | " \"\"\"Example of Class method\n", 1057 | " \"\"\"\n", 1058 | " print(\"Accessing the Class method\")\n", 1059 | " cls.address = new_address\n", 1060 | " \n", 1061 | " @staticmethod\n", 1062 | " def calculate_tds(salary, tax_bracket):\n", 1063 | " return salary * tax_bracket" 1064 | ] 1065 | }, 1066 | { 1067 | "cell_type": "markdown", 1068 | "metadata": {}, 1069 | "source": [ 1070 | "### We can consider `Employee` class as the base class and we'll extend it to a new class called `Machine Learning Engineer`" 1071 | ] 1072 | }, 1073 | { 1074 | "cell_type": "code", 1075 | "execution_count": 136, 1076 | "metadata": {}, 1077 | "outputs": [], 1078 | "source": [ 1079 | "class MLEngineer(Employee):\n", 1080 | " def __init__(self, skills, projects):\n", 1081 | " self.skills = skills\n", 1082 | " self.projects = projects\n", 1083 | " \n", 1084 | " def __str__(self):\n", 1085 | " return f\"\"\"Employee Name: {self.name} | Employee Position: {self.position} | \n", 1086 | " Employee Age: {self.age} | Skills: {self.skills} | Projects: {self.skills}\"\"\"" 1087 | ] 1088 | }, 1089 | { 1090 | "cell_type": "code", 1091 | "execution_count": 137, 1092 | "metadata": {}, 1093 | "outputs": [], 1094 | "source": [ 1095 | "mlengineer1 = MLEngineer(skills=['Python', 'Machine Learning', 'AWS', 'Docker'], \n", 1096 | " projects=['Lending default predictions', 'Machine Learning Deployments'])" 1097 | ] 1098 | }, 1099 | { 1100 | "cell_type": "code", 1101 | "execution_count": 138, 1102 | "metadata": {}, 1103 | "outputs": [ 1104 | { 1105 | "ename": "AttributeError", 1106 | "evalue": "'MLEngineer' object has no attribute 'name'", 1107 | "output_type": "error", 1108 | "traceback": [ 1109 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 1110 | "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", 1111 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmlengineer1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", 1112 | "\u001b[0;32m\u001b[0m in \u001b[0;36m__str__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__str__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m return f\"\"\"Employee Name: {self.name} | Employee Position: {self.position} | \n\u001b[0;32m----> 8\u001b[0;31m Employee Age: {self.age} | Skills: {self.skills} | Projects: {self.skills}\"\"\"\n\u001b[0m", 1113 | "\u001b[0;31mAttributeError\u001b[0m: 'MLEngineer' object has no attribute 'name'" 1114 | ] 1115 | } 1116 | ], 1117 | "source": [ 1118 | "str(mlengineer1)" 1119 | ] 1120 | }, 1121 | { 1122 | "cell_type": "markdown", 1123 | "metadata": {}, 1124 | "source": [ 1125 | "### We did extend the base class `Employee` to the `MLEngineer` class, but if I want to access the values or send in the values from `MLEngineer` to `Employee` to be initialized I need: `super()`\n", 1126 | "\n", 1127 | "### `super()` lets you reference the parent class instead of hard-coding it." 1128 | ] 1129 | }, 1130 | { 1131 | "cell_type": "code", 1132 | "execution_count": 160, 1133 | "metadata": {}, 1134 | "outputs": [], 1135 | "source": [ 1136 | "class MLEngineer(Employee):\n", 1137 | " def __init__(self, name, age, position, salary, skills, projects):\n", 1138 | " # The implementation in Python3\n", 1139 | " super().__init__(name, age, position, salary)\n", 1140 | " \n", 1141 | " self.skills = skills\n", 1142 | " self.projects = projects\n", 1143 | " \n", 1144 | " def __str__(self):\n", 1145 | " return f\"\"\"Employee Name: {self.name} | Employee Position: {self.position} | Employee Age: {self.age} | Skills: {self.skills} | Projects: {self.skills}\"\"\"" 1146 | ] 1147 | }, 1148 | { 1149 | "cell_type": "code", 1150 | "execution_count": 161, 1151 | "metadata": {}, 1152 | "outputs": [], 1153 | "source": [ 1154 | "mlengineer1 = MLEngineer(name=\"Prathamesh\", age=28, position=\"MLEngineer\", salary=200000,\n", 1155 | " skills=['Python', 'Machine Learning', 'AWS', 'Docker'], \n", 1156 | " projects=['Lending default predictions', 'Machine Learning Deployments'])" 1157 | ] 1158 | }, 1159 | { 1160 | "cell_type": "code", 1161 | "execution_count": 162, 1162 | "metadata": {}, 1163 | "outputs": [ 1164 | { 1165 | "data": { 1166 | "text/plain": [ 1167 | "\"Employee Name: Prathamesh | Employee Position: MLEngineer | Employee Age: 28 | Skills: ['Python', 'Machine Learning', 'AWS', 'Docker'] | Projects: ['Python', 'Machine Learning', 'AWS', 'Docker']\"" 1168 | ] 1169 | }, 1170 | "execution_count": 162, 1171 | "metadata": {}, 1172 | "output_type": "execute_result" 1173 | } 1174 | ], 1175 | "source": [ 1176 | "str(mlengineer1)" 1177 | ] 1178 | }, 1179 | { 1180 | "cell_type": "markdown", 1181 | "metadata": {}, 1182 | "source": [ 1183 | "## There's a small gem that I had implemented and forgot!" 1184 | ] 1185 | }, 1186 | { 1187 | "cell_type": "code", 1188 | "execution_count": 176, 1189 | "metadata": {}, 1190 | "outputs": [], 1191 | "source": [ 1192 | "class MLEngineer:\n", 1193 | " def __init__(self, **kwargs):\n", 1194 | " self.__dict__.update(kwargs)\n", 1195 | " \n", 1196 | " def __str__(self):\n", 1197 | " return f\"\"\"Employee Name: {self.__dict__['name']}\"\"\"" 1198 | ] 1199 | }, 1200 | { 1201 | "cell_type": "code", 1202 | "execution_count": 177, 1203 | "metadata": {}, 1204 | "outputs": [], 1205 | "source": [ 1206 | "mlengineer1 = MLEngineer(name=\"Prathamesh\", age=28, position=\"MLEngineer\", salary=200000,\n", 1207 | " skills=['Python', 'Machine Learning', 'AWS', 'Docker'], \n", 1208 | " projects=['Lending default predictions', 'Machine Learning Deployments'])" 1209 | ] 1210 | }, 1211 | { 1212 | "cell_type": "code", 1213 | "execution_count": 178, 1214 | "metadata": {}, 1215 | "outputs": [ 1216 | { 1217 | "data": { 1218 | "text/plain": [ 1219 | "'Employee Name: Prathamesh'" 1220 | ] 1221 | }, 1222 | "execution_count": 178, 1223 | "metadata": {}, 1224 | "output_type": "execute_result" 1225 | } 1226 | ], 1227 | "source": [ 1228 | "str(mlengineer1)" 1229 | ] 1230 | }, 1231 | { 1232 | "cell_type": "markdown", 1233 | "metadata": {}, 1234 | "source": [ 1235 | "### Now you can add in a lot of other things that you want to do as instance methods, class methods or static methods" 1236 | ] 1237 | }, 1238 | { 1239 | "cell_type": "markdown", 1240 | "metadata": {}, 1241 | "source": [ 1242 | "## Duck Typing" 1243 | ] 1244 | }, 1245 | { 1246 | "cell_type": "markdown", 1247 | "metadata": {}, 1248 | "source": [ 1249 | "__Example: Dynamically typed languages__\n", 1250 | "\n", 1251 | "Imagine I have a magic wand. It has special powers. If I wave the wand and say \"Drive!\" to a car, well then, it drives!\n", 1252 | "\n", 1253 | "Does it work on other things? Not sure: so I try it on a truck. Wow - it drives too! I then try it on planes, trains and 1 Woods (they are a type of golf club which people use to 'drive' a golf ball). They all drive!\n", 1254 | "\n", 1255 | "But would it work on say, a teacup? Error: KAAAA-BOOOOOOM! that didn't work out so good. ====> Teacups can't drive!!!\n", 1256 | "\n", 1257 | "This is basically the concept of duck typing. It's a try-before-you-buy type system. If it works, all is well. But if it fails, well, it's gonna blow up in your face.\n", 1258 | "\n", 1259 | "In other words, we are interested in what the object can do, rather than with what the object is." 1260 | ] 1261 | }, 1262 | { 1263 | "cell_type": "code", 1264 | "execution_count": null, 1265 | "metadata": {}, 1266 | "outputs": [], 1267 | "source": [] 1268 | } 1269 | ], 1270 | "metadata": { 1271 | "kernelspec": { 1272 | "display_name": "Python 3", 1273 | "language": "python", 1274 | "name": "python3" 1275 | }, 1276 | "language_info": { 1277 | "codemirror_mode": { 1278 | "name": "ipython", 1279 | "version": 3 1280 | }, 1281 | "file_extension": ".py", 1282 | "mimetype": "text/x-python", 1283 | "name": "python", 1284 | "nbconvert_exporter": "python", 1285 | "pygments_lexer": "ipython3", 1286 | "version": "3.6.7" 1287 | } 1288 | }, 1289 | "nbformat": 4, 1290 | "nbformat_minor": 2 1291 | } 1292 | -------------------------------------------------------------------------------- /notebooks/heights.csv: -------------------------------------------------------------------------------- 1 | "earn","height","sex","ed","age","race" 2 | 50000,74.4244387818035,"male",16,45,"white" 3 | 60000,65.5375428255647,"female",16,58,"white" 4 | 30000,63.6291977374349,"female",16,29,"white" 5 | 50000,63.1085616752971,"female",16,91,"other" 6 | 51000,63.4024835710879,"female",17,39,"white" 7 | 9000,64.3995075440034,"female",15,26,"white" 8 | 29000,61.6563258264214,"female",12,49,"white" 9 | 32000,72.6985437364783,"male",17,46,"white" 10 | 2000,72.0394668497611,"male",15,21,"hispanic" 11 | 27000,72.2349325611722,"male",12,26,"white" 12 | 6530,69.5121464275289,"male",16,65,"white" 13 | 30000,68.0316082600038,"male",11,34,"white" 14 | 12000,67.556933917338,"male",12,27,"white" 15 | 12000,65.4305870763492,"female",12,51,"white" 16 | 22000,65.6628545243293,"female",16,35,"white" 17 | 17000,67.7587687384803,"male",12,58,"white" 18 | 40000,68.3518425801303,"female",14,29,"white" 19 | 44000,69.6095718003344,"male",13,44,"white" 20 | 7000,64.1845656777732,"female",12,55,"black" 21 | 53000,73.0746091497131,"male",13,35,"black" 22 | 5000,62.3755270198453,"female",13,51,"white" 23 | 14000,63.0239301056135,"female",14,21,"white" 24 | 5500,67.2299039133359,"male",14,22,"white" 25 | 40000,65.551107801497,"female",12,41,"white" 26 | 34000,72.0796453857329,"male",12,45,"white" 27 | 10000,63.0911300827283,"female",12,35,"black" 28 | 27000,64.3235489164945,"female",16,60,"white" 29 | 50000,71.6428528276738,"male",16,38,"white" 30 | 41000,76.7930946839042,"male",16,33,"white" 31 | 15000,63.8939143288881,"female",14,25,"white" 32 | 25000,63.8026230719406,"female",12,33,"white" 33 | 75000,71.5922314410564,"male",17,39,"white" 34 | 27000,67.5219634829555,"male",17,31,"white" 35 | 12000,64.3943514756393,"female",12,26,"white" 36 | 7500,61.1782226648647,"female",14,78,"white" 37 | 30000,66.9838783009909,"female",14,31,"black" 38 | 21000,65.3164557656273,"female",12,57,"white" 39 | 27000,63.5741851450875,"female",14,26,"white" 40 | 3000,66.6110004822258,"female",15,65,"white" 41 | 25000,64.9117550808005,"female",12,30,"white" 42 | 24000,64.7896799838636,"female",12,41,"white" 43 | 32000,66.937690645922,"female",18,29,"white" 44 | 10000,68.1728129491676,"female",17,30,"white" 45 | 11000,60.4506599237211,"female",12,21,"hispanic" 46 | 18700,64.7932535589207,"female",13,32,"white" 47 | 20000,61.8149190000258,"female",12,29,"white" 48 | 3500,71.5721453060396,"male",10,18,"white" 49 | 13000,67.3144058254547,"male",8,56,"black" 50 | 25000,69.8998733619228,"male",12,65,"white" 51 | 21000,69.7617020171601,"male",17,41,"white" 52 | 34000,67.7464710318018,"female",17,49,"white" 53 | 6000,60.190221529454,"female",12,65,"white" 54 | 17000,71.0064998776652,"male",12,28,"white" 55 | 35000,71.1667981331702,"male",12,32,"white" 56 | 4000,72.7356298717204,"male",13,18,"white" 57 | 14000,68.1382231093012,"female",14,55,"white" 58 | 10000,66.3798112401273,"female",12,57,"white" 59 | 25000,69.2327845250256,"male",16,29,"white" 60 | 16000,63.2739377985708,"female",14,27,"white" 61 | 16000,61.8277627213392,"male",14,28,"hispanic" 62 | 16500,64.2212092091795,"female",14,43,"white" 63 | 4000,63.841265113093,"female",9,68,"white" 64 | 3840,66.9747701257002,"female",9,52,"white" 65 | 22000,71.451489093015,"male",12,39,"white" 66 | 200,59.6126462582033,"female",16,53,"white" 67 | 26000,65.7993855320383,"female",16,27,"white" 68 | 2500,66.4580405310262,"female",15,21,"white" 69 | 17000,64.60288038617,"female",14,39,"white" 70 | 8000,70.4404814683367,"female",13,22,"white" 71 | 12000,65.922813506797,"female",13,68,"white" 72 | 10000,61.8568268497474,"female",12,47,"white" 73 | 10000,65.7844401644543,"female",15,67,"white" 74 | 15000,71.8312798414845,"male",12,39,"white" 75 | 2400,67.0453292939346,"female",8,39,"hispanic" 76 | 30000,68.3055060780607,"male",12,32,"hispanic" 77 | 30000,70.0254597608,"male",12,33,"white" 78 | 10000,61.810385880759,"female",12,38,"white" 79 | 5000,62.9510710034519,"female",13,26,"white" 80 | 12000,65.8211369581986,"female",13,63,"white" 81 | 20000,70.3975481863599,"female",10,61,"white" 82 | 20000,68.3777844423894,"female",12,36,"white" 83 | 20000,69.9326998807956,"male",14,23,"white" 84 | 1200,66.1718059259001,"female",12,20,"white" 85 | 700,68.4563631031197,"female",16,32,"white" 86 | 20000,69.9038575142622,"male",16,27,"white" 87 | 10000,61.1496579824015,"female",12,22,"hispanic" 88 | 30000,63.3633463280275,"female",12,73,"white" 89 | 40000,64.1470837995876,"female",14,56,"white" 90 | 25000,67.3183904122561,"male",12,89,"white" 91 | 10000,60.6749360549729,"female",17,79,"white" 92 | 60000,68.840902544558,"female",18,63,"white" 93 | 18000,67.6827305052429,"female",12,66,"white" 94 | 16040,64.4967685842421,"female",12,33,"white" 95 | 15000,66.8124041855335,"female",14,30,"black" 96 | 10000,68.7464377458673,"male",17,23,"white" 97 | 33000,67.0676490592305,"female",13,43,"white" 98 | 18000,68.1379930116236,"female",12,30,"white" 99 | 15000,63.3428967916407,"female",12,37,"white" 100 | 21000,71.3866663060617,"male",12,22,"white" 101 | 21000,63.9883370213211,"female",17,43,"black" 102 | 37000,68.4863865228835,"male",11,37,"white" 103 | 38000,67.5161435012706,"female",17,44,"white" 104 | 17000,65.6008437511045,"female",14,43,"hispanic" 105 | 32000,76.800193942152,"male",16,30,"white" 106 | 27500,67.1053807893768,"female",12,58,"white" 107 | 16500,62.1516434333753,"female",12,44,"white" 108 | 25000,66.8676242611837,"female",18,35,"white" 109 | 27000,61.0422025278676,"female",18,43,"white" 110 | 5000,64.1232857718132,"female",12,28,"white" 111 | 70000,61.5448151710443,"female",16,38,"white" 112 | 5000,62.5562363923527,"female",12,40,"white" 113 | 5000,68.1637655736413,"male",16,24,"white" 114 | 20000,63.6551274901722,"female",15,26,"white" 115 | 4000,72.373517293483,"male",15,21,"white" 116 | 60000,64.1470823881682,"female",16,35,"white" 117 | 5000,61.3266997484025,"female",13,31,"white" 118 | 30000,74.3663964397274,"male",12,38,"white" 119 | 70000,70.2101620207541,"male",14,35,"white" 120 | 50000,71.106188031612,"male",16,41,"white" 121 | 44000,62.594844043022,"female",12,39,"white" 122 | 30000,64.0549647742882,"female",14,43,"white" 123 | 10000,61.573618854396,"female",16,40,"white" 124 | 23000,70.4801993905567,"female",17,42,"white" 125 | 45000,71.1859069743659,"male",17,62,"white" 126 | 15000,71.4336384225171,"male",14,31,"white" 127 | 4000,70.2288485858589,"female",14,71,"white" 128 | 17000,67.2808580445126,"male",14,31,"white" 129 | 30000,63.7586912042461,"female",12,32,"white" 130 | 27500,67.0865156073123,"female",12,30,"white" 131 | 5688,61.679597878363,"female",8,69,"white" 132 | 18000,62.285998323001,"female",13,56,"hispanic" 133 | 43000,68.2924768726807,"male",13,44,"black" 134 | 32000,61.5894825500436,"female",14,44,"black" 135 | 10000,68.4177351850085,"female",18,56,"black" 136 | 60000,73.9912551299203,"male",13,45,"white" 137 | 21000,67.5610723162536,"female",12,50,"other" 138 | 2400,62.3379296525382,"female",16,22,"white" 139 | 1000,66.2400088959839,"female",15,28,"white" 140 | 27000,68.0984727463219,"male",12,27,"white" 141 | 6600,59.7708697339986,"female",14,28,"hispanic" 142 | 16000,68.0633805643301,"male",8,43,"white" 143 | 90000,71.6801480520517,"male",12,26,"white" 144 | 8000,66.3597083494533,"female",12,42,"white" 145 | 20000,68.3562582309823,"male",10,32,"white" 146 | 15000,68.4565424812026,"female",12,18,"white" 147 | 12000,68.7861042914446,"female",12,60,"white" 148 | 24000,64.1022426583804,"female",16,46,"white" 149 | 20000,65.1134854783304,"female",14,39,"white" 150 | 19000,60.6491858377121,"female",12,46,"white" 151 | 10000,72.1257029925473,"male",12,49,"white" 152 | 40000,65.5107300695963,"female",16,34,"white" 153 | 25000,67.931898314273,"male",14,64,"white" 154 | 25000,70.4449232395273,"male",12,24,"white" 155 | 25000,71.3658544581849,"male",14,32,"white" 156 | 19000,71.1250733132474,"male",16,61,"white" 157 | 44000,68.1601368142292,"male",16,48,"white" 158 | 15000,60.1133276864421,"female",14,49,"white" 159 | 17000,62.7881975469645,"female",12,36,"white" 160 | 24000,68.0777218828443,"male",12,56,"white" 161 | 23000,64.0508421198465,"female",12,37,"white" 162 | 13000,69.7157963842619,"male",12,74,"white" 163 | 65000,68.2206725352444,"male",16,46,"white" 164 | 7000,60.8838594953995,"female",12,63,"white" 165 | 40000,68.4075396999251,"male",18,63,"white" 166 | 15000,66.0019799831789,"female",17,43,"white" 167 | 20000,69.7978899071459,"male",16,25,"white" 168 | 20000,71.0107113404665,"male",12,50,"white" 169 | 20000,65.1424107500352,"female",12,42,"white" 170 | 25000,65.9671088184696,"female",12,49,"white" 171 | 49000,69.9905325989239,"male",13,37,"white" 172 | 25000,61.8766771967057,"female",12,65,"white" 173 | 11000,66.1088806597982,"female",14,57,"white" 174 | 16000,61.054305461701,"female",15,38,"white" 175 | 35000,71.5635653017089,"male",14,43,"white" 176 | 125000,74.3406224281061,"male",18,45,"white" 177 | 23000,66.5769884118345,"female",12,47,"white" 178 | 17000,66.1104431450367,"female",16,28,"white" 179 | 27000,61.9656850092579,"female",12,41,"white" 180 | 70000,71.7455116605852,"male",14,32,"white" 181 | 35000,64.5622197962366,"female",15,47,"white" 182 | 10000,60.1988203886431,"female",12,62,"white" 183 | 35000,61.9163728298154,"female",15,39,"white" 184 | 15000,66.4135520232376,"female",12,38,"white" 185 | 12000,63.6985211905558,"female",12,39,"white" 186 | 8000,71.2909144631121,"male",12,68,"white" 187 | 8000,65.2537561147474,"female",12,50,"white" 188 | 35000,73.0054612359963,"male",18,50,"white" 189 | 45000,68.6400743776467,"male",11,51,"white" 190 | 15000,64.3814524675254,"female",14,22,"white" 191 | 15000,61.060264130123,"female",12,77,"white" 192 | 24000,66.7893646617886,"female",18,51,"white" 193 | 25000,61.8292980391998,"female",13,32,"white" 194 | 25000,62.6095600808039,"female",14,54,"black" 195 | 20000,67.3646558583714,"male",10,28,"other" 196 | 24000,68.0169713827781,"female",12,24,"white" 197 | 44000,72.0641469496768,"male",16,46,"white" 198 | 69000,70.1086239435244,"male",12,38,"white" 199 | 62000,69.8524850972462,"male",18,44,"white" 200 | 32000,67.4552509614732,"male",14,32,"black" 201 | 20000,63.4531285660341,"female",12,33,"black" 202 | 32000,66.2929654479958,"female",18,35,"other" 203 | 25000,65.8347965243738,"female",17,50,"white" 204 | 170000,71.0100344805978,"male",18,45,"white" 205 | 35000,66.6194241039921,"male",16,33,"white" 206 | 40000,75.5685887699947,"male",16,38,"black" 207 | 33000,68.9521992248483,"male",14,30,"white" 208 | 18000,65.3487340502907,"female",12,22,"white" 209 | 30000,61.7521165187936,"female",13,43,"white" 210 | 26000,61.7641323632561,"female",12,31,"white" 211 | 5000,62.4114694842137,"female",12,21,"white" 212 | 20000,61.9043291150592,"female",16,73,"white" 213 | 17000,60.6386099145748,"female",12,30,"white" 214 | 32000,64.8245771916118,"female",14,28,"white" 215 | 15000,72.2707532981876,"male",14,22,"white" 216 | 50000,71.6722751564812,"male",14,55,"white" 217 | 8000,63.7709283335134,"female",12,39,"white" 218 | 40000,70.7865930511616,"male",14,51,"white" 219 | 40000,72.4097947853152,"male",15,41,"white" 220 | 32750,66.0879790608305,"male",12,34,"white" 221 | 20000,64.9993283268996,"female",14,69,"white" 222 | 36000,64.5292996137869,"female",15,39,"black" 223 | 6000,61.7426805158611,"female",12,64,"white" 224 | 12000,65.8403102068696,"female",14,34,"black" 225 | 60000,67.3996410432737,"male",14,63,"white" 226 | 40000,64.0222736096475,"female",13,44,"white" 227 | 43000,63.2261417340487,"female",12,38,"white" 228 | 45000,67.4942982199136,"female",16,34,"white" 229 | 6000,68.0021204266232,"female",18,39,"white" 230 | 8000,63.8579060945194,"female",10,82,"other" 231 | 20000,64.3950642363634,"female",13,39,"black" 232 | 17000,66.4390075663105,"male",12,23,"black" 233 | 2000,64.7653775643557,"female",12,32,"white" 234 | 65000,64.5385617208667,"male",12,28,"white" 235 | 50000,71.5859264181927,"male",12,41,"white" 236 | 11000,68.3482216782868,"female",12,38,"white" 237 | 35000,74.4332039365545,"male",18,30,"white" 238 | 27000,63.2176964336541,"male",12,33,"white" 239 | 3500,64.3143166177906,"female",12,61,"white" 240 | 42000,68.151459841989,"male",12,37,"white" 241 | 20000,67.4949548291042,"female",18,29,"white" 242 | 15000,67.3161722151563,"female",12,29,"white" 243 | 10000,72.9867232539691,"male",12,21,"white" 244 | 6000,70.4911553743295,"male",8,78,"white" 245 | 17000,64.8857527959626,"female",16,23,"hispanic" 246 | 35000,68.5404915455729,"male",16,65,"hispanic" 247 | 28000,76.6806674997788,"male",14,28,"white" 248 | 15000,67.6939624159131,"female",12,33,"white" 249 | 20000,61.971335722832,"female",17,24,"white" 250 | 20000,64.2127027346287,"female",12,29,"white" 251 | 10500,67.2224749971647,"male",12,42,"hispanic" 252 | 13000,69.9021423184313,"male",16,22,"white" 253 | 10000,61.7774477005005,"female",12,52,"white" 254 | 3000,63.0813513626345,"female",12,37,"white" 255 | 24000,62.3348689735867,"female",14,29,"white" 256 | 17000,68.695835353341,"female",13,35,"white" 257 | 11000,64.0980117693543,"female",12,48,"white" 258 | 32000,69.0340046833735,"female",14,40,"white" 259 | 17000,58.6603171806782,"female",15,26,"white" 260 | 3000,66.2262486482505,"female",12,35,"other" 261 | 2100,62.0912556687836,"female",12,21,"black" 262 | 3192,75.1384511068463,"male",11,34,"black" 263 | 17000,63.3142780221533,"female",17,26,"white" 264 | 30000,64.5540995923802,"female",13,28,"white" 265 | 15000,69.800360027235,"male",12,32,"white" 266 | 24000,67.84324762295,"female",16,42,"white" 267 | 10000,64.9500718824565,"female",14,67,"white" 268 | 50000,69.2183067407459,"male",8,53,"white" 269 | 50000,71.886122808326,"male",16,53,"white" 270 | 20000,63.5242558056489,"female",17,49,"white" 271 | 30000,62.6785580585711,"female",18,54,"hispanic" 272 | 22000,73.4739420006517,"female",14,45,"white" 273 | 27000,75.094072466949,"male",12,24,"white" 274 | 4000,64.7730634394102,"female",12,38,"white" 275 | 17500,66.2535254813265,"female",17,26,"white" 276 | 16500,66.393509085523,"female",14,28,"white" 277 | 28000,64.0032911614981,"female",16,39,"white" 278 | 52000,65.5739420785103,"female",18,50,"white" 279 | 15000,64.2761644755956,"female",16,29,"white" 280 | 19000,62.6466598398983,"female",13,32,"white" 281 | 27000,72.5597363815177,"male",12,23,"white" 282 | 15000,71.78231296991,"male",8,58,"white" 283 | 15000,71.5038585960865,"male",14,33,"white" 284 | 14500,64.1577520996798,"female",12,55,"white" 285 | 24000,64.2276872433722,"female",13,30,"white" 286 | 18000,67.7979812340345,"male",15,36,"white" 287 | 4000,62.2789568556473,"female",12,68,"white" 288 | 4000,68.5040957068559,"female",13,57,"white" 289 | 700,60.1126800563652,"female",12,36,"white" 290 | 24000,64.9793261792511,"female",12,91,"white" 291 | 27000,75.9695086975116,"male",12,39,"white" 292 | 12000,72.3279016197193,"female",12,35,"white" 293 | 22000,61.7656505128834,"female",18,47,"white" 294 | 30000,61.616401045816,"female",13,36,"white" 295 | 35000,70.5540779826697,"male",12,61,"white" 296 | 20000,74.0811951081268,"male",12,42,"white" 297 | 32000,65.4724173236173,"female",16,32,"white" 298 | 6000,63.3653120438103,"female",12,31,"other" 299 | 12000,66.850004237378,"female",12,39,"white" 300 | 10000,63.266094219638,"female",12,31,"white" 301 | 1000,64.7455061294604,"female",12,18,"white" 302 | 12000,63.5420606976841,"female",15,71,"white" 303 | 16000,64.923110146774,"female",12,36,"white" 304 | 25000,63.2420073475223,"female",16,33,"white" 305 | 25000,69.5245613094885,"female",12,27,"white" 306 | 32000,67.978094201535,"male",12,30,"white" 307 | 35000,66.5487370933406,"male",14,43,"white" 308 | 6000,64.5887038160581,"female",12,28,"white" 309 | 80000,68.7666858944576,"male",14,44,"white" 310 | 20000,68.0838865153491,"female",14,25,"white" 311 | 1000,65.8159135163296,"female",17,38,"white" 312 | 28000,71.4023760727141,"male",13,38,"hispanic" 313 | 26000,63.7635378786363,"male",16,23,"hispanic" 314 | 27000,73.5253833052702,"male",12,24,"white" 315 | 18000,61.9799861009233,"female",13,41,"white" 316 | 2000,65.2105206253473,"female",12,59,"white" 317 | 20000,69.3754682533909,"male",12,66,"white" 318 | 6000,66.0865610856563,"female",16,48,"white" 319 | 25000,66.5254419732373,"male",11,63,"white" 320 | 12000,73.172164720716,"male",12,29,"white" 321 | 12000,76.1848799777217,"male",12,57,"white" 322 | 30000,69.52562967618,"male",14,76,"white" 323 | 4000,62.8757120200898,"female",15,22,"black" 324 | 26000,62.7829133416526,"female",13,37,"black" 325 | 23000,70.0759173012339,"male",12,35,"black" 326 | 21000,71.0630765829701,"male",12,33,"white" 327 | 25000,65.2233837384265,"female",12,62,"white" 328 | 18000,70.380001677433,"male",16,75,"white" 329 | 4000,63.2472531853709,"female",13,44,"white" 330 | 23900,63.9208743951749,"female",12,22,"white" 331 | 35000,64.3294822513126,"female",18,40,"white" 332 | 26000,66.7303861079272,"male",14,30,"white" 333 | 25000,66.4904937171377,"male",16,36,"white" 334 | 23500,68.0189107442275,"female",13,27,"white" 335 | 12000,65.2252151621506,"female",12,22,"white" 336 | 15000,67.1242454897147,"female",12,20,"white" 337 | 3000,72.9358785133809,"male",17,23,"white" 338 | 6000,63.5796080143191,"female",12,67,"white" 339 | 14000,71.4477206908632,"male",12,69,"white" 340 | 15000,63.2831403270829,"female",16,31,"white" 341 | 175000,70.5895530292764,"male",16,48,"white" 342 | 1000,73.3709618267603,"male",18,25,"white" 343 | 10000,64.6888873104472,"female",14,63,"white" 344 | 45000,65.9230939771514,"male",13,82,"white" 345 | 15000,65.8483173938002,"female",12,81,"white" 346 | 20000,59.2028727594297,"female",13,41,"white" 347 | 35000,69.9901221392211,"male",16,30,"white" 348 | 40000,71.6656442810781,"male",16,28,"white" 349 | 35000,64.2018263619393,"female",12,72,"white" 350 | 50000,66.0645482349209,"female",16,54,"white" 351 | 1e+05,69.666884485865,"male",18,57,"white" 352 | 35000,68.5631622702349,"male",13,28,"white" 353 | 24000,67.7206132565625,"female",12,35,"white" 354 | 35000,73.8310985965654,"male",17,43,"white" 355 | 38000,72.5387801670004,"male",16,74,"white" 356 | 30000,67.2427707039751,"male",12,52,"white" 357 | 5000,63.9862840443384,"female",12,39,"hispanic" 358 | 148000,66.7401951407082,"male",18,38,"white" 359 | 30000,69.7732867500745,"male",12,32,"white" 360 | 6500,63.7568557977211,"female",15,31,"white" 361 | 3000,61.5594788861927,"female",16,37,"white" 362 | 23000,69.297169964062,"male",18,69,"white" 363 | 40000,68.4782089444343,"male",17,41,"white" 364 | 30000,72.1103680625092,"male",14,39,"white" 365 | 14000,63.1064126959536,"female",12,37,"white" 366 | 15000,68.7166826908942,"female",12,34,"white" 367 | 26000,64.0063688480295,"female",18,36,"white" 368 | 8000,71.0096353541594,"female",12,25,"white" 369 | 24000,63.8440190635156,"female",16,27,"black" 370 | 5124,66.1007056040689,"male",8,67,"white" 371 | 10000,60.9749902039766,"female",15,25,"white" 372 | 12000,67.7550969959702,"female",16,32,"white" 373 | 50000,68.4583113705739,"male",17,34,"white" 374 | 23000,63.803803373361,"female",13,26,"white" 375 | 40000,65.7088905379642,"male",14,34,"black" 376 | 6000,61.9315833549481,"female",13,26,"black" 377 | 5000,65.322573767975,"female",16,30,"black" 378 | 110000,65.9650380758103,"male",18,37,"white" 379 | 41000,72.0423596692272,"male",13,32,"hispanic" 380 | 23000,62.5702349038329,"female",13,78,"white" 381 | 21000,70.4314103806391,"male",12,23,"white" 382 | 4000,62.3213060542475,"female",12,29,"white" 383 | 25000,70.7082402152009,"male",12,36,"white" 384 | 30000,70.2775476609822,"male",18,46,"white" 385 | 14000,63.870679016225,"female",11,51,"white" 386 | 6000,63.477538905805,"female",12,35,"white" 387 | 14000,64.5934795753565,"female",12,46,"white" 388 | 43000,70.5134376552887,"male",12,27,"white" 389 | 25000,61.7005197918043,"female",15,33,"white" 390 | 40000,72.5534277544357,"male",12,66,"white" 391 | 65000,67.5873064631596,"male",17,40,"white" 392 | 16000,76.1518660350703,"male",15,32,"white" 393 | 8000,65.5777450613678,"female",12,71,"white" 394 | 20000,64.2291150880046,"female",15,39,"white" 395 | 14000,60.3136781475041,"female",14,72,"white" 396 | 45000,68.1374666159973,"male",12,74,"white" 397 | 8000,60.9448711504228,"female",11,72,"white" 398 | 12000,66.0223773396574,"male",12,28,"white" 399 | 8000,62.8853331326973,"female",14,31,"white" 400 | 16000,62.6724131535739,"female",15,32,"white" 401 | 6000,73.6875359923579,"male",15,73,"white" 402 | 19000,70.1019622746389,"male",12,32,"white" 403 | 21000,68.3032382049132,"female",13,39,"white" 404 | 43000,69.520183671033,"female",18,46,"white" 405 | 35000,68.7177843330428,"male",15,21,"white" 406 | 8000,70.4946535218041,"male",10,75,"white" 407 | 21000,62.7775964897592,"female",14,41,"white" 408 | 5800,65.1269648331217,"female",12,30,"white" 409 | 17000,69.3423146293499,"male",12,46,"white" 410 | 24000,67.5442495155148,"male",14,49,"white" 411 | 5000,62.3408116709907,"female",11,71,"white" 412 | 11000,66.1760971776675,"female",12,23,"white" 413 | 10000,65.4516244153492,"male",13,27,"white" 414 | 40000,69.7853576021735,"male",14,36,"white" 415 | 40000,70.4607855260838,"male",12,47,"white" 416 | 24000,65.754259346053,"female",14,29,"black" 417 | 24000,68.4906370725948,"male",16,26,"white" 418 | 20000,68.1368104501162,"male",16,33,"white" 419 | 60000,69.7440865891986,"male",18,50,"white" 420 | 11000,64.5567294817884,"female",13,47,"white" 421 | 5000,64.3914332657587,"female",15,40,"white" 422 | 27000,65.2990589516703,"female",16,30,"white" 423 | 89000,76.5377972417045,"male",16,41,"white" 424 | 40000,70.0242770011537,"male",14,28,"white" 425 | 15000,64.4558809872251,"female",16,26,"white" 426 | 1000,64.1782932023052,"female",14,20,"white" 427 | 22000,64.3725628065877,"female",12,60,"white" 428 | 12000,63.6814621235244,"female",8,48,"white" 429 | 22000,62.566208378179,"female",16,28,"white" 430 | 40000,57.5032186105382,"female",12,56,"black" 431 | 40000,62.0266192660201,"female",16,44,"white" 432 | 35000,64.4500544664916,"female",14,53,"hispanic" 433 | 7000,63.6364605613053,"female",12,28,"white" 434 | 14000,62.2320190872997,"female",12,37,"white" 435 | 15000,64.0130428457633,"female",12,56,"white" 436 | 6000,65.8874135119841,"female",13,34,"white" 437 | 11000,69.2944416587707,"female",12,41,"black" 438 | 10000,64.341004564194,"female",13,31,"white" 439 | 20000,70.703524782788,"male",14,41,"white" 440 | 7000,62.0891454792581,"female",12,73,"white" 441 | 38000,68.2998049755115,"male",9,46,"white" 442 | 29000,67.804394192528,"male",9,58,"white" 443 | 20000,61.7762710014358,"female",10,44,"white" 444 | 8000,62.512865383178,"female",12,57,"white" 445 | 36000,68.7313154179137,"male",16,51,"white" 446 | 1500,67.0463414881378,"female",12,44,"white" 447 | 42000,64.297104760306,"female",18,29,"white" 448 | 25000,70.3861901070923,"male",12,22,"white" 449 | 13000,68.9555682798382,"male",10,20,"white" 450 | 30000,69.2464014717843,"male",11,51,"black" 451 | 7000,68.5720231758896,"male",12,23,"white" 452 | 31000,59.8456649126019,"female",12,48,"black" 453 | 15000,66.4215014260262,"female",12,42,"black" 454 | 50000,66.6323809735477,"male",16,49,"white" 455 | 5000,66.249602062162,"male",15,20,"white" 456 | 600,70.2385899678338,"female",12,18,"black" 457 | 14000,64.4886081209406,"female",8,51,"black" 458 | 40000,59.9716670706403,"female",18,35,"other" 459 | 24000,68.2650016867556,"male",18,36,"white" 460 | 22000,72.7385042395908,"male",12,24,"black" 461 | 20000,71.8616003531497,"male",8,36,"white" 462 | 20112,63.7519255457446,"female",12,38,"white" 463 | 12000,67.3401537628379,"male",13,67,"white" 464 | 41000,67.2402495604474,"female",13,40,"white" 465 | 13000,71.4624311681837,"male",9,50,"black" 466 | 60000,72.7370847524144,"male",16,31,"white" 467 | 24000,70.2858346630819,"male",16,25,"white" 468 | 38000,70.0634253025055,"male",16,36,"white" 469 | 3000,71.1316877028439,"female",14,27,"white" 470 | 13000,65.9647994176485,"female",12,30,"white" 471 | 5000,74.8027268559672,"male",12,21,"white" 472 | 20000,60.2632444957271,"female",14,37,"white" 473 | 22000,72.4599404372275,"male",12,28,"white" 474 | 28000,74.7883400998544,"male",9,55,"black" 475 | 22000,59.8048176276498,"female",12,41,"white" 476 | 30000,73.4313811631873,"male",12,44,"black" 477 | 30000,64.5975232122,"female",12,32,"black" 478 | 30000,67.1116977867205,"male",16,31,"white" 479 | 32000,61.05399798695,"female",12,69,"white" 480 | 26000,69.2821339804213,"female",17,43,"white" 481 | 22000,64.4159848575946,"female",14,34,"white" 482 | 25000,70.3413790634368,"male",12,33,"white" 483 | 11000,67.632963493932,"female",10,24,"white" 484 | 13000,62.1886514150538,"female",12,53,"white" 485 | 10000,63.7878483103123,"female",15,42,"white" 486 | 12000,67.5814552542288,"female",12,45,"white" 487 | 7000,63.5153073596302,"female",11,64,"white" 488 | 57000,72.6402398094069,"male",14,37,"white" 489 | 36000,72.8246222566813,"male",16,37,"white" 490 | 29000,69.4074335524347,"male",14,29,"hispanic" 491 | 8000,68.291097125737,"female",13,19,"white" 492 | 3000,70.6452433068771,"male",11,18,"black" 493 | 20000,66.1345029571094,"female",16,41,"white" 494 | 33000,66.3732590912841,"male",12,57,"white" 495 | 15000,68.3001517369412,"female",12,68,"hispanic" 496 | 16000,70.2962766366545,"male",12,33,"white" 497 | 5000,61.8213356689084,"female",12,78,"white" 498 | 8000,65.7549999929033,"female",14,43,"white" 499 | 32000,63.0259912426118,"female",16,34,"black" 500 | 14500,74.5177943988238,"male",12,24,"white" 501 | 13000,66.5965384689625,"female",12,29,"white" 502 | 7000,62.6359764654189,"female",9,25,"white" 503 | 50000,64.7152633015066,"female",18,65,"black" 504 | 12000,69.2017171832267,"female",12,35,"black" 505 | 19000,71.4720795408357,"male",14,61,"white" 506 | 9000,61.9017791382503,"female",12,55,"white" 507 | 20000,64.7455073101446,"female",12,35,"black" 508 | 55000,71.7105198856443,"male",18,35,"hispanic" 509 | 10000,64.9090316372458,"female",12,40,"white" 510 | 13000,63.1541484838817,"female",12,19,"white" 511 | 20000,63.976770200301,"female",13,31,"white" 512 | 30000,71.5889868796803,"male",12,26,"white" 513 | 12000,63.5962560889311,"female",12,34,"white" 514 | 26000,70.0681019732729,"female",13,33,"white" 515 | 12500,64.974746490363,"female",12,27,"white" 516 | 8000,64.3137064622715,"female",12,29,"white" 517 | 15000,64.2090758709237,"female",16,32,"hispanic" 518 | 65000,66.9740025310311,"male",14,25,"white" 519 | 25000,73.1838126205839,"male",10,21,"white" 520 | 8000,72.5388661585748,"male",14,21,"hispanic" 521 | 15000,64.5050012296997,"male",14,21,"other" 522 | 12000,63.9310534698889,"female",16,40,"white" 523 | 35000,67.0820405418053,"female",13,37,"black" 524 | 40000,66.6112342663109,"male",16,31,"white" 525 | 29000,73.8956186361611,"male",12,22,"white" 526 | 15000,63.4426060875412,"female",13,31,"white" 527 | 20000,73.6886101709679,"male",12,36,"white" 528 | 3000,73.9111260052305,"male",6,62,"black" 529 | 1000,63.0871338781435,"female",16,19,"black" 530 | 8000,62.0363257317804,"female",11,23,"black" 531 | 5000,62.4524834766053,"female",12,18,"white" 532 | 25000,67.0378968592267,"female",16,27,"white" 533 | 20000,68.5933096033987,"male",12,57,"white" 534 | 30000,72.6742532416247,"male",12,34,"white" 535 | 12000,62.8712907247245,"female",12,35,"white" 536 | 10000,67.2233492950909,"female",14,32,"white" 537 | 16000,69.3906721475068,"male",12,19,"white" 538 | 45000,71.4133015288971,"male",12,29,"white" 539 | 40000,72.0859571339097,"male",14,54,"white" 540 | 25000,70.2147928397171,"male",14,81,"white" 541 | 19000,64.3032612581737,"female",14,52,"white" 542 | 17600,64.1306012659334,"female",16,30,"white" 543 | 7000,67.9111191499978,"male",12,67,"white" 544 | 30000,74.3458905031439,"male",12,32,"white" 545 | 18000,61.8189569027163,"female",11,47,"white" 546 | 25000,65.1286943771411,"female",16,47,"white" 547 | 6000,59.9612529284786,"female",5,62,"white" 548 | 70000,69.3867915708106,"male",18,42,"white" 549 | 15000,60.7515004030429,"female",16,34,"other" 550 | 25000,64.9323283280246,"female",17,33,"white" 551 | 35000,66.2033999038395,"female",16,28,"white" 552 | 18000,69.9158267362509,"male",16,24,"white" 553 | 28000,71.5657105306163,"male",15,30,"black" 554 | 15000,63.9053810059559,"female",11,21,"hispanic" 555 | 22000,71.3330611283891,"male",14,28,"hispanic" 556 | 35000,73.3903852005024,"male",12,30,"white" 557 | 18000,64.0379839160014,"female",15,46,"black" 558 | 35000,67.84231027239,"male",14,37,"white" 559 | 16400,64.2528219458181,"female",12,21,"black" 560 | 22000,65.6479450156912,"male",16,37,"black" 561 | 30000,66.5467691684607,"female",16,58,"white" 562 | 17000,64.1224241508171,"female",12,27,"hispanic" 563 | 25000,64.1105987930205,"female",14,36,"black" 564 | 10000,62.218656946905,"female",12,51,"white" 565 | 40000,68.9460160594899,"male",12,37,"white" 566 | 12500,63.2408815638628,"female",12,63,"white" 567 | 35000,72.3914105098229,"male",15,45,"white" 568 | 105000,74.5800505771767,"male",12,49,"white" 569 | 1e+05,69.5292017085012,"male",18,40,"white" 570 | 21000,69.3347594749648,"male",12,51,"white" 571 | 10000,64.017628835747,"female",14,56,"white" 572 | 33000,71.9366136612371,"male",12,26,"white" 573 | 26000,69.4623140250333,"male",18,25,"white" 574 | 60000,63.0790669277776,"female",10,78,"white" 575 | 18000,71.1143438261934,"male",16,45,"white" 576 | 15000,59.3417791726533,"female",8,61,"white" 577 | 5000,68.3148615625687,"male",13,20,"white" 578 | 60000,77.0512818135321,"male",17,42,"white" 579 | 12000,68.4196791467257,"female",14,69,"white" 580 | 28000,69.6720099465456,"male",18,38,"black" 581 | 42000,69.2819215462077,"male",18,43,"white" 582 | 2000,62.7389899722766,"female",12,33,"white" 583 | 20000,72.7946915561333,"male",18,33,"black" 584 | 28000,66.1267404174432,"male",15,40,"other" 585 | 10000,72.1921477608848,"male",17,62,"black" 586 | 31000,72.2243179453071,"male",12,31,"black" 587 | 17000,68.9843225260265,"female",13,37,"black" 588 | 16000,67.176553776022,"female",12,39,"white" 589 | 35000,65.6709538414143,"female",15,38,"white" 590 | 3000,67.3462496723514,"female",12,26,"white" 591 | 16000,67.5327790589072,"female",18,39,"white" 592 | 35000,64.5774896510411,"female",15,42,"black" 593 | 27000,61.5843523012009,"female",17,33,"black" 594 | 25000,69.3851196775213,"male",17,29,"white" 595 | 40000,69.6098164992873,"male",16,41,"white" 596 | 45000,66.0718277760316,"female",16,43,"white" 597 | 14000,65.8561824068893,"male",12,23,"white" 598 | 25000,66.3950547827408,"female",14,37,"white" 599 | 40000,71.8441534875892,"male",12,42,"white" 600 | 34000,68.8989319975954,"male",12,35,"white" 601 | 40000,65.7557774977759,"male",12,34,"white" 602 | 35000,69.4494557990693,"male",14,28,"white" 603 | 12000,60.1562983363401,"female",12,51,"hispanic" 604 | 30000,64.5687309347559,"female",17,43,"white" 605 | 23000,61.5879171171691,"female",12,40,"white" 606 | 2000,67.0797869774979,"female",12,30,"white" 607 | 20000,67.2121393748093,"male",14,25,"white" 608 | 10000,67.839941291837,"female",9,62,"black" 609 | 60000,65.6176809365861,"female",16,43,"black" 610 | 12000,74.2434706913773,"male",16,41,"black" 611 | 25000,65.4781301610637,"female",18,61,"white" 612 | 22000,62.8898836085573,"female",14,73,"black" 613 | 8000,68.1077901558019,"male",17,25,"white" 614 | 2000,66.3980563574005,"female",16,21,"white" 615 | 18600,65.4967782406602,"female",16,26,"white" 616 | 20000,61.5457959207706,"female",14,20,"white" 617 | 1e+05,72.6291592384223,"male",18,37,"white" 618 | 50000,61.8905792434234,"female",15,40,"white" 619 | 27000,69.8138147664722,"male",12,42,"white" 620 | 1000,58.2759423102252,"female",12,58,"black" 621 | 18000,68.3714694797527,"male",12,20,"white" 622 | 17000,67.3507021786645,"female",14,23,"white" 623 | 10000,63.8375116372481,"female",12,74,"white" 624 | 14000,70.3615257004276,"male",14,35,"white" 625 | 7200,72.495875000488,"male",14,66,"white" 626 | 33000,63.1919563515112,"female",17,39,"white" 627 | 23000,66.2642826058436,"male",12,34,"white" 628 | 10000,64.8832121312153,"female",12,41,"white" 629 | 22000,60.5863101528957,"male",12,24,"white" 630 | 13000,60.8170393912587,"female",12,19,"hispanic" 631 | 33000,67.2015290551353,"female",12,31,"white" 632 | 36000,73.1152228959836,"male",12,36,"white" 633 | 10000,70.5210414170288,"female",14,32,"black" 634 | 6000,64.4976611409802,"female",12,60,"white" 635 | 12000,66.6480302221607,"female",12,43,"white" 636 | 10000,62.071494508069,"female",11,47,"white" 637 | 21000,67.404314538464,"female",12,45,"white" 638 | 26000,68.6959036430344,"male",12,32,"white" 639 | 22000,66.0655468639452,"female",12,50,"black" 640 | 23000,66.184822211042,"female",15,54,"black" 641 | 20000,66.4444898909424,"male",15,24,"white" 642 | 10000,65.5093939006329,"female",13,38,"white" 643 | 15000,64.0647174362093,"female",12,71,"white" 644 | 7000,72.1181011961307,"male",14,24,"black" 645 | 15000,64.1390078028198,"female",12,38,"white" 646 | 26000,64.7516974899918,"female",16,34,"white" 647 | 10000,72.2032622217666,"male",11,31,"white" 648 | 3000,71.0060888936277,"male",14,20,"white" 649 | 27000,64.1949496320449,"female",17,41,"hispanic" 650 | 28000,63.6589782878291,"female",17,25,"white" 651 | 15000,66.8621347122826,"female",12,27,"white" 652 | 55000,75.1817034489941,"male",18,30,"white" 653 | 20000,65.8681115207728,"female",17,26,"hispanic" 654 | 8500,67.1426468736026,"female",12,44,"white" 655 | 30000,70.5824523905758,"male",16,30,"white" 656 | 20000,68.3542571100406,"female",12,31,"white" 657 | 22000,70.4405554183759,"male",6,75,"white" 658 | 25000,66.5050394192804,"male",16,26,"white" 659 | 3000,70.5076539909933,"male",8,22,"white" 660 | 16000,62.6682334686629,"female",12,49,"white" 661 | 10000,61.0443600511644,"female",12,39,"black" 662 | 15000,64.8650220427662,"female",12,28,"black" 663 | 28000,67.2457408662885,"male",12,46,"white" 664 | 31500,64.9386672431137,"male",14,35,"white" 665 | 95000,65.6895698199514,"male",18,52,"white" 666 | 38000,66.5123910873663,"male",12,40,"white" 667 | 30000,74.2172368587926,"male",12,41,"white" 668 | 35900,73.8027341163252,"male",16,42,"white" 669 | 12000,66.2829656125978,"female",13,22,"white" 670 | 10000,68.9307991340756,"female",16,25,"white" 671 | 45000,66.0970405936241,"female",18,44,"white" 672 | 40000,74.3638928704895,"male",16,56,"white" 673 | 21500,72.379488438135,"male",12,27,"white" 674 | 14000,65.6160315084271,"male",12,62,"white" 675 | 38000,66.5262881193776,"male",17,54,"other" 676 | 1000,64.7334522716701,"female",12,18,"white" 677 | 14000,66.3703414259944,"male",12,73,"white" 678 | 15000,64.5228529111482,"female",12,31,"white" 679 | 24000,67.8232622225769,"female",13,42,"white" 680 | 4500,64.1513329579029,"female",16,23,"white" 681 | 18000,64.3531124824658,"female",16,63,"white" 682 | 14000,63.3375678097364,"female",12,20,"white" 683 | 10000,68.9762672523502,"female",12,28,"white" 684 | 9500,67.4400808108039,"female",12,32,"white" 685 | 11000,62.9553020512685,"female",15,66,"white" 686 | 17000,66.8560475034174,"male",12,67,"white" 687 | 6000,59.8254362188745,"female",13,28,"white" 688 | 2500,61.858600725187,"female",11,58,"white" 689 | 40000,72.4413494009059,"male",16,41,"white" 690 | 25000,66.6046881866641,"male",16,39,"white" 691 | 28000,66.3967080917209,"female",15,60,"black" 692 | 33000,66.3894168355037,"female",12,45,"black" 693 | 4000,59.5719480910338,"female",8,64,"white" 694 | 4100,65.3356692250818,"male",16,30,"white" 695 | 25000,68.5846779118292,"female",12,82,"white" 696 | 32000,71.6611513153184,"male",12,28,"white" 697 | 13000,63.937327418942,"female",8,58,"white" 698 | 8000,64.4891305170022,"male",8,27,"hispanic" 699 | 17000,64.242999385111,"female",12,38,"white" 700 | 15000,66.7982664266601,"female",12,77,"white" 701 | 18000,65.9947133441456,"male",13,32,"white" 702 | 12000,73.0739032134879,"male",12,24,"white" 703 | 7000,73.8273312945385,"male",7,49,"white" 704 | 1200,64.8353945093695,"female",14,22,"white" 705 | 14000,63.1185053493828,"male",12,21,"white" 706 | 17000,63.4320272356272,"female",12,40,"white" 707 | 30000,66.3462946400978,"male",12,42,"white" 708 | 25000,69.919380646199,"male",12,53,"white" 709 | 22000,65.8685826384462,"female",12,33,"hispanic" 710 | 15000,63.4429433343466,"female",12,21,"white" 711 | 27000,73.0780679241288,"male",12,91,"white" 712 | 20000,63.017048513284,"female",16,26,"white" 713 | 9000,68.9243996194564,"female",11,34,"white" 714 | 17000,73.148689922411,"male",12,30,"white" 715 | 1800,67.7939508412965,"female",12,46,"white" 716 | 18000,63.6262521257158,"female",12,46,"white" 717 | 25000,62.5774941665586,"female",18,42,"white" 718 | 20000,70.1058165431023,"male",16,41,"black" 719 | 75000,64.3160878219642,"female",15,40,"white" 720 | 3500,65.7593461561482,"female",12,40,"white" 721 | 36000,60.857529477682,"female",12,71,"white" 722 | 30000,72.05727335345,"male",12,25,"white" 723 | 25000,64.5514886740129,"female",13,78,"white" 724 | 1000,64.247388292104,"female",14,26,"white" 725 | 60000,68.0236153220758,"male",12,66,"white" 726 | 35000,73.8918807953596,"male",13,76,"white" 727 | 9000,66.6339445114136,"male",13,33,"white" 728 | 35000,69.8652658255305,"male",9,84,"white" 729 | 11000,66.1165095556062,"female",10,58,"white" 730 | 12000,71.3463016329333,"male",12,52,"white" 731 | 30000,70.8830729103647,"male",12,43,"white" 732 | 19000,71.4718602164648,"male",7,57,"black" 733 | 9000,74.418115134351,"male",9,61,"white" 734 | 30000,74.6952897394076,"male",16,29,"white" 735 | 9000,71.9258100336883,"male",12,32,"white" 736 | 15000,65.8553886984009,"female",16,30,"hispanic" 737 | 8000,64.5297189562116,"female",12,31,"black" 738 | 10000,66.4925461856183,"female",10,75,"white" 739 | 33000,71.7065921928734,"male",12,37,"white" 740 | 12000,60.0943229161203,"female",12,28,"hispanic" 741 | 18000,63.972865117481,"female",15,37,"white" 742 | 30000,64.8197132351343,"female",13,61,"white" 743 | 12500,64.7122951860074,"female",12,32,"white" 744 | 10000,61.97447489365,"female",12,36,"black" 745 | 8500,68.2941417184193,"male",13,71,"black" 746 | 21000,73.4868731957395,"male",14,46,"black" 747 | 21000,63.9375187088735,"female",12,77,"white" 748 | 21000,68.2102016853169,"female",17,25,"white" 749 | 5000,66.1016368656419,"female",12,52,"white" 750 | 22000,71.2258106824011,"female",17,36,"white" 751 | 30000,72.7018498391844,"male",14,26,"white" 752 | 123000,61.4290825952776,"female",14,58,"white" 753 | 8000,63.247136201011,"female",9,45,"white" 754 | 2000,64.3680979916826,"female",9,25,"white" 755 | 7600,67.0414079946931,"female",6,62,"white" 756 | 10000,63.1525118022691,"female",12,25,"white" 757 | 35000,72.7074095846619,"male",12,48,"white" 758 | 15000,66.0758672375232,"female",16,57,"white" 759 | 4000,69.7555258856155,"female",12,22,"white" 760 | 16000,67.8910499149933,"male",8,24,"white" 761 | 200,66.8619089841377,"female",12,33,"white" 762 | 23000,74.1050473561045,"male",16,25,"white" 763 | 16000,63.6024392656982,"female",16,27,"white" 764 | 6000,60.207145865541,"female",12,49,"white" 765 | 600,59.4589273075107,"female",9,46,"white" 766 | 28000,74.5987680319231,"male",16,34,"other" 767 | 4000,65.9529423285276,"female",8,66,"white" 768 | 15000,64.1695527641568,"male",12,35,"white" 769 | 15000,71.2640982365701,"male",12,25,"white" 770 | 25000,63.125678841956,"female",12,30,"white" 771 | 15000,67.166294677183,"female",12,26,"white" 772 | 40000,68.5809043662157,"male",11,44,"white" 773 | 30000,70.3438334418461,"male",11,51,"white" 774 | 5000,66.3889410509728,"female",12,29,"white" 775 | 35000,73.5871822184417,"male",14,34,"white" 776 | 16000,64.7888168713544,"female",14,31,"white" 777 | 28000,63.5354872345924,"female",16,40,"white" 778 | 20000,67.6372160494793,"male",15,42,"white" 779 | 21000,65.6021221771371,"male",13,30,"white" 780 | 17000,68.8357962921727,"male",12,42,"black" 781 | 24000,59.9318950211164,"female",13,50,"white" 782 | 25000,60.7966029706877,"female",12,75,"white" 783 | 40000,75.0341391179245,"male",12,46,"white" 784 | 8000,63.9349564949516,"female",13,19,"white" 785 | 19000,62.7496165225748,"female",15,45,"hispanic" 786 | 45000,67.2227291113231,"female",16,69,"white" 787 | 5000,64.1016586939804,"male",17,33,"black" 788 | 24000,63.4339562803507,"female",14,40,"black" 789 | 5000,67.0714692301117,"female",14,19,"white" 790 | 33000,65.877951894654,"male",16,34,"white" 791 | 24000,65.2222937333863,"female",14,24,"white" 792 | 6000,62.642509753583,"female",13,23,"white" 793 | 90000,66.4362261574715,"female",14,55,"white" 794 | 57000,64.098001688486,"female",18,47,"white" 795 | 13800,70.7423235538881,"male",14,54,"white" 796 | 30000,71.2493104885798,"male",18,37,"white" 797 | 15000,71.7096099415794,"male",12,40,"white" 798 | 15000,59.6646015061997,"female",14,75,"white" 799 | 31000,69.7866513701156,"male",12,29,"white" 800 | 33000,73.997245200444,"male",17,40,"white" 801 | 30000,67.559160167817,"male",18,61,"white" 802 | 12000,74.3389886997174,"male",12,38,"white" 803 | 5000,75.0072131711058,"male",12,22,"white" 804 | 21000,68.1615817409474,"male",12,59,"white" 805 | 28000,62.5865481055807,"female",18,46,"white" 806 | 12000,72.0387520019431,"male",12,31,"white" 807 | 19000,64.4941375511698,"female",12,46,"white" 808 | 6000,62.6084156180732,"female",14,35,"white" 809 | 5300,65.9054290335625,"female",13,60,"white" 810 | 15000,60.8760118586943,"female",13,28,"white" 811 | 17000,73.1218881614041,"male",12,46,"white" 812 | 4700,65.5422751298174,"female",12,78,"black" 813 | 9500,62.0742737669498,"female",12,65,"white" 814 | 1700,64.5359115055762,"male",12,22,"white" 815 | 5400,62.3534984274302,"female",12,31,"white" 816 | 10000,68.1173621783964,"male",12,31,"white" 817 | 25000,58.8804178463761,"female",15,83,"white" 818 | 35000,68.421258529881,"female",16,43,"white" 819 | 28000,62.7864373757038,"female",18,44,"white" 820 | 42000,62.7600146299228,"female",12,40,"white" 821 | 45000,67.8270416911691,"male",12,58,"white" 822 | 55000,64.1576990317553,"female",12,51,"white" 823 | 36000,70.1055628673639,"female",16,30,"white" 824 | 25000,70.2716675787233,"male",10,31,"white" 825 | 19000,72.1889855356421,"male",12,28,"white" 826 | 38000,68.9013646366075,"male",11,50,"white" 827 | 15000,63.0725917625241,"female",14,37,"white" 828 | 4500,57.9729008327704,"female",5,85,"white" 829 | 96000,63.1198861969169,"female",14,27,"white" 830 | 11000,62.7055552257225,"female",12,47,"white" 831 | 9000,72.5743073981721,"male",15,34,"white" 832 | 5000,69.4136273902841,"female",14,24,"white" 833 | 50000,69.8250379797537,"male",12,51,"white" 834 | 6000,64.8970507050399,"female",13,44,"white" 835 | 1e+05,71.5157196354121,"male",13,22,"white" 836 | 16500,61.9161574428435,"female",13,46,"white" 837 | 32000,71.6078191050328,"male",14,40,"white" 838 | 30000,72.7596438566688,"male",18,41,"white" 839 | 10000,67.9116737351287,"female",16,42,"white" 840 | 15000,66.1322631591465,"female",12,19,"white" 841 | 6500,59.9059817993548,"female",8,83,"white" 842 | 26000,60.3074262724258,"female",18,63,"white" 843 | 17000,64.8763955656905,"female",12,59,"white" 844 | 22000,62.8054244727828,"female",18,59,"other" 845 | 10000,63.935229404131,"female",12,41,"white" 846 | 50000,70.5047459574416,"male",14,58,"white" 847 | 20000,67.1789318870287,"male",12,35,"white" 848 | 400,62.9028687588871,"female",12,31,"white" 849 | 16000,65.0806493791752,"female",14,59,"white" 850 | 10000,66.4265577252954,"female",12,66,"white" 851 | 14000,62.9400092116557,"female",13,58,"white" 852 | 5000,65.1997192925774,"female",15,20,"white" 853 | 40000,73.7885054210201,"male",16,34,"white" 854 | 5000,67.1885961014777,"female",13,55,"white" 855 | 25000,67.5455078897066,"female",17,47,"white" 856 | 12000,65.2562608933076,"female",12,51,"white" 857 | 58000,63.7021797280759,"female",16,34,"white" 858 | 18000,67.8346028642263,"female",16,26,"white" 859 | 1000,65.4882144497242,"male",12,18,"white" 860 | 21000,71.7643816049676,"male",17,47,"white" 861 | 11000,65.6980351780076,"male",12,62,"black" 862 | 13000,63.6610339356121,"female",12,36,"white" 863 | 20000,59.6348432512023,"female",16,88,"other" 864 | 25000,71.6911602092441,"male",12,35,"black" 865 | 600,63.515125651611,"female",12,43,"white" 866 | 25000,67.2818538290448,"male",14,26,"black" 867 | 36000,67.8466571427416,"male",12,28,"white" 868 | 15000,64.0557856648229,"female",13,33,"other" 869 | 3500,65.6233519639354,"female",12,51,"white" 870 | 19005,64.6128733549267,"female",16,34,"white" 871 | 62000,70.3626964199357,"male",14,54,"white" 872 | 25000,70.1358157664072,"male",12,42,"white" 873 | 50000,66.0388167561032,"male",12,52,"white" 874 | 40000,65.6676843368914,"male",12,61,"white" 875 | 26000,73.6820804609451,"male",18,26,"white" 876 | 22000,62.2342993137427,"female",12,48,"white" 877 | 21000,65.5804696667474,"female",17,39,"white" 878 | 6108,62.3429079591297,"female",12,65,"white" 879 | 30000,64.7166479658335,"female",18,64,"black" 880 | 6000,63.4164406165946,"female",12,78,"white" 881 | 27000,70.9338420419954,"male",16,29,"white" 882 | 4000,65.7846293421462,"female",16,42,"white" 883 | 4416,61.5215634717606,"female",6,72,"other" 884 | 5000,63.1392037631012,"female",10,87,"white" 885 | 45000,66.5699411761016,"male",18,40,"white" 886 | 18000,60.7626508467365,"female",14,45,"white" 887 | 6000,66.402412298834,"female",15,22,"white" 888 | 14000,72.400087579852,"male",12,24,"white" 889 | 35000,69.3262861608528,"female",14,24,"white" 890 | 15000,64.1480483349878,"female",16,29,"white" 891 | 12000,62.5025778540876,"female",12,29,"black" 892 | 1000,59.6361775987316,"female",12,47,"white" 893 | 32000,69.8460905931424,"male",15,33,"black" 894 | 1500,72.7996517899446,"male",12,19,"white" 895 | 3000,64.8741226505954,"female",16,23,"black" 896 | 35000,64.2753894163761,"female",12,42,"white" 897 | 70000,71.6051603020169,"male",15,48,"white" 898 | 21000,67.1320436862297,"female",16,28,"white" 899 | 50000,69.1055437102914,"male",11,18,"white" 900 | 15000,70.9007855823729,"male",9,21,"white" 901 | 9000,65.9926642058417,"female",8,35,"black" 902 | 10000,63.2155107557774,"female",14,25,"black" 903 | 30000,71.3728940815199,"male",12,47,"white" 904 | 16000,72.0787559053861,"male",14,21,"white" 905 | 20000,67.9392667280044,"male",12,51,"white" 906 | 1e+05,71.9471121339593,"male",17,54,"white" 907 | 10000,65.6624221764505,"female",12,43,"white" 908 | 35000,66.4707740144804,"male",14,63,"white" 909 | 7000,65.4276412578765,"female",16,31,"white" 910 | 8000,71.3595791575499,"male",14,27,"black" 911 | 11000,73.6992811185773,"male",10,50,"white" 912 | 25000,70.2095455599483,"male",9,47,"white" 913 | 25000,64.3359016389586,"female",14,45,"white" 914 | 30000,69.2357667284086,"male",14,48,"white" 915 | 48000,63.1680263262242,"female",18,34,"white" 916 | 17000,67.9717842901591,"female",12,46,"white" 917 | 26000,72.6362950555049,"male",16,24,"white" 918 | 10000,62.6456393257249,"female",12,61,"white" 919 | 60000,71.1519385273568,"male",18,53,"white" 920 | 22000,64.9445758110378,"female",18,29,"white" 921 | 6200,64.2271879205946,"female",13,83,"white" 922 | 24000,64.7468962415587,"female",16,32,"white" 923 | 20000,70.6991427598987,"male",14,40,"white" 924 | 7000,69.6152320383117,"female",14,30,"white" 925 | 30000,67.7026980684604,"female",16,48,"black" 926 | 23000,66.0932912498247,"female",18,28,"white" 927 | 20000,64.3995664981194,"female",12,40,"white" 928 | 3000,65.8801853761543,"female",16,29,"white" 929 | 30000,69.7354275647085,"male",16,41,"white" 930 | 12000,63.7924082893878,"female",14,23,"white" 931 | 40000,70.6079246331938,"male",12,38,"white" 932 | 15000,63.8364994900767,"female",14,23,"white" 933 | 36000,63.4133760286495,"female",16,45,"white" 934 | 10000,66.2372209748719,"female",12,53,"white" 935 | 13000,68.3807062353007,"female",14,48,"white" 936 | 10000,61.5242542498745,"female",12,27,"black" 937 | 30000,68.5324342199601,"male",12,37,"black" 938 | 23000,64.4645582907833,"male",13,32,"white" 939 | 20000,69.6098120477982,"male",17,68,"white" 940 | 19000,65.3707539255265,"female",13,82,"white" 941 | 20000,60.7510784952901,"male",11,66,"black" 942 | 28000,63.9936560648493,"male",14,63,"black" 943 | 13000,64.5811637383886,"female",10,80,"white" 944 | 12000,64.1389522859827,"male",12,75,"white" 945 | 20000,69.3012936029118,"male",11,23,"white" 946 | 25000,73.636581285391,"male",12,30,"white" 947 | 25000,68.1924304887652,"female",13,52,"white" 948 | 18000,66.5964593209792,"female",16,40,"white" 949 | 6000,61.8010745916981,"female",10,68,"white" 950 | 16000,72.2426441868301,"male",13,23,"white" 951 | 45000,73.4603414568119,"male",16,38,"white" 952 | 25000,69.8707578796893,"male",14,69,"white" 953 | 12000,63.5199660484213,"female",14,38,"white" 954 | 2000,68.2124335137196,"female",12,18,"white" 955 | 10000,62.9120654594153,"female",12,18,"white" 956 | 14000,70.7202568724751,"male",12,36,"white" 957 | 15000,63.7418124296237,"female",12,31,"white" 958 | 10000,60.3611078662798,"female",12,39,"white" 959 | 1200,65.7663173661567,"female",4,64,"white" 960 | 15000,58.9233640546445,"female",14,62,"white" 961 | 10000,63.1004373037722,"female",13,64,"white" 962 | 2000,66.2017662236467,"male",12,18,"white" 963 | 4000,65.4458502666093,"female",13,33,"white" 964 | 10000,64.3927082871087,"female",14,32,"white" 965 | 1500,65.7741802763194,"female",12,23,"white" 966 | 18000,65.5005826782435,"male",17,26,"hispanic" 967 | 4000,72.8974044681527,"male",15,24,"white" 968 | 28000,72.4473705240525,"male",16,26,"white" 969 | 10000,74.3262792169116,"female",14,22,"white" 970 | 3000,64.6559893963858,"female",16,22,"white" 971 | 12000,70.6120698328596,"male",12,21,"white" 972 | 19000,68.075676554814,"female",13,45,"white" 973 | 36000,70.4906637528911,"male",16,39,"white" 974 | 7000,64.2171314547304,"female",16,59,"white" 975 | 35000,58.7246838239953,"female",11,34,"white" 976 | 40000,67.9028802830726,"male",18,43,"white" 977 | 15000,67.9303369929548,"male",14,25,"white" 978 | 8000,68.8243652172387,"female",13,43,"white" 979 | 25000,69.4357436893042,"female",14,55,"white" 980 | 28000,75.2653238605708,"male",18,38,"white" 981 | 22000,69.1334203341976,"male",14,35,"white" 982 | 21500,72.045058819931,"male",13,24,"black" 983 | 3000,68.3367626713589,"female",12,23,"white" 984 | 23000,71.5395746233407,"male",13,28,"white" 985 | 18000,72.3549480997026,"male",12,73,"white" 986 | 20000,67.2974554330576,"male",16,71,"white" 987 | 16000,63.213942541508,"female",12,46,"hispanic" 988 | 15000,69.2180787411053,"male",12,26,"white" 989 | 53000,62.8764398118947,"female",17,32,"hispanic" 990 | 26000,72.3050277538132,"male",12,27,"white" 991 | 4000,65.4367829933763,"female",12,28,"other" 992 | 10000,72.6858264617622,"male",16,59,"white" 993 | 43000,69.1236804584041,"male",12,51,"white" 994 | 17000,68.8001233250834,"male",14,33,"other" 995 | 4000,61.497186410008,"female",12,38,"hispanic" 996 | 50000,73.1921341440175,"male",15,48,"white" 997 | 55000,66.8629599651322,"female",18,51,"white" 998 | 28000,63.0739348137286,"female",16,41,"white" 999 | 5000,62.1591371519025,"female",14,48,"white" 1000 | 18000,65.3974889595993,"female",13,49,"white" 1001 | 21000,71.5649013784714,"male",15,62,"hispanic" 1002 | 12000,67.1916023371741,"female",12,33,"white" 1003 | 33000,65.4967553981114,"female",16,62,"hispanic" 1004 | 50000,72.4262970278505,"male",13,64,"hispanic" 1005 | 6000,65.3883430580609,"female",9,74,"hispanic" 1006 | 16000,63.8168194582686,"female",14,59,"white" 1007 | 35000,68.2084198966622,"male",12,50,"white" 1008 | 25000,68.2921116016805,"female",12,43,"white" 1009 | 20000,76.3823589219246,"male",14,26,"white" 1010 | 18000,62.6169346834067,"female",12,36,"white" 1011 | 34000,74.3972181966528,"male",14,78,"white" 1012 | 25000,68.4759825065266,"male",16,25,"white" 1013 | 20000,72.0817594889086,"male",17,77,"white" 1014 | 33000,67.5683371408377,"male",12,69,"white" 1015 | 4000,64.5494288266636,"female",12,73,"white" 1016 | 20000,60.1043381178752,"female",8,77,"white" 1017 | 40000,72.3648484216537,"male",16,33,"white" 1018 | 14000,63.7268875539303,"female",14,40,"white" 1019 | 12000,68.0110671911389,"female",12,48,"white" 1020 | 25000,61.1469014864415,"female",12,31,"white" 1021 | 70000,67.0876459286083,"female",10,72,"white" 1022 | 38000,67.2036776759196,"female",17,55,"white" 1023 | 14000,63.0484166662209,"female",12,28,"white" 1024 | 15000,60.245397075545,"female",13,37,"white" 1025 | 17000,73.5644999817014,"male",16,31,"white" 1026 | 60000,68.8187892029528,"male",14,66,"white" 1027 | 15000,66.7472996192519,"female",15,69,"white" 1028 | 25000,64.9176344291773,"male",16,86,"white" 1029 | 18000,62.2089327827562,"male",12,63,"hispanic" 1030 | 70000,71.8215415803716,"male",18,47,"white" 1031 | 30000,64.5780329410918,"female",18,59,"white" 1032 | 8000,62.3622855951544,"female",12,51,"white" 1033 | 30000,70.9246247929987,"male",16,34,"white" 1034 | 27000,71.3594108270481,"male",14,32,"white" 1035 | 47000,70.0770235939417,"male",18,43,"white" 1036 | 12000,66.5548237608746,"male",12,22,"hispanic" 1037 | 24000,61.771557922475,"female",17,34,"white" 1038 | 13000,62.893870125059,"female",12,35,"hispanic" 1039 | 80000,60.8163495606277,"female",14,37,"white" 1040 | 5000,71.8125757370144,"male",12,18,"white" 1041 | 25000,62.5197184842546,"female",10,60,"white" 1042 | 28000,65.8338449902367,"male",12,44,"white" 1043 | 8000,64.1267211851664,"female",15,20,"white" 1044 | 10000,66.4337777358014,"female",13,51,"white" 1045 | 9000,68.261591857532,"female",14,41,"white" 1046 | 20000,59.5576235554181,"female",12,37,"white" 1047 | 12000,65.1892034471966,"male",12,71,"white" 1048 | 15000,64.7662005585153,"female",14,66,"white" 1049 | 20000,61.3360496822279,"female",14,36,"white" 1050 | 28000,63.9080300128553,"female",14,36,"white" 1051 | 265,65.9817171564791,"female",15,21,"white" 1052 | 35000,69.3529080820736,"male",14,74,"white" 1053 | 26000,65.9986882384401,"female",14,32,"hispanic" 1054 | 27000,66.64219578146,"female",17,34,"white" 1055 | 14000,68.3784564004745,"female",12,30,"white" 1056 | 32000,65.5163181156386,"male",16,33,"white" 1057 | 10000,69.0965938670561,"female",14,32,"white" 1058 | 7000,69.3243818427436,"male",16,30,"white" 1059 | 28000,71.012645190116,"male",17,46,"white" 1060 | 60000,73.8764566772152,"male",13,54,"white" 1061 | 12000,68.5399655033834,"male",4,62,"white" 1062 | 15000,75.1566600152291,"female",13,75,"white" 1063 | 15000,71.852082923986,"male",11,63,"white" 1064 | 26000,64.3878880525008,"female",15,32,"white" 1065 | 26000,71.6861465619877,"male",16,25,"hispanic" 1066 | 18720,62.7575686697382,"female",10,36,"black" 1067 | 12000,63.8068574673962,"female",12,73,"black" 1068 | 80000,70.4283587031532,"male",17,39,"white" 1069 | 48000,66.4148362849373,"female",13,39,"white" 1070 | 18000,62.4987126043998,"male",16,27,"other" 1071 | 85000,69.7308326894417,"male",15,65,"white" 1072 | 35000,63.64059109753,"female",12,47,"black" 1073 | 5000,68.703023284208,"male",16,22,"white" 1074 | 9000,64.1830050386488,"female",13,22,"hispanic" 1075 | 30000,67.135330461897,"female",16,27,"white" 1076 | 80000,71.6713333614171,"male",14,58,"white" 1077 | 35000,65.0663586272858,"female",16,32,"white" 1078 | 12000,63.3876880758908,"female",14,34,"white" 1079 | 2e+05,69.6627641320229,"male",18,34,"white" 1080 | 4000,64.2087081049103,"female",16,45,"white" 1081 | 2000,68.0492762625217,"male",12,18,"white" 1082 | 24000,65.9554566447623,"female",18,69,"white" 1083 | 2000,66.3163454956375,"male",15,23,"hispanic" 1084 | 15000,69.6893327571452,"male",17,30,"white" 1085 | 6000,62.2510343538597,"female",12,65,"white" 1086 | 5000,65.9161132201552,"male",12,75,"white" 1087 | 1500,66.4901054759976,"female",12,21,"hispanic" 1088 | 28000,63.5417566273827,"female",18,48,"white" 1089 | 9000,69.9164086368401,"female",12,35,"white" 1090 | 60000,74.1490991648752,"male",14,52,"white" 1091 | 1200,65.5004783079494,"male",12,19,"white" 1092 | 1400,61.643022906268,"female",3,64,"hispanic" 1093 | 7000,66.4333428095561,"female",13,43,"white" 1094 | 21000,62.2700157091022,"female",12,31,"white" 1095 | 44000,69.051778519759,"male",12,58,"white" 1096 | 29000,67.6997999884188,"male",16,36,"black" 1097 | 3000,71.8278490770608,"male",14,18,"hispanic" 1098 | 12000,64.3217025736813,"male",13,22,"black" 1099 | 20000,72.4729442561511,"male",12,28,"hispanic" 1100 | 1200,61.7206435871776,"female",5,73,"black" 1101 | 37000,73.7630088815931,"male",16,25,"white" 1102 | 8000,66.286688671913,"male",10,60,"other" 1103 | 35000,67.8921973421238,"male",16,30,"hispanic" 1104 | 25000,61.9455080477055,"male",14,37,"other" 1105 | 18000,71.1757074992638,"female",10,29,"white" 1106 | 30000,62.5213732633274,"female",16,36,"black" 1107 | 20000,69.244382064091,"male",18,69,"white" 1108 | 12000,71.2013267178554,"male",6,40,"hispanic" 1109 | 10000,65.9315819863696,"female",12,68,"white" 1110 | 18000,71.8991900344845,"male",14,48,"white" 1111 | 20000,72.1157822718378,"male",12,26,"black" 1112 | 31000,67.5458948353771,"female",16,43,"white" 1113 | 6000,63.5063350382261,"male",10,36,"hispanic" 1114 | 12000,69.8466383714695,"male",13,40,"white" 1115 | 13000,66.3597141015343,"female",16,33,"white" 1116 | 26000,66.5145817231387,"female",17,34,"white" 1117 | 15000,68.0651250174269,"female",11,31,"black" 1118 | 30000,63.7736498431768,"female",17,28,"white" 1119 | 2000,64.7048285887577,"female",14,41,"white" 1120 | 5000,69.9597212891094,"male",13,22,"other" 1121 | 53000,71.2688798767049,"female",14,26,"white" 1122 | 2000,61.8733625011519,"female",13,18,"white" 1123 | 25000,70.8569543124177,"male",17,29,"white" 1124 | 5000,74.306373890955,"male",12,18,"white" 1125 | 21000,64.2048052416649,"female",13,27,"white" 1126 | 17000,69.7473173518665,"female",15,27,"white" 1127 | 12000,64.0015858958941,"female",13,37,"white" 1128 | 42000,69.6259125994984,"male",14,44,"hispanic" 1129 | 21000,73.6652242378332,"male",12,33,"white" 1130 | 6000,62.7219388410449,"female",12,65,"hispanic" 1131 | 25000,73.5501890690066,"male",14,24,"white" 1132 | 3000,66.0887734561693,"female",14,19,"white" 1133 | 3600,65.3904778459109,"female",15,67,"white" 1134 | 4000,70.918904498918,"male",12,19,"white" 1135 | 20000,68.5242498472799,"male",14,58,"white" 1136 | 52000,60.2987912178505,"male",15,50,"white" 1137 | 60000,64.0108712252695,"female",12,43,"white" 1138 | 15000,63.8161697178148,"female",13,41,"white" 1139 | 90000,71.899810828967,"male",16,50,"white" 1140 | 26000,61.4121349141933,"female",14,65,"white" 1141 | 2000,68.6914339540526,"male",12,21,"white" 1142 | 16000,67.1103001579177,"female",12,61,"white" 1143 | 24000,64.5685758825857,"female",11,27,"hispanic" 1144 | 15000,68.2617367554922,"male",16,28,"hispanic" 1145 | 42000,74.4245239794254,"male",17,43,"white" 1146 | 10000,65.193329023663,"female",12,43,"white" 1147 | 17000,70.7012990934309,"male",13,36,"hispanic" 1148 | 30000,64.4397996941116,"female",14,34,"white" 1149 | 32000,68.8616253093351,"female",17,37,"white" 1150 | 36000,64.3867780820001,"female",17,34,"hispanic" 1151 | 10000,71.9019580858294,"male",13,20,"hispanic" 1152 | 20000,62.5528852450661,"female",15,29,"white" 1153 | 24000,64.8860679448117,"female",12,29,"white" 1154 | 17000,71.6562112062238,"male",12,32,"white" 1155 | 23000,65.1517127505504,"female",14,48,"white" 1156 | 25000,64.2804495175369,"female",12,33,"white" 1157 | 50000,70.883407385787,"male",12,50,"white" 1158 | 20000,61.7666152946185,"female",12,30,"white" 1159 | 30000,66.2700330547523,"female",16,33,"white" 1160 | 7000,64.0714213424362,"female",10,39,"white" 1161 | 7000,66.8059860768262,"male",10,78,"white" 1162 | 30000,68.0765619871672,"male",11,32,"white" 1163 | 3000,65.7518909669016,"female",12,24,"white" 1164 | 20000,66.0149387496058,"female",14,43,"white" 1165 | 40000,65.7654669401236,"female",16,59,"white" 1166 | 10000,66.7477138740942,"male",12,77,"white" 1167 | 16000,66.1408868134022,"male",12,37,"white" 1168 | 11000,63.3003660957329,"female",9,51,"white" 1169 | 16000,67.6192820454016,"female",13,43,"white" 1170 | 18000,70.4298700790387,"male",12,27,"white" 1171 | 12000,62.6247821394354,"female",16,26,"white" 1172 | 4000,69.9880635980517,"male",14,21,"black" 1173 | 60000,71.8193245609291,"male",12,45,"white" 1174 | 43000,74.7719165445305,"male",17,40,"white" 1175 | 31000,61.9655980055686,"female",14,39,"white" 1176 | 50000,68.2104231561534,"female",17,39,"white" 1177 | 27000,68.0493458602577,"female",14,29,"white" 1178 | 30000,70.4907549635973,"male",17,56,"white" 1179 | 12000,73.3832055553794,"male",13,21,"black" 1180 | 20000,62.1371321463957,"female",17,30,"white" 1181 | 15000,59.7762898653746,"female",12,76,"black" 1182 | 25000,64.1596476426348,"female",16,37,"other" 1183 | 2000,60.1970994099975,"female",6,67,"hispanic" 1184 | 3000,73.2652135535609,"male",15,20,"hispanic" 1185 | 110000,66.3120350011159,"female",18,48,"other" 1186 | 55000,68.9958895829041,"male",18,71,"white" 1187 | 58000,70.3433698278386,"male",18,53,"white" 1188 | 10000,70.0562756971922,"female",16,36,"white" 1189 | 19000,72.1657330563758,"male",12,29,"white" 1190 | 15000,61.1357995311264,"female",18,82,"white" 1191 | 8000,63.6641635315027,"female",12,33,"white" 1192 | 60000,71.9258358024526,"male",12,50,"white" 1193 | 6000,68.3684862144291,"male",12,27,"white" 1194 | --------------------------------------------------------------------------------