Created
June 18, 2018 14:11
-
-
Save jrjames83/eb4b3db3b0e94a1847802193ba5d8ff8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "from config import * # YOUR DATA WILL NOT EXIST, SEE BELOW to get your tokens\n", | |
| "import pandas as pd\n", | |
| "import tweepy\n", | |
| "\n", | |
| "\n", | |
| "# Signup for twitter, make sure you add your cell phone\n", | |
| "# login at apps.twitter.com, register an application \n", | |
| "# get the consumer secrets and application sccrets (4 total tokens)\n", | |
| "# I am importing * from config, which contains 4 variables, which I use below in def authenticate\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "def authenticate():\n", | |
| " auth = tweepy.OAuthHandler(consumer_key, consumer_secret)\n", | |
| " auth.set_access_token(access_token, access_secret)\n", | |
| " api = tweepy.API(auth)\n", | |
| " return api" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "api = authenticate()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "trump_tweets = []\n", | |
| "\n", | |
| "tweets = api.user_timeline(screen_name=\"realDonaldTrump\",count=20)\n", | |
| "for info in tweets:\n", | |
| " trump_tweets.append(info)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "20" | |
| ] | |
| }, | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "len(trump_tweets)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "{'contributors': None,\n", | |
| " 'coordinates': None,\n", | |
| " 'created_at': 'Mon Jun 18 12:46:07 +0000 2018',\n", | |
| " 'entities': {'hashtags': [],\n", | |
| " 'symbols': [],\n", | |
| " 'urls': [{'display_url': 'twitter.com/i/web/status/1…',\n", | |
| " 'expanded_url': 'https://twitter.com/i/web/status/1008692333771132929',\n", | |
| " 'indices': [117, 140],\n", | |
| " 'url': 'https://t.co/UxvDtVF6cS'}],\n", | |
| " 'user_mentions': []},\n", | |
| " 'favorite_count': 3782,\n", | |
| " 'favorited': False,\n", | |
| " 'geo': None,\n", | |
| " 'id': 1008692333771132929,\n", | |
| " 'id_str': '1008692333771132929',\n", | |
| " 'in_reply_to_screen_name': None,\n", | |
| " 'in_reply_to_status_id': None,\n", | |
| " 'in_reply_to_status_id_str': None,\n", | |
| " 'in_reply_to_user_id': None,\n", | |
| " 'in_reply_to_user_id_str': None,\n", | |
| " 'is_quote_status': False,\n", | |
| " 'lang': 'en',\n", | |
| " 'place': None,\n", | |
| " 'retweet_count': 1102,\n", | |
| " 'retweeted': False,\n", | |
| " 'source': '<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>',\n", | |
| " 'text': 'Why don’t the Democrats give us the votes to fix the world’s worst immigration laws? Where is the outcry for the ki… https://t.co/UxvDtVF6cS',\n", | |
| " 'truncated': True,\n", | |
| " 'user': {'contributors_enabled': False,\n", | |
| " 'created_at': 'Wed Mar 18 13:46:38 +0000 2009',\n", | |
| " 'default_profile': False,\n", | |
| " 'default_profile_image': False,\n", | |
| " 'description': '45th President of the United States of America🇺🇸',\n", | |
| " 'entities': {'description': {'urls': []},\n", | |
| " 'url': {'urls': [{'display_url': 'Instagram.com/realDonaldTrump',\n", | |
| " 'expanded_url': 'http://www.Instagram.com/realDonaldTrump',\n", | |
| " 'indices': [0, 23],\n", | |
| " 'url': 'https://t.co/OMxB0xp8tD'}]}},\n", | |
| " 'favourites_count': 25,\n", | |
| " 'follow_request_sent': False,\n", | |
| " 'followers_count': 52854927,\n", | |
| " 'following': False,\n", | |
| " 'friends_count': 46,\n", | |
| " 'geo_enabled': True,\n", | |
| " 'has_extended_profile': False,\n", | |
| " 'id': 25073877,\n", | |
| " 'id_str': '25073877',\n", | |
| " 'is_translation_enabled': True,\n", | |
| " 'is_translator': False,\n", | |
| " 'lang': 'en',\n", | |
| " 'listed_count': 89411,\n", | |
| " 'location': 'Washington, DC',\n", | |
| " 'name': 'Donald J. Trump',\n", | |
| " 'notifications': False,\n", | |
| " 'profile_background_color': '6D5C18',\n", | |
| " 'profile_background_image_url': 'http://abs.twimg.com/images/themes/theme1/bg.png',\n", | |
| " 'profile_background_image_url_https': 'https://abs.twimg.com/images/themes/theme1/bg.png',\n", | |
| " 'profile_background_tile': True,\n", | |
| " 'profile_banner_url': 'https://pbs.twimg.com/profile_banners/25073877/1528585804',\n", | |
| " 'profile_image_url': 'http://pbs.twimg.com/profile_images/874276197357596672/kUuht00m_normal.jpg',\n", | |
| " 'profile_image_url_https': 'https://pbs.twimg.com/profile_images/874276197357596672/kUuht00m_normal.jpg',\n", | |
| " 'profile_link_color': '1B95E0',\n", | |
| " 'profile_sidebar_border_color': 'BDDCAD',\n", | |
| " 'profile_sidebar_fill_color': 'C5CEC0',\n", | |
| " 'profile_text_color': '333333',\n", | |
| " 'profile_use_background_image': True,\n", | |
| " 'protected': False,\n", | |
| " 'screen_name': 'realDonaldTrump',\n", | |
| " 'statuses_count': 37896,\n", | |
| " 'time_zone': None,\n", | |
| " 'translator_type': 'regular',\n", | |
| " 'url': 'https://t.co/OMxB0xp8tD',\n", | |
| " 'utc_offset': None,\n", | |
| " 'verified': True}}" | |
| ] | |
| }, | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "trump_tweets[0]._json # since the Status class will nto be a traditional dict, we can use the ._json property" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 23, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# What if we need more than 20 tweets? Keep in mind there are rate limits and absolute limits\n", | |
| "# Let's get at least 2000, if you try and get a very high number, you'll hit a rate limit\n", | |
| "more_tweets = []\n", | |
| "\n", | |
| "for tweet in tweepy.Cursor(api.user_timeline,id='realDonaldTrump').items(2000):\n", | |
| " more_tweets.append(tweet)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 24, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "2000" | |
| ] | |
| }, | |
| "execution_count": 24, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "len(more_tweets)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 25, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# Analysze typical time between tweets\n", | |
| "from datetime import datetime" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 31, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style>\n", | |
| " .dataframe thead tr:only-child th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: left;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>contributors</th>\n", | |
| " <th>coordinates</th>\n", | |
| " <th>created_at</th>\n", | |
| " <th>entities</th>\n", | |
| " <th>extended_entities</th>\n", | |
| " <th>favorite_count</th>\n", | |
| " <th>favorited</th>\n", | |
| " <th>geo</th>\n", | |
| " <th>id</th>\n", | |
| " <th>id_str</th>\n", | |
| " <th>...</th>\n", | |
| " <th>quoted_status</th>\n", | |
| " <th>quoted_status_id</th>\n", | |
| " <th>quoted_status_id_str</th>\n", | |
| " <th>retweet_count</th>\n", | |
| " <th>retweeted</th>\n", | |
| " <th>retweeted_status</th>\n", | |
| " <th>source</th>\n", | |
| " <th>text</th>\n", | |
| " <th>truncated</th>\n", | |
| " <th>user</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>None</td>\n", | |
| " <td>None</td>\n", | |
| " <td>Mon Jun 18 13:02:43 +0000 2018</td>\n", | |
| " <td>{'hashtags': [], 'symbols': [], 'user_mentions...</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>17</td>\n", | |
| " <td>False</td>\n", | |
| " <td>None</td>\n", | |
| " <td>1008696508697513985</td>\n", | |
| " <td>1008696508697513985</td>\n", | |
| " <td>...</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>18</td>\n", | |
| " <td>False</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td><a href=\"http://twitter.com/download/iphone\" r...</td>\n", | |
| " <td>The people of Germany are turning against thei...</td>\n", | |
| " <td>True</td>\n", | |
| " <td>{'id': 25073877, 'id_str': '25073877', 'name':...</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>None</td>\n", | |
| " <td>None</td>\n", | |
| " <td>Mon Jun 18 12:46:07 +0000 2018</td>\n", | |
| " <td>{'hashtags': [], 'symbols': [], 'user_mentions...</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>13364</td>\n", | |
| " <td>False</td>\n", | |
| " <td>None</td>\n", | |
| " <td>1008692333771132929</td>\n", | |
| " <td>1008692333771132929</td>\n", | |
| " <td>...</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>3837</td>\n", | |
| " <td>False</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td><a href=\"http://twitter.com/download/iphone\" r...</td>\n", | |
| " <td>Why don’t the Democrats give us the votes to f...</td>\n", | |
| " <td>True</td>\n", | |
| " <td>{'id': 25073877, 'id_str': '25073877', 'name':...</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "<p>2 rows × 29 columns</p>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " contributors coordinates created_at \\\n", | |
| "0 None None Mon Jun 18 13:02:43 +0000 2018 \n", | |
| "1 None None Mon Jun 18 12:46:07 +0000 2018 \n", | |
| "\n", | |
| " entities extended_entities \\\n", | |
| "0 {'hashtags': [], 'symbols': [], 'user_mentions... NaN \n", | |
| "1 {'hashtags': [], 'symbols': [], 'user_mentions... NaN \n", | |
| "\n", | |
| " favorite_count favorited geo id id_str \\\n", | |
| "0 17 False None 1008696508697513985 1008696508697513985 \n", | |
| "1 13364 False None 1008692333771132929 1008692333771132929 \n", | |
| "\n", | |
| " ... quoted_status \\\n", | |
| "0 ... NaN \n", | |
| "1 ... NaN \n", | |
| "\n", | |
| " quoted_status_id quoted_status_id_str retweet_count retweeted \\\n", | |
| "0 NaN NaN 18 False \n", | |
| "1 NaN NaN 3837 False \n", | |
| "\n", | |
| " retweeted_status source \\\n", | |
| "0 NaN <a href=\"http://twitter.com/download/iphone\" r... \n", | |
| "1 NaN <a href=\"http://twitter.com/download/iphone\" r... \n", | |
| "\n", | |
| " text truncated \\\n", | |
| "0 The people of Germany are turning against thei... True \n", | |
| "1 Why don’t the Democrats give us the votes to f... True \n", | |
| "\n", | |
| " user \n", | |
| "0 {'id': 25073877, 'id_str': '25073877', 'name':... \n", | |
| "1 {'id': 25073877, 'id_str': '25073877', 'name':... \n", | |
| "\n", | |
| "[2 rows x 29 columns]" | |
| ] | |
| }, | |
| "execution_count": 31, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "df = pd.DataFrame([x._json for x in more_tweets]) # since we have a list of dictionaries\n", | |
| "# why not use pandas\n", | |
| "df.head(2)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 39, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Mon Jun 18 13:02:43 +0000 2018\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "datetime.datetime(2018, 6, 18, 13, 2, 43)" | |
| ] | |
| }, | |
| "execution_count": 39, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# How do we get this into a date? Since it's a string\n", | |
| "\n", | |
| "print(df.iloc[0].created_at) # The date we're given (it is a string)\n", | |
| "# https://stackoverflow.com/questions/7703865/going-from-twitter-date-to-python-datetime-date\n", | |
| "\n", | |
| "# Convert it to a datetime object\n", | |
| "datetime.strptime(df.iloc[0].created_at,'%a %b %d %H:%M:%S +0000 %Y')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 40, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Write a function to handle this \n", | |
| "\n", | |
| "def convert_twitter_created_at_to_datetime(string_time):\n", | |
| " return datetime.strptime(string_time,'%a %b %d %H:%M:%S +0000 %Y')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 41, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style>\n", | |
| " .dataframe thead tr:only-child th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: left;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>contributors</th>\n", | |
| " <th>coordinates</th>\n", | |
| " <th>created_at</th>\n", | |
| " <th>entities</th>\n", | |
| " <th>extended_entities</th>\n", | |
| " <th>favorite_count</th>\n", | |
| " <th>favorited</th>\n", | |
| " <th>geo</th>\n", | |
| " <th>id</th>\n", | |
| " <th>id_str</th>\n", | |
| " <th>...</th>\n", | |
| " <th>quoted_status_id</th>\n", | |
| " <th>quoted_status_id_str</th>\n", | |
| " <th>retweet_count</th>\n", | |
| " <th>retweeted</th>\n", | |
| " <th>retweeted_status</th>\n", | |
| " <th>source</th>\n", | |
| " <th>text</th>\n", | |
| " <th>truncated</th>\n", | |
| " <th>user</th>\n", | |
| " <th>created_date</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>None</td>\n", | |
| " <td>None</td>\n", | |
| " <td>Mon Jun 18 13:02:43 +0000 2018</td>\n", | |
| " <td>{'hashtags': [], 'symbols': [], 'user_mentions...</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>17</td>\n", | |
| " <td>False</td>\n", | |
| " <td>None</td>\n", | |
| " <td>1008696508697513985</td>\n", | |
| " <td>1008696508697513985</td>\n", | |
| " <td>...</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>18</td>\n", | |
| " <td>False</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td><a href=\"http://twitter.com/download/iphone\" r...</td>\n", | |
| " <td>The people of Germany are turning against thei...</td>\n", | |
| " <td>True</td>\n", | |
| " <td>{'id': 25073877, 'id_str': '25073877', 'name':...</td>\n", | |
| " <td>2018-06-18 13:02:43</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "<p>1 rows × 30 columns</p>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " contributors coordinates created_at \\\n", | |
| "0 None None Mon Jun 18 13:02:43 +0000 2018 \n", | |
| "\n", | |
| " entities extended_entities \\\n", | |
| "0 {'hashtags': [], 'symbols': [], 'user_mentions... NaN \n", | |
| "\n", | |
| " favorite_count favorited geo id id_str \\\n", | |
| "0 17 False None 1008696508697513985 1008696508697513985 \n", | |
| "\n", | |
| " ... quoted_status_id quoted_status_id_str retweet_count \\\n", | |
| "0 ... NaN NaN 18 \n", | |
| "\n", | |
| " retweeted retweeted_status \\\n", | |
| "0 False NaN \n", | |
| "\n", | |
| " source \\\n", | |
| "0 <a href=\"http://twitter.com/download/iphone\" r... \n", | |
| "\n", | |
| " text truncated \\\n", | |
| "0 The people of Germany are turning against thei... True \n", | |
| "\n", | |
| " user created_date \n", | |
| "0 {'id': 25073877, 'id_str': '25073877', 'name':... 2018-06-18 13:02:43 \n", | |
| "\n", | |
| "[1 rows x 30 columns]" | |
| ] | |
| }, | |
| "execution_count": 41, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "df['created_date'] = df.created_at.map(convert_twitter_created_at_to_datetime)\n", | |
| "df.head(1)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 42, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "[(Timestamp('2018-06-18 13:02:43'), Timestamp('2018-06-18 12:46:07')),\n", | |
| " (Timestamp('2018-06-18 12:46:07'), Timestamp('2018-06-18 01:03:52')),\n", | |
| " (Timestamp('2018-06-18 01:03:52'), Timestamp('2018-06-18 00:49:01')),\n", | |
| " (Timestamp('2018-06-18 00:49:01'), Timestamp('2018-06-18 00:42:04')),\n", | |
| " (Timestamp('2018-06-18 00:42:04'), Timestamp('2018-06-18 00:25:53')),\n", | |
| " (Timestamp('2018-06-18 00:25:53'), Timestamp('2018-06-17 16:55:13')),\n", | |
| " (Timestamp('2018-06-17 16:55:13'), Timestamp('2018-06-17 14:54:53')),\n", | |
| " (Timestamp('2018-06-17 14:54:53'), Timestamp('2018-06-17 14:37:03')),\n", | |
| " (Timestamp('2018-06-17 14:37:03'), Timestamp('2018-06-17 14:36:44')),\n", | |
| " (Timestamp('2018-06-17 14:36:44'), Timestamp('2018-06-17 14:36:35'))]" | |
| ] | |
| }, | |
| "execution_count": 42, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Typical time between tweets? could use df.shift, but let's be more bare metal\n", | |
| "\n", | |
| "tweet_time_diffs = list(zip(df.created_date.tolist()[0:], df.created_date.tolist()[1:] ))\n", | |
| "tweet_time_diffs[:10]\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 45, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "0 days 00:16:36\n", | |
| "0 days 11:42:15\n", | |
| "0 days 00:14:51\n", | |
| "0 days 00:06:57\n", | |
| "0 days 00:16:11\n", | |
| "0 days 07:30:40\n", | |
| "0 days 02:00:20\n", | |
| "0 days 00:17:50\n", | |
| "0 days 00:00:19\n", | |
| "0 days 00:00:09\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# How let's get the time difference between each one\n", | |
| "for curtime, nextime in tweet_time_diffs[:10]:\n", | |
| " print(curtime - nextime)\n", | |
| " # Now, how to convert this to a number of hours" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 49, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "16\n", | |
| "702\n", | |
| "14\n", | |
| "6\n", | |
| "16\n", | |
| "450\n", | |
| "120\n", | |
| "17\n", | |
| "0\n", | |
| "0\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# How let's get the time difference between each one\n", | |
| "for curtime, nextime in tweet_time_diffs[:10]:\n", | |
| " print((curtime - nextime).seconds // 60) # the diff returns a TimeDelta object, seconds // 60 == minutes!" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 60, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# So now let's track all the diffs\n", | |
| "all_diffs = []\n", | |
| "\n", | |
| "# How let's get the time difference between each one\n", | |
| "for curtime, nextime in tweet_time_diffs:\n", | |
| " time_dif = (curtime - nextime).seconds // 60\n", | |
| " all_diffs.append(time_dif)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 57, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Analyze the distribution of the time differences\n", | |
| "import matplotlib.pyplot as plt\n", | |
| "import seaborn as sns\n", | |
| "%matplotlib inline\n", | |
| "import numpy as np" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 62, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<matplotlib.axes._subplots.AxesSubplot at 0x11437c1d0>" | |
| ] | |
| }, | |
| "execution_count": 62, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "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\nkQj5/yu2EnoeQum0AAAAAElFTkSuQmCC\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x114486f98>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "sns.distplot(np.array(all_diffs))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python 3", | |
| "language": "python", | |
| "name": "python3" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.6.1" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment