# The EDA book repository is twelve notebook directories and a version warning

> Packt's Hands-On Exploratory Data Analysis with Python ships its chapter code as Jupyter notebooks in numbered directories, covering cleaning, transformation, correlation, time series, regression and model evaluation on well known datasets. The README's most useful line is its warning that the code was tested against specific library versions.

**PacktPublishing/Hands-on-Exploratory-Data-Analysis-with-Python** — Hands-on Exploratory Data Analysis with Python, published by Packt

- Repository: https://github.com/PacktPublishing/Hands-on-Exploratory-Data-Analysis-with-Python
- Stars: 919 · Forks: 353
- Language: Jupyter Notebook
- License: MIT
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/packtpublishing-hands-on-exploratory-data-analysis-with-python

## Twelve directories, one technique per chapter

The repository is the code companion to a book, and it is organised the way you would expect a book to be: one directory per chapter, named Chapter 1 through Chapter 9, Chapter 10, Chapter 11 and an Appendix.

The chapter list in the README gives the full sequence, and it is a reasonable curriculum on its own.

Chapter 1 revisits EDA concepts and Chapter 2 is about visual aids for EDA. Chapter 3 is getting started with EDA using personal email analysis, Chapter 4 covers data transformation, and Chapter 5 is descriptive statistical analysis. Chapter 6 groups a dataset and Chapter 7 handles correlation. Chapter 8 is time series analysis, Chapter 9 covers regression and hypothesis testing, and Chapter 10 is model development and evaluation. Chapter 11 applies EDA to a wine quality dataset, and the Appendix is on string manipulation.

The primary language of the repository is Jupyter Notebook, which tells you the working format. The code is not a library with an API you call. It is a set of notebooks you run top to bottom, with prose between the cells explaining what each step is doing.

That has an obvious consequence for reuse. A notebook is a script with the execution state attached, and the value of a chapter is mostly pedagogical, in showing the reasoning from raw data to conclusion. If you want a reusable function, you will be extracting it yourself from a notebook cell.

One structural oddity is worth noting. The top-level listing shows twelve chapter directories plus an Appendix, while the README's chapter list runs to Chapter 12 with the Appendix labelled as Chapter 12. There are also two appstore.png and googleplay.png images at the root, which belong to the companion mobile app rather than to the analysis code.

## The datasets are the point as much as the techniques

The README explains the approach before it lists any code, and the framing is worth reading because it sets expectations about what exploratory data analysis is for.

It starts from the premise that data encompasses a collection of discrete objects, events out of context, and facts, and that processing such data provides a multitude of information, and that processing such information based on experience, judgment or jurisdiction elicits knowledge as the result of learning. Then it asks the million-dollar question of how we get meaningful information from such data, and answers with EDA as a process for investigating datasets, elucidating subjects and visualizing the outcomes.

The list of what EDA is for is long and specific: an approach for data analysis that applies a diversity of techniques to maximize certain insights into a data set, reveal underlying structure, extract significant variables, detect outliers and anomalies, test underlying assumptions, develop models, and determine best parameters for future estimations.

The datasets named in the README are all familiar ones. The readers explore open-source datasets including healthcare data, demographics data, Titanic data set, Wine Quality data set and the Boston housing pricing dataset. The stated benefit is hands-on practice to understand the data, summarize their characteristics and visualize them for business intelligence.

That is the difference between this and a library. Using a real dataset that you can find and download yourself means you can reproduce every step, compare the outputs with your own, and change the analysis without rewriting the setup. The techniques are the transferable part; the datasets are what make them checkable.

## The library set is deliberately conventional

The README names the expected toolkit, and it is worth reading as a curriculum decision rather than a dependency list.

The book expects readers to use Pandas, described as a powerful library for working with data, and other core Python libraries including NumPy and SciPy. It adds StatsModels for regression and Matplotlib for visualization.

Nothing exotic appears here. There is no notebook-specific plotting wrapper, no dataframe extension, no alternative statistics package. That is a deliberate constraint for a teaching resource: every technique in the book can be carried into your own work without the book's own scaffolding, because there is no scaffolding.

The reasoning about why visualization gets its own chapter follows the same logic. The README asks why visualization, and answers that several research studies reveal portraying data in graphical form is clearer and makes complex statistical data analyses and business intelligence more marketable. Chapter 2 is visual aids for EDA and Chapter 11 closes the sequence on a specific dataset, so visualization appears at the start as a way of looking and again at the end as a deliverable.

The one library the README does not mention by name is the Jupyter tooling itself, though the notebooks make its presence obvious. The repository has a .gitignore and a LICENSE file and nothing else at the top level, so there is no requirements file or environment specification listed in the README.

## The version warning is the most important paragraph in the README

Under the heading for troubleshooting with the codebase, the README says something that decides whether you will have a good or a bad afternoon: the code presented in the book was tested with the specific version of pandas, matplotlib, python and other Python libraries, and running the code with a newer or older version might result in warnings and errors.

That is a plain statement that the notebooks are pinned to an environment that is no longer current, without anyone saying when that environment was. A Pandas API that changed, a Matplotlib default that moved, a Python version that removed something, and suddenly a notebook that taught something correct now fails on a cell that has nothing to do with the lesson.

The README's answer to that is the issue tracker. If you encounter any errors, you are asked to raise an issue with the specific query link, and the maintainers say they will try their best to sort it out.

There is also an errata section, and it is short. Two corrections are listed, both in Chapter 1. On page 13, the phrase storehouse should read store house. On page 14, a sentence says there are four observations while listing five, and it should say five.

The presence of a maintained errata list is a good sign about how the book was produced, and it is also a warning about what these notebooks are. They are the code as it was written for a specific print edition, with the specific mistakes of that edition still in the files. Expect to fix small things as you go.

## What a reader actually gets, and what they do not

There are two downloads mentioned in the README, and they are different in kind.

The first is the code, which is what this repository holds. The second is the book itself, and the README explains that if you have already purchased a print or Kindle version, you can get a DRM-free PDF version at no cost by following the claim link.

```bash
https://packt.link/free-ebook/9781789537253
```

So the repository is not the book. It is the runnable part of the book, which is a fairly large part but not the prose, the exercises, or the explanations.

The third thing the README points at is practice. It says it is important to practice what you have learned, and that a comprehensive set of mobile apps was created where you can create a simple account and practice Exploratory Data Analysis, with a link to a web application at skmukhiyaji.netlify.app for the quizzes. The two store badges at the root of the repository are for the iOS and Android versions of that app.

That is a curious mix for a code repository. A book code companion that also carries marketing for a companion app is a Packt convention rather than a design decision, but it does mean the repository root is not a clean picture of the analysis code. The chapters are self-contained directories, and that is where the actual work lives.

The contributors listed are Suresh Kumar Mukhiya and Usman Ahmed, and both are credited by name in the README.

## Where this repository is the wrong resource

Three cases rule it out, and each one is about expectations rather than quality.

The first is version independence. If your environment is a current Python with a current Pandas, the README has already told you the notebooks might produce warnings and errors, and there is no pinned environment listed to fall back on. For work that must run reliably in CI, this is a liability. For learning, it is a cost you accept once and then reason around.

The second is production code. These are teaching notebooks. The code demonstrates a technique on a dataset that is chosen to make the technique legible, and it does not become a library by being in a repository. If you need exploratory data analysis as a component of an application, you need a package with an API, tests and a release process, and this is not one.

The third is the datasets themselves. The README names healthcare data, demographics data, Titanic, wine quality and Boston housing. Those are the classic teaching datasets, and they are also the datasets every tutorial uses. If your goal is to practise on data that resembles your own, the techniques transfer but the specific code does not, because the columns, the missing values and the quirks are what make these notebooks readable.

There is a practical fourth point about the book rather than the code. The README notes that the practice apps require creating a simple account, so the practice path is not offline and not free of friction, while the notebooks themselves are freely available in the repository.

## A companion repository, not a project to depend on

It is worth being clear about the category, because the repository is easily mistaken for a library.

This is a PacktPublishing book repository. The primary language is Jupyter Notebook, there are no GitHub releases, and the version history is the chapter files themselves. The last push was on 2026-07-05 and the repository is not archived, so the notebooks are still being touched, but nothing here is packaged, versioned or installed by anyone.

The licence field on the repository says MIT, with a LICENSE file at the root. For code, MIT is the most permissive outcome you could hope for: you can copy a notebook cell into your own work, adapt it, and use it commercially without attribution obligations beyond keeping the notice. That is more permissive than the book's own terms, which is normal for this kind of companion repository and worth checking against the printed book's licence if you are redistributing anything commercial.

So the sensible way to use it is as a source of worked examples. Open the chapter that matches the technique you need, read the prose and the cells together, run the notebook against the dataset it names, and then take the analysis shape into your own project with your own data and your own library versions.

The chapters that generalise best are the middle of the sequence, where the techniques are structural: transformation, grouping, correlation, time series and regression are about the shape of a question, while the dataset-specific chapters are about one dataset.

## Conclusion

Adopt this repository if you are working through a data analysis problem with Pandas, NumPy, SciPy, StatsModels and Matplotlib and want runnable starting points on datasets like Titanic, wine quality and Boston housing rather than an empty notebook. Do not adopt it if you need version independent code, because the README states the notebooks were tested against specific versions of pandas, matplotlib and python and that running them on a newer or older version might produce warnings and errors. Before you run anything, read the troubleshooting note, check the errata list for the two known corrections in Chapter 1, and confirm that your installed library versions match what the notebooks assume.

## FAQ

### What does the Hands-On Exploratory Data Analysis with Python repository contain?

It contains the code for the book as Jupyter notebooks, organised into directories named Chapter 1 through Chapter 11 plus an Appendix, covering EDA concepts, visual aids, email analysis, transformation, descriptive statistics, grouping, correlation, time series, regression and hypothesis testing, model development and evaluation.

### Which Python libraries do the notebooks use?

The README says the book expects readers to use Pandas, other core Python libraries including NumPy and SciPy, StatsModels for regression, and Matplotlib for visualization.

### Which datasets are used in the book?

The README lists open-source datasets including healthcare data, demographics data, the Titanic data set, the Wine Quality data set and the Boston housing pricing dataset.

### Will the notebooks run on a recent Python and Pandas?

The README says the code was tested with specific versions of pandas, matplotlib, python and other libraries, and that running it with a newer or older version might result in warnings and errors. Errors can be raised as issues on the repository.

### Are there known errors in the book code?

The README carries an errata section listing two corrections in Chapter 1: on page 13 the word storehouse should read store house, and on page 14 a sentence that says four observations should say five.

### What licence does the code come under?

The licence field on the repository says MIT, with a LICENSE file at the root of the repository.

## Sources

- [Issues](https://github.com/PacktPublishing/Hands-on-Exploratory-Data-Analysis-with-Python/issues)
- [License: MIT](https://github.com/PacktPublishing/Hands-on-Exploratory-Data-Analysis-with-Python/blob/master/LICENSE)
- [PacktPublishing/Hands-on-Exploratory-Data-Analysis-with-Python on GitHub](https://github.com/PacktPublishing/Hands-on-Exploratory-Data-Analysis-with-Python)
- [README](https://github.com/PacktPublishing/Hands-on-Exploratory-Data-Analysis-with-Python/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/packtpublishing-hands-on-exploratory-data-analysis-with-python
