Book Image

Practical Data Science Cookbook, Second Edition - Second Edition

By : Prabhanjan Narayanachar Tattar, Bhushan Purushottam Joshi, Sean Patrick Murphy, ABHIJIT DASGUPTA, Anthony Ojeda
Book Image

Practical Data Science Cookbook, Second Edition - Second Edition

By: Prabhanjan Narayanachar Tattar, Bhushan Purushottam Joshi, Sean Patrick Murphy, ABHIJIT DASGUPTA, Anthony Ojeda

Overview of this book

As increasing amounts of data are generated each year, the need to analyze and create value out of it is more important than ever. Companies that know what to do with their data and how to do it well will have a competitive advantage over companies that don’t. Because of this, there will be an increasing demand for people that possess both the analytical and technical abilities to extract valuable insights from data and create valuable solutions that put those insights to use. Starting with the basics, this book covers how to set up your numerical programming environment, introduces you to the data science pipeline, and guides you through several data projects in a step-by-step format. By sequentially working through the steps in each chapter, you will quickly familiarize yourself with the process and learn how to apply it to a variety of situations with examples using the two most popular programming languages for data analysis—R and Python.
Table of Contents (17 chapters)
Title Page
Credits
About the Authors
About the Reviewer
www.PacktPub.com
Preface

Making requests without running afoul of Twitter's rate limits


For this recipe, we are going to modify the function created in the previous recipe, Pulling Twitter user profiles, in order to avoid hitting the dreaded Twitter API rate limits.

Getting ready

You will again need the list of followers' and friends' IDs from the previous recipe, Pulling Twitter user profiles, as well as the authenticated Twython object.

How to do it...

The following function demonstrates how you can retrieve a set of Twitter users' profiles in a rate-limit-aware fashion:

In [25]: import time 
    ...: import math 
 
In [26]: rate_limit_window = 15 * 60 #900 seconds 
 
In [27]: def pull_users_profiles_limit_aware(ids): 
    ...: users = [] 
    ...: start_time = time.time() 
    ...: # Must look up users in 
    ...: for i in range(0, len(ids), 10): 
    ...: batch = ids[i:i + 10] 
    ...: users += twitter.lookup_user(user_id=batch) 
    ...: calls_left = float(twitter.get_lastfunction_header('x-rate-limit-remaining...