Skip to content

Instantly share code, notes, and snippets.

@rskrisel
Last active May 2, 2023 10:05
Show Gist options
  • Save rskrisel/df3a0a6b569a250abf493482bab049db to your computer and use it in GitHub Desktop.
Save rskrisel/df3a0a6b569a250abf493482bab049db to your computer and use it in GitHub Desktop.
working_with_twitter_data.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"trusted": true
},
"id": "0514d385",
"cell_type": "code",
"source": "import pandas as pd",
"execution_count": 138,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"id": "6d9eeecc",
"cell_type": "code",
"source": "tweets_df = pd.read_csv('daniel.csv',\n parse_dates = ['created_at'])",
"execution_count": 139,
"outputs": []
},
{
"metadata": {},
"id": "9fd60b53",
"cell_type": "markdown",
"source": "## Cleaning the Data"
},
{
"metadata": {},
"id": "c086eb6b",
"cell_type": "markdown",
"source": "Let's take a look at our Dataframe:"
},
{
"metadata": {
"trusted": true
},
"id": "da787ab5",
"cell_type": "code",
"source": "tweets_df",
"execution_count": 140,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 140,
"data": {
"text/plain": " id conversation_id \\\n0 1653184227737759745 1653184227737759745 \n1 1653173620301090817 1653066988359503873 \n2 1653170736297652224 1652918121496207360 \n3 1653167038511161345 1653167038511161345 \n4 1653161001578004481 1653154063020617728 \n.. ... ... \n596 1645550888587603972 1645197552508190720 \n597 1645156104312180737 1645149768220397569 \n598 1644810043114569731 1644470287654703104 \n599 1644341491920433158 1644341491920433158 \n600 1643898126380482560 1643418473228369920 \n\n referenced_tweets.replied_to.id referenced_tweets.retweeted.id \\\n0 NaN NaN \n1 1.653171e+18 NaN \n2 1.652918e+18 NaN \n3 NaN NaN \n4 1.653154e+18 NaN \n.. ... ... \n596 1.645198e+18 NaN \n597 1.645156e+18 NaN \n598 1.644476e+18 NaN \n599 NaN NaN \n600 1.643418e+18 NaN \n\n referenced_tweets.quoted.id author_id in_reply_to_user_id \\\n0 1.652332e+18 1452436463438778375 NaN \n1 NaN 1515729661078249477 1.603561e+18 \n2 NaN 1589655501872238601 8.937505e+17 \n3 1.652849e+18 1054122091136589825 NaN \n4 NaN 1331417192735322119 1.647819e+18 \n.. ... ... ... \n596 NaN 298198699 4.284543e+08 \n597 NaN 2326191860 1.278131e+09 \n598 NaN 1051011835158286337 1.587193e+18 \n599 NaN 1220240755660226560 NaN \n600 NaN 298198699 4.284543e+08 \n\n in_reply_to_username retweeted_user_id retweeted_username ... \\\n0 NaN NaN NaN ... \n1 hollowearthterf NaN NaN ... \n2 WeaponNR NaN NaN ... \n3 NaN NaN NaN ... \n4 normeykorey1087 NaN NaN ... \n.. ... ... ... ... \n596 harryjsisson NaN NaN ... \n597 fuyafuyu NaN NaN ... \n598 Flightless223 NaN NaN ... \n599 NaN NaN NaN ... \n600 harryjsisson NaN NaN ... \n\n geo.geo.bbox geo.geo.type geo.id geo.name geo.place_id geo.place_type \\\n0 NaN NaN NaN NaN NaN NaN \n1 NaN NaN NaN NaN NaN NaN \n2 NaN NaN NaN NaN NaN NaN \n3 NaN NaN NaN NaN NaN NaN \n4 NaN NaN NaN NaN NaN NaN \n.. ... ... ... ... ... ... \n596 NaN NaN NaN NaN NaN NaN \n597 NaN NaN NaN NaN NaN NaN \n598 NaN NaN NaN NaN NaN NaN \n599 NaN NaN NaN NaN NaN NaN \n600 NaN NaN NaN NaN NaN NaN \n\n matching_rules __twarc.retrieved_at \\\n0 NaN 2023-05-02T09:39:38+00:00 \n1 NaN 2023-05-02T09:39:38+00:00 \n2 NaN 2023-05-02T09:39:38+00:00 \n3 NaN 2023-05-02T09:39:38+00:00 \n4 NaN 2023-05-02T09:39:38+00:00 \n.. ... ... \n596 NaN 2023-05-02T09:39:49+00:00 \n597 NaN 2023-05-02T09:39:49+00:00 \n598 NaN 2023-05-02T09:39:49+00:00 \n599 NaN 2023-05-02T09:39:49+00:00 \n600 NaN 2023-05-02T09:39:51+00:00 \n\n __twarc.url __twarc.version \n0 https://api.twitter.com/2/tweets/search/all?ex... 2.14.0 \n1 https://api.twitter.com/2/tweets/search/all?ex... 2.14.0 \n2 https://api.twitter.com/2/tweets/search/all?ex... 2.14.0 \n3 https://api.twitter.com/2/tweets/search/all?ex... 2.14.0 \n4 https://api.twitter.com/2/tweets/search/all?ex... 2.14.0 \n.. ... ... \n596 https://api.twitter.com/2/tweets/search/all?ex... 2.14.0 \n597 https://api.twitter.com/2/tweets/search/all?ex... 2.14.0 \n598 https://api.twitter.com/2/tweets/search/all?ex... 2.14.0 \n599 https://api.twitter.com/2/tweets/search/all?ex... 2.14.0 \n600 https://api.twitter.com/2/tweets/search/all?ex... 2.14.0 \n\n[601 rows x 83 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>id</th>\n <th>conversation_id</th>\n <th>referenced_tweets.replied_to.id</th>\n <th>referenced_tweets.retweeted.id</th>\n <th>referenced_tweets.quoted.id</th>\n <th>author_id</th>\n <th>in_reply_to_user_id</th>\n <th>in_reply_to_username</th>\n <th>retweeted_user_id</th>\n <th>retweeted_username</th>\n <th>...</th>\n <th>geo.geo.bbox</th>\n <th>geo.geo.type</th>\n <th>geo.id</th>\n <th>geo.name</th>\n <th>geo.place_id</th>\n <th>geo.place_type</th>\n <th>matching_rules</th>\n <th>__twarc.retrieved_at</th>\n <th>__twarc.url</th>\n <th>__twarc.version</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>1653184227737759745</td>\n <td>1653184227737759745</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>1.652332e+18</td>\n <td>1452436463438778375</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>2023-05-02T09:39:38+00:00</td>\n <td>https://api.twitter.com/2/tweets/search/all?ex...</td>\n <td>2.14.0</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1653173620301090817</td>\n <td>1653066988359503873</td>\n <td>1.653171e+18</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>1515729661078249477</td>\n <td>1.603561e+18</td>\n <td>hollowearthterf</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>2023-05-02T09:39:38+00:00</td>\n <td>https://api.twitter.com/2/tweets/search/all?ex...</td>\n <td>2.14.0</td>\n </tr>\n <tr>\n <th>2</th>\n <td>1653170736297652224</td>\n <td>1652918121496207360</td>\n <td>1.652918e+18</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>1589655501872238601</td>\n <td>8.937505e+17</td>\n <td>WeaponNR</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>2023-05-02T09:39:38+00:00</td>\n <td>https://api.twitter.com/2/tweets/search/all?ex...</td>\n <td>2.14.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1653167038511161345</td>\n <td>1653167038511161345</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>1.652849e+18</td>\n <td>1054122091136589825</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>2023-05-02T09:39:38+00:00</td>\n <td>https://api.twitter.com/2/tweets/search/all?ex...</td>\n <td>2.14.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td>1653161001578004481</td>\n <td>1653154063020617728</td>\n <td>1.653154e+18</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>1331417192735322119</td>\n <td>1.647819e+18</td>\n <td>normeykorey1087</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>2023-05-02T09:39:38+00:00</td>\n <td>https://api.twitter.com/2/tweets/search/all?ex...</td>\n <td>2.14.0</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>596</th>\n <td>1645550888587603972</td>\n <td>1645197552508190720</td>\n <td>1.645198e+18</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>298198699</td>\n <td>4.284543e+08</td>\n <td>harryjsisson</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>2023-05-02T09:39:49+00:00</td>\n <td>https://api.twitter.com/2/tweets/search/all?ex...</td>\n <td>2.14.0</td>\n </tr>\n <tr>\n <th>597</th>\n <td>1645156104312180737</td>\n <td>1645149768220397569</td>\n <td>1.645156e+18</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>2326191860</td>\n <td>1.278131e+09</td>\n <td>fuyafuyu</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>2023-05-02T09:39:49+00:00</td>\n <td>https://api.twitter.com/2/tweets/search/all?ex...</td>\n <td>2.14.0</td>\n </tr>\n <tr>\n <th>598</th>\n <td>1644810043114569731</td>\n <td>1644470287654703104</td>\n <td>1.644476e+18</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>1051011835158286337</td>\n <td>1.587193e+18</td>\n <td>Flightless223</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>2023-05-02T09:39:49+00:00</td>\n <td>https://api.twitter.com/2/tweets/search/all?ex...</td>\n <td>2.14.0</td>\n </tr>\n <tr>\n <th>599</th>\n <td>1644341491920433158</td>\n <td>1644341491920433158</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>1220240755660226560</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>2023-05-02T09:39:49+00:00</td>\n <td>https://api.twitter.com/2/tweets/search/all?ex...</td>\n <td>2.14.0</td>\n </tr>\n <tr>\n <th>600</th>\n <td>1643898126380482560</td>\n <td>1643418473228369920</td>\n <td>1.643418e+18</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>298198699</td>\n <td>4.284543e+08</td>\n <td>harryjsisson</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>2023-05-02T09:39:51+00:00</td>\n <td>https://api.twitter.com/2/tweets/search/all?ex...</td>\n <td>2.14.0</td>\n </tr>\n </tbody>\n</table>\n<p>601 rows × 83 columns</p>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "e62f86d6",
"cell_type": "markdown",
"source": "As you can see, our dataset is quite large, including 83 columns. Let's take a closer look at these columns:"
},
{
"metadata": {
"trusted": true
},
"id": "99cab21d",
"cell_type": "code",
"source": "tweets_df.columns",
"execution_count": 141,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 141,
"data": {
"text/plain": "Index(['id', 'conversation_id', 'referenced_tweets.replied_to.id',\n 'referenced_tweets.retweeted.id', 'referenced_tweets.quoted.id',\n 'author_id', 'in_reply_to_user_id', 'in_reply_to_username',\n 'retweeted_user_id', 'retweeted_username', 'quoted_user_id',\n 'quoted_username', 'created_at', 'text', 'lang', 'source',\n 'public_metrics.impression_count', 'public_metrics.reply_count',\n 'public_metrics.retweet_count', 'public_metrics.quote_count',\n 'public_metrics.like_count', 'reply_settings', 'edit_history_tweet_ids',\n 'edit_controls.edits_remaining', 'edit_controls.editable_until',\n 'edit_controls.is_edit_eligible', 'possibly_sensitive',\n 'withheld.scope', 'withheld.copyright', 'withheld.country_codes',\n 'entities.annotations', 'entities.cashtags', 'entities.hashtags',\n 'entities.mentions', 'entities.urls', 'context_annotations',\n 'attachments.media', 'attachments.media_keys',\n 'attachments.poll.duration_minutes', 'attachments.poll.end_datetime',\n 'attachments.poll.id', 'attachments.poll.options',\n 'attachments.poll.voting_status', 'attachments.poll_ids', 'author.id',\n 'author.created_at', 'author.username', 'author.name',\n 'author.description', 'author.entities.description.cashtags',\n 'author.entities.description.hashtags',\n 'author.entities.description.mentions',\n 'author.entities.description.urls', 'author.entities.url.urls',\n 'author.url', 'author.location', 'author.pinned_tweet_id',\n 'author.profile_image_url', 'author.protected',\n 'author.public_metrics.followers_count',\n 'author.public_metrics.following_count',\n 'author.public_metrics.listed_count',\n 'author.public_metrics.tweet_count', 'author.verified',\n 'author.verified_type', 'author.withheld.scope',\n 'author.withheld.copyright', 'author.withheld.country_codes',\n 'geo.coordinates.coordinates', 'geo.coordinates.type', 'geo.country',\n 'geo.country_code', 'geo.full_name', 'geo.geo.bbox', 'geo.geo.type',\n 'geo.id', 'geo.name', 'geo.place_id', 'geo.place_type',\n 'matching_rules', '__twarc.retrieved_at', '__twarc.url',\n '__twarc.version'],\n dtype='object')"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "fbf60c6e",
"cell_type": "markdown",
"source": "Let's clean up these columns by renaming those that might be most useful:"
},
{
"metadata": {
"trusted": true
},
"id": "ed694c50",
"cell_type": "code",
"source": "tweets_df.rename(columns={'created_at': 'date',\n 'public_metrics.retweet_count': 'retweets', \n 'author.username': 'username', \n 'author.name': 'name',\n 'author.verified': 'verified', \n 'public_metrics.like_count': 'likes', \n 'public_metrics.quote_count': 'quotes', \n 'public_metrics.reply_count': 'replies',\n 'author.description': 'user_bio'},\n inplace=True)",
"execution_count": 142,
"outputs": []
},
{
"metadata": {},
"id": "1f2e6344",
"cell_type": "markdown",
"source": "Now, let's select just the columns that are most useful to us:"
},
{
"metadata": {
"trusted": true
},
"id": "ecba1b27",
"cell_type": "code",
"source": "tweets_df = tweets_df[['date', 'username', 'name', 'verified', 'text', 'retweets',\n 'likes', 'replies', 'quotes', 'user_bio']]",
"execution_count": 143,
"outputs": []
},
{
"metadata": {
"scrolled": true,
"trusted": true
},
"id": "c44ead9d",
"cell_type": "code",
"source": "tweets_df",
"execution_count": 144,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 144,
"data": {
"text/plain": " date username name \\\n0 2023-05-01 23:46:49+00:00 4_localpolice TT C.O \n1 2023-05-01 23:04:40+00:00 clowneatclown Clown Eat Clown World 🤡 🌎 \n2 2023-05-01 22:53:12+00:00 scotchfireguns ScotchFireGuns \n3 2023-05-01 22:38:30+00:00 StuffWeirdest The Weirdest Stuff \n4 2023-05-01 22:14:31+00:00 TriangleCyclops Lil' Triangle \n.. ... ... ... \n596 2023-04-10 22:14:39+00:00 KidBrightwillow Kid Brightwillow \n597 2023-04-09 20:05:55+00:00 DollMolester Horny Doll Weirdo \n598 2023-04-08 21:10:48+00:00 Ginny9064f grunilda ledbetter \n599 2023-04-07 14:08:56+00:00 AppHapps AppHapps \n600 2023-04-06 08:47:10+00:00 KidBrightwillow Kid Brightwillow \n\n verified text retweets \\\n0 False Idiots like @harryjsisson proved earlier today... 0 \n1 False @hollowearthterf @LucidTheJester @taylorburrow... 0 \n2 False @WeaponNR Who ELSE works for Palette Managemen... 0 \n3 False Biden’s campaign team connected with Harry Sis... 0 \n4 False @normeykorey1087 I decided to look at Communit... 1 \n.. ... ... ... \n596 False @harryjsisson Harry is a professional “content... 0 \n597 False @fuyafuyu @TinStarSP Seconding aseprite. Once ... 0 \n598 False @Flightless223 @Travis_in_Flint What is palett... 0 \n599 False The palette management tool is based on the GI... 3 \n600 False @harryjsisson This is not an actual spontaneou... 0 \n\n likes replies quotes user_bio \n0 0 0 0 Where I am, you may not be, with simplicity, h... \n1 2 1 0 Clownin' em all day and night. \n2 0 0 0 Mostly homebrewing, woodworking, diy and grouc... \n3 0 0 0 social worker - independently poor - infiltrat... \n4 1 2 0 Eye Status: Single | don't worry about it | as... \n.. ... ... ... ... \n596 0 0 0 NaN \n597 1 1 0 Welcome to my poetic cum countdown, where you ... \n598 0 0 0 NaN \n599 15 1 0 Favorite apps on AppStore \n600 0 0 0 NaN \n\n[601 rows x 10 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>date</th>\n <th>username</th>\n <th>name</th>\n <th>verified</th>\n <th>text</th>\n <th>retweets</th>\n <th>likes</th>\n <th>replies</th>\n <th>quotes</th>\n <th>user_bio</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>2023-05-01 23:46:49+00:00</td>\n <td>4_localpolice</td>\n <td>TT C.O</td>\n <td>False</td>\n <td>Idiots like @harryjsisson proved earlier today...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>Where I am, you may not be, with simplicity, h...</td>\n </tr>\n <tr>\n <th>1</th>\n <td>2023-05-01 23:04:40+00:00</td>\n <td>clowneatclown</td>\n <td>Clown Eat Clown World 🤡 🌎</td>\n <td>False</td>\n <td>@hollowearthterf @LucidTheJester @taylorburrow...</td>\n <td>0</td>\n <td>2</td>\n <td>1</td>\n <td>0</td>\n <td>Clownin' em all day and night.</td>\n </tr>\n <tr>\n <th>2</th>\n <td>2023-05-01 22:53:12+00:00</td>\n <td>scotchfireguns</td>\n <td>ScotchFireGuns</td>\n <td>False</td>\n <td>@WeaponNR Who ELSE works for Palette Managemen...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>Mostly homebrewing, woodworking, diy and grouc...</td>\n </tr>\n <tr>\n <th>3</th>\n <td>2023-05-01 22:38:30+00:00</td>\n <td>StuffWeirdest</td>\n <td>The Weirdest Stuff</td>\n <td>False</td>\n <td>Biden’s campaign team connected with Harry Sis...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>social worker - independently poor - infiltrat...</td>\n </tr>\n <tr>\n <th>4</th>\n <td>2023-05-01 22:14:31+00:00</td>\n <td>TriangleCyclops</td>\n <td>Lil' Triangle</td>\n <td>False</td>\n <td>@normeykorey1087 I decided to look at Communit...</td>\n <td>1</td>\n <td>1</td>\n <td>2</td>\n <td>0</td>\n <td>Eye Status: Single | don't worry about it | as...</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>596</th>\n <td>2023-04-10 22:14:39+00:00</td>\n <td>KidBrightwillow</td>\n <td>Kid Brightwillow</td>\n <td>False</td>\n <td>@harryjsisson Harry is a professional “content...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>597</th>\n <td>2023-04-09 20:05:55+00:00</td>\n <td>DollMolester</td>\n <td>Horny Doll Weirdo</td>\n <td>False</td>\n <td>@fuyafuyu @TinStarSP Seconding aseprite. Once ...</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>Welcome to my poetic cum countdown, where you ...</td>\n </tr>\n <tr>\n <th>598</th>\n <td>2023-04-08 21:10:48+00:00</td>\n <td>Ginny9064f</td>\n <td>grunilda ledbetter</td>\n <td>False</td>\n <td>@Flightless223 @Travis_in_Flint What is palett...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>599</th>\n <td>2023-04-07 14:08:56+00:00</td>\n <td>AppHapps</td>\n <td>AppHapps</td>\n <td>False</td>\n <td>The palette management tool is based on the GI...</td>\n <td>3</td>\n <td>15</td>\n <td>1</td>\n <td>0</td>\n <td>Favorite apps on AppStore</td>\n </tr>\n <tr>\n <th>600</th>\n <td>2023-04-06 08:47:10+00:00</td>\n <td>KidBrightwillow</td>\n <td>Kid Brightwillow</td>\n <td>False</td>\n <td>@harryjsisson This is not an actual spontaneou...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n<p>601 rows × 10 columns</p>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "183f4a13",
"cell_type": "markdown",
"source": "Finally, let's inspect our datatypes:"
},
{
"metadata": {
"trusted": true
},
"id": "3ac9d7db",
"cell_type": "code",
"source": "tweets_df.dtypes",
"execution_count": 145,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 145,
"data": {
"text/plain": "date datetime64[ns, UTC]\nusername object\nname object\nverified bool\ntext object\nretweets int64\nlikes int64\nreplies int64\nquotes int64\nuser_bio object\ndtype: object"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "9aee831f",
"cell_type": "markdown",
"source": "## Sorting the data"
},
{
"metadata": {},
"id": "e5c66d10",
"cell_type": "markdown",
"source": "With just 10 columns, now we have a dataset that is much more manageable! \n</br>\nLet's take a closer look at our data. First, let's sort by retweets in descending order:"
},
{
"metadata": {
"trusted": true
},
"id": "c43a31e0",
"cell_type": "code",
"source": "tweets_df.sort_values(by='retweets', ascending=False)[:5]",
"execution_count": 146,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 146,
"data": {
"text/plain": " date username \\\n170 2023-04-29 21:13:57+00:00 ChuckCallesto \n399 2023-04-29 06:05:44+00:00 ImMeme0 \n128 2023-04-30 10:34:18+00:00 OliLondonTV \n59 2023-05-01 05:44:41+00:00 Malcolm_fleX48 \n12 2023-05-01 17:35:33+00:00 Cadence4Trump \n\n name verified \\\n170 Chuck Callesto True \n399 I Meme Therefore I Am 🇺🇸 True \n128 Oli London False \n59 Malcolm Fle✘ - 🇺🇸Amoral Mercenary🇺🇸 False \n12 ❥❥❥𝔹𝕝❀𝕟𝕕𝕚𝕖❥❥❥ True \n\n text retweets likes \\\n170 JUST IN: Paid DNC operative Harry Sisson and f... 2898 9158 \n399 Victor did a great homework exposing Harry Sis... 2864 7285 \n128 This man who copies Dylan Mulvaney and mocks w... 1495 4201 \n59 After finding out about the Biden Admin and DN... 477 1653 \n12 Listen to this guy own Harry Sisson &amp; Chri... 475 820 \n\n replies quotes user_bio \n170 1187 199 | Father | Social Media Strategist | R/T's Not... \n399 120 178 Chief Memer, woman and immigrant you don’t wan... \n128 984 199 📘Pre-order my book GENDER MADNESS 📚📘📖🎙️Spokesp... \n59 44 11 An #ENTP Political High-Capacity Assault Shitp... \n12 68 43 Fiery but Mostly Peaceful ᯽ I’m sunshine mixed... ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>date</th>\n <th>username</th>\n <th>name</th>\n <th>verified</th>\n <th>text</th>\n <th>retweets</th>\n <th>likes</th>\n <th>replies</th>\n <th>quotes</th>\n <th>user_bio</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>170</th>\n <td>2023-04-29 21:13:57+00:00</td>\n <td>ChuckCallesto</td>\n <td>Chuck Callesto</td>\n <td>True</td>\n <td>JUST IN: Paid DNC operative Harry Sisson and f...</td>\n <td>2898</td>\n <td>9158</td>\n <td>1187</td>\n <td>199</td>\n <td>| Father | Social Media Strategist | R/T's Not...</td>\n </tr>\n <tr>\n <th>399</th>\n <td>2023-04-29 06:05:44+00:00</td>\n <td>ImMeme0</td>\n <td>I Meme Therefore I Am 🇺🇸</td>\n <td>True</td>\n <td>Victor did a great homework exposing Harry Sis...</td>\n <td>2864</td>\n <td>7285</td>\n <td>120</td>\n <td>178</td>\n <td>Chief Memer, woman and immigrant you don’t wan...</td>\n </tr>\n <tr>\n <th>128</th>\n <td>2023-04-30 10:34:18+00:00</td>\n <td>OliLondonTV</td>\n <td>Oli London</td>\n <td>False</td>\n <td>This man who copies Dylan Mulvaney and mocks w...</td>\n <td>1495</td>\n <td>4201</td>\n <td>984</td>\n <td>199</td>\n <td>📘Pre-order my book GENDER MADNESS 📚📘📖🎙️Spokesp...</td>\n </tr>\n <tr>\n <th>59</th>\n <td>2023-05-01 05:44:41+00:00</td>\n <td>Malcolm_fleX48</td>\n <td>Malcolm Fle✘ - 🇺🇸Amoral Mercenary🇺🇸</td>\n <td>False</td>\n <td>After finding out about the Biden Admin and DN...</td>\n <td>477</td>\n <td>1653</td>\n <td>44</td>\n <td>11</td>\n <td>An #ENTP Political High-Capacity Assault Shitp...</td>\n </tr>\n <tr>\n <th>12</th>\n <td>2023-05-01 17:35:33+00:00</td>\n <td>Cadence4Trump</td>\n <td>❥❥❥𝔹𝕝❀𝕟𝕕𝕚𝕖❥❥❥</td>\n <td>True</td>\n <td>Listen to this guy own Harry Sisson &amp;amp; Chri...</td>\n <td>475</td>\n <td>820</td>\n <td>68</td>\n <td>43</td>\n <td>Fiery but Mostly Peaceful ᯽ I’m sunshine mixed...</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "379cc16d",
"cell_type": "markdown",
"source": "Now, we can sort our data by time in ascending order (meaning earliest to latest)"
},
{
"metadata": {
"trusted": true
},
"id": "1d5828c4",
"cell_type": "code",
"source": "tweets_df.sort_values(by='date', ascending=True)[:5]",
"execution_count": 147,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 147,
"data": {
"text/plain": " date username name verified \\\n600 2023-04-06 08:47:10+00:00 KidBrightwillow Kid Brightwillow False \n599 2023-04-07 14:08:56+00:00 AppHapps AppHapps False \n598 2023-04-08 21:10:48+00:00 Ginny9064f grunilda ledbetter False \n597 2023-04-09 20:05:55+00:00 DollMolester Horny Doll Weirdo False \n596 2023-04-10 22:14:39+00:00 KidBrightwillow Kid Brightwillow False \n\n text retweets likes \\\n600 @harryjsisson This is not an actual spontaneou... 0 0 \n599 The palette management tool is based on the GI... 3 15 \n598 @Flightless223 @Travis_in_Flint What is palett... 0 0 \n597 @fuyafuyu @TinStarSP Seconding aseprite. Once ... 0 1 \n596 @harryjsisson Harry is a professional “content... 0 0 \n\n replies quotes user_bio \n600 0 0 NaN \n599 1 0 Favorite apps on AppStore \n598 0 0 NaN \n597 1 0 Welcome to my poetic cum countdown, where you ... \n596 0 0 NaN ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>date</th>\n <th>username</th>\n <th>name</th>\n <th>verified</th>\n <th>text</th>\n <th>retweets</th>\n <th>likes</th>\n <th>replies</th>\n <th>quotes</th>\n <th>user_bio</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>600</th>\n <td>2023-04-06 08:47:10+00:00</td>\n <td>KidBrightwillow</td>\n <td>Kid Brightwillow</td>\n <td>False</td>\n <td>@harryjsisson This is not an actual spontaneou...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>599</th>\n <td>2023-04-07 14:08:56+00:00</td>\n <td>AppHapps</td>\n <td>AppHapps</td>\n <td>False</td>\n <td>The palette management tool is based on the GI...</td>\n <td>3</td>\n <td>15</td>\n <td>1</td>\n <td>0</td>\n <td>Favorite apps on AppStore</td>\n </tr>\n <tr>\n <th>598</th>\n <td>2023-04-08 21:10:48+00:00</td>\n <td>Ginny9064f</td>\n <td>grunilda ledbetter</td>\n <td>False</td>\n <td>@Flightless223 @Travis_in_Flint What is palett...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>597</th>\n <td>2023-04-09 20:05:55+00:00</td>\n <td>DollMolester</td>\n <td>Horny Doll Weirdo</td>\n <td>False</td>\n <td>@fuyafuyu @TinStarSP Seconding aseprite. Once ...</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>Welcome to my poetic cum countdown, where you ...</td>\n </tr>\n <tr>\n <th>596</th>\n <td>2023-04-10 22:14:39+00:00</td>\n <td>KidBrightwillow</td>\n <td>Kid Brightwillow</td>\n <td>False</td>\n <td>@harryjsisson Harry is a professional “content...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "20a6880c",
"cell_type": "markdown",
"source": "## Ploting Tweets Over Time"
},
{
"metadata": {},
"id": "4450bc83",
"cell_type": "markdown",
"source": "To visualize our Tweets over time, we can add a column with a 1 for every row and then create another column adding the single count with the number of retweets. This will allow us to capture the total number of tweets, which we can then use to count how many tweets were published per day, week, month, or year"
},
{
"metadata": {
"trusted": true
},
"id": "897930a2",
"cell_type": "code",
"source": "tweets_df = tweets_df.assign(count=1)",
"execution_count": 148,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"id": "57b47b48",
"cell_type": "code",
"source": "tweets_df['total_count']= tweets_df['count'] + tweets_df['retweets'] + tweets_df['quotes']",
"execution_count": 149,
"outputs": []
},
{
"metadata": {},
"id": "dc896f61",
"cell_type": "markdown",
"source": "We can use the sum() method to count all the values in the total_count column:"
},
{
"metadata": {
"trusted": true
},
"id": "5d37fb28",
"cell_type": "code",
"source": "sum_tweets = tweets_df['total_count'].sum()\nprint(sum_tweets)",
"execution_count": 150,
"outputs": [
{
"output_type": "stream",
"text": "11504\n",
"name": "stdout"
}
]
},
{
"metadata": {
"trusted": true
},
"id": "273fe991",
"cell_type": "code",
"source": "tweets_df.sort_values(by='total_count', ascending=False)[:5]",
"execution_count": 151,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 151,
"data": {
"text/plain": " date username \\\n170 2023-04-29 21:13:57+00:00 ChuckCallesto \n399 2023-04-29 06:05:44+00:00 ImMeme0 \n128 2023-04-30 10:34:18+00:00 OliLondonTV \n12 2023-05-01 17:35:33+00:00 Cadence4Trump \n59 2023-05-01 05:44:41+00:00 Malcolm_fleX48 \n\n name verified \\\n170 Chuck Callesto True \n399 I Meme Therefore I Am 🇺🇸 True \n128 Oli London False \n12 ❥❥❥𝔹𝕝❀𝕟𝕕𝕚𝕖❥❥❥ True \n59 Malcolm Fle✘ - 🇺🇸Amoral Mercenary🇺🇸 False \n\n text retweets likes \\\n170 JUST IN: Paid DNC operative Harry Sisson and f... 2898 9158 \n399 Victor did a great homework exposing Harry Sis... 2864 7285 \n128 This man who copies Dylan Mulvaney and mocks w... 1495 4201 \n12 Listen to this guy own Harry Sisson &amp; Chri... 475 820 \n59 After finding out about the Biden Admin and DN... 477 1653 \n\n replies quotes user_bio \\\n170 1187 199 | Father | Social Media Strategist | R/T's Not... \n399 120 178 Chief Memer, woman and immigrant you don’t wan... \n128 984 199 📘Pre-order my book GENDER MADNESS 📚📘📖🎙️Spokesp... \n12 68 43 Fiery but Mostly Peaceful ᯽ I’m sunshine mixed... \n59 44 11 An #ENTP Political High-Capacity Assault Shitp... \n\n count total_count \n170 1 3098 \n399 1 3043 \n128 1 1695 \n12 1 519 \n59 1 489 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>date</th>\n <th>username</th>\n <th>name</th>\n <th>verified</th>\n <th>text</th>\n <th>retweets</th>\n <th>likes</th>\n <th>replies</th>\n <th>quotes</th>\n <th>user_bio</th>\n <th>count</th>\n <th>total_count</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>170</th>\n <td>2023-04-29 21:13:57+00:00</td>\n <td>ChuckCallesto</td>\n <td>Chuck Callesto</td>\n <td>True</td>\n <td>JUST IN: Paid DNC operative Harry Sisson and f...</td>\n <td>2898</td>\n <td>9158</td>\n <td>1187</td>\n <td>199</td>\n <td>| Father | Social Media Strategist | R/T's Not...</td>\n <td>1</td>\n <td>3098</td>\n </tr>\n <tr>\n <th>399</th>\n <td>2023-04-29 06:05:44+00:00</td>\n <td>ImMeme0</td>\n <td>I Meme Therefore I Am 🇺🇸</td>\n <td>True</td>\n <td>Victor did a great homework exposing Harry Sis...</td>\n <td>2864</td>\n <td>7285</td>\n <td>120</td>\n <td>178</td>\n <td>Chief Memer, woman and immigrant you don’t wan...</td>\n <td>1</td>\n <td>3043</td>\n </tr>\n <tr>\n <th>128</th>\n <td>2023-04-30 10:34:18+00:00</td>\n <td>OliLondonTV</td>\n <td>Oli London</td>\n <td>False</td>\n <td>This man who copies Dylan Mulvaney and mocks w...</td>\n <td>1495</td>\n <td>4201</td>\n <td>984</td>\n <td>199</td>\n <td>📘Pre-order my book GENDER MADNESS 📚📘📖🎙️Spokesp...</td>\n <td>1</td>\n <td>1695</td>\n </tr>\n <tr>\n <th>12</th>\n <td>2023-05-01 17:35:33+00:00</td>\n <td>Cadence4Trump</td>\n <td>❥❥❥𝔹𝕝❀𝕟𝕕𝕚𝕖❥❥❥</td>\n <td>True</td>\n <td>Listen to this guy own Harry Sisson &amp;amp; Chri...</td>\n <td>475</td>\n <td>820</td>\n <td>68</td>\n <td>43</td>\n <td>Fiery but Mostly Peaceful ᯽ I’m sunshine mixed...</td>\n <td>1</td>\n <td>519</td>\n </tr>\n <tr>\n <th>59</th>\n <td>2023-05-01 05:44:41+00:00</td>\n <td>Malcolm_fleX48</td>\n <td>Malcolm Fle✘ - 🇺🇸Amoral Mercenary🇺🇸</td>\n <td>False</td>\n <td>After finding out about the Biden Admin and DN...</td>\n <td>477</td>\n <td>1653</td>\n <td>44</td>\n <td>11</td>\n <td>An #ENTP Political High-Capacity Assault Shitp...</td>\n <td>1</td>\n <td>489</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "c6ec7d8f",
"cell_type": "markdown",
"source": "Let's set the date column to the index so we can do some special date manipulations:"
},
{
"metadata": {
"trusted": true
},
"id": "aad70e1d",
"cell_type": "code",
"source": "tweets_df = tweets_df.set_index('date')\ntweets_df",
"execution_count": 152,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 152,
"data": {
"text/plain": " username name \\\ndate \n2023-05-01 23:46:49+00:00 4_localpolice TT C.O \n2023-05-01 23:04:40+00:00 clowneatclown Clown Eat Clown World 🤡 🌎 \n2023-05-01 22:53:12+00:00 scotchfireguns ScotchFireGuns \n2023-05-01 22:38:30+00:00 StuffWeirdest The Weirdest Stuff \n2023-05-01 22:14:31+00:00 TriangleCyclops Lil' Triangle \n... ... ... \n2023-04-10 22:14:39+00:00 KidBrightwillow Kid Brightwillow \n2023-04-09 20:05:55+00:00 DollMolester Horny Doll Weirdo \n2023-04-08 21:10:48+00:00 Ginny9064f grunilda ledbetter \n2023-04-07 14:08:56+00:00 AppHapps AppHapps \n2023-04-06 08:47:10+00:00 KidBrightwillow Kid Brightwillow \n\n verified \\\ndate \n2023-05-01 23:46:49+00:00 False \n2023-05-01 23:04:40+00:00 False \n2023-05-01 22:53:12+00:00 False \n2023-05-01 22:38:30+00:00 False \n2023-05-01 22:14:31+00:00 False \n... ... \n2023-04-10 22:14:39+00:00 False \n2023-04-09 20:05:55+00:00 False \n2023-04-08 21:10:48+00:00 False \n2023-04-07 14:08:56+00:00 False \n2023-04-06 08:47:10+00:00 False \n\n text \\\ndate \n2023-05-01 23:46:49+00:00 Idiots like @harryjsisson proved earlier today... \n2023-05-01 23:04:40+00:00 @hollowearthterf @LucidTheJester @taylorburrow... \n2023-05-01 22:53:12+00:00 @WeaponNR Who ELSE works for Palette Managemen... \n2023-05-01 22:38:30+00:00 Biden’s campaign team connected with Harry Sis... \n2023-05-01 22:14:31+00:00 @normeykorey1087 I decided to look at Communit... \n... ... \n2023-04-10 22:14:39+00:00 @harryjsisson Harry is a professional “content... \n2023-04-09 20:05:55+00:00 @fuyafuyu @TinStarSP Seconding aseprite. Once ... \n2023-04-08 21:10:48+00:00 @Flightless223 @Travis_in_Flint What is palett... \n2023-04-07 14:08:56+00:00 The palette management tool is based on the GI... \n2023-04-06 08:47:10+00:00 @harryjsisson This is not an actual spontaneou... \n\n retweets likes replies quotes \\\ndate \n2023-05-01 23:46:49+00:00 0 0 0 0 \n2023-05-01 23:04:40+00:00 0 2 1 0 \n2023-05-01 22:53:12+00:00 0 0 0 0 \n2023-05-01 22:38:30+00:00 0 0 0 0 \n2023-05-01 22:14:31+00:00 1 1 2 0 \n... ... ... ... ... \n2023-04-10 22:14:39+00:00 0 0 0 0 \n2023-04-09 20:05:55+00:00 0 1 1 0 \n2023-04-08 21:10:48+00:00 0 0 0 0 \n2023-04-07 14:08:56+00:00 3 15 1 0 \n2023-04-06 08:47:10+00:00 0 0 0 0 \n\n user_bio \\\ndate \n2023-05-01 23:46:49+00:00 Where I am, you may not be, with simplicity, h... \n2023-05-01 23:04:40+00:00 Clownin' em all day and night. \n2023-05-01 22:53:12+00:00 Mostly homebrewing, woodworking, diy and grouc... \n2023-05-01 22:38:30+00:00 social worker - independently poor - infiltrat... \n2023-05-01 22:14:31+00:00 Eye Status: Single | don't worry about it | as... \n... ... \n2023-04-10 22:14:39+00:00 NaN \n2023-04-09 20:05:55+00:00 Welcome to my poetic cum countdown, where you ... \n2023-04-08 21:10:48+00:00 NaN \n2023-04-07 14:08:56+00:00 Favorite apps on AppStore \n2023-04-06 08:47:10+00:00 NaN \n\n count total_count \ndate \n2023-05-01 23:46:49+00:00 1 1 \n2023-05-01 23:04:40+00:00 1 1 \n2023-05-01 22:53:12+00:00 1 1 \n2023-05-01 22:38:30+00:00 1 1 \n2023-05-01 22:14:31+00:00 1 2 \n... ... ... \n2023-04-10 22:14:39+00:00 1 1 \n2023-04-09 20:05:55+00:00 1 1 \n2023-04-08 21:10:48+00:00 1 1 \n2023-04-07 14:08:56+00:00 1 4 \n2023-04-06 08:47:10+00:00 1 1 \n\n[601 rows x 11 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>username</th>\n <th>name</th>\n <th>verified</th>\n <th>text</th>\n <th>retweets</th>\n <th>likes</th>\n <th>replies</th>\n <th>quotes</th>\n <th>user_bio</th>\n <th>count</th>\n <th>total_count</th>\n </tr>\n <tr>\n <th>date</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2023-05-01 23:46:49+00:00</th>\n <td>4_localpolice</td>\n <td>TT C.O</td>\n <td>False</td>\n <td>Idiots like @harryjsisson proved earlier today...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>Where I am, you may not be, with simplicity, h...</td>\n <td>1</td>\n <td>1</td>\n </tr>\n <tr>\n <th>2023-05-01 23:04:40+00:00</th>\n <td>clowneatclown</td>\n <td>Clown Eat Clown World 🤡 🌎</td>\n <td>False</td>\n <td>@hollowearthterf @LucidTheJester @taylorburrow...</td>\n <td>0</td>\n <td>2</td>\n <td>1</td>\n <td>0</td>\n <td>Clownin' em all day and night.</td>\n <td>1</td>\n <td>1</td>\n </tr>\n <tr>\n <th>2023-05-01 22:53:12+00:00</th>\n <td>scotchfireguns</td>\n <td>ScotchFireGuns</td>\n <td>False</td>\n <td>@WeaponNR Who ELSE works for Palette Managemen...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>Mostly homebrewing, woodworking, diy and grouc...</td>\n <td>1</td>\n <td>1</td>\n </tr>\n <tr>\n <th>2023-05-01 22:38:30+00:00</th>\n <td>StuffWeirdest</td>\n <td>The Weirdest Stuff</td>\n <td>False</td>\n <td>Biden’s campaign team connected with Harry Sis...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>social worker - independently poor - infiltrat...</td>\n <td>1</td>\n <td>1</td>\n </tr>\n <tr>\n <th>2023-05-01 22:14:31+00:00</th>\n <td>TriangleCyclops</td>\n <td>Lil' Triangle</td>\n <td>False</td>\n <td>@normeykorey1087 I decided to look at Communit...</td>\n <td>1</td>\n <td>1</td>\n <td>2</td>\n <td>0</td>\n <td>Eye Status: Single | don't worry about it | as...</td>\n <td>1</td>\n <td>2</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>2023-04-10 22:14:39+00:00</th>\n <td>KidBrightwillow</td>\n <td>Kid Brightwillow</td>\n <td>False</td>\n <td>@harryjsisson Harry is a professional “content...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n <td>1</td>\n <td>1</td>\n </tr>\n <tr>\n <th>2023-04-09 20:05:55+00:00</th>\n <td>DollMolester</td>\n <td>Horny Doll Weirdo</td>\n <td>False</td>\n <td>@fuyafuyu @TinStarSP Seconding aseprite. Once ...</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>Welcome to my poetic cum countdown, where you ...</td>\n <td>1</td>\n <td>1</td>\n </tr>\n <tr>\n <th>2023-04-08 21:10:48+00:00</th>\n <td>Ginny9064f</td>\n <td>grunilda ledbetter</td>\n <td>False</td>\n <td>@Flightless223 @Travis_in_Flint What is palett...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n <td>1</td>\n <td>1</td>\n </tr>\n <tr>\n <th>2023-04-07 14:08:56+00:00</th>\n <td>AppHapps</td>\n <td>AppHapps</td>\n <td>False</td>\n <td>The palette management tool is based on the GI...</td>\n <td>3</td>\n <td>15</td>\n <td>1</td>\n <td>0</td>\n <td>Favorite apps on AppStore</td>\n <td>1</td>\n <td>4</td>\n </tr>\n <tr>\n <th>2023-04-06 08:47:10+00:00</th>\n <td>KidBrightwillow</td>\n <td>Kid Brightwillow</td>\n <td>False</td>\n <td>@harryjsisson This is not an actual spontaneou...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n <td>1</td>\n <td>1</td>\n </tr>\n </tbody>\n</table>\n<p>601 rows × 11 columns</p>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "b15b4b6e",
"cell_type": "markdown",
"source": "Since our index is a datetime value, we can use the special Pandas method .resample() to group the tweets by month, add them up, and plot them over time."
},
{
"metadata": {
"scrolled": true,
"trusted": true
},
"id": "0bc12ecf",
"cell_type": "code",
"source": "tweets_df['total_count'].resample('D').sum()\\\n.plot(title='Student Debt Relief Tweets by Day');",
"execution_count": 153,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 640x480 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHlCAYAAAAZVpPLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABsC0lEQVR4nO3de1zUVf4/8NcwDAMMMHIRRhQRy8hbXhMxNzUVdVUs29wiSb+ZXbyFaZbVbli74Fpp/TJNXdMtNaxNzaxI3ZQyRRGlvKXmDS8gXmCG6www5/cHzAcGEBhuw8y8no/HPJTPnHnP+SCHeXuuMiGEABEREZEDcrJ2BYiIiIishYkQEREROSwmQkREROSwmAgRERGRw2IiRERERA6LiRARERE5LCZCRERE5LCYCBEREZHDYiJEREREDouJEFnVwYMH8cgjj6Bjx45QKpUICAhAeHg45s2bZ1ZuxYoVWL9+fbPUYejQoRg6dGizxDbZv38/YmNjkZOTU6/ysbGxkMlk0sPd3R0dOnTAqFGj8OGHHyI3N7fBdTHFvnnzZp1lLf2+d+rUyazeKpUKffv2xfLly9HQTexr+veRyWSIjY1tULyLFy9i7Nix8PHxgUwmQ0xMTLUyVb//d3o0989NfZw8eRKxsbG4ePFik8UcOnQoevTo0WTx7qTyz4uTkxPUajW6du2Kp556Cjt37mz29ycCAGdrV4Ac17fffovIyEgMHToUS5YsQbt27ZCRkYHDhw8jISEB7733nlR2xYoV8PPzw9SpU61X4UbYv38/Fi1ahKlTp6JNmzb1fl1iYiLUajUMBgOuXbuG//3vf1iwYAHeeecdfPPNN+jVq1fzVRoN+74/8MADePfddwEA165dw9KlSzF79mzodDq89tprTVKvAwcOoEOHDg167dy5c3Hw4EF88skn0Gg0aNeuXbUyzzzzDEaPHi19nZGRgYkTJ2L27NmIioqSrnt5eTWoDk3p5MmTWLRoEYYOHYpOnTpZuzoWq/zzkpeXh9OnTyMhIQGjRo3Co48+is8//xwKhcLKtSR7xkSIrGbJkiUICQnBDz/8AGfnih/Fxx9/HEuWLLFizVqPfv36wc/PT/r68ccfx6xZszBkyBBERkbizJkzUCqVVqxhdW3atMHAgQOlr0eMGIGOHTti1apVTZYIVY5vqePHj2PAgAF4+OGH71imQ4cOZomWqbelY8eOjXpvqq6mn5eZM2ciNjYWixYtwhtvvIF//etfVqwh2TsOjZHV3Lp1C35+fmZJkImTU8WPZqdOnXDixAkkJSVJ3eim//muX78eMpms2rDA3r17IZPJsHfvXumaEAJLlixBcHAwXF1d0bdvX3z//fc11k2n02H+/PkICQmBi4sL2rdvj5iYGOTn55uVk8lkmDVrFj777DN07doV7u7u6NWrF3bs2CGViY2NxcsvvwwACAkJke6hct0s0atXL7z++utIT0/H5s2bzZ7bvXs3hg8fDi8vL7i7u+OBBx7A//73vxrjXL58GRMnToSXlxfUajUmT56MGzduSM/X9n23hJeXF+655x5cv37d7LrBYMA//vEP3HvvvVAqlWjbti3+7//+z6wOd1LT0FhmZiaee+45dOjQAS4uLggJCcGiRYtQUlICoOJn4o8//sD3338v3VNDhpROnDgBmUyGL7/8UrqWmpoKmUyG7t27m5WNjIxEv379zK5t3rwZ4eHhUKlU8PDwwKhRo3D06NFq73P48GFERkbCx8cHrq6u6NOnD7744gvp+fXr1+Oxxx4DAAwbNky6J9Nw5tGjRzFu3Dj4+/tDqVQiMDAQY8eOxZUrV+p1nz///DMGDhwINzc3tG/fHn/7299QWloKoKw9denSBaNGjar2ury8PKjVasycObNe71OT2NhYdO/eHcuXL0dRUZF0fdGiRQgLC4OPjw+8vLzQt29frF271mzoddq0afDx8UFBQUG1uA899FC1fyNycILISp555hkBQMyePVskJycLg8FQY7kjR46Izp07iz59+ogDBw6IAwcOiCNHjgghhFi3bp0AIC5cuGD2mj179ggAYs+ePdK1N998UwAQ06ZNE99//71YvXq1aN++vdBoNGLIkCFSufz8fNG7d2/h5+cnli5dKnbv3i0++OADoVarxUMPPSSMRqNUFoDo1KmTGDBggPjiiy/Ed999J4YOHSqcnZ3FuXPnhBBCXL58WcyePVsAEFu2bJHuQavV3vF7Y6rrjRs3anz+999/l+7F5LPPPhMymUw8/PDDYsuWLeKbb74R48aNE3K5XOzevbta7ODgYPHyyy+LH374QSxdulSoVCrRp08f6d+htu/7nQQHB4uxY8eaXSsuLhYajUb07NlTulZaWipGjx4tVCqVWLRokdi1a5f497//Ldq3by+6desmCgoKpLJDhgwx+/cxfd/ffPNN6euMjAwRFBQkgoODxapVq8Tu3bvF22+/LZRKpZg6daoQQgitVisOHDggNBqNeOCBB6R7KioqqvWehBDiwoULAoB45513pGvt2rUTzz77rPT14sWLhZubmwAgrl69Kt27l5eXWLBggVTun//8p5DJZOLpp58WO3bsEFu2bBHh4eFCpVKJEydOSOV+/PFH4eLiIv70pz+JzZs3i8TERDF16lQBQKxbt04IIURWVpaIi4sTAMRHH30k3VNWVpbIy8sTvr6+on///uKLL74QSUlJYvPmzeL5558XJ0+erPV+hwwZInx9fUVgYKD4f//v/4kffvhBzJkzRwAQM2fOlMp98MEHQiaTiTNnzpi9/qOPPhIAzO6nJjX9vFT26quvCgDi559/lq5NnTpVrF27VuzatUvs2rVLvP3228LNzU0sWrRIKvPrr78KAGLNmjVm8U6cOCF9r4hMmAiR1dy8eVMMHjxYABAAhEKhEIMGDRLx8fEiNzfXrGz37t2rfRgKUf9EKDs7W7i6uopHHnnErNwvv/wiAJjFjo+PF05OTiIlJcWs7H//+18BQHz33XfSNQAiICBA6HQ66VpmZqZwcnIS8fHx0rV33nmnxnreSV2JUGFhoQAgxowZI4QoS958fHzE+PHjzcqVlpaKXr16iQEDBlSLPXfuXLOyGzduFADEhg0bpGt3+r7fSXBwsPjzn/8siouLRXFxsbh06ZKYPn26UCgUYseOHVK5zz//XAAQX331ldnrU1JSBACxYsUK6Vp9EqHnnntOeHh4iEuXLpmVe/fdd6t9INf14VuTmhKhyZMni86dO0tfjxgxQkyfPl14e3uL//znP0KIip+vnTt3CiGESE9PF87OzmL27Nlm8XNzc4VGoxGTJk2Srt17772iT58+ori42KzsuHHjRLt27URpaakQQogvv/yyWtIvhBCHDx8WAMS2bdssulchyr7nAMTXX39tdn369OnCyclJ+j7rdDrh6ekpXnzxRbNy3bp1E8OGDavzfer6t1i5cqUAIDZv3lzj86WlpaK4uFi89dZbwtfX1+w/KUOGDBG9e/c2K//CCy8ILy+var9fyLFxaIysxtfXFz///DNSUlKwePFiTJgwAWfOnMHChQvRs2fPeq1qqq8DBw6gqKgITz75pNn1QYMGITg42Oza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\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "dbe42781",
"cell_type": "markdown",
"source": "## Extracting Hashtags"
},
{
"metadata": {},
"id": "f5e921bf",
"cell_type": "markdown",
"source": "To extract the hashtags from our collection of tweets, we are going to define a new function, extract_hashtags_list, that will seek words starting with the \"#\" key and add those words without the \"#\" to an empty list, hashtag_list:"
},
{
"metadata": {
"trusted": true
},
"id": "d43d3f02",
"cell_type": "code",
"source": "def extract_hashtags_list(text):\n hashtag_list = []\n for word in text.split():\n if word[0] == '#':\n hashtag_list.append(word[1:])\n return hashtag_list",
"execution_count": 154,
"outputs": []
},
{
"metadata": {},
"id": "cab6dfad",
"cell_type": "markdown",
"source": "Let's apply our extract_hashtags_list function to the \"text\" column in our tweets_df dataframe and save the results in a new column, hashtags_list:"
},
{
"metadata": {
"trusted": true
},
"id": "502b88ef",
"cell_type": "code",
"source": "tweets_df['hashtags_list'] = tweets_df['text'].apply(extract_hashtags_list)",
"execution_count": 155,
"outputs": []
},
{
"metadata": {
"scrolled": true,
"trusted": true
},
"id": "2ca96e85",
"cell_type": "code",
"source": "tweets_df.sort_values(by='hashtags_list', ascending=False)[:15]",
"execution_count": 156,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 156,
"data": {
"text/plain": " username \\\ndate \n2023-04-28 00:58:57+00:00 politicaleduca2 \n2023-04-30 23:28:53+00:00 RonElCapitan4 \n2023-04-30 12:46:40+00:00 LeannanSaoirse \n2023-04-30 16:13:45+00:00 XNewsChannel \n2023-04-30 16:15:39+00:00 XNewsChannel \n2023-04-30 02:16:36+00:00 XNewsChannel \n2023-04-29 11:20:54+00:00 RobJamesMcKenna \n2023-04-23 16:12:29+00:00 HollyBlomberg \n2023-04-30 00:29:48+00:00 SpiderTrades \n2023-05-01 09:38:37+00:00 ONE_Z3RO \n2023-04-30 12:51:17+00:00 OlsoninMontana \n2023-04-29 19:49:17+00:00 OlsoninMontana \n2023-04-29 19:51:56+00:00 OlsoninMontana \n2023-04-29 13:22:05+00:00 OlsoninMontana \n2023-05-01 13:49:03+00:00 DocBryantActual \n\n name \\\ndate \n2023-04-28 00:58:57+00:00 political_education \n2023-04-30 23:28:53+00:00 Ron Rico \n2023-04-30 12:46:40+00:00 LeannanSaoirse \n2023-04-30 16:13:45+00:00 X News Channel \n2023-04-30 16:15:39+00:00 X News Channel \n2023-04-30 02:16:36+00:00 X News Channel \n2023-04-29 11:20:54+00:00 Citizen’s Public Safety Network Developer \n2023-04-23 16:12:29+00:00 Holly \n2023-04-30 00:29:48+00:00 Shifu 🐺 \n2023-05-01 09:38:37+00:00 ONEZERO \n2023-04-30 12:51:17+00:00 Laurie \n2023-04-29 19:49:17+00:00 Laurie \n2023-04-29 19:51:56+00:00 Laurie \n2023-04-29 13:22:05+00:00 Laurie \n2023-05-01 13:49:03+00:00 Doc Bryant \n\n verified \\\ndate \n2023-04-28 00:58:57+00:00 False \n2023-04-30 23:28:53+00:00 False \n2023-04-30 12:46:40+00:00 False \n2023-04-30 16:13:45+00:00 False \n2023-04-30 16:15:39+00:00 False \n2023-04-30 02:16:36+00:00 False \n2023-04-29 11:20:54+00:00 False \n2023-04-23 16:12:29+00:00 False \n2023-04-30 00:29:48+00:00 False \n2023-05-01 09:38:37+00:00 False \n2023-04-30 12:51:17+00:00 False \n2023-04-29 19:49:17+00:00 False \n2023-04-29 19:51:56+00:00 False \n2023-04-29 13:22:05+00:00 False \n2023-05-01 13:49:03+00:00 False \n\n text \\\ndate \n2023-04-28 00:58:57+00:00 Tiktok influencers working for Palette Managem... \n2023-04-30 23:28:53+00:00 This kid is the dumbest person on social media... \n2023-04-30 12:46:40+00:00 If this is not #mocking #RealWomen, I have no ... \n2023-04-30 16:13:45+00:00 JUST IN: Harry Sisson and Chris Mowrey DELETE ... \n2023-04-30 16:15:39+00:00 JUST IN: Harry Sisson and Chris Mowrey DELETE ... \n2023-04-30 02:16:36+00:00 Harry Sisson and friend Chris Mowrey DELETE NE... \n2023-04-29 11:20:54+00:00 @NorthwestJourno @FieldWhistle Palette Schills... \n2023-04-23 16:12:29+00:00 @king_of_bob I wonder if Victor is also repres... \n2023-04-30 00:29:48+00:00 Sisson recently signed with Palette management... \n2023-05-01 09:38:37+00:00 Sisson recently signed with Palette management... \n2023-04-30 12:51:17+00:00 @ReaganRunners Sisson &amp; Mowrey are paid po... \n2023-04-29 19:49:17+00:00 @HavasuMarena Sisson &amp; Mowrey are paid pol... \n2023-04-29 19:51:56+00:00 @harryjsisson Sisson &amp; Mowrey are paid pol... \n2023-04-29 13:22:05+00:00 Sisson &amp; Mowrey are paid political operati... \n2023-05-01 13:49:03+00:00 #HarryJSisson and #ChrisMowrey are both paid s... \n\n retweets likes replies quotes \\\ndate \n2023-04-28 00:58:57+00:00 3 5 2 0 \n2023-04-30 23:28:53+00:00 0 0 0 0 \n2023-04-30 12:46:40+00:00 0 1 0 0 \n2023-04-30 16:13:45+00:00 0 4 0 1 \n2023-04-30 16:15:39+00:00 0 1 0 0 \n2023-04-30 02:16:36+00:00 0 3 0 0 \n2023-04-29 11:20:54+00:00 0 0 4 0 \n2023-04-23 16:12:29+00:00 0 1 1 0 \n2023-04-30 00:29:48+00:00 0 0 0 0 \n2023-05-01 09:38:37+00:00 0 0 0 0 \n2023-04-30 12:51:17+00:00 0 1 0 0 \n2023-04-29 19:49:17+00:00 0 0 0 0 \n2023-04-29 19:51:56+00:00 0 0 0 0 \n2023-04-29 13:22:05+00:00 1 1 0 0 \n2023-05-01 13:49:03+00:00 0 0 0 0 \n\n user_bio \\\ndate \n2023-04-28 00:58:57+00:00 Republican media creator and activist \n2023-04-30 23:28:53+00:00 A sailor loves his rum like a diesel loves her... \n2023-04-30 12:46:40+00:00 Freelance writer; healthtech device designer; ... \n2023-04-30 16:13:45+00:00 NaN \n2023-04-30 16:15:39+00:00 NaN \n2023-04-30 02:16:36+00:00 NaN \n2023-04-29 11:20:54+00:00 Data Journalist & Tracking Platform Architect.... \n2023-04-23 16:12:29+00:00 Observing life from the deck of the USS Titani... \n2023-04-30 00:29:48+00:00 Encumbered by idjits, I pressed on. \n2023-05-01 09:38:37+00:00 #Crypto #NFT #SaltyArmy 🧂 THE SALT MUST FLOW #... \n2023-04-30 12:51:17+00:00 I like meme's, free speech and freedom. \n2023-04-29 19:49:17+00:00 I like meme's, free speech and freedom. \n2023-04-29 19:51:56+00:00 I like meme's, free speech and freedom. \n2023-04-29 13:22:05+00:00 I like meme's, free speech and freedom. \n2023-05-01 13:49:03+00:00 Host of the Doc Bryant Show podcast. I'm on Lo... \n\n count total_count \\\ndate \n2023-04-28 00:58:57+00:00 1 4 \n2023-04-30 23:28:53+00:00 1 1 \n2023-04-30 12:46:40+00:00 1 1 \n2023-04-30 16:13:45+00:00 1 2 \n2023-04-30 16:15:39+00:00 1 1 \n2023-04-30 02:16:36+00:00 1 1 \n2023-04-29 11:20:54+00:00 1 1 \n2023-04-23 16:12:29+00:00 1 1 \n2023-04-30 00:29:48+00:00 1 1 \n2023-05-01 09:38:37+00:00 1 1 \n2023-04-30 12:51:17+00:00 1 1 \n2023-04-29 19:49:17+00:00 1 1 \n2023-04-29 19:51:56+00:00 1 1 \n2023-04-29 13:22:05+00:00 1 2 \n2023-05-01 13:49:03+00:00 1 1 \n\n hashtags_list \ndate \n2023-04-28 00:58:57+00:00 [tiktok, secrets, LeadRight] \n2023-04-30 23:28:53+00:00 [paidadvertisement, paidshill, clown, GenZ] \n2023-04-30 12:46:40+00:00 [mocking, RealWomen,, Palette] \n2023-04-30 16:13:45+00:00 [harrysisson, harryjsisson, chrismowrey, dnc, ... \n2023-04-30 16:15:39+00:00 [harrysisson, harryjsisson, chrismowrey, dnc, ... \n2023-04-30 02:16:36+00:00 [harrysisson, harryjsisson, chrismowrey, dnc, ... \n2023-04-29 11:20:54+00:00 [c2cGZ, c2cTiktok, c2cDNC, c2cSchill, c2cAgent... \n2023-04-23 16:12:29+00:00 [astroturf] \n2023-04-30 00:29:48+00:00 [TaxTheRich, BidenHarris2024] \n2023-05-01 09:38:37+00:00 [PalletteManagement, DNC, Sisson, Liar, FakeNe... \n2023-04-30 12:51:17+00:00 [LiberalHypocrisy] \n2023-04-29 19:49:17+00:00 [LiberalHypocrisy] \n2023-04-29 19:51:56+00:00 [LiberalHypocrisy] \n2023-04-29 13:22:05+00:00 [LiberalHypocrisy] \n2023-05-01 13:49:03+00:00 [HarryJSisson, ChrisMowrey] ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>username</th>\n <th>name</th>\n <th>verified</th>\n <th>text</th>\n <th>retweets</th>\n <th>likes</th>\n <th>replies</th>\n <th>quotes</th>\n <th>user_bio</th>\n <th>count</th>\n <th>total_count</th>\n <th>hashtags_list</th>\n </tr>\n <tr>\n <th>date</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2023-04-28 00:58:57+00:00</th>\n <td>politicaleduca2</td>\n <td>political_education</td>\n <td>False</td>\n <td>Tiktok influencers working for Palette Managem...</td>\n <td>3</td>\n <td>5</td>\n <td>2</td>\n <td>0</td>\n <td>Republican media creator and activist</td>\n <td>1</td>\n <td>4</td>\n <td>[tiktok, secrets, LeadRight]</td>\n </tr>\n <tr>\n <th>2023-04-30 23:28:53+00:00</th>\n <td>RonElCapitan4</td>\n <td>Ron Rico</td>\n <td>False</td>\n <td>This kid is the dumbest person on social media...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>A sailor loves his rum like a diesel loves her...</td>\n <td>1</td>\n <td>1</td>\n <td>[paidadvertisement, paidshill, clown, GenZ]</td>\n </tr>\n <tr>\n <th>2023-04-30 12:46:40+00:00</th>\n <td>LeannanSaoirse</td>\n <td>LeannanSaoirse</td>\n <td>False</td>\n <td>If this is not #mocking #RealWomen, I have no ...</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>Freelance writer; healthtech device designer; ...</td>\n <td>1</td>\n <td>1</td>\n <td>[mocking, RealWomen,, Palette]</td>\n </tr>\n <tr>\n <th>2023-04-30 16:13:45+00:00</th>\n <td>XNewsChannel</td>\n <td>X News Channel</td>\n <td>False</td>\n <td>JUST IN: Harry Sisson and Chris Mowrey DELETE ...</td>\n <td>0</td>\n <td>4</td>\n <td>0</td>\n <td>1</td>\n <td>NaN</td>\n <td>1</td>\n <td>2</td>\n <td>[harrysisson, harryjsisson, chrismowrey, dnc, ...</td>\n </tr>\n <tr>\n <th>2023-04-30 16:15:39+00:00</th>\n <td>XNewsChannel</td>\n <td>X News Channel</td>\n <td>False</td>\n <td>JUST IN: Harry Sisson and Chris Mowrey DELETE ...</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n <td>1</td>\n <td>1</td>\n <td>[harrysisson, harryjsisson, chrismowrey, dnc, ...</td>\n </tr>\n <tr>\n <th>2023-04-30 02:16:36+00:00</th>\n <td>XNewsChannel</td>\n <td>X News Channel</td>\n <td>False</td>\n <td>Harry Sisson and friend Chris Mowrey DELETE NE...</td>\n <td>0</td>\n <td>3</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n <td>1</td>\n <td>1</td>\n <td>[harrysisson, harryjsisson, chrismowrey, dnc, ...</td>\n </tr>\n <tr>\n <th>2023-04-29 11:20:54+00:00</th>\n <td>RobJamesMcKenna</td>\n <td>Citizen’s Public Safety Network Developer</td>\n <td>False</td>\n <td>@NorthwestJourno @FieldWhistle Palette Schills...</td>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n <td>0</td>\n <td>Data Journalist &amp; Tracking Platform Architect....</td>\n <td>1</td>\n <td>1</td>\n <td>[c2cGZ, c2cTiktok, c2cDNC, c2cSchill, c2cAgent...</td>\n </tr>\n <tr>\n <th>2023-04-23 16:12:29+00:00</th>\n <td>HollyBlomberg</td>\n <td>Holly</td>\n <td>False</td>\n <td>@king_of_bob I wonder if Victor is also repres...</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>Observing life from the deck of the USS Titani...</td>\n <td>1</td>\n <td>1</td>\n <td>[astroturf]</td>\n </tr>\n <tr>\n <th>2023-04-30 00:29:48+00:00</th>\n <td>SpiderTrades</td>\n <td>Shifu 🐺</td>\n <td>False</td>\n <td>Sisson recently signed with Palette management...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>Encumbered by idjits, I pressed on.</td>\n <td>1</td>\n <td>1</td>\n <td>[TaxTheRich, BidenHarris2024]</td>\n </tr>\n <tr>\n <th>2023-05-01 09:38:37+00:00</th>\n <td>ONE_Z3RO</td>\n <td>ONEZERO</td>\n <td>False</td>\n <td>Sisson recently signed with Palette management...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>#Crypto #NFT #SaltyArmy 🧂 THE SALT MUST FLOW #...</td>\n <td>1</td>\n <td>1</td>\n <td>[PalletteManagement, DNC, Sisson, Liar, FakeNe...</td>\n </tr>\n <tr>\n <th>2023-04-30 12:51:17+00:00</th>\n <td>OlsoninMontana</td>\n <td>Laurie</td>\n <td>False</td>\n <td>@ReaganRunners Sisson &amp;amp; Mowrey are paid po...</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>I like meme's, free speech and freedom.</td>\n <td>1</td>\n <td>1</td>\n <td>[LiberalHypocrisy]</td>\n </tr>\n <tr>\n <th>2023-04-29 19:49:17+00:00</th>\n <td>OlsoninMontana</td>\n <td>Laurie</td>\n <td>False</td>\n <td>@HavasuMarena Sisson &amp;amp; Mowrey are paid pol...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>I like meme's, free speech and freedom.</td>\n <td>1</td>\n <td>1</td>\n <td>[LiberalHypocrisy]</td>\n </tr>\n <tr>\n <th>2023-04-29 19:51:56+00:00</th>\n <td>OlsoninMontana</td>\n <td>Laurie</td>\n <td>False</td>\n <td>@harryjsisson Sisson &amp;amp; Mowrey are paid pol...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>I like meme's, free speech and freedom.</td>\n <td>1</td>\n <td>1</td>\n <td>[LiberalHypocrisy]</td>\n </tr>\n <tr>\n <th>2023-04-29 13:22:05+00:00</th>\n <td>OlsoninMontana</td>\n <td>Laurie</td>\n <td>False</td>\n <td>Sisson &amp;amp; Mowrey are paid political operati...</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>I like meme's, free speech and freedom.</td>\n <td>1</td>\n <td>2</td>\n <td>[LiberalHypocrisy]</td>\n </tr>\n <tr>\n <th>2023-05-01 13:49:03+00:00</th>\n <td>DocBryantActual</td>\n <td>Doc Bryant</td>\n <td>False</td>\n <td>#HarryJSisson and #ChrisMowrey are both paid s...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>Host of the Doc Bryant Show podcast. I'm on Lo...</td>\n <td>1</td>\n <td>1</td>\n <td>[HarryJSisson, ChrisMowrey]</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "27118f4c",
"cell_type": "markdown",
"source": "### Cleaning our hashtag results and preparing the dataframe for visualization"
},
{
"metadata": {},
"id": "ddfc727c",
"cell_type": "markdown",
"source": "Right now, the hashtags in the our hashtags_list column are written in list format, with multiple hashtags in a cell in some cases. In general, we want to have just a single value per cell. To do this, we can use the \"explode\" method, which will ensure we have just a single hashtag per row while maintaining the rest of the corresponding data. "
},
{
"metadata": {
"trusted": true
},
"id": "3a20f6f6",
"cell_type": "code",
"source": "tweets_df=tweets_df.explode(\"hashtags_list\")",
"execution_count": 157,
"outputs": []
},
{
"metadata": {},
"id": "c9a76e32",
"cell_type": "markdown",
"source": "Let's take a look at our dataframe:"
},
{
"metadata": {
"trusted": true
},
"id": "45cf102f",
"cell_type": "code",
"source": "tweets_df",
"execution_count": 158,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 158,
"data": {
"text/plain": " username name \\\ndate \n2023-05-01 23:46:49+00:00 4_localpolice TT C.O \n2023-05-01 23:04:40+00:00 clowneatclown Clown Eat Clown World 🤡 🌎 \n2023-05-01 22:53:12+00:00 scotchfireguns ScotchFireGuns \n2023-05-01 22:38:30+00:00 StuffWeirdest The Weirdest Stuff \n2023-05-01 22:14:31+00:00 TriangleCyclops Lil' Triangle \n... ... ... \n2023-04-10 22:14:39+00:00 KidBrightwillow Kid Brightwillow \n2023-04-09 20:05:55+00:00 DollMolester Horny Doll Weirdo \n2023-04-08 21:10:48+00:00 Ginny9064f grunilda ledbetter \n2023-04-07 14:08:56+00:00 AppHapps AppHapps \n2023-04-06 08:47:10+00:00 KidBrightwillow Kid Brightwillow \n\n verified \\\ndate \n2023-05-01 23:46:49+00:00 False \n2023-05-01 23:04:40+00:00 False \n2023-05-01 22:53:12+00:00 False \n2023-05-01 22:38:30+00:00 False \n2023-05-01 22:14:31+00:00 False \n... ... \n2023-04-10 22:14:39+00:00 False \n2023-04-09 20:05:55+00:00 False \n2023-04-08 21:10:48+00:00 False \n2023-04-07 14:08:56+00:00 False \n2023-04-06 08:47:10+00:00 False \n\n text \\\ndate \n2023-05-01 23:46:49+00:00 Idiots like @harryjsisson proved earlier today... \n2023-05-01 23:04:40+00:00 @hollowearthterf @LucidTheJester @taylorburrow... \n2023-05-01 22:53:12+00:00 @WeaponNR Who ELSE works for Palette Managemen... \n2023-05-01 22:38:30+00:00 Biden’s campaign team connected with Harry Sis... \n2023-05-01 22:14:31+00:00 @normeykorey1087 I decided to look at Communit... \n... ... \n2023-04-10 22:14:39+00:00 @harryjsisson Harry is a professional “content... \n2023-04-09 20:05:55+00:00 @fuyafuyu @TinStarSP Seconding aseprite. Once ... \n2023-04-08 21:10:48+00:00 @Flightless223 @Travis_in_Flint What is palett... \n2023-04-07 14:08:56+00:00 The palette management tool is based on the GI... \n2023-04-06 08:47:10+00:00 @harryjsisson This is not an actual spontaneou... \n\n retweets likes replies quotes \\\ndate \n2023-05-01 23:46:49+00:00 0 0 0 0 \n2023-05-01 23:04:40+00:00 0 2 1 0 \n2023-05-01 22:53:12+00:00 0 0 0 0 \n2023-05-01 22:38:30+00:00 0 0 0 0 \n2023-05-01 22:14:31+00:00 1 1 2 0 \n... ... ... ... ... \n2023-04-10 22:14:39+00:00 0 0 0 0 \n2023-04-09 20:05:55+00:00 0 1 1 0 \n2023-04-08 21:10:48+00:00 0 0 0 0 \n2023-04-07 14:08:56+00:00 3 15 1 0 \n2023-04-06 08:47:10+00:00 0 0 0 0 \n\n user_bio \\\ndate \n2023-05-01 23:46:49+00:00 Where I am, you may not be, with simplicity, h... \n2023-05-01 23:04:40+00:00 Clownin' em all day and night. \n2023-05-01 22:53:12+00:00 Mostly homebrewing, woodworking, diy and grouc... \n2023-05-01 22:38:30+00:00 social worker - independently poor - infiltrat... \n2023-05-01 22:14:31+00:00 Eye Status: Single | don't worry about it | as... \n... ... \n2023-04-10 22:14:39+00:00 NaN \n2023-04-09 20:05:55+00:00 Welcome to my poetic cum countdown, where you ... \n2023-04-08 21:10:48+00:00 NaN \n2023-04-07 14:08:56+00:00 Favorite apps on AppStore \n2023-04-06 08:47:10+00:00 NaN \n\n count total_count hashtags_list \ndate \n2023-05-01 23:46:49+00:00 1 1 NaN \n2023-05-01 23:04:40+00:00 1 1 NaN \n2023-05-01 22:53:12+00:00 1 1 NaN \n2023-05-01 22:38:30+00:00 1 1 NaN \n2023-05-01 22:14:31+00:00 1 2 NaN \n... ... ... ... \n2023-04-10 22:14:39+00:00 1 1 NaN \n2023-04-09 20:05:55+00:00 1 1 NaN \n2023-04-08 21:10:48+00:00 1 1 NaN \n2023-04-07 14:08:56+00:00 1 4 NaN \n2023-04-06 08:47:10+00:00 1 1 NaN \n\n[642 rows x 12 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>username</th>\n <th>name</th>\n <th>verified</th>\n <th>text</th>\n <th>retweets</th>\n <th>likes</th>\n <th>replies</th>\n <th>quotes</th>\n <th>user_bio</th>\n <th>count</th>\n <th>total_count</th>\n <th>hashtags_list</th>\n </tr>\n <tr>\n <th>date</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2023-05-01 23:46:49+00:00</th>\n <td>4_localpolice</td>\n <td>TT C.O</td>\n <td>False</td>\n <td>Idiots like @harryjsisson proved earlier today...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>Where I am, you may not be, with simplicity, h...</td>\n <td>1</td>\n <td>1</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-05-01 23:04:40+00:00</th>\n <td>clowneatclown</td>\n <td>Clown Eat Clown World 🤡 🌎</td>\n <td>False</td>\n <td>@hollowearthterf @LucidTheJester @taylorburrow...</td>\n <td>0</td>\n <td>2</td>\n <td>1</td>\n <td>0</td>\n <td>Clownin' em all day and night.</td>\n <td>1</td>\n <td>1</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-05-01 22:53:12+00:00</th>\n <td>scotchfireguns</td>\n <td>ScotchFireGuns</td>\n <td>False</td>\n <td>@WeaponNR Who ELSE works for Palette Managemen...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>Mostly homebrewing, woodworking, diy and grouc...</td>\n <td>1</td>\n <td>1</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-05-01 22:38:30+00:00</th>\n <td>StuffWeirdest</td>\n <td>The Weirdest Stuff</td>\n <td>False</td>\n <td>Biden’s campaign team connected with Harry Sis...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>social worker - independently poor - infiltrat...</td>\n <td>1</td>\n <td>1</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-05-01 22:14:31+00:00</th>\n <td>TriangleCyclops</td>\n <td>Lil' Triangle</td>\n <td>False</td>\n <td>@normeykorey1087 I decided to look at Communit...</td>\n <td>1</td>\n <td>1</td>\n <td>2</td>\n <td>0</td>\n <td>Eye Status: Single | don't worry about it | as...</td>\n <td>1</td>\n <td>2</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>2023-04-10 22:14:39+00:00</th>\n <td>KidBrightwillow</td>\n <td>Kid Brightwillow</td>\n <td>False</td>\n <td>@harryjsisson Harry is a professional “content...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n <td>1</td>\n <td>1</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-04-09 20:05:55+00:00</th>\n <td>DollMolester</td>\n <td>Horny Doll Weirdo</td>\n <td>False</td>\n <td>@fuyafuyu @TinStarSP Seconding aseprite. Once ...</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>Welcome to my poetic cum countdown, where you ...</td>\n <td>1</td>\n <td>1</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-04-08 21:10:48+00:00</th>\n <td>Ginny9064f</td>\n <td>grunilda ledbetter</td>\n <td>False</td>\n <td>@Flightless223 @Travis_in_Flint What is palett...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n <td>1</td>\n <td>1</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-04-07 14:08:56+00:00</th>\n <td>AppHapps</td>\n <td>AppHapps</td>\n <td>False</td>\n <td>The palette management tool is based on the GI...</td>\n <td>3</td>\n <td>15</td>\n <td>1</td>\n <td>0</td>\n <td>Favorite apps on AppStore</td>\n <td>1</td>\n <td>4</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-04-06 08:47:10+00:00</th>\n <td>KidBrightwillow</td>\n <td>Kid Brightwillow</td>\n <td>False</td>\n <td>@harryjsisson This is not an actual spontaneou...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>NaN</td>\n <td>1</td>\n <td>1</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n<p>642 rows × 12 columns</p>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "21989752",
"cell_type": "markdown",
"source": "Looks like we have many empty cells in the hashtags_list column. Let's drop these rows and set our dataframe equal to a new variable, hashtags_df."
},
{
"metadata": {
"trusted": true
},
"id": "1cd9b3d0",
"cell_type": "code",
"source": "hashtags_df=tweets_df.dropna(subset=['hashtags_list'])",
"execution_count": 159,
"outputs": []
},
{
"metadata": {},
"id": "f42222d5",
"cell_type": "markdown",
"source": "Let's take a look at our hashtags_df dataframe, sorted by the total number of tweets:"
},
{
"metadata": {
"scrolled": false,
"trusted": true
},
"id": "d425a657",
"cell_type": "code",
"source": "hashtags_df.sort_values(by='total_count', ascending=False)[:10]",
"execution_count": 160,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 160,
"data": {
"text/plain": " username name verified \\\ndate \n2023-04-28 00:58:57+00:00 politicaleduca2 political_education False \n2023-04-28 00:58:57+00:00 politicaleduca2 political_education False \n2023-04-28 00:58:57+00:00 politicaleduca2 political_education False \n2023-04-30 16:13:45+00:00 XNewsChannel X News Channel False \n2023-04-30 16:13:45+00:00 XNewsChannel X News Channel False \n2023-04-29 13:22:05+00:00 OlsoninMontana Laurie False \n2023-04-30 16:13:45+00:00 XNewsChannel X News Channel False \n2023-04-30 16:13:45+00:00 XNewsChannel X News Channel False \n2023-04-30 16:13:45+00:00 XNewsChannel X News Channel False \n2023-04-30 16:13:45+00:00 XNewsChannel X News Channel False \n\n text \\\ndate \n2023-04-28 00:58:57+00:00 Tiktok influencers working for Palette Managem... \n2023-04-28 00:58:57+00:00 Tiktok influencers working for Palette Managem... \n2023-04-28 00:58:57+00:00 Tiktok influencers working for Palette Managem... \n2023-04-30 16:13:45+00:00 JUST IN: Harry Sisson and Chris Mowrey DELETE ... \n2023-04-30 16:13:45+00:00 JUST IN: Harry Sisson and Chris Mowrey DELETE ... \n2023-04-29 13:22:05+00:00 Sisson &amp; Mowrey are paid political operati... \n2023-04-30 16:13:45+00:00 JUST IN: Harry Sisson and Chris Mowrey DELETE ... \n2023-04-30 16:13:45+00:00 JUST IN: Harry Sisson and Chris Mowrey DELETE ... \n2023-04-30 16:13:45+00:00 JUST IN: Harry Sisson and Chris Mowrey DELETE ... \n2023-04-30 16:13:45+00:00 JUST IN: Harry Sisson and Chris Mowrey DELETE ... \n\n retweets likes replies quotes \\\ndate \n2023-04-28 00:58:57+00:00 3 5 2 0 \n2023-04-28 00:58:57+00:00 3 5 2 0 \n2023-04-28 00:58:57+00:00 3 5 2 0 \n2023-04-30 16:13:45+00:00 0 4 0 1 \n2023-04-30 16:13:45+00:00 0 4 0 1 \n2023-04-29 13:22:05+00:00 1 1 0 0 \n2023-04-30 16:13:45+00:00 0 4 0 1 \n2023-04-30 16:13:45+00:00 0 4 0 1 \n2023-04-30 16:13:45+00:00 0 4 0 1 \n2023-04-30 16:13:45+00:00 0 4 0 1 \n\n user_bio count \\\ndate \n2023-04-28 00:58:57+00:00 Republican media creator and activist 1 \n2023-04-28 00:58:57+00:00 Republican media creator and activist 1 \n2023-04-28 00:58:57+00:00 Republican media creator and activist 1 \n2023-04-30 16:13:45+00:00 NaN 1 \n2023-04-30 16:13:45+00:00 NaN 1 \n2023-04-29 13:22:05+00:00 I like meme's, free speech and freedom. 1 \n2023-04-30 16:13:45+00:00 NaN 1 \n2023-04-30 16:13:45+00:00 NaN 1 \n2023-04-30 16:13:45+00:00 NaN 1 \n2023-04-30 16:13:45+00:00 NaN 1 \n\n total_count hashtags_list \ndate \n2023-04-28 00:58:57+00:00 4 LeadRight \n2023-04-28 00:58:57+00:00 4 secrets \n2023-04-28 00:58:57+00:00 4 tiktok \n2023-04-30 16:13:45+00:00 2 NRA \n2023-04-30 16:13:45+00:00 2 chrismowrey \n2023-04-29 13:22:05+00:00 2 LiberalHypocrisy \n2023-04-30 16:13:45+00:00 2 harrysisson \n2023-04-30 16:13:45+00:00 2 AR15 \n2023-04-30 16:13:45+00:00 2 harryjsisson \n2023-04-30 16:13:45+00:00 2 Trump2024 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>username</th>\n <th>name</th>\n <th>verified</th>\n <th>text</th>\n <th>retweets</th>\n <th>likes</th>\n <th>replies</th>\n <th>quotes</th>\n <th>user_bio</th>\n <th>count</th>\n <th>total_count</th>\n <th>hashtags_list</th>\n </tr>\n <tr>\n <th>date</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2023-04-28 00:58:57+00:00</th>\n <td>politicaleduca2</td>\n <td>political_education</td>\n <td>False</td>\n <td>Tiktok influencers working for Palette Managem...</td>\n <td>3</td>\n <td>5</td>\n <td>2</td>\n <td>0</td>\n <td>Republican media creator and activist</td>\n <td>1</td>\n <td>4</td>\n <td>LeadRight</td>\n </tr>\n <tr>\n <th>2023-04-28 00:58:57+00:00</th>\n <td>politicaleduca2</td>\n <td>political_education</td>\n <td>False</td>\n <td>Tiktok influencers working for Palette Managem...</td>\n <td>3</td>\n <td>5</td>\n <td>2</td>\n <td>0</td>\n <td>Republican media creator and activist</td>\n <td>1</td>\n <td>4</td>\n <td>secrets</td>\n </tr>\n <tr>\n <th>2023-04-28 00:58:57+00:00</th>\n <td>politicaleduca2</td>\n <td>political_education</td>\n <td>False</td>\n <td>Tiktok influencers working for Palette Managem...</td>\n <td>3</td>\n <td>5</td>\n <td>2</td>\n <td>0</td>\n <td>Republican media creator and activist</td>\n <td>1</td>\n <td>4</td>\n <td>tiktok</td>\n </tr>\n <tr>\n <th>2023-04-30 16:13:45+00:00</th>\n <td>XNewsChannel</td>\n <td>X News Channel</td>\n <td>False</td>\n <td>JUST IN: Harry Sisson and Chris Mowrey DELETE ...</td>\n <td>0</td>\n <td>4</td>\n <td>0</td>\n <td>1</td>\n <td>NaN</td>\n <td>1</td>\n <td>2</td>\n <td>NRA</td>\n </tr>\n <tr>\n <th>2023-04-30 16:13:45+00:00</th>\n <td>XNewsChannel</td>\n <td>X News Channel</td>\n <td>False</td>\n <td>JUST IN: Harry Sisson and Chris Mowrey DELETE ...</td>\n <td>0</td>\n <td>4</td>\n <td>0</td>\n <td>1</td>\n <td>NaN</td>\n <td>1</td>\n <td>2</td>\n <td>chrismowrey</td>\n </tr>\n <tr>\n <th>2023-04-29 13:22:05+00:00</th>\n <td>OlsoninMontana</td>\n <td>Laurie</td>\n <td>False</td>\n <td>Sisson &amp;amp; Mowrey are paid political operati...</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>I like meme's, free speech and freedom.</td>\n <td>1</td>\n <td>2</td>\n <td>LiberalHypocrisy</td>\n </tr>\n <tr>\n <th>2023-04-30 16:13:45+00:00</th>\n <td>XNewsChannel</td>\n <td>X News Channel</td>\n <td>False</td>\n <td>JUST IN: Harry Sisson and Chris Mowrey DELETE ...</td>\n <td>0</td>\n <td>4</td>\n <td>0</td>\n <td>1</td>\n <td>NaN</td>\n <td>1</td>\n <td>2</td>\n <td>harrysisson</td>\n </tr>\n <tr>\n <th>2023-04-30 16:13:45+00:00</th>\n <td>XNewsChannel</td>\n <td>X News Channel</td>\n <td>False</td>\n <td>JUST IN: Harry Sisson and Chris Mowrey DELETE ...</td>\n <td>0</td>\n <td>4</td>\n <td>0</td>\n <td>1</td>\n <td>NaN</td>\n <td>1</td>\n <td>2</td>\n <td>AR15</td>\n </tr>\n <tr>\n <th>2023-04-30 16:13:45+00:00</th>\n <td>XNewsChannel</td>\n <td>X News Channel</td>\n <td>False</td>\n <td>JUST IN: Harry Sisson and Chris Mowrey DELETE ...</td>\n <td>0</td>\n <td>4</td>\n <td>0</td>\n <td>1</td>\n <td>NaN</td>\n <td>1</td>\n <td>2</td>\n <td>harryjsisson</td>\n </tr>\n <tr>\n <th>2023-04-30 16:13:45+00:00</th>\n <td>XNewsChannel</td>\n <td>X News Channel</td>\n <td>False</td>\n <td>JUST IN: Harry Sisson and Chris Mowrey DELETE ...</td>\n <td>0</td>\n <td>4</td>\n <td>0</td>\n <td>1</td>\n <td>NaN</td>\n <td>1</td>\n <td>2</td>\n <td>Trump2024</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "d576c4b6",
"cell_type": "markdown",
"source": "As you can see, our index is still our \"date\" column. Let's reset the index:"
},
{
"metadata": {
"trusted": true
},
"id": "6842fad0",
"cell_type": "code",
"source": "hashtags_df=hashtags_df.reset_index()",
"execution_count": 161,
"outputs": []
},
{
"metadata": {},
"id": "1032ee8d",
"cell_type": "markdown",
"source": "Next, let's just select the columns we need:"
},
{
"metadata": {
"trusted": true
},
"id": "4ea2f202",
"cell_type": "code",
"source": "hashtags_df=hashtags_df[['date', 'total_count', 'hashtags_list']]",
"execution_count": 162,
"outputs": []
},
{
"metadata": {},
"id": "44579deb",
"cell_type": "markdown",
"source": "We can take a look at our dataframe, sorted by the total number of tweets:"
},
{
"metadata": {
"trusted": true
},
"id": "307c4472",
"cell_type": "code",
"source": "hashtags_df.sort_values(by='total_count', ascending=False)[:10]",
"execution_count": 163,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 163,
"data": {
"text/plain": " date total_count hashtags_list\n58 2023-04-28 00:58:57+00:00 4 LeadRight\n57 2023-04-28 00:58:57+00:00 4 secrets\n56 2023-04-28 00:58:57+00:00 4 tiktok\n27 2023-04-30 16:13:45+00:00 2 NRA\n24 2023-04-30 16:13:45+00:00 2 chrismowrey\n45 2023-04-29 13:22:05+00:00 2 LiberalHypocrisy\n22 2023-04-30 16:13:45+00:00 2 harrysisson\n28 2023-04-30 16:13:45+00:00 2 AR15\n23 2023-04-30 16:13:45+00:00 2 harryjsisson\n26 2023-04-30 16:13:45+00:00 2 Trump2024",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>date</th>\n <th>total_count</th>\n <th>hashtags_list</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>58</th>\n <td>2023-04-28 00:58:57+00:00</td>\n <td>4</td>\n <td>LeadRight</td>\n </tr>\n <tr>\n <th>57</th>\n <td>2023-04-28 00:58:57+00:00</td>\n <td>4</td>\n <td>secrets</td>\n </tr>\n <tr>\n <th>56</th>\n <td>2023-04-28 00:58:57+00:00</td>\n <td>4</td>\n <td>tiktok</td>\n </tr>\n <tr>\n <th>27</th>\n <td>2023-04-30 16:13:45+00:00</td>\n <td>2</td>\n <td>NRA</td>\n </tr>\n <tr>\n <th>24</th>\n <td>2023-04-30 16:13:45+00:00</td>\n <td>2</td>\n <td>chrismowrey</td>\n </tr>\n <tr>\n <th>45</th>\n <td>2023-04-29 13:22:05+00:00</td>\n <td>2</td>\n <td>LiberalHypocrisy</td>\n </tr>\n <tr>\n <th>22</th>\n <td>2023-04-30 16:13:45+00:00</td>\n <td>2</td>\n <td>harrysisson</td>\n </tr>\n <tr>\n <th>28</th>\n <td>2023-04-30 16:13:45+00:00</td>\n <td>2</td>\n <td>AR15</td>\n </tr>\n <tr>\n <th>23</th>\n <td>2023-04-30 16:13:45+00:00</td>\n <td>2</td>\n <td>harryjsisson</td>\n </tr>\n <tr>\n <th>26</th>\n <td>2023-04-30 16:13:45+00:00</td>\n <td>2</td>\n <td>Trump2024</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "16fdc556",
"cell_type": "markdown",
"source": "### Visualizing the most commonly used hashtags\nTo start, let's use the groupby function to group data based on the \"hashtags_list\" column:"
},
{
"metadata": {
"trusted": true
},
"id": "5f18da2b",
"cell_type": "code",
"source": "hashtags_df.groupby('hashtags_list')",
"execution_count": 164,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 164,
"data": {
"text/plain": "<pandas.core.groupby.generic.DataFrameGroupBy object at 0x7fa3fadedae0>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "c5220f6d",
"cell_type": "markdown",
"source": "Next, we add the \"sum\" function to add all instances of the occurence of each hashtag across our entire dataset and we see our data sorted in descending order:"
},
{
"metadata": {
"trusted": true
},
"id": "8a250182",
"cell_type": "code",
"source": "hashtags_df.groupby('hashtags_list').sum().sort_values(by='total_count', ascending=False)[:20]",
"execution_count": 165,
"outputs": [
{
"output_type": "stream",
"text": "/var/folders/x5/71scq8n935q1wrjw4dt64j700000gn/T/ipykernel_82826/3621964865.py:1: FutureWarning:\n\nThe default value of numeric_only in DataFrameGroupBy.sum is deprecated. In a future version, numeric_only will default to False. Either specify numeric_only or select only columns which should be valid for the function.\n\n",
"name": "stderr"
},
{
"output_type": "execute_result",
"execution_count": 165,
"data": {
"text/plain": " total_count\nhashtags_list \nharrysisson 5\nLiberalHypocrisy 5\ntiktok 4\nchrismowrey 4\ndnc 4\nharryjsisson 4\nLeadRight 4\nTrump2024 4\nsecrets 4\nAR15 3\nNRA 3\nGenZ 2\npaidshill 1\nastroturf 1\nc2cTiktok 1\nclown 1\npaidadvertisement 1\nc2cSchill 1\nc2cPropaganda 1\nc2cInfluence 1",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>total_count</th>\n </tr>\n <tr>\n <th>hashtags_list</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>harrysisson</th>\n <td>5</td>\n </tr>\n <tr>\n <th>LiberalHypocrisy</th>\n <td>5</td>\n </tr>\n <tr>\n <th>tiktok</th>\n <td>4</td>\n </tr>\n <tr>\n <th>chrismowrey</th>\n <td>4</td>\n </tr>\n <tr>\n <th>dnc</th>\n <td>4</td>\n </tr>\n <tr>\n <th>harryjsisson</th>\n <td>4</td>\n </tr>\n <tr>\n <th>LeadRight</th>\n <td>4</td>\n </tr>\n <tr>\n <th>Trump2024</th>\n <td>4</td>\n </tr>\n <tr>\n <th>secrets</th>\n <td>4</td>\n </tr>\n <tr>\n <th>AR15</th>\n <td>3</td>\n </tr>\n <tr>\n <th>NRA</th>\n <td>3</td>\n </tr>\n <tr>\n <th>GenZ</th>\n <td>2</td>\n </tr>\n <tr>\n <th>paidshill</th>\n <td>1</td>\n </tr>\n <tr>\n <th>astroturf</th>\n <td>1</td>\n </tr>\n <tr>\n <th>c2cTiktok</th>\n <td>1</td>\n </tr>\n <tr>\n <th>clown</th>\n <td>1</td>\n </tr>\n <tr>\n <th>paidadvertisement</th>\n <td>1</td>\n </tr>\n <tr>\n <th>c2cSchill</th>\n <td>1</td>\n </tr>\n <tr>\n <th>c2cPropaganda</th>\n <td>1</td>\n </tr>\n <tr>\n <th>c2cInfluence</th>\n <td>1</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "9594f302",
"cell_type": "markdown",
"source": "Let's save these results to our hashtags_df and stack on an additional command to reset the index:"
},
{
"metadata": {
"trusted": true
},
"id": "c911d83b",
"cell_type": "code",
"source": "hashtags_df=hashtags_df.groupby('hashtags_list').sum().sort_values(by='total_count', ascending=False).reset_index()[:10]",
"execution_count": 166,
"outputs": [
{
"output_type": "stream",
"text": "/var/folders/x5/71scq8n935q1wrjw4dt64j700000gn/T/ipykernel_82826/845500853.py:1: FutureWarning:\n\nThe default value of numeric_only in DataFrameGroupBy.sum is deprecated. In a future version, numeric_only will default to False. Either specify numeric_only or select only columns which should be valid for the function.\n\n",
"name": "stderr"
}
]
},
{
"metadata": {
"trusted": true
},
"id": "d1eaa5e2",
"cell_type": "code",
"source": "hashtags_df",
"execution_count": 167,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 167,
"data": {
"text/plain": " hashtags_list total_count\n0 harrysisson 5\n1 LiberalHypocrisy 5\n2 tiktok 4\n3 chrismowrey 4\n4 dnc 4\n5 harryjsisson 4\n6 LeadRight 4\n7 Trump2024 4\n8 secrets 4\n9 AR15 3",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>hashtags_list</th>\n <th>total_count</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>harrysisson</td>\n <td>5</td>\n </tr>\n <tr>\n <th>1</th>\n <td>LiberalHypocrisy</td>\n <td>5</td>\n </tr>\n <tr>\n <th>2</th>\n <td>tiktok</td>\n <td>4</td>\n </tr>\n <tr>\n <th>3</th>\n <td>chrismowrey</td>\n <td>4</td>\n </tr>\n <tr>\n <th>4</th>\n <td>dnc</td>\n <td>4</td>\n </tr>\n <tr>\n <th>5</th>\n <td>harryjsisson</td>\n <td>4</td>\n </tr>\n <tr>\n <th>6</th>\n <td>LeadRight</td>\n <td>4</td>\n </tr>\n <tr>\n <th>7</th>\n <td>Trump2024</td>\n <td>4</td>\n </tr>\n <tr>\n <th>8</th>\n <td>secrets</td>\n <td>4</td>\n </tr>\n <tr>\n <th>9</th>\n <td>AR15</td>\n <td>3</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"id": "d15b366c",
"cell_type": "markdown",
"source": "Finally, let's bring in our Plotly library to visualize our results in an interactive pie chart:"
},
{
"metadata": {
"trusted": true
},
"id": "ef3e587d",
"cell_type": "code",
"source": "import plotly.express as px\nimport plotly.offline as pyo\npyo.init_notebook_mode()",
"execution_count": 168,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"id": "be658fc1",
"cell_type": "code",
"source": "fig = px.pie(hashtags_df, values='total_count', names='hashtags_list', \n title='Hashtags', color_discrete_sequence=px.colors.sequential.RdBu)\n# fig.show()\n\npyo.iplot(fig, filename = 'hashtags')",
"execution_count": 171,
"outputs": [
{
"output_type": "display_data",
"data": {
"application/vnd.plotly.v1+json": {
"data": [
{
"domain": {
"x": [
0,
1
],
"y": [
0,
1
]
},
"hovertemplate": "hashtags_list=%{label}<br>total_count=%{value}<extra></extra>",
"labels": [
"harrysisson",
"LiberalHypocrisy",
"tiktok",
"chrismowrey",
"dnc",
"harryjsisson",
"LeadRight",
"Trump2024",
"secrets",
"AR15"
],
"legendgroup": "",
"name": "",
"showlegend": true,
"values": [
5,
5,
4,
4,
4,
4,
4,
4,
4,
3
],
"type": "pie"
}
],
"layout": {
"legend": {
"tracegroupgap": 0
},
"piecolorway": [
"rgb(103,0,31)",
"rgb(178,24,43)",
"rgb(214,96,77)",
"rgb(244,165,130)",
"rgb(253,219,199)",
"rgb(247,247,247)",
"rgb(209,229,240)",
"rgb(146,197,222)",
"rgb(67,147,195)",
"rgb(33,102,172)",
"rgb(5,48,97)"
],
"template": {
"data": {
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"heatmapgl": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmapgl"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram": [
{
"marker": {
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "histogram"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatter": [
{
"fillpattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
},
"type": "scatter"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
},
"title": {
"text": "Hashtags"
}
},
"config": {
"showLink": false,
"linkText": "Export to plot.ly",
"plotlyServerURL": "https://plot.ly"
}
},
"text/html": "<div> <div id=\"a5166e2c-bcf8-45a1-a381-3bd2d16013ca\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"a5166e2c-bcf8-45a1-a381-3bd2d16013ca\")) { Plotly.newPlot( \"a5166e2c-bcf8-45a1-a381-3bd2d16013ca\", [{\"domain\":{\"x\":[0.0,1.0],\"y\":[0.0,1.0]},\"hovertemplate\":\"hashtags_list=%{label}<br>total_count=%{value}<extra></extra>\",\"labels\":[\"harrysisson\",\"LiberalHypocrisy\",\"tiktok\",\"chrismowrey\",\"dnc\",\"harryjsisson\",\"LeadRight\",\"Trump2024\",\"secrets\",\"AR15\"],\"legendgroup\":\"\",\"name\":\"\",\"showlegend\":true,\"values\":[5,5,4,4,4,4,4,4,4,3],\"type\":\"pie\"}], {\"legend\":{\"tracegroupgap\":0},\"piecolorway\":[\"rgb(103,0,31)\",\"rgb(178,24,43)\",\"rgb(214,96,77)\",\"rgb(244,165,130)\",\"rgb(253,219,199)\",\"rgb(247,247,247)\",\"rgb(209,229,240)\",\"rgb(146,197,222)\",\"rgb(67,147,195)\",\"rgb(33,102,172)\",\"rgb(5,48,97)\"],\"template\":{\"data\":{\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"choropleth\":[{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"type\":\"choropleth\"}],\"contourcarpet\":[{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"type\":\"contourcarpet\"}],\"contour\":[{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"type\":\"contour\"}],\"heatmapgl\":[{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"type\":\"heatmapgl\"}],\"heatmap\":[{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"type\":\"heatmap\"}],\"histogram2dcontour\":[{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"type\":\"histogram2dcontour\"}],\"histogram2d\":[{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"type\":\"histogram2d\"}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"mesh3d\":[{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"type\":\"mesh3d\"}],\"parcoords\":[{\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"type\":\"parcoords\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}],\"scatter3d\":[{\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"type\":\"scatter3d\"}],\"scattercarpet\":[{\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"type\":\"scattercarpet\"}],\"scattergeo\":[{\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"type\":\"scattergeo\"}],\"scattergl\":[{\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"type\":\"scattergl\"}],\"scattermapbox\":[{\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"type\":\"scattermapbox\"}],\"scatterpolargl\":[{\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"type\":\"scatterpolargl\"}],\"scatterpolar\":[{\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"type\":\"scatterpolar\"}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"scatterternary\":[{\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"type\":\"scatterternary\"}],\"surface\":[{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"type\":\"surface\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}]},\"layout\":{\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"autotypenumbers\":\"strict\",\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]],\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"geo\":{\"bgcolor\":\"white\",\"lakecolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"showlakes\":true,\"showland\":true,\"subunitcolor\":\"white\"},\"hoverlabel\":{\"align\":\"left\"},\"hovermode\":\"closest\",\"mapbox\":{\"style\":\"light\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"bgcolor\":\"#E5ECF6\",\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"gridwidth\":2,\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\"},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"gridwidth\":2,\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\"},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"gridwidth\":2,\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\"}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"ternary\":{\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"bgcolor\":\"#E5ECF6\",\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"title\":{\"x\":0.05},\"xaxis\":{\"automargin\":true,\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"zerolinewidth\":2},\"yaxis\":{\"automargin\":true,\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"zerolinewidth\":2}}},\"title\":{\"text\":\"Hashtags\"}}, {\"responsive\": true} ).then(function(){\n \nvar gd = document.getElementById('a5166e2c-bcf8-45a1-a381-3bd2d16013ca');\nvar x = new MutationObserver(function (mutations, observer) {{\n var display = window.getComputedStyle(gd).display;\n if (!display || display === 'none') {{\n console.log([gd, 'removed!']);\n Plotly.purge(gd);\n observer.disconnect();\n }}\n}});\n\n// Listen for the removal of the full notebook cells\nvar notebookContainer = gd.closest('#notebook-container');\nif (notebookContainer) {{\n x.observe(notebookContainer, {childList: true});\n}}\n\n// Listen for the clearing of the current output cell\nvar outputEl = gd.closest('.output');\nif (outputEl) {{\n x.observe(outputEl, {childList: true});\n}}\n\n }) }; }); </script> </div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"id": "9db4707b",
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"gist": {
"id": "df3a0a6b569a250abf493482bab049db",
"data": {
"description": "working_with_twitter_data.ipynb",
"public": true
}
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3 (ipykernel)",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.10.9",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"_draft": {
"nbviewer_url": "https://gist.github.com/rskrisel/df3a0a6b569a250abf493482bab049db"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment