This project demonstrates an end-to-end data workflow by extracting, cleaning, and visualizing rich structured data from online Pokémon databases. While the subject matter is gamified, the techniques and technologies reflect real-world data science and data engineering challenges, including web scraping, data wrangling, and interactive analytics. The scope of this project is limited to Pokemon from generations 1-5 (games that were playable on the Nintendo DS lite).
The project is composed of multiple interconnected Jupyter notebooks:
-
National Pokedex.ipynb
:
Defines core web scraping functionality used by all other notebooks. -
Movesets and Natures.ipynb
:
Extracts and processes data on Pokémon moves, abilities, and natures. This notebook generates local.pkl
files containing dictionaries of DataFrames (logic documented within the notebook). -
Items and TMs.ipynb
:
Processes item data and technical machine (TM) availability. -
Types.ipynb
:
Contains logic for Pokémon type effectiveness and matchups. -
Widgets.ipynb
:
Final UI notebook. Consolidates outputs from all other notebooks into a widget-based interface for querying and visualizing Pokémon data.
Install and open Jupyter Notebook
In the Widgets notebook, select "run", then "run all" on the bar at the top of the page. This will execute every command in the notebook, prompting the user to select their preferences at the bottom of the notebook. To change viewing preference, rather than selecting "run all" again, select inside the last cell of the notebook and press shift+enter on the keyboard. This will re-execute the single block of code that triggers the display of the widgets.
Below are screenshots demonstrating user queries from the Widgets.ipynb
notebook:
- Python
- Jupyter Notebooks
- Requests / Web Scraping
- Pandas / DataFrames
- IPyWidgets for interactivity
- Matplotlib / Plotly for visualization