{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3) Sentiment analysis using the public twitter API access:\n",
"\n",
"For the purpose of this event, feel free to use API keys below.\n",
"To be able to do more extensive research, you need to apply for the Twitter \"developer\" account.\n",
"See this article for more details on how to apply:\n",
"https://www.codementor.io/@ferrorodolfo/sentiment-analysis-on-trump-s-tweets-using-python-pltbvb4xr"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, load the API credentials:"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"#This is also saved in file credentials.py\n",
"# Twitter App access keys for @user\n",
"#https://developer.twitter.com/en/apps\n",
"\n",
"# Consume:\n",
"CONSUMER_KEY = 'qg907KH5lNPeXtGHIE0RLClKt'\n",
"CONSUMER_SECRET = 'sQTi3MIOhDCuGhnlttyFG9ynVjEHhnIvnJ3Y3KC6QPuBfTAXaf'\n",
"\n",
"# Access:\n",
"ACCESS_TOKEN = '1925775572-BwFQZLGkFl1r4ViYoAi7ibnT9sCW8lUHE7wC60O'\n",
"ACCESS_SECRET = 'FOc5cFqgk3AEZtiRSfnfhVsJdLJbbuHSlrK2WJncTusjI'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next load the code setup:"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"import tweepy # To consume Twitter's API\n",
"import pandas as pd # To handle data\n",
"import numpy as np # For number computing\n",
"from IPython.display import display\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"\n",
"%matplotlib inline\n",
"\n",
"# API's setup:\n",
"def twitter_setup():\n",
" \"\"\"\n",
" Utility function to setup the Twitter's API\n",
" with our access keys provided.\n",
" \"\"\"\n",
" # Authentication and access using keys:\n",
" auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)\n",
" auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)\n",
"\n",
" # Return API with authentication:\n",
" api = tweepy.API(auth)\n",
" return api"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Unless you want a data for different user, keep the preset value in the code below:\n",
"\n",
"TW_USER - this is the username of the account you want to scrape\n",
"\n",
"TARGET_COUNT - this is the total number of tweets to download."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"TW_USER='elonmusk'\n",
"TARGET_COUNT=200"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now you can run the code below to actually download the data from the Twitter:"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of tweets extracted: 199.\n",
"\n",
"5 recent tweets:\n",
"\n",
"Space Ark - 1968 by Japanese artist Shigeru Komatsuzaki (1915-2001)\n",
"\n",
"Starship takes beings of Earth to Mars https://t.co/6qaIc3p4yA\n",
"\n",
"@CChomp13 🤣💯\n",
"\n",
"@sama What’s the average cost per chat?\n",
"\n",
"@WholeMarsBlog Electric cargo ships are straightforward, as are short to medium range electric aircraft. Long-range… https://t.co/4t7raza695\n",
"\n"
]
}
],
"source": [
"extractor = twitter_setup()\n",
"\n",
"tweets = extractor.user_timeline(screen_name=TW_USER, TARGET_COUNT)\n",
"print(\"Number of tweets extracted: {}.\\n\".format(len(tweets)))\n",
"\n",
"print(\"5 recent tweets:\\n\")\n",
"for tweet in tweets[:5]:\n",
" print(tweet.text)\n",
" print()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next step is to extract the text part from the tweets - starting with \"dataframe\" creation:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Tweets
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
Space Ark - 1968 by Japanese artist Shigeru Ko...
\n",
"
\n",
"
\n",
"
1
\n",
"
Starship takes beings of Earth to Mars https:/...
\n",
"
\n",
"
\n",
"
2
\n",
"
@CChomp13 🤣💯
\n",
"
\n",
"
\n",
"
3
\n",
"
@sama What’s the average cost per chat?
\n",
"
\n",
"
\n",
"
4
\n",
"
@WholeMarsBlog Electric cargo ships are straig...
\n",
"
\n",
"
\n",
"
5
\n",
"
@BillyM2k Team was a bit too intense with spam...
\n",
"
\n",
"
\n",
"
6
\n",
"
@RichardGarriott 1
\n",
"
\n",
"
\n",
"
7
\n",
"
@WholeMarsBlog About a week or so
\n",
"
\n",
"
\n",
"
8
\n",
"
@COLDEX_STC @SpaceX @NSF @blueicehiggins @icy_...
\n",
"
\n",
"
\n",
"
9
\n",
"
RT @COLDEX_STC: Despite 30 knot winds at the A...
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Tweets\n",
"0 Space Ark - 1968 by Japanese artist Shigeru Ko...\n",
"1 Starship takes beings of Earth to Mars https:/...\n",
"2 @CChomp13 🤣💯\n",
"3 @sama What’s the average cost per chat?\n",
"4 @WholeMarsBlog Electric cargo ships are straig...\n",
"5 @BillyM2k Team was a bit too intense with spam...\n",
"6 @RichardGarriott 1\n",
"7 @WholeMarsBlog About a week or so\n",
"8 @COLDEX_STC @SpaceX @NSF @blueicehiggins @icy_...\n",
"9 RT @COLDEX_STC: Despite 30 knot winds at the A..."
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"data = pd.DataFrame(data=[tweet.text for tweet in tweets], columns=['Tweets'])\n",
"display(data.head(10))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Just for your reference - browse all the avalaible methods in the api. You can see you can also exctract location and other information:"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '__weakref__', '_api', '_json', 'author', 'contributors', 'coordinates', 'created_at', 'destroy', 'entities', 'favorite', 'favorite_count', 'favorited', 'geo', 'id', 'id_str', 'in_reply_to_screen_name', 'in_reply_to_status_id', 'in_reply_to_status_id_str', 'in_reply_to_user_id', 'in_reply_to_user_id_str', 'is_quote_status', 'lang', 'parse', 'parse_list', 'place', 'retweet', 'retweet_count', 'retweeted', 'retweets', 'source', 'source_url', 'text', 'truncated', 'user']\n"
]
}
],
"source": [
"\n",
"print(dir(tweets[0]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Examples of what does the other methods data looks like:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1599672158086889474\n",
"2022-12-05 07:48:57+00:00\n",
"Twitter for iPhone\n",
"46373\n",
"2583\n",
"None\n",
"None\n",
"{'hashtags': [], 'symbols': [], 'user_mentions': [], 'urls': []}\n"
]
}
],
"source": [
"\n",
"print(tweets[0].id)\n",
"print(tweets[0].created_at)\n",
"print(tweets[0].source)\n",
"print(tweets[0].favorite_count)\n",
"print(tweets[0].retweet_count)\n",
"print(tweets[0].geo)\n",
"print(tweets[0].coordinates)\n",
"print(tweets[0].entities)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we load the relevant data to the table \"data\":"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"\n",
"data['len'] = np.array([len(tweet.text) for tweet in tweets])\n",
"data['ID'] = np.array([tweet.id for tweet in tweets])\n",
"data['Date'] = np.array([tweet.created_at for tweet in tweets])\n",
"data['Source'] = np.array([tweet.source for tweet in tweets])\n",
"data['Likes'] = np.array([tweet.favorite_count for tweet in tweets])\n",
"data['RTs'] = np.array([tweet.retweet_count for tweet in tweets])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"See the first 10 elements of the dataset:"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Tweets
\n",
"
len
\n",
"
ID
\n",
"
Date
\n",
"
Source
\n",
"
Likes
\n",
"
RTs
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
Space Ark - 1968 by Japanese artist Shigeru Ko...
\n",
"
67
\n",
"
1599672158086889474
\n",
"
2022-12-05 07:48:57+00:00
\n",
"
Twitter for iPhone
\n",
"
46373
\n",
"
2583
\n",
"
\n",
"
\n",
"
1
\n",
"
Starship takes beings of Earth to Mars https:/...
\n",
"
62
\n",
"
1599671964582391808
\n",
"
2022-12-05 07:48:11+00:00
\n",
"
Twitter for iPhone
\n",
"
148985
\n",
"
12713
\n",
"
\n",
"
\n",
"
2
\n",
"
@CChomp13 🤣💯
\n",
"
12
\n",
"
1599669828478185472
\n",
"
2022-12-05 07:39:42+00:00
\n",
"
Twitter for iPhone
\n",
"
4189
\n",
"
191
\n",
"
\n",
"
\n",
"
3
\n",
"
@sama What’s the average cost per chat?
\n",
"
39
\n",
"
1599669552081960960
\n",
"
2022-12-05 07:38:36+00:00
\n",
"
Twitter for iPhone
\n",
"
22860
\n",
"
764
\n",
"
\n",
"
\n",
"
4
\n",
"
@WholeMarsBlog Electric cargo ships are straig...
\n",
"
140
\n",
"
1599643371428986880
\n",
"
2022-12-05 05:54:34+00:00
\n",
"
Twitter for iPhone
\n",
"
18147
\n",
"
1377
\n",
"
\n",
"
\n",
"
5
\n",
"
@BillyM2k Team was a bit too intense with spam...
\n",
"
85
\n",
"
1599640228721233921
\n",
"
2022-12-05 05:42:05+00:00
\n",
"
Twitter for iPhone
\n",
"
19394
\n",
"
1110
\n",
"
\n",
"
\n",
"
6
\n",
"
@RichardGarriott 1
\n",
"
18
\n",
"
1599638758697013248
\n",
"
2022-12-05 05:36:14+00:00
\n",
"
Twitter for iPhone
\n",
"
43137
\n",
"
1260
\n",
"
\n",
"
\n",
"
7
\n",
"
@WholeMarsBlog About a week or so
\n",
"
33
\n",
"
1599628966398025728
\n",
"
2022-12-05 04:57:19+00:00
\n",
"
Twitter for iPhone
\n",
"
4318
\n",
"
210
\n",
"
\n",
"
\n",
"
8
\n",
"
@COLDEX_STC @SpaceX @NSF @blueicehiggins @icy_...
\n",
"
140
\n",
"
1599628470744588288
\n",
"
2022-12-05 04:55:21+00:00
\n",
"
Twitter for iPhone
\n",
"
19229
\n",
"
918
\n",
"
\n",
"
\n",
"
9
\n",
"
RT @COLDEX_STC: Despite 30 knot winds at the A...
\n",
"
140
\n",
"
1599628033962307584
\n",
"
2022-12-05 04:53:37+00:00
\n",
"
Twitter for iPhone
\n",
"
0
\n",
"
3865
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Tweets len \\\n",
"0 Space Ark - 1968 by Japanese artist Shigeru Ko... 67 \n",
"1 Starship takes beings of Earth to Mars https:/... 62 \n",
"2 @CChomp13 🤣💯 12 \n",
"3 @sama What’s the average cost per chat? 39 \n",
"4 @WholeMarsBlog Electric cargo ships are straig... 140 \n",
"5 @BillyM2k Team was a bit too intense with spam... 85 \n",
"6 @RichardGarriott 1 18 \n",
"7 @WholeMarsBlog About a week or so 33 \n",
"8 @COLDEX_STC @SpaceX @NSF @blueicehiggins @icy_... 140 \n",
"9 RT @COLDEX_STC: Despite 30 knot winds at the A... 140 \n",
"\n",
" ID Date Source Likes \\\n",
"0 1599672158086889474 2022-12-05 07:48:57+00:00 Twitter for iPhone 46373 \n",
"1 1599671964582391808 2022-12-05 07:48:11+00:00 Twitter for iPhone 148985 \n",
"2 1599669828478185472 2022-12-05 07:39:42+00:00 Twitter for iPhone 4189 \n",
"3 1599669552081960960 2022-12-05 07:38:36+00:00 Twitter for iPhone 22860 \n",
"4 1599643371428986880 2022-12-05 05:54:34+00:00 Twitter for iPhone 18147 \n",
"5 1599640228721233921 2022-12-05 05:42:05+00:00 Twitter for iPhone 19394 \n",
"6 1599638758697013248 2022-12-05 05:36:14+00:00 Twitter for iPhone 43137 \n",
"7 1599628966398025728 2022-12-05 04:57:19+00:00 Twitter for iPhone 4318 \n",
"8 1599628470744588288 2022-12-05 04:55:21+00:00 Twitter for iPhone 19229 \n",
"9 1599628033962307584 2022-12-05 04:53:37+00:00 Twitter for iPhone 0 \n",
"\n",
" RTs \n",
"0 2583 \n",
"1 12713 \n",
"2 191 \n",
"3 764 \n",
"4 1377 \n",
"5 1110 \n",
"6 1260 \n",
"7 210 \n",
"8 918 \n",
"9 3865 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"display(data.head(10))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Get the average length of the tweets:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The lenght's average in tweets: 70.5929648241206\n"
]
}
],
"source": [
"mean = np.mean(data['len'])\n",
"print(\"The lenght's average in tweets: {}\".format(mean))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Get the likes and retweets:"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The tweet with more likes is: \n",
"This is a battle for the future of civilization. If free speech is lost even in America, tyranny is all that lies ahead.\n",
"Number of likes: 921843\n",
"120 characters.\n",
"\n",
"The tweet with more retweets is: \n",
"This is a battle for the future of civilization. If free speech is lost even in America, tyranny is all that lies ahead.\n",
"Number of retweets: 146407\n",
"120 characters.\n",
"\n"
]
}
],
"source": [
"fav_max = np.max(data['Likes'])\n",
"rt_max = np.max(data['RTs'])\n",
"\n",
"fav = data[data.Likes == fav_max].index[0]\n",
"rt = data[data.RTs == rt_max].index[0]\n",
"print(\"The tweet with more likes is: \\n{}\".format(data['Tweets'][fav]))\n",
"print(\"Number of likes: {}\".format(fav_max))\n",
"print(\"{} characters.\\n\".format(data['len'][fav]))\n",
"print(\"The tweet with more retweets is: \\n{}\".format(data['Tweets'][rt]))\n",
"print(\"Number of retweets: {}\".format(rt_max))\n",
"print(\"{} characters.\\n\".format(data['len'][rt]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To be able to view the time series, we have to add the \"Date\" information to the table:"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"tlen = pd.Series(data=data['len'].values, index=data['Date'])\n",
"tfav = pd.Series(data=data['Likes'].values, index=data['Date'])\n",
"tret = pd.Series(data=data['RTs'].values, index=data['Date'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Length over the time:"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"tfav.plot(figsize=(16,4), label=\"Likes\", legend=True)\n",
"tret.plot(figsize=(16,4), label=\"Retweets\", legend=True);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What is the source of the Tweet? Mobile app vs web vs application?"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Creation of content sources:\n",
"* Twitter for iPhone\n"
]
}
],
"source": [
"sources = []\n",
"for source in data['Source']:\n",
" if source not in sources:\n",
" sources.append(source)\n",
"\n",
"print(\"Creation of content sources:\")\n",
"for source in sources:\n",
" print(\"* {}\".format(source))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cake view for the Tweet source distribution: This is handy to see if the content is geenric or created via API / App"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# We create a numpy vector mapped to labels:\n",
"percent = np.zeros(len(sources))\n",
"\n",
"for source in data['Source']:\n",
" for index in range(len(sources)):\n",
" if source == sources[index]:\n",
" percent[index] += 1\n",
" pass\n",
"\n",
"percent /= 100\n",
"\n",
"# Pie chart:\n",
"pie_chart = pd.Series(percent, index=sources, name='Sources')\n",
"pie_chart.plot.pie(fontsize=11, autopct='%.2f', figsize=(6, 6));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sentiment analysis:\n",
"\n",
"Now that we created the dataset with the texts of the tweets and date, it is possible to run the sentiment alaysis."
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
"from textblob import TextBlob\n",
"import re\n",
"\n",
"def clean_tweet(tweet):\n",
" '''\n",
" Utility function to clean the text in a tweet by removing \n",
" links and special characters using regex.\n",
" '''\n",
" return ' '.join(re.sub(\"(@[A-Za-z0-9]+)|([^0-9A-Za-z \\t])|(\\w+:\\/\\/\\S+)\", \" \", tweet).split())\n",
"\n",
"def analyze_sentiment(tweet):\n",
" '''\n",
" Utility function to classify the polarity of a tweet\n",
" using textblob.\n",
" '''\n",
" analysis = TextBlob(clean_tweet(tweet))\n",
" if analysis.sentiment.polarity > 0:\n",
" return 1\n",
" elif analysis.sentiment.polarity == 0:\n",
" return 0\n",
" else:\n",
" return -1\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sample of results:\n",
"'SA' stands for sentiment analysis. Note that value for the sentiment is rounded for clearer view"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Tweets
\n",
"
len
\n",
"
ID
\n",
"
Date
\n",
"
Source
\n",
"
Likes
\n",
"
RTs
\n",
"
SA
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
Space Ark - 1968 by Japanese artist Shigeru Ko...
\n",
"
67
\n",
"
1599672158086889474
\n",
"
2022-12-05 07:48:57+00:00
\n",
"
Twitter for iPhone
\n",
"
46373
\n",
"
2583
\n",
"
0
\n",
"
\n",
"
\n",
"
1
\n",
"
Starship takes beings of Earth to Mars https:/...
\n",
"
62
\n",
"
1599671964582391808
\n",
"
2022-12-05 07:48:11+00:00
\n",
"
Twitter for iPhone
\n",
"
148985
\n",
"
12713
\n",
"
0
\n",
"
\n",
"
\n",
"
2
\n",
"
@CChomp13 🤣💯
\n",
"
12
\n",
"
1599669828478185472
\n",
"
2022-12-05 07:39:42+00:00
\n",
"
Twitter for iPhone
\n",
"
4189
\n",
"
191
\n",
"
0
\n",
"
\n",
"
\n",
"
3
\n",
"
@sama What’s the average cost per chat?
\n",
"
39
\n",
"
1599669552081960960
\n",
"
2022-12-05 07:38:36+00:00
\n",
"
Twitter for iPhone
\n",
"
22860
\n",
"
764
\n",
"
-1
\n",
"
\n",
"
\n",
"
4
\n",
"
@WholeMarsBlog Electric cargo ships are straig...
\n",
"
140
\n",
"
1599643371428986880
\n",
"
2022-12-05 05:54:34+00:00
\n",
"
Twitter for iPhone
\n",
"
18147
\n",
"
1377
\n",
"
1
\n",
"
\n",
"
\n",
"
5
\n",
"
@BillyM2k Team was a bit too intense with spam...
\n",
"
85
\n",
"
1599640228721233921
\n",
"
2022-12-05 05:42:05+00:00
\n",
"
Twitter for iPhone
\n",
"
19394
\n",
"
1110
\n",
"
1
\n",
"
\n",
"
\n",
"
6
\n",
"
@RichardGarriott 1
\n",
"
18
\n",
"
1599638758697013248
\n",
"
2022-12-05 05:36:14+00:00
\n",
"
Twitter for iPhone
\n",
"
43137
\n",
"
1260
\n",
"
0
\n",
"
\n",
"
\n",
"
7
\n",
"
@WholeMarsBlog About a week or so
\n",
"
33
\n",
"
1599628966398025728
\n",
"
2022-12-05 04:57:19+00:00
\n",
"
Twitter for iPhone
\n",
"
4318
\n",
"
210
\n",
"
0
\n",
"
\n",
"
\n",
"
8
\n",
"
@COLDEX_STC @SpaceX @NSF @blueicehiggins @icy_...
\n",
"
140
\n",
"
1599628470744588288
\n",
"
2022-12-05 04:55:21+00:00
\n",
"
Twitter for iPhone
\n",
"
19229
\n",
"
918
\n",
"
0
\n",
"
\n",
"
\n",
"
9
\n",
"
RT @COLDEX_STC: Despite 30 knot winds at the A...
\n",
"
140
\n",
"
1599628033962307584
\n",
"
2022-12-05 04:53:37+00:00
\n",
"
Twitter for iPhone
\n",
"
0
\n",
"
3865
\n",
"
1
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Tweets len \\\n",
"0 Space Ark - 1968 by Japanese artist Shigeru Ko... 67 \n",
"1 Starship takes beings of Earth to Mars https:/... 62 \n",
"2 @CChomp13 🤣💯 12 \n",
"3 @sama What’s the average cost per chat? 39 \n",
"4 @WholeMarsBlog Electric cargo ships are straig... 140 \n",
"5 @BillyM2k Team was a bit too intense with spam... 85 \n",
"6 @RichardGarriott 1 18 \n",
"7 @WholeMarsBlog About a week or so 33 \n",
"8 @COLDEX_STC @SpaceX @NSF @blueicehiggins @icy_... 140 \n",
"9 RT @COLDEX_STC: Despite 30 knot winds at the A... 140 \n",
"\n",
" ID Date Source Likes \\\n",
"0 1599672158086889474 2022-12-05 07:48:57+00:00 Twitter for iPhone 46373 \n",
"1 1599671964582391808 2022-12-05 07:48:11+00:00 Twitter for iPhone 148985 \n",
"2 1599669828478185472 2022-12-05 07:39:42+00:00 Twitter for iPhone 4189 \n",
"3 1599669552081960960 2022-12-05 07:38:36+00:00 Twitter for iPhone 22860 \n",
"4 1599643371428986880 2022-12-05 05:54:34+00:00 Twitter for iPhone 18147 \n",
"5 1599640228721233921 2022-12-05 05:42:05+00:00 Twitter for iPhone 19394 \n",
"6 1599638758697013248 2022-12-05 05:36:14+00:00 Twitter for iPhone 43137 \n",
"7 1599628966398025728 2022-12-05 04:57:19+00:00 Twitter for iPhone 4318 \n",
"8 1599628470744588288 2022-12-05 04:55:21+00:00 Twitter for iPhone 19229 \n",
"9 1599628033962307584 2022-12-05 04:53:37+00:00 Twitter for iPhone 0 \n",
"\n",
" RTs SA \n",
"0 2583 0 \n",
"1 12713 0 \n",
"2 191 0 \n",
"3 764 -1 \n",
"4 1377 1 \n",
"5 1110 1 \n",
"6 1260 0 \n",
"7 210 0 \n",
"8 918 0 \n",
"9 3865 1 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"data['SA'] = np.array([ analyze_sentiment(tweet) for tweet in data['Tweets'] ])\n",
"display(data.head(10))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Calcualtion of the percentage of Positive, Neutral or Negative tweets: \n",
"\n",
"This can show you if the account is the real user or just a spam bot."
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Percentage of positive tweets: 44.72361809045226%\n",
"Percentage of neutral tweets: 44.72361809045226%\n",
"Percentage de negative tweets: 10.552763819095478%\n"
]
}
],
"source": [
"pos_tweets = [ tweet for index, tweet in enumerate(data['Tweets']) if data['SA'][index] > 0]\n",
"neu_tweets = [ tweet for index, tweet in enumerate(data['Tweets']) if data['SA'][index] == 0]\n",
"neg_tweets = [ tweet for index, tweet in enumerate(data['Tweets']) if data['SA'][index] < 0]\n",
"\n",
"print(\"Percentage of positive tweets: {}%\".format(len(pos_tweets)*100/len(data['Tweets'])))\n",
"print(\"Percentage of neutral tweets: {}%\".format(len(neu_tweets)*100/len(data['Tweets'])))\n",
"print(\"Percentage de negative tweets: {}%\".format(len(neg_tweets)*100/len(data['Tweets'])))"
]
}
],
"metadata": {
"celltoolbar": "Raw Cell Format",
"kernelspec": {
"display_name": "Python 3.8.8 ('eolas-py3.8.8')",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
},
"vscode": {
"interpreter": {
"hash": "7217508cf40a866d2c6d8c05c8a287a7af39b44bc942772df40ff0edc82b5da6"
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}