Book Image

Practical Data Science with Python

By : Nathan George
Book Image

Practical Data Science with Python

By: Nathan George

Overview of this book

Practical Data Science with Python teaches you core data science concepts, with real-world and realistic examples, and strengthens your grip on the basic as well as advanced principles of data preparation and storage, statistics, probability theory, machine learning, and Python programming, helping you build a solid foundation to gain proficiency in data science. The book starts with an overview of basic Python skills and then introduces foundational data science techniques, followed by a thorough explanation of the Python code needed to execute the techniques. You'll understand the code by working through the examples. The code has been broken down into small chunks (a few lines or a function at a time) to enable thorough discussion. As you progress, you will learn how to perform data analysis while exploring the functionalities of key data science Python packages, including pandas, SciPy, and scikit-learn. Finally, the book covers ethics and privacy concerns in data science and suggests resources for improving data science skills, as well as ways to stay up to date on new data science developments. By the end of the book, you should be able to comfortably use Python for basic data science projects and should have the skills to execute the data science process on any data source.
Table of Contents (30 chapters)
1
Part I - An Introduction and the Basics
4
Part II - Dealing with Data
10
Part III - Statistics for Data Science
13
Part IV - Machine Learning
21
Part V - Text Analysis and Reporting
24
Part VI - Wrapping Up
28
Other Books You May Enjoy
29
Index

Parsing HTML from scraped pages

As we already saw, we can easily download a webpage in Python with urllib or the requests library. One thing to note is these libraries do not work with dynamic JavaScript content. For example, we can download and save the Packt home page:

res = rq.get('https://www.packtpub.com/')
with open('packt.html', 'wb') as f:
    f.write(res.content)

When we open it, it looks OK, except not all the content displays properly. For example, some of the icons are missing because they load dynamically with JavaScript. For gathering data from pages where JavaScript plays a heavy role, we can instead use other packages, like requests-html, Selenium, or the Scrapy package with the scrapy-splash plugin. The point is, you may notice some data missing when scraping data from pages. This could be due to JavaScript loading content, meaning you should try one of those other packages for scraping data from that page.

As our first example...