Copy disabled (too large)
Download .txt
Showing preview only (84,233K chars total). Download the full file to get everything.
Repository: DS-100/textbook
Branch: master
Commit: 8c08ee36f234
Files: 368
Total size: 113.7 MB
Directory structure:
gitextract_rwt56aci/
├── .envrc
├── .gitattributes
├── .github/
│ └── workflows/
│ ├── check_build.yml
│ └── deploy.yml
├── .gitignore
├── LICENSE.md
├── Makefile
├── README.md
├── SETUP.md
├── content/
│ ├── _config.yml
│ ├── _static/
│ │ ├── custom.css
│ │ └── custom.js
│ ├── _toc.yml
│ ├── additional_resources.md
│ ├── ch/
│ │ ├── 01/
│ │ │ ├── lifecycle_cycle.ipynb
│ │ │ ├── lifecycle_intro.ipynb
│ │ │ ├── lifecycle_map.ipynb
│ │ │ └── lifecycle_summary.ipynb
│ │ ├── 02/
│ │ │ ├── data_scope_accuracy.ipynb
│ │ │ ├── data_scope_big_data_hubris.ipynb
│ │ │ ├── data_scope_construct.ipynb
│ │ │ ├── data_scope_exercises.ipynb
│ │ │ ├── data_scope_intro.ipynb
│ │ │ ├── data_scope_natural.ipynb
│ │ │ ├── data_scope_protocols.ipynb
│ │ │ ├── data_scope_summary.ipynb
│ │ │ ├── figures/
│ │ │ │ └── ConstructDesignsRe tangles.pptx
│ │ │ └── thirtyminutePM25.csv
│ │ ├── 03/
│ │ │ ├── data/
│ │ │ │ ├── pm30.csv
│ │ │ │ └── purpleAir30minsample.csv
│ │ │ ├── theory_election.ipynb
│ │ │ ├── theory_exercises.ipynb
│ │ │ ├── theory_intro.ipynb
│ │ │ ├── theory_measurement_error.ipynb
│ │ │ ├── theory_prob_dist.ipynb
│ │ │ ├── theory_probability.ipynb
│ │ │ ├── theory_random_assignment.ipynb
│ │ │ ├── theory_sampling_variation.ipynb
│ │ │ ├── theory_summary.ipynb
│ │ │ ├── theory_urn.ipynb
│ │ │ └── theory_vaccine_efficacy.ipynb
│ │ ├── 04/
│ │ │ ├── modeling_exercises.ipynb
│ │ │ ├── modeling_intro.ipynb
│ │ │ ├── modeling_loss_functions.ipynb
│ │ │ ├── modeling_simple.ipynb
│ │ │ └── modeling_summary.ipynb
│ │ ├── 05/
│ │ │ ├── BusDiagram.pptx
│ │ │ ├── bus_clean.ipynb
│ │ │ ├── bus_eda.ipynb
│ │ │ ├── bus_exercises.ipynb
│ │ │ ├── bus_intro.ipynb
│ │ │ ├── bus_modeling.ipynb
│ │ │ ├── bus_scope.ipynb
│ │ │ ├── bus_summary.ipynb
│ │ │ └── cycle_case_study_intro.ipynb
│ │ ├── 06/
│ │ │ ├── pandas_aggregating.ipynb
│ │ │ ├── pandas_exercises.ipynb
│ │ │ ├── pandas_intro.ipynb
│ │ │ ├── pandas_joining.ipynb
│ │ │ ├── pandas_other_reps.ipynb
│ │ │ ├── pandas_subsetting.ipynb
│ │ │ ├── pandas_summary.ipynb
│ │ │ └── pandas_transforming.ipynb
│ │ ├── 07/
│ │ │ ├── sql_aggregating.ipynb
│ │ │ ├── sql_exercises.ipynb
│ │ │ ├── sql_intro.ipynb
│ │ │ ├── sql_joining.ipynb
│ │ │ ├── sql_subsetting.ipynb
│ │ │ ├── sql_summary.ipynb
│ │ │ └── sql_transforming.ipynb
│ │ ├── 08/
│ │ │ ├── files_command_line.ipynb
│ │ │ ├── files_datasets.ipynb
│ │ │ ├── files_encoding.ipynb
│ │ │ ├── files_formats.ipynb
│ │ │ ├── files_granularity.ipynb
│ │ │ ├── files_intro.ipynb
│ │ │ ├── files_size.ipynb
│ │ │ └── files_summary.ipynb
│ │ ├── 09/
│ │ │ ├── wrangling_checks.ipynb
│ │ │ ├── wrangling_co2.ipynb
│ │ │ ├── wrangling_intro.ipynb
│ │ │ ├── wrangling_missing.ipynb
│ │ │ ├── wrangling_restaurants.ipynb
│ │ │ ├── wrangling_structure.ipynb
│ │ │ ├── wrangling_summary.ipynb
│ │ │ └── wrangling_transformations.ipynb
│ │ ├── 10/
│ │ │ ├── eda_distributions.ipynb
│ │ │ ├── eda_example.ipynb
│ │ │ ├── eda_feature_types.ipynb
│ │ │ ├── eda_guidelines.ipynb
│ │ │ ├── eda_intro.ipynb
│ │ │ ├── eda_multi.ipynb
│ │ │ ├── eda_relationships.ipynb
│ │ │ └── eda_summary.ipynb
│ │ ├── 11/
│ │ │ ├── data/
│ │ │ │ ├── Berkeley_PD_-_Calls_for_Service.csv
│ │ │ │ ├── babies.data
│ │ │ │ ├── babies.readme
│ │ │ │ ├── babies23.data
│ │ │ │ ├── calls.csv
│ │ │ │ ├── cvdow.csv
│ │ │ │ ├── planets.data
│ │ │ │ ├── plannedparenthood.csv
│ │ │ │ ├── stops.csv
│ │ │ │ ├── stops.json
│ │ │ │ └── voteCA2016.csv
│ │ │ ├── figures/
│ │ │ │ └── threePalettes.pptx
│ │ │ ├── viz_comparisons.ipynb
│ │ │ ├── viz_context.ipynb
│ │ │ ├── viz_data_design.ipynb
│ │ │ ├── viz_intro.ipynb
│ │ │ ├── viz_other_tools.ipynb
│ │ │ ├── viz_plotly.ipynb
│ │ │ ├── viz_scale.ipynb
│ │ │ ├── viz_smoothing.ipynb
│ │ │ └── viz_summary.ipynb
│ │ ├── 12/
│ │ │ ├── pa_cleaning_aqs.ipynb
│ │ │ ├── pa_cleaning_purpleair.ipynb
│ │ │ ├── pa_collocated.ipynb
│ │ │ ├── pa_conclusion.ipynb
│ │ │ ├── pa_eda.ipynb
│ │ │ ├── pa_exercises.ipynb
│ │ │ ├── pa_intro.ipynb
│ │ │ ├── pa_modeling.ipynb
│ │ │ └── pa_scope.ipynb
│ │ ├── 13/
│ │ │ ├── text_examples.ipynb
│ │ │ ├── text_exercises.ipynb
│ │ │ ├── text_intro.ipynb
│ │ │ ├── text_regex.ipynb
│ │ │ ├── text_sotu.ipynb
│ │ │ ├── text_strings.ipynb
│ │ │ └── text_summary.ipynb
│ │ ├── 14/
│ │ │ ├── data/
│ │ │ │ ├── catalog.xml
│ │ │ │ └── js_ex/
│ │ │ │ ├── epa_aqi_samp.json
│ │ │ │ ├── epa_col.json
│ │ │ │ ├── epa_row.json
│ │ │ │ ├── epa_val.json
│ │ │ │ └── ex.json
│ │ │ ├── figures/
│ │ │ │ ├── JSON-diagram.pptx
│ │ │ │ ├── XPath.pptx
│ │ │ │ └── netCDF.pptx
│ │ │ ├── web_html.ipynb
│ │ │ ├── web_http.ipynb
│ │ │ ├── web_intro.ipynb
│ │ │ ├── web_json.ipynb
│ │ │ ├── web_netCDF.ipynb
│ │ │ ├── web_rest.ipynb
│ │ │ └── web_summary.ipynb
│ │ ├── 15/
│ │ │ ├── linear_case.ipynb
│ │ │ ├── linear_categorical.ipynb
│ │ │ ├── linear_exercises.ipynb
│ │ │ ├── linear_feature_eng.ipynb
│ │ │ ├── linear_fitting.ipynb
│ │ │ ├── linear_intro.ipynb
│ │ │ ├── linear_multi.ipynb
│ │ │ ├── linear_multi_fit.ipynb
│ │ │ ├── linear_pa.ipynb
│ │ │ ├── linear_simple.ipynb
│ │ │ ├── linear_simple_fit.ipynb
│ │ │ ├── linear_summary.ipynb
│ │ │ ├── linear_tips.ipynb
│ │ │ └── mobility.csv
│ │ ├── 16/
│ │ │ ├── figures/
│ │ │ │ └── ModelBias-Variance.pptx
│ │ │ ├── ms_cv.ipynb
│ │ │ ├── ms_intro.ipynb
│ │ │ ├── ms_overfitting.ipynb
│ │ │ ├── ms_regularization.ipynb
│ │ │ ├── ms_risk.ipynb
│ │ │ ├── ms_summary.ipynb
│ │ │ └── ms_train_test.ipynb
│ │ ├── 17/
│ │ │ ├── ImagesForTriptych.R
│ │ │ ├── Triptych.pptx
│ │ │ ├── data/
│ │ │ │ └── bootstrapped_theta.csv
│ │ │ ├── inf_pred_gen_CI.ipynb
│ │ │ ├── inf_pred_gen_Exercises.ipynb
│ │ │ ├── inf_pred_gen_HT.ipynb
│ │ │ ├── inf_pred_gen_PI.ipynb
│ │ │ ├── inf_pred_gen_boot.ipynb
│ │ │ ├── inf_pred_gen_dist.ipynb
│ │ │ ├── inf_pred_gen_intro.ipynb
│ │ │ ├── inf_pred_gen_prob.ipynb
│ │ │ └── inf_pred_gen_summary.ipynb
│ │ ├── 18/
│ │ │ ├── donkey_clean.ipynb
│ │ │ ├── donkey_eda.ipynb
│ │ │ ├── donkey_exercises.ipynb
│ │ │ ├── donkey_intro.ipynb
│ │ │ ├── donkey_model.ipynb
│ │ │ ├── donkey_scope.ipynb
│ │ │ └── donkey_summary.ipynb
│ │ ├── 19/
│ │ │ ├── class_dr.ipynb
│ │ │ ├── class_example.ipynb
│ │ │ ├── class_intro.ipynb
│ │ │ ├── class_log_model.ipynb
│ │ │ ├── class_loss.ipynb
│ │ │ ├── class_pred.ipynb
│ │ │ └── class_summary.ipynb
│ │ ├── 20/
│ │ │ ├── gd_alternative.ipynb
│ │ │ ├── gd_basics.ipynb
│ │ │ ├── gd_convex.ipynb
│ │ │ ├── gd_example.ipynb
│ │ │ ├── gd_intro.ipynb
│ │ │ └── gd_summary.ipynb
│ │ ├── 21/
│ │ │ ├── fake_news_data.ipynb
│ │ │ ├── fake_news_exploring.ipynb
│ │ │ ├── fake_news_intro.ipynb
│ │ │ ├── fake_news_modeling.ipynb
│ │ │ ├── fake_news_question.ipynb
│ │ │ └── fake_news_summary.ipynb
│ │ ├── a01/
│ │ │ └── prob_review.ipynb
│ │ ├── a02/
│ │ │ └── vector_space_review.ipynb
│ │ ├── a03/
│ │ │ ├── StudentRatingsData.csv
│ │ │ ├── baby.csv
│ │ │ ├── duncan.csv
│ │ │ ├── hyp_intro.ipynb
│ │ │ ├── hyp_introduction.ipynb
│ │ │ ├── hyp_introduction_part2.ipynb
│ │ │ ├── ilec.csv
│ │ │ └── raw_anonymized_data.csv
│ │ ├── a04/
│ │ │ ├── ref_intro.ipynb
│ │ │ ├── ref_matplotlib.ipynb
│ │ │ ├── ref_pandas.ipynb
│ │ │ ├── ref_seaborn.ipynb
│ │ │ └── ref_sklearn.ipynb
│ │ └── old_pages/
│ │ ├── a05/
│ │ │ ├── bias_cv.ipynb
│ │ │ ├── bias_intro.ipynb
│ │ │ ├── bias_modeling.ipynb
│ │ │ ├── bias_risk.ipynb
│ │ │ └── icecream.csv
│ │ ├── a06/
│ │ │ ├── reg_intro.ipynb
│ │ │ ├── reg_intuition.ipynb
│ │ │ ├── reg_lasso.ipynb
│ │ │ ├── reg_ridge.ipynb
│ │ │ ├── water.csv
│ │ │ └── water_large.csv
│ │ ├── a07/
│ │ │ ├── repl_intro.ipynb
│ │ │ └── repl_phacking.ipynb
│ │ ├── classification_regularization.ipynb
│ │ ├── cleaning/
│ │ │ ├── cleaning_calls.ipynb
│ │ │ ├── cleaning_faithfulness.ipynb
│ │ │ ├── cleaning_granularity.ipynb
│ │ │ ├── cleaning_scope.ipynb
│ │ │ ├── cleaning_stops.ipynb
│ │ │ ├── cleaning_structure.ipynb
│ │ │ └── cleaning_temp.ipynb
│ │ ├── data_design/
│ │ │ ├── design_data.ipynb
│ │ │ ├── design_dewey_truman.ipynb
│ │ │ ├── design_intro.ipynb
│ │ │ ├── design_sampling.ipynb
│ │ │ ├── design_srs_vs_big_data.ipynb
│ │ │ └── srs_big_simulations.csv
│ │ ├── inference/
│ │ │ ├── StudentRatingsData.csv
│ │ │ ├── baby.csv
│ │ │ ├── hyp_intro.ipynb
│ │ │ ├── hyp_introduction.ipynb
│ │ │ ├── hyp_introduction_part2.ipynb
│ │ │ ├── hyp_studentized.ipynb
│ │ │ ├── ilec.csv
│ │ │ └── raw_anonymized_data.csv
│ │ ├── mult_inference.ipynb
│ │ ├── pca/
│ │ │ ├── child_data.csv
│ │ │ ├── child_mortality_0_5_year_olds_dying_per_1000_born.csv
│ │ │ ├── children_per_woman_total_fertility.csv
│ │ │ ├── ds100_utils.py
│ │ │ ├── fat.dat.txt
│ │ │ ├── hongkong_height_weight.csv
│ │ │ ├── legislators-current.yaml
│ │ │ ├── legislators.csv
│ │ │ ├── pca_dims.ipynb
│ │ │ ├── pca_in_practice.ipynb
│ │ │ ├── pca_intro.ipynb
│ │ │ ├── pca_svd.ipynb
│ │ │ ├── rectangle_data.csv
│ │ │ ├── vote_pivot.csv
│ │ │ └── votes.csv
│ │ ├── police/
│ │ │ ├── police_calls.ipynb
│ │ │ └── police_stops.ipynb
│ │ ├── sql/
│ │ │ ├── sql_basics.ipynb
│ │ │ ├── sql_joins.ipynb
│ │ │ └── sql_rdbms.ipynb
│ │ └── viz/
│ │ ├── viz_matplotlib.ipynb
│ │ ├── viz_philosophy.ipynb
│ │ ├── viz_principles.ipynb
│ │ ├── viz_principles_2.ipynb
│ │ ├── viz_qualitative.ipynb
│ │ └── viz_quantitative.ipynb
│ ├── data_sources.md
│ ├── datasets/
│ │ ├── 100m_sprint.csv
│ │ ├── BLS_Ed_Inc.csv
│ │ ├── CAIT_Top14_CO2_Ctries.csv
│ │ ├── DAWN-Data.txt
│ │ ├── SF_Restaurant_Inspections/
│ │ │ ├── businesses.csv
│ │ │ ├── inspections.csv
│ │ │ ├── legend.csv
│ │ │ └── violations.csv
│ │ ├── Wikipedia.csv
│ │ ├── WikipediaExp.csv
│ │ ├── akc.csv
│ │ ├── all_dogs.csv
│ │ ├── babynames.csv
│ │ ├── black_spruce.csv
│ │ ├── census_regions.csv
│ │ ├── cherryBlossomMen.csv
│ │ ├── co2_by_country.csv
│ │ ├── co2_mm_mlo.txt
│ │ ├── crabs.data
│ │ ├── dogs.csv
│ │ ├── dogs43.csv
│ │ ├── donkeys.csv
│ │ ├── duncan.csv
│ │ ├── earnings2014.csv
│ │ ├── earnings2020.csv
│ │ ├── fake_news/
│ │ │ ├── 01_make_csv.ipynb
│ │ │ ├── 02_modeling.ipynb
│ │ │ ├── 03_eda.ipynb
│ │ │ ├── fake_news.csv
│ │ │ └── fake_news_training.csv
│ │ ├── gft.csv
│ │ ├── market-analysis.csv
│ │ ├── nba-2022.csv
│ │ ├── nyt_names.csv
│ │ ├── opportunity/
│ │ │ ├── README.md
│ │ │ ├── mobility.csv
│ │ │ ├── online_data_tables.xls
│ │ │ ├── onlinedata1.dta
│ │ │ ├── onlinedata2.dta
│ │ │ ├── onlinedata3.dta
│ │ │ ├── onlinedata4.dta
│ │ │ ├── onlinedata5.dta
│ │ │ ├── onlinedata6.dta
│ │ │ ├── onlinedata7.dta
│ │ │ └── onlinedata8.dta
│ │ ├── purpleAir2minSample.csv
│ │ ├── purpleAirMeasurementError.csv
│ │ ├── purpleair_study/
│ │ │ ├── aqs_06-067-0010.csv
│ │ │ ├── cleaned_purpleair_aqs/
│ │ │ │ ├── Fig1.csv
│ │ │ │ ├── Fig4.csv
│ │ │ │ ├── FigS1_IA.csv
│ │ │ │ ├── Full24hrdataset.csv
│ │ │ │ ├── README.txt
│ │ │ │ ├── datadictionary_UScorrection_210408_rev3.docx
│ │ │ │ └── withheldfinaldataset_Fig7.csv
│ │ │ ├── list_of_aqs_sites.csv
│ │ │ ├── list_of_purpleair_sensors.json
│ │ │ ├── matched_pa_aqs.csv
│ │ │ └── purpleair_AMTS/
│ │ │ ├── AMTS_TESTING (outside) (38.568404 -121.493163) Primary Real Time 05_20_2018 12_29_2019.csv
│ │ │ ├── AMTS_TESTING (outside) (38.568404 -121.493163) Secondary Real Time 05_20_2018 12_29_2019.csv
│ │ │ ├── AMTS_TESTING B (undefined) (38.568404 -121.493163) Primary Real Time 05_20_2018 12_29_2019.csv
│ │ │ └── AMTS_TESTING B (undefined) (38.568404 -121.493163) Secondary Real Time 05_20_2018 12_29_2019.csv
│ │ ├── seattle_bus_times.csv
│ │ ├── seattle_bus_times_NC.csv
│ │ ├── sfhousing.csv
│ │ ├── snowy_plover.csv
│ │ ├── stateoftheunion1790-2022.txt
│ │ └── utilities.csv
│ ├── intro.md
│ ├── notation.md
│ ├── preface.md
│ └── prereqs.md
├── environment.yml
├── mypy.ini
├── pyproject.toml
├── requirements.txt
├── scripts/
│ ├── create_babynames_csv.py
│ ├── download_aqs_data.py
│ ├── migrate_hidden_tags.py
│ ├── migrate_starter_code.py
│ └── renumber_chapters.py
├── starter.ipynb
└── textbook_utils.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .envrc
================================================
dotenv_if_exists secrets.env
================================================
FILE: .gitattributes
================================================
content/datasets/**/* filter=lfs diff=lfs merge=lfs -text
================================================
FILE: .github/workflows/check_build.yml
================================================
name: check_build
on:
# Trigger the workflow on push to master branch
pull_request:
branches:
- master
# This job installs dependencies and builds the book
jobs:
build-book:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Install dependencies
- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: "3.9"
- name: Upgrade pip
run: |
# install pip=>20.1 to use "pip cache dir"
python3 -m pip install --upgrade pip
- name: Get pip cache dir
id: pip-cache
run: echo "::set-output name=dir::$(pip cache dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
python3 -m pip install -r ./requirements.txt
# Build the book
- name: Build the book
run: |
jupyter-book build content
================================================
FILE: .github/workflows/deploy.yml
================================================
name: deploy
on:
# Trigger the workflow on push to master branch
push:
branches:
- master
# This job installs dependencies, build the book, and pushes it to `gh-pages`
jobs:
build-and-deploy-book:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Install dependencies
- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: "3.9"
- name: Upgrade pip
run: |
# install pip=>20.1 to use "pip cache dir"
python3 -m pip install --upgrade pip
- name: Get pip cache dir
id: pip-cache
run: echo "::set-output name=dir::$(pip cache dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
python3 -m pip install -r ./requirements.txt
# Build the book
- name: Build the book
run: |
jupyter-book build content
# Deploy the book's HTML to gh-pages branch
- name: GitHub Pages action
uses: peaceiris/actions-gh-pages@v3.6.1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: content/_build/html
cname: learningds.org
================================================
FILE: .gitignore
================================================
##############################################################################
# Custom ignores
##############################################################################
codebook.db
_build
# API keys
secrets.env
# Ignore auto-generated references.bib file (jupyter-book creates this while
# building)
/references.bib
# Ignore scratchpad notebook
/scratch.ipynb
/.virtual_documents
##############################################################################
# Auto-generated ignores
##############################################################################
# Created by https://www.gitignore.io/api/macos,python,jupyternotebook
### GitBook ###
# Node rules:
## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
## Dependency directory
## Commenting this out is preferred by some people, see
## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git
node_modules
# Book build output
_book
# eBook build output
*.epub
*.mobi
*.pdf
### JupyterNotebook ###
.ipynb_checkpoints
*/.ipynb_checkpoints/*
# Remove previous ipynb_checkpoints
# git rm -r .ipynb_checkpoints/
#
### macOS ###
*.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule.*
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
# End of https://www.gitignore.io/api/macos,python,jupyternotebook
# Created by https://www.gitignore.io/api/visualstudiocode
# Edit at https://www.gitignore.io/?templates=visualstudiocode
### VisualStudioCode ###
.vscode
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
# End of https://www.gitignore.io/api/visualstudiocode
================================================
FILE: LICENSE.md
================================================
# Attribution-NonCommercial-NoDerivatives 4.0 International
> *Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.*
>
> ### Using Creative Commons Public Licenses
>
> Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.
>
> * __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors).
>
> * __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees).
## Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
### Section 1 – Definitions.
a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
b. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
e. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
f. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
h. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
i. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
h. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License.
i. __NonCommercial__ means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.
j. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
k. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
l. __You__ means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
### Section 2 – Scope.
a. ___License grant.___
1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and
B. produce and reproduce, but not Share, Adapted Material for NonCommercial purposes only.
2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
3. __Term.__ The term of this Public License is specified in Section 6(a).
4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
5. __Downstream recipients.__
A. __Offer from the Licensor – Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
B. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
b. ___Other rights.___
1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this Public License.
3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes.
### Section 3 – License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
a. ___Attribution.___
1. If You Share the Licensed Material, You must:
A. retain the following if it is supplied by the Licensor with the Licensed Material:
i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of warranties;
v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
For the avoidance of doubt, You do not have permission under this Public License to Share Adapted Material.
2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
### Section 4 – Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only and provided You do not Share Adapted Material;
b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
### Section 5 – Disclaimer of Warranties and Limitation of Liability.
a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__
b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__
c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
### Section 6 – Term and Termination.
a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
### Section 7 – Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
### Section 8 – Interpretation.
a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
> Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at [creativecommons.org/policies](http://creativecommons.org/policies), Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
>
> Creative Commons may be contacted at [creativecommons.org](http://creativecommons.org).
================================================
FILE: Makefile
================================================
server.PHONY: help build clean
CONTENT = content/_config.yml content/_toc.yml content/*.md content/ch
HTML_DIR = content/_build/html
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
build: ## Builds book html
jupyter-book build content
rebuild: clean ## Forces complete rebuild of book html
$(MAKE) build
# Install fswatch first: https://github.com/emcrisostomo/fswatch
watch: ## Rebuilds book when files change (needs fswatch installed)
@echo Watching content/ch for changes...
fswatch -0 $(CONTENT) --one-per-batch | xargs -0 -n 1 -I {} $(MAKE) build
server: ## Starts python server that serves html
mkdir -p $(HTML_DIR)
cd $(HTML_DIR) && python -m http.server --bind 127.0.0.1 8000
serve: watch server ## Use -j2 flag to watch and serve content with one command
clean:
jupyter-book clean content
stage:
git push test sam-reordering:master
================================================
FILE: README.md
================================================
# Learning Data Science
**By [Sam Lau][sam], [Joey Gonzalez][joey], and [Deb Nolan][deb].**
<img alt="Front cover of textbook" src="content/book-cover.png" height="400px">
Learning Data Science is an introductory textbook for data science
published by O'Reilly Media in 2023. It covers foundational skills in
programming and statistics that encompass the data science lifecycle. The
reader's assumed background is detailed in the [Preface][preface].
The contents of this book are licensed for free consumption under the following license:
[Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)](https://creativecommons.org/licenses/by-nc-nd/4.0/)
[sam]: https://lau.ucsd.edu/
[joey]: https://people.eecs.berkeley.edu/~jegonzal/
[deb]: https://www.stat.berkeley.edu/~nolan/
[preface]: /preface
================================================
FILE: SETUP.md
================================================
# Making changes to the book
To develop the book locally, you first need to set up a Python environment with
all the packages used to build the book. Edit the book by editing the
Jupyter notebooks in the `content/` folder. To publish changes to the live
book, make a pull request on GitHub. This file contains instructions for all of
these steps.
## Python environment setup
Follow these steps to set up the textbook locally. You only have to go through
these steps once per machine.
These instructions were tested for OSX 10.15. We assume that you know how to
run commands on the `bash` command line. We also assume you have the following
command-line tools installed:
- `conda`, the Python package manager ([installation instructions for `mamba`,
which implements a much faster version of `conda`][conda])
- `git`, the version control tool ([installation instructions][git])
- `brew`, the macOS package manager ([installation instructions][brew])
[conda]: https://mamba.readthedocs.io/en/latest/installation.html
[git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
[brew]: https://brew.sh/
1. **Download the book files to your computer.** Open a terminal, navigate to a
folder for the book files, and run:
```bash
git clone git@github.com:DS-100/textbook.git
cd textbook # Navigates into the book folder
```
1. **Create a `conda` environment with the textbook's required packages.** Run
the following command:
```bash
mamba env create -f environment.yml
```
To check that this command succeeds, run:
```bash
mamba env list
```
And verify that the `textbook` environment appears in the list.
1. **Install fswatch.** This step is optional, but improves development
workflow. If you follow this step, you can use the `make watch` command to
automatically rebuild the book when you make changes locally instead of
running `make build` to manually rebuild the book. Run:
```bash
brew install fswatch
```
## Previewing book changes locally
Follow these steps **each time** you begin working on the book.
1. **Navigate to the `textbook/` folder in your terminal.**
1. **Activate the `textbook` Python environment.** Run:
```bash
mamba activate textbook
```
1. **Checkout a `git` branch for your work.** To make book changes easier to
track for collaborators, we don't make changes to the `master` branch of the
textbook. Instead, create a new branch by running:
```bash
git branch [branch_name]
git checkout [branch_name]
```
Replace `[branch_name]` with the name of your branch. For example, if Sam
wants to create a branch named `sam-decisiontrees`, he would run:
```bash
git branch sam-decisiontrees
git checkout sam-decisiontrees
```
The `git branch` command creates a new `git` branch. It will fail if the
branch already exists; skip this command if this is the case. The
`git checkout` command switches to a branch. It will do nothing if you are
already on the branch.
To check that you performed this step successfully, you should see this
output when you run `git branch`:
```bash
$ git branch
master
* sam-decisiontrees
```
You should **not** see this:
```bash
$ git branch
* master
sam-decisiontrees
```
This output means that you are still on the `master` branch, not the one you
created.
1. **Start the book build system.** Run:
```bash
make build
make -j2 serve
```
This step builds the book once, then starts a process that automatically
rebuilds the book whenever you change book content. Once this process
is running, open http://localhost:8000/ to view the book locally.
1. **Start a JupyterLab notebook server.** In a new terminal tab or window,
conda to the `textbook/` folder and run `mamba activate textbook` again.
Then, run:
```bash
jupyter lab
```
This should open your browser to a Jupyter server that lists the textbook
files. You should see a `content/` folder which contains all the book's
content.
1. **Make changes to book content.** Every page of the book is a Jupyter
notebook within the `content/` folder. To change a page of the book, edit
the corresponding notebook for that page. Whenever a notebook is saved, the
terminal window with the `make -j2 serve` command will automatically rebuild
the book locally, so you can refresh your http://localhost:8000/ browser tab
to see how the changes will appear in the final book.
Note: To see the mapping between textbook pages and Jupyter notebooks, see
the `content/_toc.yml` file. As an aside, saving the `content/_toc.yml` file
will force a complete rebuild of the book which is convenient when changes
to a notebook appear not to change the book.
## Submitting your changes for review
1. **Commit your changes locally.** Once you are ready to submit your changes,
run these commands in your terminal:
```bash
git add -A # Stages all changes
git status # Lists all staged changes
git commit -m '[your commit message]' # Makes a git commit
```
Replace `[your commit message]` with a short (fewer than 72 character)
description of your changes. For example:
```bash
git commit -m 'Write 19.3 (PCA in practice)'
```
1. **Make a pull request.** A GitHub pull request allows a collaborator to
review and make comments on your changes. Once approved, the collaborator
can merge the changes into the live book. Run:
```bash
git push origin HEAD # Push current branch to the same branch on GitHub
```
Now, open https://github.com/DS-100/textbook in your browser. You should see
a green button titled "Compare & pull request". Click that button. Fill out
the form on the resulting page with a title and description for your
changes. Finally, click the "Create pull request" button.
Example pull request: https://github.com/DS-100/textbook/pull/103
================================================
FILE: content/_config.yml
================================================
#######################################################################################
# A default configuration that will be loaded for all jupyter books
# See the documentation for help and more options:
# https://jupyterbook.org/customize/config.html
#######################################################################################
# Book settings
title: Learning Data Science # The title of the book. Will be placed in the left navbar.
author: Sam Lau, Joey Gonzalez, and Deb Nolan # The author of the book
copyright: "2023" # Copyright year to be placed in the footer
# Never execute notebooks automatically so we don't get unexpected book changes
# Change from "off" to "force" to check that pages can execute without error
execute:
execute_notebooks: "off"
# execute_notebooks: force
only_build_toc_files: true
exclude_patterns: [old_pages/*]
parse:
myst_enable_extensions:
- amsmath
- colon_fence
- deflist
- dollarmath
- html_admonition
- html_image
- linkify
- replacements
- smartquotes
- substitution
myst_url_schemes: [mailto, http, https] # URI schemes that will be recognised as external URLs in Markdown links
html:
extra_footer: |
<p>
License: CC BY-NC-ND 4.0
</p>
google_analytics_id: UA-113006011-1
home_page_in_navbar: false
launch_buttons:
jupyterhub_url: https://datahub.berkeley.edu
binderhub_url: ''
# binderhub_url: https://mybinder.org # The URL of the BinderHub (e.g., https://mybinder.org)
thebe: false
repository:
url: https://github.com/ds-100/textbook # The URL to your book's repository
path_to_book: content
branch: master # Which branch of the repository should be used when creating links
# bibtex_bibfiles:
# - references.bib
sphinx:
config:
html_extra_path: ['datasets']
# this is commented out since we aren't supporting interactive plotly plots
# right now, but if we want to support that in the future be sure to
# uncomment out the code here and in custom.js.
# html_js_files:
# - https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js
extra_extensions:
- sphinx_multitoc_numbering
================================================
FILE: content/_static/custom.css
================================================
/*
* Reference: https://jupyterbook.org/advanced/sphinx.html
*/
:root {
--space: 12px;
--space--small: 6px;
--space--tiny: 3px;
--space--big: 24px;
--space--bigger: 36px;
--inline-code-bgc: #f5f5f5;
--text-color: rgba(var(--pst-color-paragraph), 1);
--body-font-size: 1.3333333333rem;
--pst-sidebar-font-size: 1rem;
--pst-sidebar-caption-font-size: 1rem;
}
/*****************************************************************************
* Sidebar
*****************************************************************************/
/*
* In the body, ul elements have a larger font size to match the body font
* size. But that also affects sidebar elements, so we reset the sidebar font
* size here.
*/
#site-navigation ul {
font-size: 1rem;
}
/*
ul.current,
li.current > ul {
font-size: 1rem;
}
*/
/*****************************************************************************
* Footer styling
*****************************************************************************/
/* Mimic JBook theme padding for body */
@media (min-width: 768px) {
.footer {
padding-left: 1rem;
}
}
@media (min-width: 960px) {
.footer {
padding-left: 3rem;
}
}
/*****************************************************************************
* Notebook styling
*****************************************************************************/
#main-content {
padding-left: 0rem;
}
@media (min-width: 768px) {
#main-content {
padding-left: 0.6rem;
/* 70% is the JBook theme default, and we set a hard max-width so that
* lines don't get too long on wide screens */
max-width: min(70%, 640px);
}
footer.footer-article .prev-next-area {
max-width: min(70%, 640px);
}
}
/*****************************************************************************
* Jupyter Book Components
*****************************************************************************/
/* Fix spacing between title and icon */
.admonition > .admonition-title,
div.admonition > .admonition-title {
padding-left: 2.5rem;
}
/*****************************************************************************
* Typography
*****************************************************************************/
/*
* Set up vertical rhythm:
* https://iamsteve.me/blog/entry/a-guide-to-vertical-rhythm
*/
html {
font-size: 12px;
}
body {
/* Debugging grid */
/* background-image: linear-gradient(#eee 1px, transparent 1px); */
/* background-size: 100% 12px; */
line-height: 1.5;
}
/* Reset font family */
body,
h1,
h2,
h3,
h4,
h5,
h6,
.header-style {
font-family: -apple-system, BlinkMacSystemFont, 'Roboto', 'Segoe UI',
'Helvetica Neue', 'Lucida Grande', Arial, sans-serif !important;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 0;
}
/* Align to 72px */
h1 {
font-size: 30px;
line-height: 1.2;
padding-top: 24px;
margin-bottom: 12px;
}
/* Align to 48px */
h2 {
font-size: 24px;
line-height: 1.25;
padding-top: 12px;
margin-bottom: 6px;
}
/* Align to 36px */
h3 {
font-size: 21px;
line-height: 1.3333333;
padding-top: 12px;
margin-bottom: 8px;
}
/* Align to 24px */
p {
font-size: var(--body-font-size);
line-height: 1.5;
margin-bottom: 1rem;
}
ol,
ul {
font-size: var(--body-font-size);
}
/* Breaks vertical rhythm because this aligns to 16px */
pre {
font-size: 1rem !important;
line-height: 1.5 !important;
padding: 0.666666667rem;
}
/* Wrap long output lines */
.cell_output .output pre {
white-space: pre-wrap;
}
table,
.table {
display: block;
overflow: auto;
}
.table p {
margin-bottom: 0;
}
.table td,
.table th {
padding: 0.5rem;
}
div.container.cell {
padding-right: 0;
}
div.cell_output tr,
div.cell_output th,
div.cell_output td {
line-height: 1;
}
blockquote {
padding: 0 1.5rem;
}
blockquote div > p {
margin-bottom: 1rem;
}
code.literal {
background: var(--inline-code-bgc);
padding: 1px 4px;
color: var(--text-color);
}
code.literal > span {
font-size: 0.9em;
}
img {
margin-bottom: 1rem;
}
/* don't top-align footnotes */
a.footnote-reference {
vertical-align: initial;
}
/* Make bibliography font smaller */
.citation > dd > p {
font-size: 1rem;
}
/*****************************************************************************
* MathJax
*****************************************************************************/
div.math {
font-size: 1.21rem;
}
/*****************************************************************************
* Print styling
*****************************************************************************/
/* Don't show right table of contents or footer */
@media print {
.bd-toc {
visibility: hidden;
}
#bd-toc-nav {
display: none;
}
.footer {
display: none;
}
}
================================================
FILE: content/_static/custom.js
================================================
// configure require.js to load plotly from cdn. this is commented out since we
// aren't supporting interactive plotly plots right now, but if we want to
// support this in the future be sure to uncomment out the code below.
// var require = {
// paths: {
// plotly: 'https://cdn.plot.ly/plotly-2.9.0.min',
// },
// }
================================================
FILE: content/_toc.yml
================================================
format: jb-book
root: intro
title: Introduction
parts:
- caption: Frontmatter
chapters:
- file: preface
- caption: The Data Science Lifecycle
numbered: true
chapters:
- file: ch/01/lifecycle_intro
sections:
- file: ch/01/lifecycle_cycle
- file: ch/01/lifecycle_map
- file: ch/01/lifecycle_summary
- file: ch/02/data_scope_intro
sections:
- file: ch/02/data_scope_big_data_hubris
- file: ch/02/data_scope_construct
- file: ch/02/data_scope_protocols
- file: ch/02/data_scope_natural
- file: ch/02/data_scope_accuracy
- file: ch/02/data_scope_summary
- file: ch/03/theory_intro
sections:
- file: ch/03/theory_urn
- file: ch/03/theory_election
- file: ch/03/theory_vaccine_efficacy
- file: ch/03/theory_measurement_error
- file: ch/03/theory_summary
- file: ch/04/modeling_intro
sections:
- file: ch/04/modeling_simple.ipynb
- file: ch/04/modeling_loss_functions.ipynb
- file: ch/04/modeling_summary.ipynb
- file: ch/05/bus_intro
sections:
- file: ch/05/bus_scope.ipynb
- file: ch/05/bus_clean.ipynb
- file: ch/05/bus_eda.ipynb
- file: ch/05/bus_modeling.ipynb
- file: ch/05/bus_summary.ipynb
- caption: Rectangular Data
numbered: true
chapters:
- file: ch/06/pandas_intro
sections:
- file: ch/06/pandas_subsetting
- file: ch/06/pandas_aggregating
- file: ch/06/pandas_joining
- file: ch/06/pandas_transforming
- file: ch/06/pandas_other_reps
- file: ch/06/pandas_summary
- file: ch/07/sql_intro
sections:
- file: ch/07/sql_subsetting
- file: ch/07/sql_aggregating
- file: ch/07/sql_joining
- file: ch/07/sql_transforming
- file: ch/07/sql_summary
- caption: Understanding The Data
numbered: true
chapters:
- file: ch/08/files_intro
sections:
- file: ch/08/files_datasets
- file: ch/08/files_formats
- file: ch/08/files_encoding
- file: ch/08/files_size
- file: ch/08/files_command_line
- file: ch/08/files_granularity
- file: ch/08/files_summary
- file: ch/09/wrangling_intro
sections:
- file: ch/09/wrangling_co2
- file: ch/09/wrangling_checks
- file: ch/09/wrangling_missing
- file: ch/09/wrangling_transformations
- file: ch/09/wrangling_structure
- file: ch/09/wrangling_restaurants
- file: ch/09/wrangling_summary
- file: ch/10/eda_intro
sections:
- file: ch/10/eda_feature_types
- file: ch/10/eda_distributions
- file: ch/10/eda_relationships
- file: ch/10/eda_multi
- file: ch/10/eda_guidelines
- file: ch/10/eda_example
- file: ch/10/eda_summary
- file: ch/11/viz_intro
sections:
- file: ch/11/viz_scale
- file: ch/11/viz_smoothing
- file: ch/11/viz_comparisons
- file: ch/11/viz_data_design
- file: ch/11/viz_context
- file: ch/11/viz_plotly
- file: ch/11/viz_other_tools
- file: ch/11/viz_summary
- file: ch/12/pa_intro
sections:
- file: ch/12/pa_scope
- file: ch/12/pa_collocated
- file: ch/12/pa_cleaning_aqs
- file: ch/12/pa_cleaning_purpleair
- file: ch/12/pa_eda
- file: ch/12/pa_modeling
- file: ch/12/pa_conclusion
- caption: Other Data Sources
numbered: true
chapters:
- file: ch/13/text_intro
sections:
- file: ch/13/text_examples
- file: ch/13/text_strings
- file: ch/13/text_regex
- file: ch/13/text_sotu
- file: ch/13/text_summary
- file: ch/14/web_intro
sections:
- file: ch/14/web_netCDF
- file: ch/14/web_json
- file: ch/14/web_http
- file: ch/14/web_rest
- file: ch/14/web_html
- file: ch/14/web_summary
- caption: Linear Modeling
numbered: true
chapters:
- file: ch/15/linear_intro
sections:
- file: ch/15/linear_simple
- file: ch/15/linear_pa
- file: ch/15/linear_simple_fit
- file: ch/15/linear_multi
- file: ch/15/linear_multi_fit
- file: ch/15/linear_case
- file: ch/15/linear_feature_eng
- file: ch/15/linear_categorical
- file: ch/15/linear_summary
- file: ch/16/ms_intro
sections:
- file: ch/16/ms_overfitting
- file: ch/16/ms_train_test
- file: ch/16/ms_cv
- file: ch/16/ms_regularization
- file: ch/16/ms_risk
- file: ch/16/ms_summary
- file: ch/17/inf_pred_gen_intro
sections:
- file: ch/17/inf_pred_gen_dist
- file: ch/17/inf_pred_gen_HT
- file: ch/17/inf_pred_gen_boot
- file: ch/17/inf_pred_gen_CI
- file: ch/17/inf_pred_gen_PI
- file: ch/17/inf_pred_gen_prob
- file: ch/17/inf_pred_gen_summary
- file: ch/18/donkey_intro
sections:
- file: ch/18/donkey_scope
- file: ch/18/donkey_clean
- file: ch/18/donkey_eda
- file: ch/18/donkey_model
- file: ch/18/donkey_summary
- caption: Classification
numbered: true
chapters:
- file: ch/19/class_intro
sections:
- file: ch/19/class_example
- file: ch/19/class_pred
- file: ch/19/class_log_model
- file: ch/19/class_loss
- file: ch/19/class_dr
- file: ch/19/class_summary
- file: ch/20/gd_intro
sections:
- file: ch/20/gd_basics
- file: ch/20/gd_example
- file: ch/20/gd_convex
- file: ch/20/gd_alternative
- file: ch/20/gd_summary
- file: ch/21/fake_news_intro
sections:
- file: ch/21/fake_news_question
- file: ch/21/fake_news_data
- file: ch/21/fake_news_exploring
- file: ch/21/fake_news_modeling
- file: ch/21/fake_news_summary
- caption: Resources
chapters:
- file: additional_resources
- file: data_sources
- caption: Appendices
chapters:
- file: ch/a01/prob_review
- file: ch/a02/vector_space_review
# - file: ch/a04/ref_intro
# sections:
# - file: ch/a04/ref_pandas
# - file: ch/a04/ref_seaborn
# - file: ch/a04/ref_matplotlib
# - file: ch/a04/ref_sklearn
================================================
FILE: content/additional_resources.md
================================================
(ax:extra_reading)=
# Additional Material
Collected here are a variety of resources for a more in-depth treatment of the larger themes in this book. In addition to recommendations for these broad topics, we provide a list of resources for several smaller topics and big topics that we only lightly touched on. These resources are organized in the order in which the topics appear in the book.
- For how to analyze time-series data, like the Google Flu trends, we refer you to [_Time Series Analysis and Its Applications_](https://doi.org/10.1007/978-3-319-52452-8) by Shumway and Stoffer.
- To learn more about the interplay between questions and data, we recommend [Questions, Answers, and Statistics](https://iase-web.org/documents/papers/icots2/Speed.pdf) by Speed. In addition, Leek and Peng connect questions with the type of analysis needed in [What is the question? Mistaking the type of question being considered is the most common error in data analysis](https://doi.org/10.1126/science.aaa6146).
- More on sampling topics can be found in [_Sampling: Design and Analysis_](https://doi.org/10.1201/9780429298899) by Lohr. Lohr also contains a treatment of the target population, access frame, and sampling methods, and sources of bias.
- To learn more about the human contexts and ethics of data, see the [HCE Toolkit](https://data.berkeley.edu/hce-toolkit) and Tuskegee University's [National Center for Bioethics in Research and Health Care](https://www.tuskegee.edu/about-us/centers-of-excellence/bioethics-center).
- To learn more about data privacy, see [_Big Data: Seizing Opportunities, Preserving Values_](https://obamawhitehouse.archives.gov/sites/default/files/docs/big_data_privacy_report_may_1_2014.pdf), a concise White House report that provides guidelines and rationale for data privacy.
- Ramdas gave a fun, informative talk in our class on on bias, Simpson's paradox, p-hacking, and related topics, and we recommend his [slides](https://drive.google.com/file/d/0B7gkaDYGT5X5c245RV93MVRRSjQ/view?resourcekey=0-8nQDM50Tta2SuLkFqAXEqQ).
- For an introductory treatment of the urn model, confidence intervals, and hypothesis tests, we recommend [_Statistics_](https://wwnorton.com/books/Statistics/) by Freedman, Pisani, and Purves.
- Owen's online text, [_Monte Carlo theory, methods and examples_](https://artowen.su.domains/mc/) provides a solid introduction to simulation.
- For a fuller treatment of probability, we suggest [_Probability_](https://doi.org/10.1007/978-1-4612-4374-8) by Pitman and [_Introduction to Probability_](https://doi.org/10.1201/b17221) by Hwang and Blitzstein.
- A proof that the median minimizes absolute error can be found in [_Mathematical Statistics: Basic Ideas and Selected Topics Volume I_](https://www.routledge.com/Mathematical-Statistics-Basic-Ideas-and-Selected-Topics-Volume-I-Second/Bickel-Doksum/p/book/9781498723800) by Bickel and Doksum.
- [_Python for Data Analysis_](https://wesmckinney.com/book/) by Wes McKinney provides in-depth coverage of `pandas`.
- The classic [_The Essence of Databases_](https://dl.acm.org/doi/book/10.5555/274800) by Roland offers a formal introduction to SQL, and the basics can be found in W3 School's [Introduction to SQL](https://www.w3schools.com/sql/sql_intro.asp). [_Designing Data-Intensive Applications_](https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/) surveys and compares different data storage systems, including SQL databases.
- A good resource for data wrangling can be found in [_Principles of Data Wrangling: Practical Techniques for Data Preparation_](https://www.oreilly.com/library/view/principles-of-data/9781491938911/) by Rattenbury, Hellerstein, Heer, Kandel, and Carreras.
- For how to handle missing data, see Chapter 8 in Lohr and [_Statistical Analysis with Missing Data_](https://www.wiley.com/en-us/Statistical+Analysis+with+Missing+Data,+3rd+Edition-p-9780470526798) by Little and Rubin.
- The original text by Tukey, [_Exploratory Data Analysis_](https://archive.org/details/exploratorydataa00tuke_0), offers an excellent introduction to the topic.
- The smooth density curve is covered in detail in [_Density Estimation for Statistics and Data Analysis_](https://www.routledge.com/Density-Estimation-for-Statistics-and-Data-Analysis/Silverman/p/book/9780412246203) by Silverman.
- See [_Fundamentals of Data Visualization: A Primer on Making Informative and Compelling Figures_](https://clauswilke.com/dataviz/) by Wilke for more on visualization. Our guidelines do not entirely match Wilke's but they come close and it's helpful to see a variety of opinions on the topic.
- To learn more about color palettes see Brewer's online [ColorBrewer2.0](https://colorbrewer2.org/).
- See [Statistical Calibration: A Review](https://doi.org/10.2307/1403690) by Osborne for more on calibration.
- For practice with regular expressions there are many on-line resources such as the W3 School tutorial [Python RegEx](https://www.w3schools.com/python/python_regex.asp), regular expression checkers like [Regular Expressions 101](https://regex101.com/), and introductions to the topic like [An introduction to regular expressions](https://www.oreilly.com/content/an-introduction-to-regular-expressions/) by Nield. For a text see [_Mastering Regular Expressions_](https://dl.acm.org/doi/10.5555/1209014) by Friedl.
- Chapter 13 in [Fox](https://us.sagepub.com/en-us/nam/applied-regression-analysis-and-generalized-linear-models/book237254) and Chapter 10 in [James, et al.](https://www.statlearning.com/) discuss Principal Components. (See below for the titles of these resources.)
- Tompkins has a helpful online tutorial on how to work with netCDF climate data: [The Beauty of NetCDF](https://www.youtube.com/watch?v=UvNBnjiTXa0).
- There are many resources on web services. Some accessible introductory material can be found at [_RESTful Web Services_](https://dl.acm.org/doi/10.5555/1406352)
by Richardson and Ruby.
- For more on XML, we recommend [_XML and Web Technologies for Data Sciences with R_](https://doi.org/10.1007/978-1-4614-7900-0) by Nolan and Temple Lang.
- The many topics related to modeling, including transformations, one-hot encoding, model-selection, cross-validation, and regularization can be found in several sources. We recommend: [_Linear Models with Python_](https://julianfaraway.github.io/LMP/) by Faraway, [_Applied Regression Analysis and Generalized Linear Models_](https://us.sagepub.com/en-us/nam/applied-regression-analysis-and-generalized-linear-models/book237254) by Fox, [_An Introduction to Statistical Learning: With Applications in Python_](https://www.statlearning.com/) by James, Witten, Hastie, Tibshirani, and Taylor, and [_Applied Linear Regression_](https://doi.org/10.1002/0471704091) by Weisberg.
- Chapter 10 in Fox gives an informative treatment of vector geometry of least squares.
- Chapter 12 in Fox and Chapter 5 in Faraway cover the topic of weighted regression.
- Andrew Ng's [interview](https://spectrum.ieee.org/andrew-ng-xrays-the-ai-hype) is an interesting read on the gap between the test set and the real world.
- Chapter 7 of James, et al. introduces polynomial regression using orthogonal polynomials.
- For more on broken-stick regression see [Bent-Cable Regression Theory and Applications](https://doi.org/10.1198/016214505000001177) by Chiu, Lockhart and Routledge.
- A more formal treatment of confidence intervals, prediction intervals, testing, and the bootstrap can be found in [_Mathematical Statistics and Data Analysis_](https://www.cengage.com/c/mathematical-statistics-and-data-analysis-3e-rice/9780534399429/) by Rice.
- The [The ASA Statement on p-Values: Context, Process, and Purpose](https://doi.org/10.1080/00031305.2016.1154108) by Wasserstein and Lazar provides valuable insights into $p$-values. Additionally, the topic of p-hacking is addressed in [The Statistical Crisis in Science](https://doi.org/10.1511/2014.111.460) by Gelman and Loken.
- Information about rank tests and other nonparametric statistics can be found in [_Nonparametric Rank Tests_](https://doi.org/10.1007/978-3-642-04898-2_417_) by Hettmansperger.
- The technique for developing linear models to use in the field is addressed in [The lost art of nomography](https://deadreckonings.files.wordpress.com/2008/01/nomography.pdf) by Doerfler.
- Chapter 14 in Fox covers the maximum likelihood approach to logistic regression. And, Chapter 4 in James, et al. covers sensitivity and specificity in more detail.
- An in-depth treatment of loss functions and risk can be found in Chapter 12 of [_All of Statistics: A Concise Course in Statistical Inference_](https://doi.org/10.1007/978-0-387-21736-9) by Wasserman.
- [_Programming Collective Intelligence_](https://www.oreilly.com/library/view/programming-collective-intelligence/9780596529321/) by Segaran covers the topic of optimization.
- See [_Applied Text Analysis with Python: Enabling Language-Aware Data Products with Machine Learning_](https://www.oreilly.com/library/view/applied-text-analysis/9781491963036/) by Bengfort, Bilbro, and Ojeda for more on text analysis.
================================================
FILE: content/ch/01/lifecycle_cycle.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"remove-cell"
]
},
"outputs": [],
"source": [
"import sys\n",
"import os\n",
"if not any(path.endswith('textbook') for path in sys.path):\n",
" sys.path.append(os.path.abspath('../../..'))\n",
"from textbook_utils import *"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# The Stages of the Lifecycle"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"{numref}`Figure %s <ds-lifecycle>` shows the data science lifecycle.\n",
"The lifecycle is divided into four stages: Ask a Question, Obtain Data, \n",
"Understand the Data, and Understand the World.\n",
"We've purposefully made these stages broad.\n",
"In our experience, the mechanics of the lifecycle change frequently.\n",
"Computer scientists and statisticians continue to build new software packages and programming languages\n",
"for working with data, and they develop new methodologies that are more specialized. \n",
"Despite these changes, we've found that almost every data project consists of these four stages:"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"```{figure} figures/ds-lifecycle.svg\n",
"---\n",
"name: ds-lifecycle\n",
"---\n",
"\n",
"The four high-level stages of the data science lifecycle.\n",
"The arrows indicate how the stages can lead into one another.\n",
"```"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Ask a Question\n",
": Asking good questions is at the heart of data science, and recognizing\n",
"different kinds of questions guides us in our analyses.\n",
"We cover four categories of questions:\n",
"descriptive, exploratory, inferential, and predictive.\n",
"For example, \"How have house prices changed over time?\" is descriptive in nature, whereas \n",
"\"Which aspects of houses are related to sale price?\" is exploratory.\n",
"Narrowing down a broad question into one that can be answered with data is a key element of this first stage in the lifecycle. It can involve consulting the people participating in a study, figuring out how to measure something, and designing data collection protocols. \n",
"A clear and focused research question helps us determine the data we need,\n",
"the patterns to look for, and how to interpret results. It can also help us refine our question, recognize the type of question being asked, and plan the data collection phase of the lifecycle. "
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Obtain Data\n",
": When data are expensive and hard to gather and when our goal is to generalize from the data to the world, we aim to define precise protocols for collecting the data. Other times, data are cheap and easily accessed.\n",
"This is especially true for online data sources.\n",
"For example, [Twitter](https://developer.twitter.com/en/docs/twitter-api) lets people quickly download millions of data points.\n",
"When data are plentiful, we can start an analysis by obtaining and exploring the data, and then honing a research question.\n",
"In both situations, most data have missing or unusual values and other anomalies that we need to account for. No matter the source, we need to check the data quality. Considering the scope of the data is equally important; for example, we identify how representative the data are and look for potential sources of bias in the collection process. These considerations help us determine how much faith we can place in our findings. And, typically, we must manipulate the data before we can analyze it more formally. We may need to modify structure, clean data values, and transform measurements to prepare for analysis."
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Understand the Data\n",
": After obtaining and preparing data, we want to carefully examine them, and *exploratory data analysis* is often key. In our explorations, we make plots to uncover interesting patterns and summarize the data visually. We also continue to look for problems with the data.\n",
"As we search for patterns and trends, we use summary statistics and build statistical models, like linear and logistic regression.\n",
"In our experience, this stage of the lifecycle is highly iterative.\n",
"Understanding the data can also lead us back to earlier stages in the data science lifecycle. We may find that we need to modify or redo the data cleaning and manipulation, acquire more data to supplement our analysis, or refine our research question given the limitations of the data. The descriptive and exploratory analyses that we carry out in this stage may adequately answer our question, or we may need to go on to the next stage in order to make generalizations beyond our data."
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Understand the World\n",
": When our goals are purely descriptive or exploratory, the analysis ends at the Understand the Data stage of the lifecycle. \n",
"At other times, we aim to quantify how well the trends we find generalize beyond our data. \n",
"We may want to use a model that we have fit to our data to make inferences about the world or give predictions for future observations. \n",
"To draw inferences from a sample to a population, we use\n",
"statistical techniques like A/B testing and confidence intervals.\n",
"And to make predictions for future observations, we create prediction intervals and use train-test splits of the data. "
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
":::{note}\n",
"\n",
"Understanding the differences between exploration, inference, prediction, and causation can be a challenge. \n",
"We can easily slip into confusing a correlation found in data with a causal relationship. \n",
"For example, an exploratory or inferential analysis might look for correlations in response to the question \"Do people who have a greater exposure to air pollution have a higher rate of lung disease?\" Whereas a causal question might ask \"Does giving an award to a Wikipedia contributor increase productivity?\" We typically cannot answer causal questions unless we have a randomized experiment (or approximate one). We point out these important distinctions throughout the book.\n",
"\n",
":::"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"For each stage of the lifecycle, we explain theoretical concepts, introduce data technologies and statistical methodologies, and show how they work in practical examples.\n",
"Throughout, we rely on authentic data and analyses by other data scientists, not made-up data, so you can learn how to perform your own data acquisition, cleaning, exploration, and formal analyses, and draw sound conclusions. Each chapter in this book tends to focus on one stage of the data science lifecycle, but we also include chapters with case studies that demonstrate the full lifecycle. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: content/ch/01/lifecycle_intro.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"remove-cell"
]
},
"outputs": [],
"source": [
"import sys\n",
"import os\n",
"if not any(path.endswith('textbook') for path in sys.path):\n",
" sys.path.append(os.path.abspath('../../..'))\n",
"from textbook_utils import *"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"(ch:lifecycle)=\n",
"# The Data Science Lifecycle\n",
"\n",
"Data science is a rapidly evolving field.\n",
"At the time of this writing, people are still trying to pin down exactly\n",
"what data science is, what data scientists do, and what skills data \n",
"scientists should have.\n",
"What we do know, though, is that data science uses a combination of \n",
"methods and principles from statistics and computer science to work with and draw insights from data.\n",
"And learning computer science and statistics in combination makes us better data scientists. We also know that any insights we glean need to be interpreted in the context of the problem that we are working on."
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"This book covers fundamental principles and skills that data scientists need to help make all sorts of important decisions. \n",
"With both technical skills and conceptual understanding we can work on data-centric problems to, say, assess whether a vaccine works,\n",
"filter out fake news automatically, calibrate air quality sensors, \n",
"and advise analysts on policy changes. "
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"To help you keep track of the bigger picture, we've organized topics\n",
"around a workflow that we call the *data science lifecycle*.\n",
"In this chapter, we introduce this lifecycle.\n",
"Unlike other data science books that tend to focus on one part of the lifecycle or address only computational or statistical topics, \n",
"we cover the entire cycle from start to finish and consider both statistical and computational aspects together. "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.11"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: content/ch/01/lifecycle_map.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"remove-cell"
]
},
"outputs": [],
"source": [
"import sys\n",
"import os\n",
"if not any(path.endswith('textbook') for path in sys.path):\n",
" sys.path.append(os.path.abspath('../../..'))\n",
"from textbook_utils import *"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Examples of the Lifecycle"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Several case studies that address the entire data science lifecycle are placed throughout this book. \n",
"These cases serve double duty. They focus on one stage in the lifecycle to provide a specific example of the topics in the part of the book where they are located, and they also demonstrate the entire cycle. \n",
" \n",
"The focus of {numref}`Chapter %s <ch:bus>` is on the interplay between a question of interest and how data can be used to answer the question. The simple question \"Why is my bus always late?\" provides a rich case study that is basic enough for the beginning data scientist to track the stages of the lifecycle, and yet nuanced enough to demonstrate how we apply both statistical and computational thinking to answer the question. In this case study, we build a simulation study to inform us about the distribution of wait times for riders. And we fit a simple model to summarize the wait times with a statistic. This case study also demonstrates how, as a data scientist, you can collect your own data to answer questions that interest you. \n",
"\n",
"{numref}`Chapter %s <ch:pa>` studies the accuracy of mass-market air sensors that are used across the United States. We devise a way to leverage data from highly accurate sensors maintained by the Environmental Protection Agency to improve readings from less expensive sensors. This case study shows how crowdsourced, open data can be improved with data from rigorously maintained, precise, government-monitored equipment. In the process, we focus on cleaning and merging data from multiple sources, but we also fit models to adjust and improve air quality measurements.\n",
"\n",
"In {numref}`Chapter %s <ch:donkey>` our focus is on model building and prediction. But we cover the full lifecycle and see how the question of interest impacts the model that we build. Our aim is to enable veterinarians in rural Kenya, who have no access to a scale to weigh a donkey, to prescribe medication for a sick animal. As we learn about the design of the study, clean the data, and balance simplicity with accuracy, we assess the predictive capabilities of our model and show how scientists can partner with people facing practical problems and assist them with solutions.\n",
"\n",
"Finally, in {numref}`Chapter %s <ch:fake_news>` we examine hand-classified news stories in an effort to algorithmically detect fake news from real news. In this case study, we again see how readily accessible information creates amazing opportunities for data scientists to develop new technologies and investigate today's important problems. These data have been scraped from new stories on the web and classified as fake or real news by people reading the stories. We also see how data scientists thinking creatively can take general information, such as the content of a news article, and transform them into analyzable data to address topical questions."
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: content/ch/01/lifecycle_summary.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"tags": [
"remove-cell"
]
},
"outputs": [],
"source": [
"import sys\n",
"import os\n",
"if not any(path.endswith('textbook') for path in sys.path):\n",
" sys.path.append(os.path.abspath('../../..'))\n",
"from textbook_utils import *"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"(sec:lifecycle_summary)=\n",
"# Summary\n",
"\n",
"The data science lifecycle provides an organizing structure for this book. We keep the lifecycle in mind as we work with many datasets from a wide range of sources, including science, medicine, politics, social media, and government. The first time we use a dataset, we provide the context in which the data were collected, the question of interest in examining the data, and descriptions needed to understand the data. In this way, we aim to practice good data science throughout the book. \n",
"\n",
"The first stage of the lifecycle—asking a question—is often seen in books as a question that requires an application of a technique to get a number, such as \"What's the p-value for this A/B test?\" Or a vague question that is often seen in practice, like \"Can we restore the American Dream?\" Answering the first sort of question gives little practice in developing a research question. Answering the second is hard to do without guidance on how to turn a general area of interest into a question that can be answered with data. The interplay between asking a question and understanding the limitations of data to answer it is the topic of the next chapter."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: content/ch/02/data_scope_accuracy.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"remove-cell"
]
},
"outputs": [],
"source": [
"import sys\n",
"import os\n",
"if not any(path.endswith('textbook') for path in sys.path):\n",
" sys.path.append(os.path.abspath('../../..'))\n",
"from textbook_utils import *"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {
"tags": [],
"user_expressions": []
},
"source": [
"(sec:scope_accuracy)=\n",
"\n",
"# Accuracy\n",
"\n",
"In a census, the access frame matches the population, and the sample captures the entire population. In this situation, if we administer a well-designed questionnaire, then we have complete and accurate information on the population, and the scope is perfect. Similarly in measuring CO<sub>2</sub> concentrations in the atmosphere, if our instrument has perfect accuracy and is properly used, then we can measure the exact value of the CO<sub>2</sub> concentration (ignoring air fluctuations). These situations are rare, if not impossible. In most settings, we need to quantify the accuracy of our measurements in order to generalize our findings to the unobserved. For example, we often use the sample to estimate an average value for a population, infer the value of a scientific unknown from measurements, or predict the behavior of a new individual. In each of these settings, we also want a quantifiable degree of accuracy. We want to know how close our estimates, inferences, and predictions are to the truth.\n",
"\n",
"The analogy of darts thrown at a dart board that was introduced earlier can be useful in understanding accuracy. We divide _accuracy_ into two basic parts: _bias_ and _precision_ (also known as _variation_). Our goal is for the darts to hit the bullseye on the dart board and for the bullseye to line up with the unseen target. The spray of the darts on the board represents the precision in our measurements, and the gap from the bullseye to the unknown value that we are targeting represents the bias. \n",
"\n",
"{numref}`Figure %s <fig:ScatterShot>` shows combinations of low and high bias and precision. In each of these diagrams, the dots represent the measurements taken, and the star represents the true, unknown parameter value. The dots form a scattershot within the access frame represented by the dart board. When the bullseye of the access frame is roughly centered on the star (top row), the measurements are scattered around the value of interest and bias is low. The larger dart boards (right column) indicate a wider spread (lower precision) in the measurements.\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {
"tags": [],
"user_expressions": []
},
"source": [
"```{figure} figures/Bias-Variance.png\n",
"---\n",
"name: fig:ScatterShot\n",
"---\n",
"Combinations of low and high measurement bias and precision\n",
"```\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Representative data puts us in the top row of the diagram, where there is low bias, meaning that the unknown target aligns with the bullseye. Ideally, our instruments and protocols put us in the upper-left part of the diagram, where the variation is also low. The pattern of points in the bottom row systematically misses the targeted value. Taking larger samples will not correct this bias.\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"(sec:biastypes)=\n",
"\n",
"## Types of Bias\n",
"\n",
"Bias comes in many forms. We describe some classic types here and connect them to our target-access-sample framework.\n",
"\n",
"Coverage bias\n",
": Occurs when the access frame does not include everyone in the target population. For example, a survey based on phone calls cannot reach those without a phone. In this situation, those who cannot be reached may differ in important ways from those in the access frame.\n",
"\n",
"Selection bias\n",
": Arises when the mechanism used to choose units for the sample tends to select certain units more often than they should be selected. As an example, a convenience sample chooses the units that are most easily available. Problems can arise when those who are easy to reach differ in important ways from those who are harder to reach. As another example, observational studies and experiments often rely on volunteers (people who choose to participate), and this self-selection has the potential for bias if the volunteers differ from the target population in important ways.\n",
"\n",
"Nonresponse bias\n",
": Comes in two forms: unit and item. Unit nonresponse happens when someone selected for a sample is unwilling to participate (they may never answer a phone call from an unknown caller). Item nonresponse occurs when, say, someone answers the phone but refuses to respond to a particular survey question. Nonresponse can lead to bias if those who choose not to respond are systematically different from those who choose to respond.\n",
"\n",
"Measurement bias\n",
": Happens when an instrument systematically misses the target in one direction. For example, low humidity can systematically give us incorrectly high measurements of air pollution. In addition, measurement devices can become unstable and drift over time and so produce systematic errors. In surveys, measurement bias can arise when questions are confusingly worded or leading, or when respondents may not be comfortable answering honestly.\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Each of these types of bias can lead to situations where the data are not centered on the unknown targeted value. Often, we cannot assess the potential magnitude of the bias, since little to no information is available on those who are outside the access frame, less likely to be selected for the sample, or disinclined to respond. Protocols are key to reducing these sources of bias. Chance mechanisms to select a sample from the frame or to assign units to experimental conditions can eliminate selection bias. A nonresponse follow-up protocol to encourage participation can reduce nonresponse bias. A pilot survey can improve question wording and so reduce measurement bias. Procedures to calibrate instruments and protocols to take measurements in, say, random order can reduce measurement bias.\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {
"tags": [],
"user_expressions": []
},
"source": [
"In the 2016 US presidential election, nonresponse bias and measurement bias were key factors in the inaccurate predictions of the winner. Nearly all voter polls leading up to the election predicted Clinton a winner over Trump. Trump's upset victory came as a surprise. After the election, many polling experts attempted to diagnose where things went wrong in the polls. The [American Association for Public Opinion Research](https://aapor.org/wp-content/uploads/2022/11/AAPOR-2016-Election-Polling-Report.pdf) found that the predictions were flawed for two key reasons:\n",
"\n",
"- College-educated voters were overrepresented. [College-educated voters are more likely to participate in surveys than those with less education](https://www.pewresearch.org/politics/2012/05/15/assessing-the-representativeness-of-public-opinion-surveys/), and in 2016 they were more likely to support Clinton. Higher response rates from more highly educated voters biased the sample and overestimated support for Clinton.\n",
"\n",
"- Voters were undecided or changed their preferences a few days before the election. Since a poll is static and can only directly measure current beliefs, it cannot reflect a shift in attitudes.\n",
"\n",
"It's difficult to figure out whether people held back their preference or changed their preference and how large a bias this created. However, exit polls have helped polling experts understand what happened after the fact. They indicate that in battleground states, such as Michigan, many voters made their choice in the final week of the campaign, and that group went for Trump by a wide margin.\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Bias does not need to be avoided under all circumstances. If an instrument is highly precise (low variance) and has a small bias, then that instrument might be preferable to another with higher variance and no bias. As an example, biased studies are potentially useful to pilot a survey instrument or to capture useful information for the design of a larger study. Many times we can at best recruit volunteers for a study.\n",
"Given this limitation, it can still be useful to enroll these volunteers in the study and use random assignment to split them into treatment groups. That's the idea behind randomized controlled experiments.\n",
"\n",
"Whether or not bias is present, data typically also exhibit variation.\n",
"Variation can be introduced purposely by using a chance mechanism to select a sample, and it can occur naturally through an instrument's precision. In the next section, we identify three common sources of variation.\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"(sec:variationtypes)=\n",
"\n",
"## Types of Variation\n",
"\n",
"The following types of variation results from a chance mechanism and have the advantage of being quantifiable:\n",
"\n",
"Sampling variation\n",
": Results from using chance to select a sample. In this case, we can, in principle, compute the chance that a particular collection of elements is selected for the sample.\n",
"\n",
"Assignment variation\n",
": Occurs in a controlled experiment when we assign units at random to treatment groups. In this situation, if we split the units up differently, then we can get different results from the experiment. This assignment process allows us to compute the chance of a particular group assignment.\n",
"\n",
"Measurement error\n",
": Results from the measurement process. If the instrument used for measurement has no drift or bias and a reliable distribution of errors, then when we take multiple measurements on the same object, we get random variations in measurements that are centered on the truth.\n",
"\n",
"The _urn model_ is a simple abstraction that can be helpful for understanding variation. This model sets up a container (an urn, which is like a vase or a bucket) full of identical marbles that have been labeled, and we use the simple action of drawing marbles from the urn to reason about sampling schemes, randomized controlled experiments, and measurement error. For each of these types of variation, the urn model helps us estimate the size of the variation using either probability or simulation (see {numref}`Chapter %s <ch:theory_datadesign>`). The example of selecting Wikipedia contributors to receive an informal award provides two examples of the urn model.\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Recall that for the Wikipedia experiment, 200 contributors were selected at random from 1,440 top contributors. These 200 contributors were then split, again at random, into two groups of 100 each. One group received an informal award and the other didn't. Here's how we use the urn model to characterize this process of selection and splitting:\n",
"\n",
"- Imagine an urn filled with 1,440 marbles that are identical in shape and size, and written on each marble is one of the 1,440 Wikipedia usernames. (This is the access frame.)\n",
"- Mix the marbles in the urn really well, select one marble, and set it aside.\n",
"- Repeat the mixing and selecting of the marbles to obtain 200 marbles.\n",
"\n",
"The marbles drawn form the sample. Next, to determine which of the 200 contributors receive awards, we work with another urn:\n",
"\n",
"- In a second urn, put in the 200 marbles from the preceding sample.\n",
"- Mix these marbles well, select one marble, and set it aside.\n",
"- Repeat, choosing 100 marbles. That is, choose marbles one at a time, mixing in between, and setting the chosen marble aside.\n",
"\n",
"The 100 drawn marbles are assigned to the treatment group and correspond to the contributors who receive an award. The 100 left in the urn form the control group and receive no award.\n",
"\n",
"Both the selection of the sample and the choice of award recipients use a chance mechanism. If we were to repeat the first sampling activity again, returning all 1,440 marbles to the original urn, then we would most likely get a different sample. This variation is the source of _sampling variation_. Likewise, if we were to repeat the random assignment process again (keeping the sample of 200 unchanged), then we would get a different treatment group. _Assignment variation_ arises from this second chance process.\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"The Wikipedia experiment provided an example of both sampling and assignment variation. In both cases, the researcher imposed a chance mechanism on the data collection process. Measurement error can at times also be considered a chance process that follows an urn model.\n",
"For example, we can characterize the measurement error of the CO2 monitor at Mauna Loa in this way.\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"If we can draw an accurate analogy between variation in the data and the urn model, the urn model provides us the tools to estimate the size of the variation (see {numref}`Chapter %s <ch:theory_datadesign>`). This is highly desirable because we can give concrete values for the variation in our data. However, it's vital to confirm that the urn model is a reasonable depiction of the source of variation. Otherwise, our claims of accuracy can be seriously flawed. Knowing as much as possible about data scope, including instruments and protocols and chance mechanisms used in data collection, is needed to apply these urn models.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"celltoolbar": "Tags",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: content/ch/02/data_scope_big_data_hubris.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"remove-cell"
]
},
"outputs": [],
"source": [
"import sys\n",
"import os\n",
"if not any(path.endswith('textbook') for path in sys.path):\n",
" sys.path.append(os.path.abspath('../../..'))\n",
"from textbook_utils import *"
]
},
{
"cell_type": "markdown",
"metadata": {
"user_expressions": []
},
"source": [
"(sec:scope_bigdata)=\n",
"\n",
"# Big Data and New Opportunities\n",
"\n",
"The tremendous increase in openly available data has created new roles and opportunities in data science. For example, data journalists look for interesting stories in data much like how traditional beat reporters hunt for news stories. The data lifecycle for the data journalist begins with the search for existing data that might have an interesting story, rather than beginning with a research question and looking for how to collect new or use existing data to address the question.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"user_expressions": []
},
"source": [
"Citizen science projects are another example. They engage many people (and instruments) in data collection. Collectively, these data are made available to researchers who organize the project, and often they are made available in repositories for the general public to further investigate.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"user_expressions": []
},
"source": [
"The availability of administrative and organizational data creates other opportunities. Researchers can link data collected from scientific studies with, say, medical data that have been collected for health-care purposes; these administrative data have been collected for reasons that don't directly stem from the question of interest, but they can be useful in other settings. Such linkages can help data scientists expand the possibilities of their analyses and cross-check the quality of their data. In addition, found data can include digital traces, such as your web-browsing activity, your posts on social media, and your online network of friends and acquaintances, and they can be quite complex.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"user_expressions": []
},
"source": [
"When we have large amounts of administrative data or expansive digital traces, it can be tempting to treat them as more definitive than data collected from traditional, smaller research studies. We might even consider these large datasets to be a replacement for scientific studies and essentially a census. This overreach is referred to as the [\"big data hubris\"](https://doi.org/10.1126/science.1248506). Data with a large scope does not mean that we can ignore foundational issues of how representative the data are, nor can we ignore issues with measurement, dependency, and reliability. (And it can be easy to discover meaningless or nonsensical relationships just by coincidence.) One well-known example is the Google Flu Trends tracking system.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"user_expressions": []
},
"source": [
"## Example: Google Flu Trends\n",
"\n",
"[Digital epidemiology](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5754279/), a new subfield of epidemiology, leverages data generated outside the public health system to study patterns of disease and health dynamics in populations.\n",
"The Google Flu Trends (GFT) tracking system was one of the earliest examples of digital epidemiology.\n",
"In 2007, researchers found that counting the searches people made for flu-related\n",
"terms could accurately estimate the number of flu cases.\n",
"This apparent success made headlines, and many researchers became excited about the possibilities of big data.\n",
"However, GFT did not live up to expectations and was abandoned in 2015.\n",
"\n",
"What went wrong? After all, GFT used millions of digital traces from online queries for terms related to influenza to predict flu activity. Despite initial success, in the 2011–2012 flu season, Google's data scientists found that GFT was not a substitute for the more traditional surveillance reports of three-week-old counts collected by the US Centers for Disease Control and Prevention (CDC) from laboratories across the country. In comparison, GFT overestimated the CDC numbers for 100 out of 108 weeks. Week after week, GFT came in too high for the cases of influenza, even though it was based on big data:\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "week=%{x}<br>gflu=%{y}<extra></extra>",
"legendgroup": "",
"line": {
"color": "#1F77B4",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "",
"orientation": "v",
"showlegend": false,
"type": "scatter",
"x": [
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519
],
"xaxis": "x",
"y": [
1.278,
1.257,
1.324,
1.276,
1.302,
1.4809999,
1.915,
2.4979999,
3.3610001,
3.79,
4.2540002,
4.9260001,
5.4239998,
6.0370002,
7.112,
6.533,
5.7220001,
4.4679999,
3.5869999,
2.655,
2.5599999,
2.1900001,
2.0320001,
2.0550001,
2.1989999,
2.1689999,
1.916,
1.86,
1.8609999,
1.91,
1.944,
2,
1.9680001,
1.888,
1.793,
1.619,
1.511,
1.35,
1.257,
1.123,
1.11,
1.149,
1.0880001,
1.0599999,
1.0420001,
0.98900002,
0.96499997,
0.85799998,
0.80800003,
0.78600001,
0.76499999,
0.75999999,
0.75199997,
0.73699999,
0.74400002,
0.75700003,
0.75400001,
0.80400002,
0.84600002,
0.92400002,
1.03,
1.187,
1.3150001,
1.335,
1.4299999,
1.421,
1.566,
1.596,
1.6849999,
1.758,
1.864,
1.661,
1.96,
1.943,
2.1129999,
2.5120001,
2.9170001,
2.9779999,
2.7260001,
3.089,
3.5539999,
3.6010001,
3.7839999,
4.0770001,
3.5650001,
2.98,
2.4820001,
2.076,
1.776,
1.589,
1.405,
1.228,
1.126,
1.0549999,
1.013,
0.96499997,
0.93699998,
0.88200003,
0.85900003,
0.81099999,
0.74400002,
0.71399999,
0.65100002,
0.639,
0.62599999,
0.61000001,
0.60399997,
0.597,
0.616,
0.634,
0.71700001,
0.82099998,
0.95099998,
1.127,
1.3430001,
1.521,
1.587,
1.64,
1.608,
1.638,
1.788,
1.7970001,
1.88,
1.785,
2.033,
1.9809999,
2.0940001,
2.3699999,
2.7409999,
2.8599999,
2.5,
2.411,
2.4749999,
2.507,
2.348,
2.5009999,
2.71,
2.5190001,
2.586,
2.556,
2.1619999,
1.936,
1.801,
1.799,
1.785,
1.729,
1.625,
1.651,
1.624,
1.5369999,
1.428,
1.329,
1.265,
1.136,
0.96600002,
0.91100001,
0.93900001,
0.89700001,
0.86900002,
0.86900002,
0.889,
0.977,
1.095,
1.199,
1.374,
1.543,
1.737,
1.895,
2.0179999,
2.325,
2.391,
2.369,
2.349,
2.4920001,
2.9130001,
3.04,
3.641,
4.427,
5.132,
6.3590002,
7.9039998,
8.618,
10.112,
10.555,
9.408,
7.2090001,
5.5409999,
4.5549998,
4.2399998,
3.7839999,
3.5039999,
3.2420001,
2.8940001,
2.6730001,
2.4820001,
2.1210001,
1.747,
1.681,
1.534,
1.438,
1.286,
1.165,
1.149,
1.063,
1.024,
0.99699998,
0.96600002,
0.92500001,
0.94099998,
0.90700001,
0.95599997,
0.986,
0.99699998,
1.04,
1.084,
1.146,
1.1799999
],
"yaxis": "y"
},
{
"line": {
"color": "black",
"width": 2
},
"mode": "lines",
"name": "GFT",
"type": "scatter",
"x": [
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519
],
"y": [
1.278,
1.257,
1.324,
1.276,
1.302,
1.4809999,
1.915,
2.4979999,
3.3610001,
3.79,
4.2540002,
4.9260001,
5.4239998,
6.0370002,
7.112,
6.533,
5.7220001,
4.4679999,
3.5869999,
2.655,
2.5599999,
2.1900001,
2.0320001,
2.0550001,
2.1989999,
2.1689999,
1.916,
1.86,
1.8609999,
1.91,
1.944,
2,
1.9680001,
1.888,
1.793,
1.619,
1.511,
1.35,
1.257,
1.123,
1.11,
1.149,
1.0880001,
1.0599999,
1.0420001,
0.98900002,
0.96499997,
0.85799998,
0.80800003,
0.78600001,
0.76499999,
0.75999999,
0.75199997,
0.73699999,
0.74400002,
0.75700003,
0.75400001,
0.80400002,
0.84600002,
0.92400002,
1.03,
1.187,
1.3150001,
1.335,
1.4299999,
1.421,
1.566,
1.596,
1.6849999,
1.758,
1.864,
1.661,
1.96,
1.943,
2.1129999,
2.5120001,
2.9170001,
2.9779999,
2.7260001,
3.089,
3.5539999,
3.6010001,
3.7839999,
4.0770001,
3.5650001,
2.98,
2.4820001,
2.076,
1.776,
1.589,
1.405,
1.228,
1.126,
1.0549999,
1.013,
0.96499997,
0.93699998,
0.88200003,
0.85900003,
0.81099999,
0.74400002,
0.71399999,
0.65100002,
0.639,
0.62599999,
0.61000001,
0.60399997,
0.597,
0.616,
0.634,
0.71700001,
0.82099998,
0.95099998,
1.127,
1.3430001,
1.521,
1.587,
1.64,
1.608,
1.638,
1.788,
1.7970001,
1.88,
1.785,
2.033,
1.9809999,
2.0940001,
2.3699999,
2.7409999,
2.8599999,
2.5,
2.411,
2.4749999,
2.507,
2.348,
2.5009999,
2.71,
2.5190001,
2.586,
2.556,
2.1619999,
1.936,
1.801,
1.799,
1.785,
1.729,
1.625,
1.651,
1.624,
1.5369999,
1.428,
1.329,
1.265,
1.136,
0.96600002,
0.91100001,
0.93900001,
0.89700001,
0.86900002,
0.86900002,
0.889,
0.977,
1.095,
1.199,
1.374,
1.543,
1.737,
1.895,
2.0179999,
2.325,
2.391,
2.369,
2.349,
2.4920001,
2.9130001,
3.04,
3.641,
4.427,
5.132,
6.3590002,
7.9039998,
8.618,
10.112,
10.555,
9.408,
7.2090001,
5.5409999,
4.5549998,
4.2399998,
3.7839999,
3.5039999,
3.2420001,
2.8940001,
2.6730001,
2.4820001,
2.1210001,
1.747,
1.681,
1.534,
1.438,
1.286,
1.165,
1.149,
1.063,
1.024,
0.99699998,
0.96600002,
0.92500001,
0.94099998,
0.90700001,
0.95599997,
0.986,
0.99699998,
1.04,
1.084,
1.146,
1.1799999
]
},
{
"line": {
"color": "green",
"dash": "dash",
"width": 2
},
"mode": "lines",
"name": "CDC reports",
"type": "scatter",
"x": [
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519
],
"y": [
1.171418,
1.1083462,
1.1308453,
0.90364265,
1.0954088,
1.0915837,
1.2474653,
1.9112091,
2.7805552,
3.770149,
3.9846411,
3.8595753,
3.6124198,
4.594739,
6.3958921,
7.4638004,
7.5791593,
6.6275835,
5.3993139,
3.2687597,
2.5934174,
3.1040971,
2.092427,
2.2741141,
1.4257451,
2.0439787,
2.9451933,
2.2960782,
2.646729,
2.4623682,
2.50983,
2.09182,
1.4041854,
1.6817359,
2.0192127,
1.6443734,
1.7109058,
1.3367567,
1.2085593,
1.4452069,
0.87514842,
1.4064697,
1.1974628,
0.82528001,
1.0034255,
1.2999759,
0.98582166,
0.88576764,
1.2151282,
0.74755394,
0.90064698,
0.99463844,
0.77613366,
0.9085235,
0.79673129,
0.78606182,
0.85387063,
0.87339491,
1.0607207,
1.2799884,
0.91658193,
1.0564606,
1.164367,
1.2959486,
1.7451242,
1.4860699,
1.4137946,
1.6580815,
1.3840544,
1.2660482,
1.8963454,
1.9192883,
1.9883851,
2.5159605,
2.1140089,
2.2770658,
1.9846022,
2.8221402,
3.3696156,
2.8502071,
3.7543252,
4.1681404,
4.8100095,
4.2977562,
3.3488991,
4.0479169,
3.2488174,
2.2061303,
2.1420743,
1.8031404,
1.3742471,
1.4762274,
1.2263614,
1.4285085,
1.3640238,
0.79795176,
1.0244337,
1.2009552,
1.020745,
0.83253735,
1.1570845,
0.81167519,
0.75051141,
0.80043656,
0.76971471,
0.78403252,
0.56783646,
0.60842013,
0.67322075,
0.56113672,
0.92830461,
1.0543029,
1.0278047,
0.93351346,
1.0702095,
1.3536971,
1.5346191,
1.4532796,
1.5246794,
1.5008693,
1.4576732,
1.3479267,
1.8122422,
1.713089,
1.7853081,
2.0980618,
1.7496631,
2.0186653,
1.3021564,
1.3307593,
2.5598328,
2.5387111,
2.2713671,
2.3135726,
2.2919707,
1.9710411,
1.4517988,
2.0863514,
2.2667179,
1.9735357,
1.8584507,
2.1775451,
1.4695228,
1.5568247,
1.3910998,
1.5309417,
1.3187002,
0.95436966,
1.3601385,
1.3285744,
1.129094,
1.0022913,
1.1658264,
0.93309826,
0.97563767,
1.0792313,
1.018453,
0.99078494,
0.86922985,
0.81096345,
0.92309928,
1.0521888,
1.0041145,
1.0609448,
1.4007658,
1.1638627,
1.3245299,
1.4585152,
1.5891006,
1.6101794,
1.4177721,
1.6531293,
1.4363006,
1.4338268,
1.7947485,
2.0537708,
2.0575485,
2.9851675,
2.5164716,
3.5299871,
3.2611384,
3.9938788,
6.9712896,
4.2877822,
4.1184835,
4.6093616,
3.9192736,
2.9373868,
2.110666,
2.3714867,
2.2130618,
2.0035191,
2.1618235,
1.8759639,
1.6148596,
1.5638528,
1.3012533,
1.3516425,
1.2337075,
0.93166322,
0.92781031,
1.1144128,
1.1074936,
0.80061609,
0.95099092,
0.84016639,
0.83907223,
0.90041411,
0.73570663,
0.78248203,
0.66062176,
0.73382455,
0.75467545,
0.7614246,
0.96807575,
1.1112039,
1.0119747
]
},
{
"line": {
"color": "purple",
"dash": "dot",
"width": 2
},
"mode": "lines",
"name": "Model 3-wk-old",
"type": "scatter",
"x": [
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519
],
"y": [
1.23761,
1.2296479,
1.2824886,
1.1106772,
1.1290922,
1.3016713,
1.7539965,
2.4758599,
3.374625,
4.1775184,
4.4113564,
4.9228292,
4.9245415,
5.5906243,
7.3860154,
7.2550654,
6.124373,
5.4040666,
4.6676273,
3.328387,
2.9093368,
2.787416,
2.0380719,
2.4550006,
2.3545759,
2.378211,
2.4499755,
2.1231856,
2.2640908,
2.144047,
2.2468259,
2.0665271,
1.8173436,
1.8939068,
1.9448748,
1.660338,
1.5274847,
1.3418695,
1.2355965,
1.1883669,
1.0072777,
1.3069925,
1.1878111,
1.0155258,
1.010646,
1.1596334,
1.0349913,
0.84356159,
0.90774047,
0.83651537,
0.87946039,
0.90410256,
0.8347556,
0.83605748,
0.782718,
0.78695947,
0.78995627,
0.82448322,
0.97203529,
1.112046,
0.93657207,
1.0598218,
1.1484942,
1.1339539,
1.3631942,
1.3429847,
1.3265136,
1.5600117,
1.5638494,
1.5747298,
1.9454702,
1.6763725,
1.7976321,
2.0141637,
1.9478424,
2.6828787,
2.9712596,
3.0686076,
3.0253792,
3.184396,
4.0656047,
4.0444188,
4.398109,
4.6126294,
3.7815056,
3.3915517,
2.9827564,
2.387172,
2.0729294,
1.8766692,
1.5806473,
1.3650028,
1.2118539,
1.2749646,
1.2606399,
1.0539271,
1.0074966,
1.0990185,
1.0251664,
0.85862255,
0.90364271,
0.81560743,
0.74574542,
0.73222905,
0.73856729,
0.70937115,
0.59818536,
0.57825321,
0.60788023,
0.5651238,
0.77136534,
0.94633812,
0.92492616,
0.98045528,
1.1472502,
1.3522742,
1.3965435,
1.3912328,
1.2999481,
1.379691,
1.6471568,
1.6042122,
1.8409454,
1.7077945,
1.7427394,
1.7407361,
1.6676893,
2.2825158,
2.3258638,
2.1195538,
2.1919987,
2.0717504,
2.1709278,
2.1837933,
1.9985831,
1.9170598,
2.1448641,
2.2648623,
2.3368652,
2.3491697,
1.760697,
1.7155658,
1.6115284,
1.6720059,
1.6403425,
1.5922405,
1.3988301,
1.3101454,
1.4215497,
1.3784425,
1.2141843,
1.0315106,
1.0870309,
0.96231306,
0.84136128,
0.91241556,
1.0349711,
1.0058506,
0.88222343,
0.8490451,
0.9201861,
1.0520787,
1.14115,
1.1838119,
1.3174491,
1.3273648,
1.4377342,
1.5563377,
1.6347649,
1.8990945,
1.7478701,
1.646062,
1.5931162,
1.7368813,
2.3707273,
2.506887,
2.6070104,
3.5930114,
3.8114505,
5.0003319,
5.9039989,
6.0353703,
7.8542237,
6.1549358,
2.8658228,
1.148688,
1.5008281,
2.3254097,
2.5106514,
2.7911901,
2.2645698,
2.1385045,
2.0264239,
1.8300114,
1.7028997,
1.4246521,
1.0435148,
1.2556125,
1.3007541,
1.0086646,
0.89990669,
1.000537,
1.1118129,
0.85035872,
0.89299792,
0.87895638,
0.87862754,
0.87574363,
0.76949698,
0.79660481,
0.70342517,
0.80110246,
0.75854665,
0.75959027,
0.93035978,
1.0350267,
0.92335767
]
}
],
"layout": {
"height": 250,
"legend": {
"tracegroupgap": 0
},
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "rgb(36,36,36)"
},
"error_y": {
"color": "rgb(36,36,36)"
},
"marker": {
"line": {
"color": "white",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "white",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "rgb(36,36,36)",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "rgb(36,36,36)"
},
"baxis": {
"endlinecolor": "rgb(36,36,36)",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "rgb(36,36,36)"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"colorscale": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"colorscale": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"type": "heatmap"
}
],
"heatmapgl": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"colorscale": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"type": "heatmapgl"
}
],
"histogram": [
{
"marker": {
"line": {
"color": "white",
"width": 0.6
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"colorscale": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"colorscale": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"fillpattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scattergl"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"colorscale": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "rgb(237,237,237)"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "rgb(217,217,217)"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowhead": 0,
"arrowwidth": 1
},
"autosize": true,
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"colorscale": {
"diverging": [
[
0,
"rgb(103,0,31)"
],
[
0.1,
"rgb(178,24,43)"
],
[
0.2,
"rgb(214,96,77)"
],
[
0.3,
"rgb(244,165,130)"
],
[
0.4,
"rgb(253,219,199)"
],
[
0.5,
"rgb(247,247,247)"
],
[
0.6,
"rgb(209,229,240)"
],
[
0.7,
"rgb(146,197,222)"
],
[
0.8,
"rgb(67,147,195)"
],
[
0.9,
"rgb(33,102,172)"
],
[
1,
"rgb(5,48,97)"
]
],
"sequential": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"sequentialminus": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
]
},
"colorway": [
"#1F77B4",
"#FF7F0E",
"#2CA02C",
"#D62728",
"#9467BD",
"#8C564B",
"#E377C2",
"#7F7F7F",
"#BCBD22",
"#17BECF"
],
"font": {
"color": "rgb(36,36,36)"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "white",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"height": 250,
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"margin": {
"b": 10,
"l": 10,
"r": 10,
"t": 10
},
"paper_bgcolor": "white",
"plot_bgcolor": "white",
"polar": {
"angularaxis": {
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": false,
"showline": true,
"ticks": "outside"
},
"bgcolor": "white",
"radialaxis": {
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": false,
"showline": true,
"ticks": "outside"
}
},
"scene": {
"xaxis": {
"backgroundcolor": "white",
"gridcolor": "rgb(232,232,232)",
"gridwidth": 2,
"linecolor": "rgb(36,36,36)",
"showbackground": true,
"showgrid": false,
"showline": true,
"ticks": "outside",
"zeroline": false,
"zerolinecolor": "rgb(36,36,36)"
},
"yaxis": {
"backgroundcolor": "white",
"gridcolor": "rgb(232,232,232)",
"gridwidth": 2,
"linecolor": "rgb(36,36,36)",
"showbackground": true,
"showgrid": false,
"showline": true,
"ticks": "outside",
"zeroline": false,
"zerolinecolor": "rgb(36,36,36)"
},
"zaxis": {
"backgroundcolor": "white",
"gridcolor": "rgb(232,232,232)",
"gridwidth": 2,
"linecolor": "rgb(36,36,36)",
"showbackground": true,
"showgrid": false,
"showline": true,
"ticks": "outside",
"zeroline": false,
"zerolinecolor": "rgb(36,36,36)"
}
},
"shapedefaults": {
"fillcolor": "black",
"line": {
"width": 0
},
"opacity": 0.3
},
"ternary": {
"aaxis": {
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": false,
"showline": true,
"ticks": "outside"
},
"baxis": {
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": false,
"showline": true,
"ticks": "outside"
},
"bgcolor": "white",
"caxis": {
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": false,
"showline": true,
"ticks": "outside"
}
},
"title": {
"x": 0.5,
"xanchor": "center"
},
"width": 350,
"xaxis": {
"automargin": true,
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": true,
"showline": true,
"ticks": "outside",
"title": {
"standoff": 15
},
"zeroline": false,
"zerolinecolor": "rgb(36,36,36)"
},
"yaxis": {
"automargin": true,
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": true,
"showline": true,
"ticks": "outside",
"title": {
"standoff": 15
},
"zeroline": false,
"zerolinecolor": "rgb(36,36,36)"
}
}
},
"width": 550,
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
303,
519
],
"title": {
"text": "Week"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
0.005922093333333489,
11.110214626666666
],
"title": {
"text": "Percent influenza"
},
"type": "linear"
}
}
},
"image/png": "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
gitextract_rwt56aci/ ├── .envrc ├── .gitattributes ├── .github/ │ └── workflows/ │ ├── check_build.yml │ └── deploy.yml ├── .gitignore ├── LICENSE.md ├── Makefile ├── README.md ├── SETUP.md ├── content/ │ ├── _config.yml │ ├── _static/ │ │ ├── custom.css │ │ └── custom.js │ ├── _toc.yml │ ├── additional_resources.md │ ├── ch/ │ │ ├── 01/ │ │ │ ├── lifecycle_cycle.ipynb │ │ │ ├── lifecycle_intro.ipynb │ │ │ ├── lifecycle_map.ipynb │ │ │ └── lifecycle_summary.ipynb │ │ ├── 02/ │ │ │ ├── data_scope_accuracy.ipynb │ │ │ ├── data_scope_big_data_hubris.ipynb │ │ │ ├── data_scope_construct.ipynb │ │ │ ├── data_scope_exercises.ipynb │ │ │ ├── data_scope_intro.ipynb │ │ │ ├── data_scope_natural.ipynb │ │ │ ├── data_scope_protocols.ipynb │ │ │ ├── data_scope_summary.ipynb │ │ │ ├── figures/ │ │ │ │ └── ConstructDesignsRe tangles.pptx │ │ │ └── thirtyminutePM25.csv │ │ ├── 03/ │ │ │ ├── data/ │ │ │ │ ├── pm30.csv │ │ │ │ └── purpleAir30minsample.csv │ │ │ ├── theory_election.ipynb │ │ │ ├── theory_exercises.ipynb │ │ │ ├── theory_intro.ipynb │ │ │ ├── theory_measurement_error.ipynb │ │ │ ├── theory_prob_dist.ipynb │ │ │ ├── theory_probability.ipynb │ │ │ ├── theory_random_assignment.ipynb │ │ │ ├── theory_sampling_variation.ipynb │ │ │ ├── theory_summary.ipynb │ │ │ ├── theory_urn.ipynb │ │ │ └── theory_vaccine_efficacy.ipynb │ │ ├── 04/ │ │ │ ├── modeling_exercises.ipynb │ │ │ ├── modeling_intro.ipynb │ │ │ ├── modeling_loss_functions.ipynb │ │ │ ├── modeling_simple.ipynb │ │ │ └── modeling_summary.ipynb │ │ ├── 05/ │ │ │ ├── BusDiagram.pptx │ │ │ ├── bus_clean.ipynb │ │ │ ├── bus_eda.ipynb │ │ │ ├── bus_exercises.ipynb │ │ │ ├── bus_intro.ipynb │ │ │ ├── bus_modeling.ipynb │ │ │ ├── bus_scope.ipynb │ │ │ ├── bus_summary.ipynb │ │ │ └── cycle_case_study_intro.ipynb │ │ ├── 06/ │ │ │ ├── pandas_aggregating.ipynb │ │ │ ├── pandas_exercises.ipynb │ │ │ ├── pandas_intro.ipynb │ │ │ ├── pandas_joining.ipynb │ │ │ ├── pandas_other_reps.ipynb │ │ │ ├── pandas_subsetting.ipynb │ │ │ ├── pandas_summary.ipynb │ │ │ └── pandas_transforming.ipynb │ │ ├── 07/ │ │ │ ├── sql_aggregating.ipynb │ │ │ ├── sql_exercises.ipynb │ │ │ ├── sql_intro.ipynb │ │ │ ├── sql_joining.ipynb │ │ │ ├── sql_subsetting.ipynb │ │ │ ├── sql_summary.ipynb │ │ │ └── sql_transforming.ipynb │ │ ├── 08/ │ │ │ ├── files_command_line.ipynb │ │ │ ├── files_datasets.ipynb │ │ │ ├── files_encoding.ipynb │ │ │ ├── files_formats.ipynb │ │ │ ├── files_granularity.ipynb │ │ │ ├── files_intro.ipynb │ │ │ ├── files_size.ipynb │ │ │ └── files_summary.ipynb │ │ ├── 09/ │ │ │ ├── wrangling_checks.ipynb │ │ │ ├── wrangling_co2.ipynb │ │ │ ├── wrangling_intro.ipynb │ │ │ ├── wrangling_missing.ipynb │ │ │ ├── wrangling_restaurants.ipynb │ │ │ ├── wrangling_structure.ipynb │ │ │ ├── wrangling_summary.ipynb │ │ │ └── wrangling_transformations.ipynb │ │ ├── 10/ │ │ │ ├── eda_distributions.ipynb │ │ │ ├── eda_example.ipynb │ │ │ ├── eda_feature_types.ipynb │ │ │ ├── eda_guidelines.ipynb │ │ │ ├── eda_intro.ipynb │ │ │ ├── eda_multi.ipynb │ │ │ ├── eda_relationships.ipynb │ │ │ └── eda_summary.ipynb │ │ ├── 11/ │ │ │ ├── data/ │ │ │ │ ├── Berkeley_PD_-_Calls_for_Service.csv │ │ │ │ ├── babies.data │ │ │ │ ├── babies.readme │ │ │ │ ├── babies23.data │ │ │ │ ├── calls.csv │ │ │ │ ├── cvdow.csv │ │ │ │ ├── planets.data │ │ │ │ ├── plannedparenthood.csv │ │ │ │ ├── stops.csv │ │ │ │ ├── stops.json │ │ │ │ └── voteCA2016.csv │ │ │ ├── figures/ │ │ │ │ └── threePalettes.pptx │ │ │ ├── viz_comparisons.ipynb │ │ │ ├── viz_context.ipynb │ │ │ ├── viz_data_design.ipynb │ │ │ ├── viz_intro.ipynb │ │ │ ├── viz_other_tools.ipynb │ │ │ ├── viz_plotly.ipynb │ │ │ ├── viz_scale.ipynb │ │ │ ├── viz_smoothing.ipynb │ │ │ └── viz_summary.ipynb │ │ ├── 12/ │ │ │ ├── pa_cleaning_aqs.ipynb │ │ │ ├── pa_cleaning_purpleair.ipynb │ │ │ ├── pa_collocated.ipynb │ │ │ ├── pa_conclusion.ipynb │ │ │ ├── pa_eda.ipynb │ │ │ ├── pa_exercises.ipynb │ │ │ ├── pa_intro.ipynb │ │ │ ├── pa_modeling.ipynb │ │ │ └── pa_scope.ipynb │ │ ├── 13/ │ │ │ ├── text_examples.ipynb │ │ │ ├── text_exercises.ipynb │ │ │ ├── text_intro.ipynb │ │ │ ├── text_regex.ipynb │ │ │ ├── text_sotu.ipynb │ │ │ ├── text_strings.ipynb │ │ │ └── text_summary.ipynb │ │ ├── 14/ │ │ │ ├── data/ │ │ │ │ ├── catalog.xml │ │ │ │ └── js_ex/ │ │ │ │ ├── epa_aqi_samp.json │ │ │ │ ├── epa_col.json │ │ │ │ ├── epa_row.json │ │ │ │ ├── epa_val.json │ │ │ │ └── ex.json │ │ │ ├── figures/ │ │ │ │ ├── JSON-diagram.pptx │ │ │ │ ├── XPath.pptx │ │ │ │ └── netCDF.pptx │ │ │ ├── web_html.ipynb │ │ │ ├── web_http.ipynb │ │ │ ├── web_intro.ipynb │ │ │ ├── web_json.ipynb │ │ │ ├── web_netCDF.ipynb │ │ │ ├── web_rest.ipynb │ │ │ └── web_summary.ipynb │ │ ├── 15/ │ │ │ ├── linear_case.ipynb │ │ │ ├── linear_categorical.ipynb │ │ │ ├── linear_exercises.ipynb │ │ │ ├── linear_feature_eng.ipynb │ │ │ ├── linear_fitting.ipynb │ │ │ ├── linear_intro.ipynb │ │ │ ├── linear_multi.ipynb │ │ │ ├── linear_multi_fit.ipynb │ │ │ ├── linear_pa.ipynb │ │ │ ├── linear_simple.ipynb │ │ │ ├── linear_simple_fit.ipynb │ │ │ ├── linear_summary.ipynb │ │ │ ├── linear_tips.ipynb │ │ │ └── mobility.csv │ │ ├── 16/ │ │ │ ├── figures/ │ │ │ │ └── ModelBias-Variance.pptx │ │ │ ├── ms_cv.ipynb │ │ │ ├── ms_intro.ipynb │ │ │ ├── ms_overfitting.ipynb │ │ │ ├── ms_regularization.ipynb │ │ │ ├── ms_risk.ipynb │ │ │ ├── ms_summary.ipynb │ │ │ └── ms_train_test.ipynb │ │ ├── 17/ │ │ │ ├── ImagesForTriptych.R │ │ │ ├── Triptych.pptx │ │ │ ├── data/ │ │ │ │ └── bootstrapped_theta.csv │ │ │ ├── inf_pred_gen_CI.ipynb │ │ │ ├── inf_pred_gen_Exercises.ipynb │ │ │ ├── inf_pred_gen_HT.ipynb │ │ │ ├── inf_pred_gen_PI.ipynb │ │ │ ├── inf_pred_gen_boot.ipynb │ │ │ ├── inf_pred_gen_dist.ipynb │ │ │ ├── inf_pred_gen_intro.ipynb │ │ │ ├── inf_pred_gen_prob.ipynb │ │ │ └── inf_pred_gen_summary.ipynb │ │ ├── 18/ │ │ │ ├── donkey_clean.ipynb │ │ │ ├── donkey_eda.ipynb │ │ │ ├── donkey_exercises.ipynb │ │ │ ├── donkey_intro.ipynb │ │ │ ├── donkey_model.ipynb │ │ │ ├── donkey_scope.ipynb │ │ │ └── donkey_summary.ipynb │ │ ├── 19/ │ │ │ ├── class_dr.ipynb │ │ │ ├── class_example.ipynb │ │ │ ├── class_intro.ipynb │ │ │ ├── class_log_model.ipynb │ │ │ ├── class_loss.ipynb │ │ │ ├── class_pred.ipynb │ │ │ └── class_summary.ipynb │ │ ├── 20/ │ │ │ ├── gd_alternative.ipynb │ │ │ ├── gd_basics.ipynb │ │ │ ├── gd_convex.ipynb │ │ │ ├── gd_example.ipynb │ │ │ ├── gd_intro.ipynb │ │ │ └── gd_summary.ipynb │ │ ├── 21/ │ │ │ ├── fake_news_data.ipynb │ │ │ ├── fake_news_exploring.ipynb │ │ │ ├── fake_news_intro.ipynb │ │ │ ├── fake_news_modeling.ipynb │ │ │ ├── fake_news_question.ipynb │ │ │ └── fake_news_summary.ipynb │ │ ├── a01/ │ │ │ └── prob_review.ipynb │ │ ├── a02/ │ │ │ └── vector_space_review.ipynb │ │ ├── a03/ │ │ │ ├── StudentRatingsData.csv │ │ │ ├── baby.csv │ │ │ ├── duncan.csv │ │ │ ├── hyp_intro.ipynb │ │ │ ├── hyp_introduction.ipynb │ │ │ ├── hyp_introduction_part2.ipynb │ │ │ ├── ilec.csv │ │ │ └── raw_anonymized_data.csv │ │ ├── a04/ │ │ │ ├── ref_intro.ipynb │ │ │ ├── ref_matplotlib.ipynb │ │ │ ├── ref_pandas.ipynb │ │ │ ├── ref_seaborn.ipynb │ │ │ └── ref_sklearn.ipynb │ │ └── old_pages/ │ │ ├── a05/ │ │ │ ├── bias_cv.ipynb │ │ │ ├── bias_intro.ipynb │ │ │ ├── bias_modeling.ipynb │ │ │ ├── bias_risk.ipynb │ │ │ └── icecream.csv │ │ ├── a06/ │ │ │ ├── reg_intro.ipynb │ │ │ ├── reg_intuition.ipynb │ │ │ ├── reg_lasso.ipynb │ │ │ ├── reg_ridge.ipynb │ │ │ ├── water.csv │ │ │ └── water_large.csv │ │ ├── a07/ │ │ │ ├── repl_intro.ipynb │ │ │ └── repl_phacking.ipynb │ │ ├── classification_regularization.ipynb │ │ ├── cleaning/ │ │ │ ├── cleaning_calls.ipynb │ │ │ ├── cleaning_faithfulness.ipynb │ │ │ ├── cleaning_granularity.ipynb │ │ │ ├── cleaning_scope.ipynb │ │ │ ├── cleaning_stops.ipynb │ │ │ ├── cleaning_structure.ipynb │ │ │ └── cleaning_temp.ipynb │ │ ├── data_design/ │ │ │ ├── design_data.ipynb │ │ │ ├── design_dewey_truman.ipynb │ │ │ ├── design_intro.ipynb │ │ │ ├── design_sampling.ipynb │ │ │ ├── design_srs_vs_big_data.ipynb │ │ │ └── srs_big_simulations.csv │ │ ├── inference/ │ │ │ ├── StudentRatingsData.csv │ │ │ ├── baby.csv │ │ │ ├── hyp_intro.ipynb │ │ │ ├── hyp_introduction.ipynb │ │ │ ├── hyp_introduction_part2.ipynb │ │ │ ├── hyp_studentized.ipynb │ │ │ ├── ilec.csv │ │ │ └── raw_anonymized_data.csv │ │ ├── mult_inference.ipynb │ │ ├── pca/ │ │ │ ├── child_data.csv │ │ │ ├── child_mortality_0_5_year_olds_dying_per_1000_born.csv │ │ │ ├── children_per_woman_total_fertility.csv │ │ │ ├── ds100_utils.py │ │ │ ├── fat.dat.txt │ │ │ ├── hongkong_height_weight.csv │ │ │ ├── legislators-current.yaml │ │ │ ├── legislators.csv │ │ │ ├── pca_dims.ipynb │ │ │ ├── pca_in_practice.ipynb │ │ │ ├── pca_intro.ipynb │ │ │ ├── pca_svd.ipynb │ │ │ ├── rectangle_data.csv │ │ │ ├── vote_pivot.csv │ │ │ └── votes.csv │ │ ├── police/ │ │ │ ├── police_calls.ipynb │ │ │ └── police_stops.ipynb │ │ ├── sql/ │ │ │ ├── sql_basics.ipynb │ │ │ ├── sql_joins.ipynb │ │ │ └── sql_rdbms.ipynb │ │ └── viz/ │ │ ├── viz_matplotlib.ipynb │ │ ├── viz_philosophy.ipynb │ │ ├── viz_principles.ipynb │ │ ├── viz_principles_2.ipynb │ │ ├── viz_qualitative.ipynb │ │ └── viz_quantitative.ipynb │ ├── data_sources.md │ ├── datasets/ │ │ ├── 100m_sprint.csv │ │ ├── BLS_Ed_Inc.csv │ │ ├── CAIT_Top14_CO2_Ctries.csv │ │ ├── DAWN-Data.txt │ │ ├── SF_Restaurant_Inspections/ │ │ │ ├── businesses.csv │ │ │ ├── inspections.csv │ │ │ ├── legend.csv │ │ │ └── violations.csv │ │ ├── Wikipedia.csv │ │ ├── WikipediaExp.csv │ │ ├── akc.csv │ │ ├── all_dogs.csv │ │ ├── babynames.csv │ │ ├── black_spruce.csv │ │ ├── census_regions.csv │ │ ├── cherryBlossomMen.csv │ │ ├── co2_by_country.csv │ │ ├── co2_mm_mlo.txt │ │ ├── crabs.data │ │ ├── dogs.csv │ │ ├── dogs43.csv │ │ ├── donkeys.csv │ │ ├── duncan.csv │ │ ├── earnings2014.csv │ │ ├── earnings2020.csv │ │ ├── fake_news/ │ │ │ ├── 01_make_csv.ipynb │ │ │ ├── 02_modeling.ipynb │ │ │ ├── 03_eda.ipynb │ │ │ ├── fake_news.csv │ │ │ └── fake_news_training.csv │ │ ├── gft.csv │ │ ├── market-analysis.csv │ │ ├── nba-2022.csv │ │ ├── nyt_names.csv │ │ ├── opportunity/ │ │ │ ├── README.md │ │ │ ├── mobility.csv │ │ │ ├── online_data_tables.xls │ │ │ ├── onlinedata1.dta │ │ │ ├── onlinedata2.dta │ │ │ ├── onlinedata3.dta │ │ │ ├── onlinedata4.dta │ │ │ ├── onlinedata5.dta │ │ │ ├── onlinedata6.dta │ │ │ ├── onlinedata7.dta │ │ │ └── onlinedata8.dta │ │ ├── purpleAir2minSample.csv │ │ ├── purpleAirMeasurementError.csv │ │ ├── purpleair_study/ │ │ │ ├── aqs_06-067-0010.csv │ │ │ ├── cleaned_purpleair_aqs/ │ │ │ │ ├── Fig1.csv │ │ │ │ ├── Fig4.csv │ │ │ │ ├── FigS1_IA.csv │ │ │ │ ├── Full24hrdataset.csv │ │ │ │ ├── README.txt │ │ │ │ ├── datadictionary_UScorrection_210408_rev3.docx │ │ │ │ └── withheldfinaldataset_Fig7.csv │ │ │ ├── list_of_aqs_sites.csv │ │ │ ├── list_of_purpleair_sensors.json │ │ │ ├── matched_pa_aqs.csv │ │ │ └── purpleair_AMTS/ │ │ │ ├── AMTS_TESTING (outside) (38.568404 -121.493163) Primary Real Time 05_20_2018 12_29_2019.csv │ │ │ ├── AMTS_TESTING (outside) (38.568404 -121.493163) Secondary Real Time 05_20_2018 12_29_2019.csv │ │ │ ├── AMTS_TESTING B (undefined) (38.568404 -121.493163) Primary Real Time 05_20_2018 12_29_2019.csv │ │ │ └── AMTS_TESTING B (undefined) (38.568404 -121.493163) Secondary Real Time 05_20_2018 12_29_2019.csv │ │ ├── seattle_bus_times.csv │ │ ├── seattle_bus_times_NC.csv │ │ ├── sfhousing.csv │ │ ├── snowy_plover.csv │ │ ├── stateoftheunion1790-2022.txt │ │ └── utilities.csv │ ├── intro.md │ ├── notation.md │ ├── preface.md │ └── prereqs.md ├── environment.yml ├── mypy.ini ├── pyproject.toml ├── requirements.txt ├── scripts/ │ ├── create_babynames_csv.py │ ├── download_aqs_data.py │ ├── migrate_hidden_tags.py │ ├── migrate_starter_code.py │ └── renumber_chapters.py ├── starter.ipynb └── textbook_utils.py
SYMBOL INDEX (27 symbols across 6 files) FILE: content/ch/old_pages/pca/ds100_utils.py function fetch_and_cache (line 5) | def fetch_and_cache(data_url, file, data_dir="data", force=False): function head (line 39) | def head(filename, lines=5): FILE: scripts/create_babynames_csv.py function read_year (line 16) | def read_year(path): FILE: scripts/download_aqs_data.py function prep_request_params (line 34) | def prep_request_params(args): function make_all_requests (line 61) | def make_all_requests(req_params): function save_results_to_csv (line 75) | def save_results_to_csv(data, csv_name): FILE: scripts/migrate_hidden_tags.py function transform_file (line 15) | def transform_file(nb_file): FILE: scripts/renumber_chapters.py function load_toc (line 42) | def load_toc(): function chapter (line 52) | def chapter(tocloc): function get_folder (line 57) | def get_folder(chap): function set_folder (line 63) | def set_folder(chap, new_folder): function make_folder_counter (line 76) | def make_folder_counter(): function all_changes (line 86) | def all_changes(): function process_toc_changes (line 106) | def process_toc_changes(changes): function process_folder_changes (line 115) | def process_folder_changes(changes): function renumber_chapters (line 130) | def renumber_chapters(commit=False): FILE: textbook_utils.py function display_df (line 51) | def display_df( function dfs_side_by_side (line 61) | def dfs_side_by_side(*dfs): function df_interact (line 77) | def df_interact(df, nrows=7, ncols=7): function _clear_prop (line 102) | def _clear_prop(trace, prop): function _clear_props (line 107) | def _clear_props(traces): function plots_in_row (line 113) | def plots_in_row(figures, width=700, height=250, **kwargs): function left_right (line 125) | def left_right(left, right, width=700, height=250, **kwargs): function margin (line 130) | def margin(fig, **kwargs): function title (line 135) | def title(fig, label, **kwargs): function xlabel (line 145) | def xlabel(fig, label, **kwargs): function ylabel (line 150) | def ylabel(fig, label, **kwargs):
Copy disabled (too large)
Download .json
Condensed preview — 368 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (88,711K chars).
[
{
"path": ".envrc",
"chars": 29,
"preview": "dotenv_if_exists secrets.env\n"
},
{
"path": ".gitattributes",
"chars": 58,
"preview": "content/datasets/**/* filter=lfs diff=lfs merge=lfs -text\n"
},
{
"path": ".github/workflows/check_build.yml",
"chars": 1145,
"preview": "name: check_build\n\non:\n # Trigger the workflow on push to master branch\n pull_request:\n branches:\n - master\n\n#"
},
{
"path": ".github/workflows/deploy.yml",
"chars": 1442,
"preview": "name: deploy\n\non:\n # Trigger the workflow on push to master branch\n push:\n branches:\n - master\n\n# This job ins"
},
{
"path": ".gitignore",
"chars": 3085,
"preview": "##############################################################################\n# Custom ignores\n########################"
},
{
"path": "LICENSE.md",
"chars": 17489,
"preview": "# Attribution-NonCommercial-NoDerivatives 4.0 International\n\n> *Creative Commons Corporation (“Creative Commons”) is not"
},
{
"path": "Makefile",
"chars": 957,
"preview": "server.PHONY: help build clean\n\nCONTENT = content/_config.yml content/_toc.yml content/*.md content/ch\n\nHTML_DIR = conte"
},
{
"path": "README.md",
"chars": 837,
"preview": "# Learning Data Science\n\n**By [Sam Lau][sam], [Joey Gonzalez][joey], and [Deb Nolan][deb].**\n\n<img alt=\"Front cover of t"
},
{
"path": "SETUP.md",
"chars": 6032,
"preview": "# Making changes to the book\n\nTo develop the book locally, you first need to set up a Python environment with\nall the pa"
},
{
"path": "content/_config.yml",
"chars": 2176,
"preview": "#######################################################################################\n# A default configuration that w"
},
{
"path": "content/_static/custom.css",
"chars": 4761,
"preview": "/*\n * Reference: https://jupyterbook.org/advanced/sphinx.html\n */\n\n:root {\n --space: 12px;\n --space--small: 6px;\n --s"
},
{
"path": "content/_static/custom.js",
"chars": 328,
"preview": "// configure require.js to load plotly from cdn. this is commented out since we\n// aren't supporting interactive plotly "
},
{
"path": "content/_toc.yml",
"chars": 5834,
"preview": "format: jb-book\n\nroot: intro\ntitle: Introduction\n\nparts:\n- caption: Frontmatter\n chapters:\n - file: preface\n\n- caption"
},
{
"path": "content/additional_resources.md",
"chars": 9182,
"preview": "(ax:extra_reading)=\n# Additional Material\n\nCollected here are a variety of resources for a more in-depth treatment of th"
},
{
"path": "content/ch/01/lifecycle_cycle.ipynb",
"chars": 8130,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/01/lifecycle_intro.ipynb",
"chars": 2696,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/01/lifecycle_map.ipynb",
"chars": 4097,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/01/lifecycle_summary.ipynb",
"chars": 2252,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/02/data_scope_accuracy.ipynb",
"chars": 15143,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/02/data_scope_big_data_hubris.ipynb",
"chars": 140976,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/02/data_scope_construct.ipynb",
"chars": 14393,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/02/data_scope_exercises.ipynb",
"chars": 1887,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n"
},
{
"path": "content/ch/02/data_scope_intro.ipynb",
"chars": 3036,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/02/data_scope_natural.ipynb",
"chars": 6217,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/02/data_scope_protocols.ipynb",
"chars": 3467,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/02/data_scope_summary.ipynb",
"chars": 3652,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/02/thirtyminutePM25.csv",
"chars": 131,
"preview": "\"pm2.5\",\"period\"\n9.48,\"A\"\n9.32,\"A\"\n9.29,\"A\"\n6.06,\"B\"\n6.05,\"B\"\n6.16,\"B\"\n11.73,\"C\"\n11.84,\"C\"\n12.35,\"C\"\n15.31,\"D\"\n15.49,\"D\""
},
{
"path": "content/ch/03/data/pm30.csv",
"chars": 2188,
"preview": "\"aq2.5\",\"time\",\"hour\",\"meds\",\"diff30\"\n6.14,\"2022-04-01 00:01:10 UTC\",0,5.375,0.59\n5,\"2022-04-01 00:03:10 UTC\",0,5.375,-0"
},
{
"path": "content/ch/03/data/purpleAir30minsample.csv",
"chars": 129,
"preview": "\"pm2.5\",\"time\"\n9.48,\"A\"\n9.32,\"A\"\n9.29,\"A\"\n6.06,\"B\"\n6.05,\"B\"\n6.16,\"B\"\n11.73,\"C\"\n11.84,\"C\"\n12.35,\"C\"\n15.31,\"D\"\n15.49,\"D\"\n1"
},
{
"path": "content/ch/03/theory_election.ipynb",
"chars": 8525334,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/03/theory_exercises.ipynb",
"chars": 6511,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n"
},
{
"path": "content/ch/03/theory_intro.ipynb",
"chars": 3329,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/03/theory_measurement_error.ipynb",
"chars": 287699,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/03/theory_prob_dist.ipynb",
"chars": 7664,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/03/theory_probability.ipynb",
"chars": 18733,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 7,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/03/theory_random_assignment.ipynb",
"chars": 43211,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/03/theory_sampling_variation.ipynb",
"chars": 133278,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 314,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/03/theory_summary.ipynb",
"chars": 3353,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/03/theory_urn.ipynb",
"chars": 32885,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/03/theory_vaccine_efficacy.ipynb",
"chars": 7586571,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/04/modeling_exercises.ipynb",
"chars": 5531,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/04/modeling_intro.ipynb",
"chars": 3113,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"(ch:modeling)"
},
{
"path": "content/ch/04/modeling_loss_functions.ipynb",
"chars": 1745275,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/04/modeling_simple.ipynb",
"chars": 122387,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-input\"\n "
},
{
"path": "content/ch/04/modeling_summary.ipynb",
"chars": 2531,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"(sec:modeling"
},
{
"path": "content/ch/05/bus_clean.ipynb",
"chars": 1084501,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"07e18793-3901-401e-9458-69c02560923a\",\n \""
},
{
"path": "content/ch/05/bus_eda.ipynb",
"chars": 3527734,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"07e18793-3901-401e-9458-69c02560923a\",\n \""
},
{
"path": "content/ch/05/bus_exercises.ipynb",
"chars": 2360,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/05/bus_intro.ipynb",
"chars": 3583,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/05/bus_modeling.ipynb",
"chars": 3122766,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"07e18793-3901-401e-9458-69c02560923a\",\n \""
},
{
"path": "content/ch/05/bus_scope.ipynb",
"chars": 2500,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/05/bus_summary.ipynb",
"chars": 2975,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/05/cycle_case_study_intro.ipynb",
"chars": 1192,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/06/pandas_aggregating.ipynb",
"chars": 232319,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 6,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/06/pandas_exercises.ipynb",
"chars": 14220,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"source\": [\n \"# Reference: https://jupyterbo"
},
{
"path": "content/ch/06/pandas_intro.ipynb",
"chars": 8069,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/06/pandas_joining.ipynb",
"chars": 273511,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/06/pandas_other_reps.ipynb",
"chars": 7820,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n"
},
{
"path": "content/ch/06/pandas_subsetting.ipynb",
"chars": 156495,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 85,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/06/pandas_summary.ipynb",
"chars": 1454,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/06/pandas_transforming.ipynb",
"chars": 88339,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 120,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/07/sql_aggregating.ipynb",
"chars": 19414,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/07/sql_exercises.ipynb",
"chars": 15111,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"source\": [\n \"# Reference: https://jupyterbo"
},
{
"path": "content/ch/07/sql_intro.ipynb",
"chars": 5471,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/07/sql_joining.ipynb",
"chars": 26114,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 3,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/07/sql_subsetting.ipynb",
"chars": 91543,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 4,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/07/sql_summary.ipynb",
"chars": 1836,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/07/sql_transforming.ipynb",
"chars": 24453,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/08/files_command_line.ipynb",
"chars": 13738,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/08/files_datasets.ipynb",
"chars": 6864,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/08/files_encoding.ipynb",
"chars": 8577,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/08/files_formats.ipynb",
"chars": 15082,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 139,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/08/files_granularity.ipynb",
"chars": 29579,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 149,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/08/files_intro.ipynb",
"chars": 3339,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/08/files_size.ipynb",
"chars": 12753,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/08/files_summary.ipynb",
"chars": 4117,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/09/wrangling_checks.ipynb",
"chars": 18919,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/09/wrangling_co2.ipynb",
"chars": 738592,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/09/wrangling_intro.ipynb",
"chars": 5303,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/09/wrangling_missing.ipynb",
"chars": 11336,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/09/wrangling_restaurants.ipynb",
"chars": 3350207,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/09/wrangling_structure.ipynb",
"chars": 13037,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/09/wrangling_summary.ipynb",
"chars": 3445,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/09/wrangling_transformations.ipynb",
"chars": 80829,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/10/eda_distributions.ipynb",
"chars": 301472,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/10/eda_feature_types.ipynb",
"chars": 99100,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/10/eda_guidelines.ipynb",
"chars": 3511,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/10/eda_intro.ipynb",
"chars": 5799,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"(ch:eda)=\\n\","
},
{
"path": "content/ch/10/eda_multi.ipynb",
"chars": 256519,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 11,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/10/eda_relationships.ipynb",
"chars": 447486,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/10/eda_summary.ipynb",
"chars": 3217,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/11/data/Berkeley_PD_-_Calls_for_Service.csv",
"chars": 1002706,
"preview": "CASENO,OFFENSE,EVENTDT,EVENTTM,CVLEGEND,CVDOW,InDbDate,Block_Location,BLKADDR,City,State\n17091420,BURGLARY AUTO,07/23/20"
},
{
"path": "content/ch/11/data/babies.data",
"chars": 34654,
"preview": "bwt gestation parity age height weight smoke\n120 284 0 27 62 100 0\n113 282 0 33 64 135 0\n128 279 0 28 64"
},
{
"path": "content/ch/11/data/babies.readme",
"chars": 2040,
"preview": "Variables in data file\n1. id - identification number\n2. pluralty - 5= single fetus\n3. outcome - 1= live birth that surv"
},
{
"path": "content/ch/11/data/babies23.data",
"chars": 142263,
"preview": " id pluralty outcome date gestation sex wt parity race age ed ht wt drace dage ded dht dwt marital inc smoke time numb"
},
{
"path": "content/ch/11/data/calls.csv",
"chars": 590125,
"preview": "CASENO,OFFENSE,CVLEGEND,BLKADDR,EVENTDTTM,Latitude,Longitude,Day\n17091420,BURGLARY AUTO,BURGLARY - VEHICLE,2500 LE CONTE"
},
{
"path": "content/ch/11/data/cvdow.csv",
"chars": 81,
"preview": "CVDOW,Day\n0,Sunday\n1,Monday\n2,Tuesday\n3,Wednesday\n4,Thursday\n5,Friday\n6,Saturday\n"
},
{
"path": "content/ch/11/data/planets.data",
"chars": 434,
"preview": "# Planetary orbit data used by Kepler.\n# Origin: https://en.wikipedia.org/wiki/Kepler%27s_laws_of_planetary_motion#Third"
},
{
"path": "content/ch/11/data/plannedparenthood.csv",
"chars": 63,
"preview": "year,screening,abortion\n2006,2007371,289750\n2013,935573,327000\n"
},
{
"path": "content/ch/11/data/stops.csv",
"chars": 2218877,
"preview": "Incident Number,Call Date/Time,Location,Incident Type,Dispositions,Location - Latitude,Location - Longitude\n2015-0000482"
},
{
"path": "content/ch/11/data/stops.json",
"chars": 6124105,
"preview": "{\n \"meta\" : {\n \"view\" : {\n \"id\" : \"6e9j-pj9p\",\n \"name\" : \"Berkeley PD - Stop Data\",\n \"attribution\" : "
},
{
"path": "content/ch/11/data/voteCA2016.csv",
"chars": 396,
"preview": "year, eligible, registered, dem, rep, other, decline\n1992, 20612814, 13217022, .485, .389, .031, .095\n1996, 19298379, 14"
},
{
"path": "content/ch/11/viz_comparisons.ipynb",
"chars": 3107072,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 17,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/11/viz_context.ipynb",
"chars": 582804,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 25,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/11/viz_data_design.ipynb",
"chars": 958263,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/11/viz_intro.ipynb",
"chars": 2799,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/11/viz_other_tools.ipynb",
"chars": 5342,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/11/viz_plotly.ipynb",
"chars": 712943,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/11/viz_scale.ipynb",
"chars": 1659140,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/11/viz_smoothing.ipynb",
"chars": 4843486,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/11/viz_summary.ipynb",
"chars": 3337,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/12/pa_cleaning_aqs.ipynb",
"chars": 121829,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 19,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/12/pa_cleaning_purpleair.ipynb",
"chars": 250719,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/12/pa_collocated.ipynb",
"chars": 33585,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/12/pa_conclusion.ipynb",
"chars": 3703,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"(ch:pa_conclu"
},
{
"path": "content/ch/12/pa_eda.ipynb",
"chars": 2294442,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 3,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/12/pa_exercises.ipynb",
"chars": 5616,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/12/pa_intro.ipynb",
"chars": 5794,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/12/pa_modeling.ipynb",
"chars": 10694,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/12/pa_scope.ipynb",
"chars": 4777,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/13/text_examples.ipynb",
"chars": 9574,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/13/text_exercises.ipynb",
"chars": 7196,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"hide-input\"\n "
},
{
"path": "content/ch/13/text_intro.ipynb",
"chars": 2825,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/13/text_regex.ipynb",
"chars": 34541,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/13/text_sotu.ipynb",
"chars": 82674,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/13/text_strings.ipynb",
"chars": 17908,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/13/text_summary.ipynb",
"chars": 2542,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"(sec:text_sum"
},
{
"path": "content/ch/14/data/catalog.xml",
"chars": 388,
"preview": "<catalog><plant><common>Bloodroot</common><botanical>Sanguinaria canadensis</botanical><zone>4</zone><light>Mostly Shady"
},
{
"path": "content/ch/14/data/js_ex/epa_aqi_samp.json",
"chars": 5986,
"preview": "{\n \"Header\": [\n {\n \"status\": \"Success\",\n \"request_time\": \"2022-12-29T18:02:11-05:00\",\n \"url\": \"https:"
},
{
"path": "content/ch/14/data/js_ex/epa_col.json",
"chars": 111,
"preview": "{\"site\":[ \"0014\", \"0014\", \"0014\", \"0014\"],\n\"date\":[\"02-27\", \"02-24\", \"02-21\", \"01-15\"],\n\"aqi\":[30,17,60,null]}\n"
},
{
"path": "content/ch/14/data/js_ex/epa_row.json",
"chars": 502,
"preview": "{\n \"Header\": [\n {\n \"status\": \"Success\",\n \"request_time\": \"2022-12-29T01:48:30-05:00\",\n \"url\": \"https:"
},
{
"path": "content/ch/14/data/js_ex/epa_val.json",
"chars": 139,
"preview": "{\"vars\":[\"site\", \"date\", \"aqi\"],\n\"data\":[[\"0014\", \"02-27\", 30],\n [\"0014\", \"02-24\", 17],\n [\"0014\", \"02-21\", 60],\n [\"0014\""
},
{
"path": "content/ch/14/data/js_ex/ex.json",
"chars": 145,
"preview": "{\"lender_id\":\"matt\", \n \"loan_count\":23,\n \"status\":[2, 1, 3], \n \"sponsored\": false, \"sponsor_name\": null,\n \"lender_dem\":{"
},
{
"path": "content/ch/14/web_html.ipynb",
"chars": 208112,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 11,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/14/web_http.ipynb",
"chars": 16004,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 19,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/14/web_intro.ipynb",
"chars": 3478,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/14/web_json.ipynb",
"chars": 21298,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"id\": \"68a728dc-f0cf-49c3-91ae-664eabeff0d2\",\n \""
},
{
"path": "content/ch/14/web_netCDF.ipynb",
"chars": 74053,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"7020888c-bdf7-44d3-ade8-ef8d180aa65c\",\n \""
},
{
"path": "content/ch/14/web_rest.ipynb",
"chars": 143040,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/14/web_summary.ipynb",
"chars": 4344,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"tags\": []\n },\n \"source\": ["
},
{
"path": "content/ch/15/linear_case.ipynb",
"chars": 1124670,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/15/linear_categorical.ipynb",
"chars": 602280,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/15/linear_exercises.ipynb",
"chars": 3857,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/15/linear_feature_eng.ipynb",
"chars": 1120683,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/15/linear_fitting.ipynb",
"chars": 2469,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n"
},
{
"path": "content/ch/15/linear_intro.ipynb",
"chars": 3860,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/15/linear_multi.ipynb",
"chars": 525414,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 19,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/15/linear_multi_fit.ipynb",
"chars": 13800,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/15/linear_pa.ipynb",
"chars": 346996,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 4,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/15/linear_simple.ipynb",
"chars": 9997,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/15/linear_simple_fit.ipynb",
"chars": 7916,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/15/linear_summary.ipynb",
"chars": 3987,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/15/linear_tips.ipynb",
"chars": 60350,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"metadata\": {\n \"tags\": [\n \"hide-input\"\n "
},
{
"path": "content/ch/15/mobility.csv",
"chars": 342376,
"preview": "cz,czname,stateabbrv,aum,rm,pop2000,intersects_msa,cs_race_bla,cs_race_theil_2000,cs00_seg_inc,cs00_seg_inc_pov25,cs00_s"
},
{
"path": "content/ch/16/ms_cv.ipynb",
"chars": 304453,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/16/ms_intro.ipynb",
"chars": 3570,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/16/ms_overfitting.ipynb",
"chars": 760566,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/16/ms_regularization.ipynb",
"chars": 766082,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/16/ms_risk.ipynb",
"chars": 535505,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/16/ms_summary.ipynb",
"chars": 4814,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/16/ms_train_test.ipynb",
"chars": 159743,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/17/ImagesForTriptych.R",
"chars": 2242,
"preview": "x = c(1,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4)\n\nxB = c(1,1,1,1,1,1,2,2,2,2,2,3,3,3,4,4,4)\n\ny = c(rep(1, 200), rep(2,150), rep("
},
{
"path": "content/ch/17/data/bootstrapped_theta.csv",
"chars": 260000,
"preview": "-8.583772922448704157e-02\n-9.010654933327247318e-02\n-8.728217279063373024e-02\n-8.568854778334204780e-02\n-8.6183752837180"
},
{
"path": "content/ch/17/inf_pred_gen_CI.ipynb",
"chars": 13555,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/17/inf_pred_gen_Exercises.ipynb",
"chars": 11523,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/17/inf_pred_gen_HT.ipynb",
"chars": 5018433,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/17/inf_pred_gen_PI.ipynb",
"chars": 404448,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/17/inf_pred_gen_boot.ipynb",
"chars": 393358,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/17/inf_pred_gen_dist.ipynb",
"chars": 4665,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Distributio"
},
{
"path": "content/ch/17/inf_pred_gen_intro.ipynb",
"chars": 2101,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"(ch:inf_pred_"
},
{
"path": "content/ch/17/inf_pred_gen_prob.ipynb",
"chars": 33438,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 81,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/17/inf_pred_gen_summary.ipynb",
"chars": 5627,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"(sec:inf_pred"
},
{
"path": "content/ch/18/donkey_clean.ipynb",
"chars": 354446,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/18/donkey_eda.ipynb",
"chars": 1753180,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/18/donkey_exercises.ipynb",
"chars": 2761,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/18/donkey_intro.ipynb",
"chars": 3050,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/18/donkey_model.ipynb",
"chars": 639834,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/18/donkey_scope.ipynb",
"chars": 4020,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 82,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/18/donkey_summary.ipynb",
"chars": 5161,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 149,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/19/class_dr.ipynb",
"chars": 392075,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/19/class_example.ipynb",
"chars": 395926,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/19/class_intro.ipynb",
"chars": 3166,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/19/class_log_model.ipynb",
"chars": 395356,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/19/class_loss.ipynb",
"chars": 88105,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 211,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/19/class_pred.ipynb",
"chars": 358554,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/19/class_summary.ipynb",
"chars": 3019,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/20/gd_alternative.ipynb",
"chars": 9854,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/20/gd_basics.ipynb",
"chars": 6521,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 255,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/20/gd_convex.ipynb",
"chars": 6115,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/20/gd_example.ipynb",
"chars": 9097,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 260,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/20/gd_intro.ipynb",
"chars": 4297,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 4,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/20/gd_summary.ipynb",
"chars": 3623,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/21/fake_news_data.ipynb",
"chars": 18910,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 304,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/21/fake_news_exploring.ipynb",
"chars": 487193,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/21/fake_news_intro.ipynb",
"chars": 3642,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/21/fake_news_modeling.ipynb",
"chars": 222188,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/21/fake_news_question.ipynb",
"chars": 4490,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/21/fake_news_summary.ipynb",
"chars": 5198,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"tags\": [\n \"remove-cell\"\n "
},
{
"path": "content/ch/a01/prob_review.ipynb",
"chars": 10540,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Probability Review\\n\",\n \"\\n\",\n"
},
{
"path": "content/ch/a02/vector_space_review.ipynb",
"chars": 8478,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Vector Space Review\"\n ]\n },\n "
}
]
// ... and 168 more files (download for full content)
About this extraction
This page contains the full source code of the DS-100/textbook GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 368 files (113.7 MB), approximately 21.1M tokens, and a symbol index with 27 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.