Graph and Data AnalysisHow to Talk Like a President

Posted on May 17, 2020
The skills I demoed here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.

RShiny App | LinkedIn | GitHub 

Summary (3 min read):

The United States is unquestionably unique in its relevance to the rest of the world. This takes the form of academic and technological leadership, disproportionate economic influence, and participation in conflicts abroad (solicited and unsolicited). For better or for worse, many policy advocates and international leaders stand to benefit from knowing how frequently their agenda or country is mentioned. 

These same leaders previously had to consume secondary news sources or sit through time-intensive press briefings to cultivate their intuition on where they stood in the eyes of the President of the United States (POTUS). The aim of this project was to quantify the POTUS focus on various geographies and policies and let graph present this information in a time-efficient and digestible manner. 

Online dashboard

An online dashboard, which can be found here, was created to track:

  • which initiatives the George W. Bush White House prioritized, 
  • which countries and states were emphasized, 
  • and how the economy, presidential approval, and public focus responded over time.

A variety of insights arise from the How to Talk Like a President online dashboard. These insights are detailed in the following list and photo gallery. Featured stories include:

  • Social Security vs. Google Search Trends
    • Bush unsuccessfully championed Social Security reform
  • Recession vs. S&P 500
    • Frequent mention of recession at the start of economic downturn and after Lehman Brothers collapse
  • Recession vs. Google Search Trends
    • High correlation between the White House and public attention
  • Iraq vs. S&P 500
    • Military-Industrial Complex perhaps catalyzed economic growth
  • Climate Change vs. Google Search Trends
    • In the year following Al Gore’s ‘An Inconvenient Truth’, climate change became a buzz phrase
  • Afghanistan vs. Presidential Approval
    • Post 9-11, Bush saw his approval ratings skyrocket

Gallery of Graph (visit App here for dynamic graph):

The examples illustrated above demonstrate the potential and value of using press briefing text data. However, the primary value of this project comes not from these discrete stories. The core value of this project lies in that it demonstrates the capability of using untapped and untraditional datasets to supplement human intuition. Data-driven decision making will continue to permeate into a whole slew of industries and novel applications.

Detailed Project Overview (6 min read):

Problem Statement:

It is difficult to quantify Presidential temperament towards various policy initiatives, states, and countries. Without quantitative analysis, national and international leaders are forced to digest secondary news sources or to sit through time-intensive press briefings.

Data used: 

Skills Displayed:

  • R
  • Python
  • Jupyter Notebook
  • Data Visualization
  • Scrapy Web Scraping
  • Shiny App Development
  • Google Trend API

Technical Process:

The “How to Talk Like a President” online dashboard was created using a combination of python web scraping and R Shiny app development. The press briefings from George W. Bush’s white house website were scraped using Scrapy. The customized Scrapy script took 15 minutes to collect and process over 1,762 press briefing transcripts from his 8 years as president. To manually copy and paste this information into excel would have taken approximately 9.5 hours. 

A major technical challenge was that over the course of George W. Bush's presidency, the White House website and article formatting changed on multiple occasions. Put more technically, the web scraping 'Spider' that I initially encoded had difficulty parsing html code that changed in form and organization throughout the website. I had to examine in depth the articles and corresponding html code that caused the scraping to come to a halt.

After understanding the various permutations of html code I was able to encode my spider to handle these exceptions. Additionally, one permutation of html code did not allow me to "cleanly" scrape the press briefing text. I had to scrape a large amount of "messy" html code and use regular expressions and string replacement to get rid of undesirable html text ("\r", "\n",  "   ",  "\xa0", etc.) After addressing these technical hurdles I was able to move on to text processing. 

Data Analysis

Within a Jupyter notebook, this text data was analyzed to determine the temporal occurrence of 300 keywords (Russia, Iraq, Climate Change, etc.). These 300 keywords were again analyzed via a Google Trend API. Google trends rate a keyword's search popularity on a scale of 0 to 100. I created a function to loop through a list of all 300 keywords, request U.S. (not global) google trend data for the whole history of google, and save the resulting data into a csv.

Alternatively, I could have pulled data for all 300 keywords at the same time, but that would have ranked keyword popularity in relation to all other words. In effect, for many keywords the popularity would have been approximately zero. I wanted to avoid this because my ultimate goal was to determine "how public attention has evolved on a given topic over time" and not "how public attention on a given topic compares to all other topics".

The temporal occurrence of keywords from the White House represents what the POTUS has emphasized over time. The temporal occurrence of keywords from the Google Trend API represents the public’s focus. White House emphasis was also compared against the S&P 500 index as a measure of economic health. White house emphasis was also compared against the Gallup presidential approval ratings as a measure of the president's popularity over time. Google Trends, approval ratings, and S&P 500 valuation data were all conditioned to conform to the monthly pandas date-time frequency within the presidential briefings.

R Shiny Dashboard

While building the R Shiny dashboard I wanted to create two tabs which allowed users to explore presidential focus by geography and by policy categories. With respect to the geography tab I encoded a radio button and drop down menus that allow the user to search by countries of the world and by U.S. states. Within the Policy tab I created linked drop down menus that allowed the users to look at groupings of keywords within a given policy category (Economic affairs, social welfare, environment, etc.) I figured this functionality would help users find the topics they cared about and would help them not get overwhelmed by visually filtering through all policy related keywords.

Target Audience:

  • Policy Advocates
  • State and International Leaders
  • Historians / General Public


To quantify Presidential temperament to understand:

  • Which initiatives the White House has prioritized
  • Which countries and states are emphasized
  • How the economy, presidential approval, and public focus have shifted over time

Business Value of Objective:

If you are the steward of a given policy or nation it behoves you to understand the messaging of the most powerful nation. By doing so, you can learn from the past and evaluate your current “brand perception”.


The core value of this project lies in that it demonstrates the capability of using untapped and untraditional datasets to supplement human intuition. In the case of the How to Talk Like a President online dashboard, users are able to quantitatively confirm pre-existing intuitions and are assisted in cultivating novel insights.

Featured Image Credit:
  • American Flag by Ken Jones
    • Link to Photo, Link to Ken Jones Flickr, Link to Creative Common License

About Author

Michael Link

Michael’s background is in ecological and water resources engineering. He began his career as a water resources engineer in a Fortune 500 consulting firm. Having worked to industry-standard analytical techniques and software, he discovered that he had a...
View all posts by Michael Link >

Related Articles

Leave a Comment

No comments found.

View Posts by Categories

Our Recent Popular Posts

View Posts by Tags

#python #trainwithnycdsa 2019 2020 Revenue 3-points agriculture air quality airbnb airline alcohol Alex Baransky algorithm alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus ames dataset ames housing dataset apartment rent API Application artist aws bank loans beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep boston safety Bundles cake recipe California Cancer Research capstone car price Career Career Day citibike classic cars classpass clustering Coding Course Demo Course Report covid 19 credit credit card crime frequency crops D3.js data data analysis Data Analyst data analytics data for tripadvisor reviews data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization database Deep Learning Demo Day Discount disney dplyr drug data e-commerce economy employee employee burnout employer networking environment feature engineering Finance Financial Data Science fitness studio Flask flight delay gbm Get Hired ggplot2 googleVis H20 Hadoop hallmark holiday movie happiness healthcare frauds higgs boson Hiring hiring partner events Hiring Partners hotels housing housing data housing predictions housing price hy-vee Income Industry Experts Injuries Instructor Blog Instructor Interview insurance italki Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter las vegas airport lasso regression Lead Data Scienctist Lead Data Scientist leaflet league linear regression Logistic Regression machine learning Maps market matplotlib Medical Research Meet the team meetup methal health miami beach movie music Napoli NBA netflix Networking neural network Neural networks New Courses NHL nlp NYC NYC Data Science nyc data science academy NYC Open Data nyc property NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time performance phoenix pollutants Portfolio Development precision measurement prediction Prework Programming public safety PwC python Python Data Analysis python machine learning python scrapy python web scraping python webscraping Python Workshop R R Data Analysis R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn seafood type Selenium sentiment analysis sentiment classification Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau teachers team team performance TensorFlow Testimonial tf-idf Top Data Science Bootcamp Top manufacturing companies Transfers tweets twitter videos visualization wallstreet wallstreetbets web scraping Weekend Course What to expect whiskey whiskeyadvocate wildfire word cloud word2vec XGBoost yelp youtube trending ZORI