{
"cells": [
{
"cell_type": "markdown",
"id": "795921f7",
"metadata": {},
"source": [
"# Tradition vs Digital art on Twitter\n"
]
},
{
"cell_type": "markdown",
"id": "2c156361",
"metadata": {},
"source": [
" By: Gloria Sladek "
]
},
{
"cell_type": "markdown",
"id": "f0c546da",
"metadata": {},
"source": [
"\n",
"I conducted this analysis to compare the interaction of traditional and digital art on twitter. As an artist I was curios to see the difference between the two. Going into this analysis I believed that digital art would get more engagement due to the fact that twitter is a digital platform.\n",
"\n",
"Many artist use twitter as a way to interact with their users but I have not seen anyone talk about what type of art is best displayed on this platform. I am a digital artist and mostly use instagram to engage my audience though some people have told me I should try sharing my art on twitter. \n",
" \n",
"In order to answer my hypothesis I will be focusing on the _public metrics_ dataset from twitter which includes likes, comments, and retweets."
]
},
{
"cell_type": "markdown",
"id": "2c3e6b46",
"metadata": {},
"source": [
"### Hypothesis:\n",
"Digital artists recieve more interaction on digital art posts rather than traditional. I predict that digital art recieves 10% more interaction then traditional art on twitter."
]
},
{
"cell_type": "markdown",
"id": "618ba4e3",
"metadata": {},
"source": [
"### Connecting to the Twitter API"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "f4d85fc2",
"metadata": {},
"outputs": [],
"source": [
"import requests\n",
"import pandas as pd\n",
"import json\n",
"import urllib\n",
"import io\n",
"import numpy as np\n",
"from PIL import Image\n",
"from matplotlib import pyplot as plt\n",
"from scipy import stats"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "7e338896",
"metadata": {},
"outputs": [],
"source": [
"bearer_token = pd.read_csv(\"twitterApp.txt\", header = 0)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "171da77a",
"metadata": {},
"outputs": [],
"source": [
"token = bearer_token['Bearer Token'].iloc[0]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "bde5a965",
"metadata": {},
"outputs": [],
"source": [
"header = {'Authorization' : 'Bearer {}'.format(token)}"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "d90f5318",
"metadata": {},
"outputs": [],
"source": [
"endpoint_url = 'https://api.twitter.com/2/tweets/search/recent'"
]
},
{
"cell_type": "markdown",
"id": "02fefc24",
"metadata": {},
"source": [
"### Creating Queries"
]
},
{
"cell_type": "markdown",
"id": "d2e79542",
"metadata": {},
"source": [
"I created two queries to display posts using the hashtags of digital and traditional art to create queries and 2 data sets. By splitting the hashtags I can rate the engage meant in each catagory and compare it. One issue this may cause is overlap between the two types of data so I used the NOT parameter to ensure there was no overlap between the two datasets."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "5ea0f8a9",
"metadata": {},
"outputs": [],
"source": [
"query = urllib.parse.quote('(#digitalart OR #digital #art NOT (#traditionalart OR #traditional)) -is:retweet')\n",
"query2 = urllib.parse.quote('(#traditionalart OR #traditional #art NOT (#digitalart OR #digital)) -is:retweet ') "
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "bb8b5e7b",
"metadata": {},
"outputs": [],
"source": [
"tweet_fields = 'author_id,id,text,public_metrics,created_at,entities'"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "ab916bf9",
"metadata": {},
"outputs": [],
"source": [
"url = endpoint_url + '?query={}&tweet.fields={}&user.fields={}&media.fields={}&max_results=100'.format(query,tweet_fields,\"username\",\"preview_image_url\")\n",
"url2 = endpoint_url + '?query={}&tweet.fields={}&user.fields={}&max_results=100'.format(query2,tweet_fields,\"username\")"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "6405e7ec",
"metadata": {},
"outputs": [],
"source": [
"digital_1 = requests.request(\"GET\", url, headers=header, stream = True)\n",
"traditional_1 = requests.request(\"GET\", url2, headers=header)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "ed713ea2",
"metadata": {},
"outputs": [],
"source": [
"digital_dict = json.loads(digital_1.text)\n",
"traditional_dict = json.loads(traditional_1.text)"
]
},
{
"cell_type": "markdown",
"id": "8f3a1344",
"metadata": {},
"source": [
"### Creating the first page for 2 Dataframes"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "184d8915",
"metadata": {},
"outputs": [],
"source": [
"digital_page1 = pd.DataFrame(digital_dict['data'])\n",
"traditional_page1 = pd.DataFrame(traditional_dict['data'])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "23ad851e",
"metadata": {},
"outputs": [],
"source": [
"digital_metrics1 = pd.DataFrame(list(digital_page1['public_metrics']))\n",
"traditional_metrics1 = pd.DataFrame(list(traditional_page1['public_metrics']))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "15056b62",
"metadata": {},
"outputs": [],
"source": [
"digital_page1['likes'] = digital_metrics1['like_count']\n",
"digital_page1['retweets'] = digital_metrics1['retweet_count']\n",
"digital_page1['comments'] = digital_metrics1['reply_count']\n",
"\n",
"traditional_page1['likes'] = traditional_metrics1['like_count']\n",
"traditional_page1['retweets'] = traditional_metrics1['retweet_count']\n",
"traditional_page1['comments'] = traditional_metrics1['reply_count']\n",
"\n",
"del digital_page1['public_metrics']\n",
"del traditional_page1['public_metrics']"
]
},
{
"cell_type": "markdown",
"id": "d8576192",
"metadata": {},
"source": [
"### Creating pages 2-4 "
]
},
{
"cell_type": "markdown",
"id": "026ba77b",
"metadata": {},
"source": [
"I created a function to make this process less messy. This function takes an input of a dictionary, and uses that data to create a new \"page\" of datapoints. This way I can quickly collect 400 points of data from each query."
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "0e24248f",
"metadata": {},
"outputs": [],
"source": [
"def next_page(dictionary):\n",
" next_pg = pd.DataFrame(dictionary['data'])\n",
" next_metric = pd.DataFrame(list(next_pg['public_metrics']))\n",
" ##combining the dataframes\n",
" next_pg['likes'] = next_metric['like_count']\n",
" next_pg['retweets'] = next_metric['retweet_count']\n",
" next_pg['comments'] = next_metric['reply_count']\n",
" del next_pg['public_metrics']\n",
" \n",
" return next_pg"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "24c16ca7",
"metadata": {},
"outputs": [],
"source": [
"digital_token2 = url +'&next_token={}'.format(digital_dict['meta']['next_token'])\n",
"digital_2 = requests.request(\"GET\",url = digital_token2, headers=header)\n",
"digital_dict2 = json.loads(digital_2.text)\n",
"\n",
"digital_page2 = next_page(digital_dict2)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "21dc6a73",
"metadata": {},
"outputs": [],
"source": [
"digital_token3 = url +'&next_token={}'.format(digital_dict2['meta']['next_token'])\n",
"digital_3 = requests.request(\"GET\",url = digital_token3, headers=header)\n",
"digital_dict3 = json.loads(digital_3.text)\n",
"\n",
"digital_page3 = next_page(digital_dict3)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "808cb5e8",
"metadata": {},
"outputs": [],
"source": [
"digital_token4 = url +'&next_token={}'.format(digital_dict3['meta']['next_token'])\n",
"digital_4 = requests.request(\"GET\",url = digital_token4, headers=header)\n",
"digital_dict4 = json.loads(digital_4.text)\n",
"\n",
"digital_page4 = next_page(digital_dict3)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "2661ad12",
"metadata": {},
"outputs": [],
"source": [
"tradition_token2 = url +'&next_token={}'.format(traditional_dict['meta']['next_token'])\n",
"traditional_2 = requests.request(\"GET\",url = tradition_token2, headers=header)\n",
"traditional_dict2 = json.loads(traditional_2.text)\n",
"\n",
"traditional_page2 = next_page(traditional_dict2)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "d31a61e4",
"metadata": {},
"outputs": [],
"source": [
"tradition_token3 = url +'&next_token={}'.format(traditional_dict2['meta']['next_token'])\n",
"traditional_3 = requests.request(\"GET\",url = tradition_token3, headers=header)\n",
"traditional_dict3 = json.loads(traditional_3.text)\n",
"\n",
"traditional_page3 = next_page(traditional_dict3)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "9189995f",
"metadata": {},
"outputs": [],
"source": [
"tradition_token4 = url +'&next_token={}'.format(traditional_dict3['meta']['next_token'])\n",
"traditional_4 = requests.request(\"GET\",url = tradition_token4, headers=header)\n",
"traditional_dict4 = json.loads(traditional_4.text)\n",
"\n",
"traditional_page4 = next_page(traditional_dict4)"
]
},
{
"cell_type": "markdown",
"id": "b91c9c56",
"metadata": {},
"source": [
"### Combine Into 2 data frames"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "54805e23",
"metadata": {},
"outputs": [],
"source": [
"digital = pd.concat([digital_page1, digital_page2, digital_page3, digital_page4],ignore_index=True, sort=False)\n",
"traditional = pd.concat([traditional_page1, traditional_page2, traditional_page3, traditional_page4], ignore_index=True, sort=False)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "17efdf9c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" entities | \n",
" created_at | \n",
" id | \n",
" text | \n",
" author_id | \n",
" likes | \n",
" retweets | \n",
" comments | \n",
"
\n",
" \n",
" \n",
" \n",
" 395 | \n",
" {'urls': [{'start': 48, 'end': 71, 'url': 'htt... | \n",
" 2021-12-09T03:15:33.000Z | \n",
" 1468781334411759617 | \n",
" We Are Not Soldiers II #DigitalArt #digital vi... | \n",
" 1252498426568327174 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 396 | \n",
" {'urls': [{'start': 169, 'end': 192, 'url': 'h... | \n",
" 2021-12-09T03:15:32.000Z | \n",
" 1468781330066329601 | \n",
" @MyTitsArt Super proud to be part of this proj... | \n",
" 1312835244404305920 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 397 | \n",
" {'urls': [{'start': 222, 'end': 245, 'url': 'h... | \n",
" 2021-12-09T03:15:31.000Z | \n",
" 1468781326123864066 | \n",
" Her at it again🤮🤮 she is 🔥💯 #NFTs #NFTart #NFT... | \n",
" 1165759727206326274 | \n",
" 4 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 398 | \n",
" {'urls': [{'start': 273, 'end': 296, 'url': 'h... | \n",
" 2021-12-09T03:15:14.000Z | \n",
" 1468781256599085056 | \n",
" My latest #digital #painting of @ioangruffudd ... | \n",
" 219171867 | \n",
" 2 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" 399 | \n",
" {'urls': [{'start': 172, 'end': 195, 'url': 'h... | \n",
" 2021-12-09T03:15:13.000Z | \n",
" 1468781252417179649 | \n",
" @TrippyPunks_ Super proud to be part of this p... | \n",
" 1312835244404305920 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" entities \\\n",
"395 {'urls': [{'start': 48, 'end': 71, 'url': 'htt... \n",
"396 {'urls': [{'start': 169, 'end': 192, 'url': 'h... \n",
"397 {'urls': [{'start': 222, 'end': 245, 'url': 'h... \n",
"398 {'urls': [{'start': 273, 'end': 296, 'url': 'h... \n",
"399 {'urls': [{'start': 172, 'end': 195, 'url': 'h... \n",
"\n",
" created_at id \\\n",
"395 2021-12-09T03:15:33.000Z 1468781334411759617 \n",
"396 2021-12-09T03:15:32.000Z 1468781330066329601 \n",
"397 2021-12-09T03:15:31.000Z 1468781326123864066 \n",
"398 2021-12-09T03:15:14.000Z 1468781256599085056 \n",
"399 2021-12-09T03:15:13.000Z 1468781252417179649 \n",
"\n",
" text author_id \\\n",
"395 We Are Not Soldiers II #DigitalArt #digital vi... 1252498426568327174 \n",
"396 @MyTitsArt Super proud to be part of this proj... 1312835244404305920 \n",
"397 Her at it again🤮🤮 she is 🔥💯 #NFTs #NFTart #NFT... 1165759727206326274 \n",
"398 My latest #digital #painting of @ioangruffudd ... 219171867 \n",
"399 @TrippyPunks_ Super proud to be part of this p... 1312835244404305920 \n",
"\n",
" likes retweets comments \n",
"395 0 0 0 \n",
"396 0 0 0 \n",
"397 4 0 0 \n",
"398 2 0 1 \n",
"399 0 0 0 "
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"digital.tail()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "34798553",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" entities | \n",
" created_at | \n",
" text | \n",
" id | \n",
" author_id | \n",
" likes | \n",
" retweets | \n",
" comments | \n",
"
\n",
" \n",
" \n",
" \n",
" 395 | \n",
" {'mentions': [{'start': 15, 'end': 23, 'userna... | \n",
" 2021-12-08T21:44:16.000Z | \n",
" commissi0n for @datcats (reddit)💚\\n#furry #fur... | \n",
" 1468697965044723712 | \n",
" 1154088388426752001 | \n",
" 4 | \n",
" 2 | \n",
" 1 | \n",
"
\n",
" \n",
" 396 | \n",
" {'mentions': [{'start': 181, 'end': 192, 'user... | \n",
" 2021-12-08T21:44:14.000Z | \n",
" Check this out SimbaChicks Nft 🔥🔥\\njoin our di... | \n",
" 1468697956056502280 | \n",
" 1468685639034015746 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 397 | \n",
" {'urls': [{'start': 18, 'end': 41, 'url': 'htt... | \n",
" 2021-12-08T21:44:11.000Z | \n",
" Cappufuckinccino. https://t.co/LiffX0VsII #art... | \n",
" 1468697942349561861 | \n",
" 292619181 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 398 | \n",
" {'urls': [{'start': 262, 'end': 285, 'url': 'h... | \n",
" 2021-12-08T21:44:09.000Z | \n",
" Made a bit of progress on my draw this in your... | \n",
" 1468697934405550080 | \n",
" 198144736 | \n",
" 3 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 399 | \n",
" {'urls': [{'start': 89, 'end': 112, 'url': 'ht... | \n",
" 2021-12-08T21:44:06.000Z | \n",
" big uncomfortable smile\\n-\\n#furryoc #original... | \n",
" 1468697922887897099 | \n",
" 1282023970498318337 | \n",
" 60 | \n",
" 18 | \n",
" 3 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" entities \\\n",
"395 {'mentions': [{'start': 15, 'end': 23, 'userna... \n",
"396 {'mentions': [{'start': 181, 'end': 192, 'user... \n",
"397 {'urls': [{'start': 18, 'end': 41, 'url': 'htt... \n",
"398 {'urls': [{'start': 262, 'end': 285, 'url': 'h... \n",
"399 {'urls': [{'start': 89, 'end': 112, 'url': 'ht... \n",
"\n",
" created_at \\\n",
"395 2021-12-08T21:44:16.000Z \n",
"396 2021-12-08T21:44:14.000Z \n",
"397 2021-12-08T21:44:11.000Z \n",
"398 2021-12-08T21:44:09.000Z \n",
"399 2021-12-08T21:44:06.000Z \n",
"\n",
" text id \\\n",
"395 commissi0n for @datcats (reddit)💚\\n#furry #fur... 1468697965044723712 \n",
"396 Check this out SimbaChicks Nft 🔥🔥\\njoin our di... 1468697956056502280 \n",
"397 Cappufuckinccino. https://t.co/LiffX0VsII #art... 1468697942349561861 \n",
"398 Made a bit of progress on my draw this in your... 1468697934405550080 \n",
"399 big uncomfortable smile\\n-\\n#furryoc #original... 1468697922887897099 \n",
"\n",
" author_id likes retweets comments \n",
"395 1154088388426752001 4 2 1 \n",
"396 1468685639034015746 0 0 0 \n",
"397 292619181 0 0 0 \n",
"398 198144736 3 0 0 \n",
"399 1282023970498318337 60 18 3 "
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"traditional.tail()"
]
},
{
"cell_type": "markdown",
"id": "ebe40406",
"metadata": {},
"source": [
"### Saving as a CSV"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "9ebf6b6a",
"metadata": {},
"outputs": [],
"source": [
"digital.to_csv(r'C:\\Users\\glori\\Data in EMAT\\digital.csv')\n",
"traditional.to_csv(r'C:\\Users\\glori\\Data in EMAT\\traditional.csv')"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "c144064e",
"metadata": {},
"outputs": [],
"source": [
"digital = pd.read_csv ('digital.csv')\n",
"traditional = pd.read_csv ('traditional.csv')"
]
},
{
"cell_type": "markdown",
"id": "01dfcf9d",
"metadata": {},
"source": [
"### Charting the Data"
]
},
{
"cell_type": "markdown",
"id": "184e817c",
"metadata": {},
"source": [
"Once I had the data collected and organized I created bar charts to have a visual representation of each comparison. The _red_ bar in each chart indecates __traditional art__ and the _blue_ bar indicates __digital art__."
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "1ef78134",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"