{ "cells": [ { "cell_type": "markdown", "id": "4da20fdc-6b74-4b76-98e4-a639d02fb476", "metadata": {}, "source": [ "# AN ANALYSIS TO IDENTIFY THE PEAK HOURS: ASK HN AND SHOW HN POSTS" ] }, { "cell_type": "markdown", "id": "51df4ce9-1c16-4295-875b-9f832bca7d19", "metadata": {}, "source": [ "# Project Description\n", " Hacker News is a site started by the startup incubator Y Combinator, where user-submitted stories (known as \"posts\") are voted and commented upon, similar to reddit. Hacker News is extremely popular in technology and startup circles, and posts that make it to the top of Hacker News' listings can get hundreds of thousands of visitors as a result. We are mostly concerned with posts of `Ask HN` where the user is asking the platform a question and `Show HN` where the user is showcasing something they made or something that they find interesting on the platform.\n", " \n", " \n", "# Project Objectives\n", " This project aims to:\n", " - Identify which posts between `Ask HN` and `Show HN` are more likely to be posted\n", " - Analyze which time of the day that a user posting will receive a comment\n", " - Pinpoint the peak hours where most users are posting and commenting.\n", "\n", "The following are an example posts title for `Ask HN` and `Show HN`:\n", "\n", "Ask HN: How to improve my personal website?
\n", "Ask HN: Am I the only one outraged by Twitter shutting down share counts?
\n", "Ask HN: Aby recent changes to CSS that broke mobile?\n", "\n", "Show HN: Wio Link ESP8266 Based Web of Things Hardware Development Platform'
\n", "Show HN: Something pointless I made
\n", "Show HN: Shanhu.io, a programming playground powered by e8vm\n", "\n", "Sources: \n", "
[Hacker news](https://news.ycombinator.com/)
\n", "[Kaggle](https://www.kaggle.com/hacker-news/hacker-news-posts)
\n", "[DataQuest](https://www.dataquest.io/)" ] }, { "cell_type": "markdown", "id": "951eb4c1-944a-4d54-a28e-eb7210fec7e0", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "c71f38ab-d418-4b50-b4ac-f83412b78f13", "metadata": {}, "source": [ "# Introduction\n", "\n", "Before we begin our analysis, we are going to create a function that will open, read and save the csv file in a variable named `hn`. We will also create a function that we can use for initial exploration of the dataset. And lastly we are going to import the `modules` that we are going to use on this project." ] }, { "cell_type": "code", "execution_count": 1, "id": "27804b96-259e-434d-b7b7-55441b2320a0", "metadata": {}, "outputs": [], "source": [ "def dataset_csv(dataset, header = True):\n", " '''\n", " Open and reads the csv file\n", " \n", " Parameter\n", " ---\n", " dataset: str\n", " A string type in the format of 'example.csv'\n", " header: bool, default = True\n", " While true, the result will include a header, otherwise it will return the rows only \n", " Return\n", " ---\n", " A list of lists\n", " '''\n", " \n", " from csv import reader\n", " \n", " file = open(dataset)\n", " read = reader(file)\n", " data = list(read)\n", " \n", " if header:\n", " return data\n", " if not header:\n", " return data[1:]\n", "\n", "def explore_data(dataset, start, end, rows_and_columns = True):\n", " '''\n", " Prints out an initial exploration of the data\n", " \n", " Parameter\n", " ---\n", " dataset: list\n", " A variable of the dataset\n", " start: int\n", " The starting index to be shown\n", " end: int\n", " The ending index to be shown\n", " rows_and_columns: bool, default = True\n", " While true, it will show the total number of rows and columns of the dataset\n", " Return\n", " ---\n", " A print statement of the above parameters\n", " '''\n", " print('Sample {0} no. rows'.format(len(dataset[start:end])))\n", " print('')\n", " \n", " for row in dataset[start:end]:\n", " print(row)\n", " print('')\n", " if rows_and_columns:\n", " print('Total number of columns: {0}\\nTotal number of rows: {1}'.format(len(dataset[0]),len(dataset[1:])))\n", " " ] }, { "cell_type": "code", "execution_count": 2, "id": "5d2e5a29-4bb7-4f0f-8973-6c7a2b2d5776", "metadata": {}, "outputs": [], "source": [ "import datetime as dt # Since we are going to deal with the hours later on in our analysis, we are going to need the datetime module\n", "from matplotlib import pyplot as plt # We are going to represent our data in a graph later on in our analysis to derive a meaning from the data" ] }, { "cell_type": "markdown", "id": "13b0333b-f890-4ef1-be5e-92f1aec67476", "metadata": {}, "source": [ "
The function named `dataset_csv()` will be used to open the hacker news dataset. We will keep the *header* argument as true since we want to see what our headers are. But we are going to create a separate variable for the headers and the rows." ] }, { "cell_type": "code", "execution_count": 3, "id": "8638aa87-7801-4a3a-840b-2e8f2a9cfa97", "metadata": {}, "outputs": [], "source": [ "hn = dataset_csv(r'C:\\Users\\Mico\\OneDrive\\Desktop\\DATASETS\\KAGGLE\\HACKER NEWS POST\\DATAQUEST\\hacker_news.csv')\n", "hn_header = hn[0] # this will extract the header from the hn dataset\n", "hn_rows = hn[1:] # this will exclude the header from the hn dataset" ] }, { "cell_type": "markdown", "id": "2f852f8f-5027-4c17-8b31-1e258875deb3", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "204c6bb5-666d-4bd1-83a3-9b08a1517ca4", "metadata": {}, "source": [ "# Initial Data Exploration\n", "To begin our data analysis, we will first have an initial data exploration in order to have an insight on what are the contents of our dataset.\n", "In this section we are going to do the following:\n", "- Use the `explore_data()` to display the initial overview of the dataset. \n", " - Inputting the **start** as **0** to show the headers.\n", " - The **end** as **5** to return the first five rows.\n", " - And keeping the argument of the **rows_and_columns** as the default **True** to see how many columns and rows are in the dataset.\n", "- Describe the individual attributes." ] }, { "cell_type": "markdown", "id": "6a47ab06-5280-41d5-b145-1789e8be4538", "metadata": {}, "source": [ "### Data Exploration" ] }, { "cell_type": "code", "execution_count": 4, "id": "9f819849-1edf-4faf-924f-aea8d55fd2fd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sample 5 no. rows\n", "\n", "['id', 'title', 'url', 'num_points', 'num_comments', 'author', 'created_at']\n", "\n", "['12224879', 'Interactive Dynamic Video', 'http://www.interactivedynamicvideo.com/', '386', '52', 'ne0phyte', '8/4/2016 11:52']\n", "\n", "['10975351', 'How to Use Open Source and Shut the Fuck Up at the Same Time', 'http://hueniverse.com/2016/01/26/how-to-use-open-source-and-shut-the-fuck-up-at-the-same-time/', '39', '10', 'josep2', '1/26/2016 19:30']\n", "\n", "['11964716', \"Florida DJs May Face Felony for April Fools' Water Joke\", 'http://www.thewire.com/entertainment/2013/04/florida-djs-april-fools-water-joke/63798/', '2', '1', 'vezycash', '6/23/2016 22:20']\n", "\n", "['11919867', 'Technology ventures: From Idea to Enterprise', 'https://www.amazon.com/Technology-Ventures-Enterprise-Thomas-Byers/dp/0073523429', '3', '1', 'hswarna', '6/17/2016 0:01']\n", "\n", "Total number of columns: 7\n", "Total number of rows: 20100\n" ] } ], "source": [ "explore_data(hn,0,5)" ] }, { "cell_type": "markdown", "id": "abc1e9b8-d0a9-44b3-bf32-02be2b9ec31e", "metadata": {}, "source": [ "
The data above shows the **7 attributes** of each rows which are described in the table below." ] }, { "cell_type": "markdown", "id": "4868e8bf-5bde-4ed2-b5ae-98486cdc8ab8", "metadata": {}, "source": [ "### Attributes Description" ] }, { "cell_type": "markdown", "id": "30c5bf4f-334a-4289-a02b-657eaecb24bd", "metadata": {}, "source": [ "|Index|Columns|Description|Ideal Data Type|\n", "|:---:|:---:|:---:|:---:|\n", "|0|id|The unique identifier from the hacker news post|str|\n", "|1|Title|Title of the post|str|\n", "|2|url|Url of the item being linked to|str|\n", "|3|num_points|The number of upvotes the post received|int|\n", "|4|num_comments|The number of the comments the post received|int|\n", "|5|author|The name of the account that made the post|str|\n", "|6|created_at|The date and time the post was made (Timezone: Eastern Time in the US)|datetime|\n", "\n", "**Original dataset source:** [Kaggle - Hacker News Posts](https://www.kaggle.com/hacker-news/hacker-news-posts)
\n", "**Date created:** 2016-09-27
\n", "**Date updated:** 2016-09-27
\n", "**Source used in this analysis:** DataQuest - Guided Project: Exploring Hacker News Posts
\n", "**Note:** The dataset from kaggle contains more than 300,000 rows while the dataset from this analysis contains 20,101 rows. The dataset was reduced by removing submissions that did not received any comments, and then randomly sampling from the remaining submissions.
" ] }, { "cell_type": "markdown", "id": "b5f16de6-2cfb-4a6b-88cc-4516ca9d9ad0", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "c7d7ced0-2b42-40e7-a12a-5647e5355183", "metadata": {}, "source": [ "# Data Cleaning\n", "\n", "As we've mentioned we're only concern with the posts that have a beginning title of `Ask HN` or `Show HN`. In this section we are going to do the following:\n", "- Since `Ask HM` amd `Show HN` are in the **title** column. We will verify if there's any missing value in this column.\n", "- Create a list of lists that contains `Ask HN` or `Show HN` in the beginning of the title." ] }, { "cell_type": "markdown", "id": "a60cc474-d8ff-48c4-a234-50033b82197a", "metadata": {}, "source": [ "### Dataset Verification" ] }, { "cell_type": "markdown", "id": "31d6dca2-169d-4a22-ada6-d4f8de9f314e", "metadata": {}, "source": [ "In order to determine the usesability of our dataset, we have to check whether there's a missing value and identify how it will affect our analysis." ] }, { "cell_type": "code", "execution_count": 5, "id": "d77c7800-0f43-4d52-a17b-51e86f729058", "metadata": {}, "outputs": [], "source": [ "def missing_data(dataset,index):\n", " '''\n", " Count the rows with a missing value ('')\n", " \n", " Parameter\n", " ---\n", " dataset: list\n", " A variable of the dataset\n", " index: int\n", " The index value of the column to be iterated\n", " Return\n", " ---\n", " Statement of the number of rows with missing value\n", " '''\n", " \n", " missing_column = list()\n", " \n", " for row in dataset:\n", " if len(row) != len(hn_header): # This is to check if there's a row that contains missing data\n", " missing_column.append(row)\n", " elif row[index] == '': # This is to check if there's a row with an empty `created_at`\n", " missing_column.append(row)\n", " return 'The number of rows with missing data is {0}.'.format(len(missing_column))" ] }, { "cell_type": "code", "execution_count": 6, "id": "f83d4995-0afd-4f53-875d-0001f7f76c72", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Column - id , Index - 0\n", "The number of rows with missing data is 0.\n", "\n", "Column - title , Index - 1\n", "The number of rows with missing data is 0.\n", "\n", "Column - url , Index - 2\n", "The number of rows with missing data is 2440.\n", "\n", "Column - num_points , Index - 3\n", "The number of rows with missing data is 0.\n", "\n", "Column - num_comments , Index - 4\n", "The number of rows with missing data is 0.\n", "\n", "Column - author , Index - 5\n", "The number of rows with missing data is 0.\n", "\n", "Column - created_at , Index - 6\n", "The number of rows with missing data is 0.\n", "\n" ] } ], "source": [ "for columns in range(7):\n", " print('Column -',hn_header[columns],', Index - ',columns)\n", " print(missing_data(hn_rows,columns))\n", " print('')" ] }, { "cell_type": "markdown", "id": "137a9b32-a110-47bb-9fb4-243fd78cf47b", "metadata": {}, "source": [ "As we've investigated the only column that contains a missing value *('')* is `url` which is not our concern since it is only a url where the item is being linked to." ] }, { "cell_type": "markdown", "id": "8f330332-fcfb-4352-87b6-9b921e40d021", "metadata": {}, "source": [ "### Datatype Conversion" ] }, { "cell_type": "markdown", "id": "39f38dff-e6a0-4a88-9d3b-7a154c52c438", "metadata": {}, "source": [ "Data useability is an integral part of our analysis. We have to make sure that the types data we are using is in compliance with our data requirements. As we have shown on the table above **[Attributes Description](#table_cell)** we have an ideal data type for each of our column. In the following below, we are going to check the data types of each columns and convert that column whenever the data type doesn't meet our **[data requirements](#table_cell)**." ] }, { "cell_type": "code", "execution_count": 7, "id": "db559dec-134c-441e-ab05-846a9a6c25f7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Column - id , Index - 0\n", "\n", "\n", "Column - title , Index - 1\n", "\n", "\n", "Column - url , Index - 2\n", "\n", "\n", "Column - num_points , Index - 3\n", "\n", "\n", "Column - num_comments , Index - 4\n", "\n", "\n", "Column - author , Index - 5\n", "\n", "\n", "Column - created_at , Index - 6\n", "\n", "\n" ] } ], "source": [ "for element in range(7):\n", " print('Column -',hn_header[element],', Index - ',element)\n", " print(type(hn_rows[1][element]))\n", " print('')" ] }, { "cell_type": "markdown", "id": "1038d625-e20f-42f4-acc1-4ad94dc807e6", "metadata": {}, "source": [ "As we can see, the following columns does not meet our **[data requirements](#table_cell)**.\n", "- **num_points** , Index - 3\n", " - Since this column represents the total number of up votes after subtracting the number of down votes. This should have a data type of `integer`.\n", "- **num_comments** , Index - 4\n", " - Since this column represents the total number of comments. This should have a data type of `integer`.\n", "- **created_at** , Index - 6\n", " - Since this column represents the date and time the post was made. This should have a data type of `datetime`.\n", " \n", "In order to comply, we have to convert these three columns on their corresponding data types." ] }, { "cell_type": "code", "execution_count": 8, "id": "7911a73b-ffff-4301-bd74-f688034e4c02", "metadata": {}, "outputs": [], "source": [ "def convert_data(dataset,index,type_of_data):\n", " \n", " import datetime as dt\n", " \n", " for rows in dataset:\n", " convert_data = rows[index]\n", " \n", " if type_of_data == 'datetime':\n", " convert_to = dt.datetime.strptime(convert_data,'%m/%d/%Y %H:%M')\n", " elif type_of_data == int: \n", " convert_to = int(convert_data)\n", " \n", " rows[index] = convert_to" ] }, { "cell_type": "code", "execution_count": 9, "id": "ee003dbf-c2f7-4fff-b847-9a05a4d8b30c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Column - id , Index - 0\n", "\n", "\n", "Column - title , Index - 1\n", "\n", "\n", "Column - url , Index - 2\n", "\n", "\n", "Column - num_points , Index - 3\n", "\n", "\n", "Column - num_comments , Index - 4\n", "\n", "\n", "Column - author , Index - 5\n", "\n", "\n", "Column - created_at , Index - 6\n", "\n", "\n" ] } ], "source": [ "# To convert the `num_points` \n", "convert_data(hn_rows,3,int)\n", "convert_data(hn_rows,4,int)\n", "convert_data(hn_rows,6,'datetime')\n", "\n", "# To verify the changes that we've made. We will iterate on one of the rows in our dataset.\n", "\n", "for element in range(7):\n", " print('Column -',hn_header[element],', Index - ',element)\n", " print(type(hn_rows[1][element]))\n", " print('')" ] }, { "cell_type": "markdown", "id": "1e3b47df-fe95-4de9-bbf1-948b53e6a3cf", "metadata": {}, "source": [ "Now that we are complying with our **[data requirements](#table_cell)** we can procede to segregate our dataset. Remember that we are interested at `Ask HN` and `Show HN` posts to analyze whether the date and time of posting affects the number of average comments." ] }, { "cell_type": "markdown", "id": "501d0234-e75a-4890-a7e6-d9103f6f702a", "metadata": {}, "source": [ "### Dataset Segregation" ] }, { "cell_type": "markdown", "id": "c5938aec-44b2-4d22-8c76-7ff029cb93db", "metadata": {}, "source": [ "In order to derive a meaning from our dataset, we're going to create a sperate lists of the following:\n", "- Posts that starts with Ask HN\n", "- Posts that starts with Show HN\n", "- Other posts\n", "\n", "Even though our concern are the posts that contains `Ask HN` and `Show HN` we will still create a separate list for `Other posts` for comparison purposes further down in our analysis." ] }, { "cell_type": "code", "execution_count": 10, "id": "573ae3e9-f0c6-4e11-96c9-d63281b2694c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Posts that starts with Ask HN:\n", "Sample 3 no. rows\n", "\n", "['12296411', 'Ask HN: How to improve my personal website?', '', 2, 6, 'ahmedbaracat', datetime.datetime(2016, 8, 16, 9, 55)]\n", "\n", "['10610020', 'Ask HN: Am I the only one outraged by Twitter shutting down share counts?', '', 28, 29, 'tkfx', datetime.datetime(2015, 11, 22, 13, 43)]\n", "\n", "['11610310', 'Ask HN: Aby recent changes to CSS that broke mobile?', '', 1, 1, 'polskibus', datetime.datetime(2016, 5, 2, 10, 14)]\n", "\n", "Total number of columns: 7\n", "Total number of rows: 1743\n", "\n", "\n", "Posts that starts with Show HN:\n", "Sample 3 no. rows\n", "\n", "['10627194', 'Show HN: Wio Link ESP8266 Based Web of Things Hardware Development Platform', 'https://iot.seeed.cc', 26, 22, 'kfihihc', datetime.datetime(2015, 11, 25, 14, 3)]\n", "\n", "['10646440', 'Show HN: Something pointless I made', 'http://dn.ht/picklecat/', 747, 102, 'dhotson', datetime.datetime(2015, 11, 29, 22, 46)]\n", "\n", "['11590768', 'Show HN: Shanhu.io, a programming playground powered by e8vm', 'https://shanhu.io', 1, 1, 'h8liu', datetime.datetime(2016, 4, 28, 18, 5)]\n", "\n", "Total number of columns: 7\n", "Total number of rows: 1161\n", "\n", "\n", "Other posts:\n", "Sample 3 no. rows\n", "\n", "['12224879', 'Interactive Dynamic Video', 'http://www.interactivedynamicvideo.com/', 386, 52, 'ne0phyte', datetime.datetime(2016, 8, 4, 11, 52)]\n", "\n", "['10975351', 'How to Use Open Source and Shut the Fuck Up at the Same Time', 'http://hueniverse.com/2016/01/26/how-to-use-open-source-and-shut-the-fuck-up-at-the-same-time/', 39, 10, 'josep2', datetime.datetime(2016, 1, 26, 19, 30)]\n", "\n", "['11964716', \"Florida DJs May Face Felony for April Fools' Water Joke\", 'http://www.thewire.com/entertainment/2013/04/florida-djs-april-fools-water-joke/63798/', 2, 1, 'vezycash', datetime.datetime(2016, 6, 23, 22, 20)]\n", "\n", "Total number of columns: 7\n", "Total number of rows: 17193\n" ] } ], "source": [ "ask_post = list()\n", "show_post = list()\n", "other_post = list()\n", "\n", "for row in hn_rows:\n", " title = row[1].lower() # Since there might be posts that contains `ask HN` and `show HN` rather than `Ask HN` and `Show HN`, we will convert all our title into lower cases and iterate by using `ask hn` and `show hn`\n", " if title.startswith('ask hn'):\n", " ask_post.append(row)\n", " elif title.startswith('show hn'):\n", " show_post.append(row)\n", " else:\n", " other_post.append(row)\n", " \n", "# We'll print out the first 3 rows of each list\n", "\n", "print('Posts that starts with Ask HN:')\n", "explore_data(ask_post,0,3)\n", "print('\\n')\n", "print('Posts that starts with Show HN:')\n", "explore_data(show_post,0,3)\n", "print('\\n')\n", "print('Other posts:')\n", "explore_data(other_post,0,3)" ] }, { "cell_type": "markdown", "id": "2816eb31-668a-45d1-ba65-517738952266", "metadata": {}, "source": [ "
After segregating the dataset, we can see that *approximately* **14%** of the dataset contains posts that start swith either `Ask HN` or `Show HN`. Now that we have a separate dataset we can procede with the data analysis.\n" ] }, { "cell_type": "markdown", "id": "b5093206-1a79-4084-8275-ea1770d30bea", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "e4d0bff8-e97a-4f1a-a187-c29fe11612c0", "metadata": {}, "source": [ "# Data Analysis" ] }, { "cell_type": "markdown", "id": "fd139185-d105-4b82-b21f-53fa8269a522", "metadata": {}, "source": [ "Now that we got a clean set of data, we are going to analyze it to gain an information to drive our conclusion and recommendations. In this section we are going to do the following:\n", "- Get the average comments made on each segreted data that we created above. And decide which data to focus on.\n", "- Create a frequency table for the numbers of comments made and posts created by the hour.\n", "- Create a line graph of the folliwng:\n", " - Posts created by hour\n", " - Comments made by hour\n", " - Average comments made per posts created\n", "- Analyze the hours that has an above average comments made." ] }, { "cell_type": "code", "execution_count": 11, "id": "cc47c93b-6b03-400e-8cfa-3d10f9057951", "metadata": {}, "outputs": [], "source": [ "def total_column(dataset, index):\n", " '''\n", " Summation of the emtire column given that the data is int\n", " \n", " Parameter\n", " ---\n", " dataset: list\n", " A variable of the dataset\n", " index: int\n", " The index number of the column to be iterated\n", " Return\n", " ---\n", " Single integer value\n", " '''\n", " \n", " total = 0\n", " \n", " for row in dataset:\n", " total_column = row[index]\n", " total += total_column\n", " \n", " average = round((total / (len(dataset))),2)\n", " \n", " return total, average" ] }, { "cell_type": "code", "execution_count": 12, "id": "a213b34a-ab88-4e7b-941f-f7c382c1736e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ask_post dataset:\n", "The total number of comments is 24483 wtih the average 14.04 number of comments\n", "\n", "\n", "show_post dataset:\n", "The total number of comments is 11988 wtih the average 10.32 number of comments\n", "\n", "\n", "other_post dataset:\n", "The total number of comments is 462055 wtih the average 26.87 number of comments\n" ] } ], "source": [ "ask_posts_comments, show_posts_comments, other_posts_comments = total_column(ask_post,4), total_column(show_post,4),total_column(other_post,4)\n", "print('ask_post dataset:')\n", "print('The total number of comments is {0} wtih the average {1} number of comments'.format(ask_posts_comments[0],ask_posts_comments[1]))\n", "print('\\n')\n", "print('show_post dataset:')\n", "print('The total number of comments is {0} wtih the average {1} number of comments'.format(show_posts_comments[0],show_posts_comments[1]))\n", "print('\\n')\n", "print('other_post dataset:')\n", "print('The total number of comments is {0} wtih the average {1} number of comments'.format(other_posts_comments[0],other_posts_comments[1]))" ] }, { "cell_type": "markdown", "id": "e19afead-2a20-4bed-bebd-e2503e07d40b", "metadata": {}, "source": [ "
We can observe that on average `Ask HN` posts has a higher number of comments compared to `Show HN` posts. And other related posts have much larger number of people that commented on those posts.\n", "\n", "Since `Ask HN` posts are more likely to receive comments with an average of **14.04** comments, we'll focus our analysis just on these posts. But a further analysis about `Show HN` and other posts is recommended to be studied outside this project to further give a concrete support on our conclusion and recommendations. \n", "\n", "We will start our analysis by look at the first five rows of our `Ask HN` dataset that we segregated. And at the same time we are going to extract the number of comments and date and time created in order to show a frequency of the following:\n", "- Posts created by the hour of the day\n", "- Comments made by the hour of the day" ] }, { "cell_type": "code", "execution_count": 13, "id": "2c3cd2fb-ad52-4a7c-b638-43f510c9692e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ask HN dataset:\n", "\n", "Sample 5 no. rows\n", "\n", "['12296411', 'Ask HN: How to improve my personal website?', '', 2, 6, 'ahmedbaracat', datetime.datetime(2016, 8, 16, 9, 55)]\n", "\n", "['10610020', 'Ask HN: Am I the only one outraged by Twitter shutting down share counts?', '', 28, 29, 'tkfx', datetime.datetime(2015, 11, 22, 13, 43)]\n", "\n", "['11610310', 'Ask HN: Aby recent changes to CSS that broke mobile?', '', 1, 1, 'polskibus', datetime.datetime(2016, 5, 2, 10, 14)]\n", "\n", "['12210105', 'Ask HN: Looking for Employee #3 How do I do it?', '', 1, 3, 'sph130', datetime.datetime(2016, 8, 2, 14, 20)]\n", "\n", "['10394168', 'Ask HN: Someone offered to buy my browser extension from me. What now?', '', 28, 17, 'roykolak', datetime.datetime(2015, 10, 15, 16, 38)]\n", "\n", "Total number of columns: 7\n", "Total number of rows: 1743\n", "\n", "\n", "Extracted date and time created and number of comments by the hour\n", "\n", "Sample 3 no. rows\n", "\n", "(datetime.datetime(2016, 8, 16, 9, 55), 6)\n", "\n", "(datetime.datetime(2015, 11, 22, 13, 43), 29)\n", "\n", "(datetime.datetime(2016, 5, 2, 10, 14), 1)\n", "\n" ] } ], "source": [ "print('Ask HN dataset:')\n", "print('')\n", "explore_data(ask_post,0,5)\n", "\n", "result_list = list()\n", "\n", "for row in ask_post:\n", " result = row[6], row[4]\n", " result_list.append(result)\n", "print('\\n')\n", "print('Extracted date and time created and number of comments by the hour')\n", "print('')\n", "explore_data(result_list,0,3,rows_and_columns = False)" ] }, { "cell_type": "markdown", "id": "eecde0e5-b4b2-46c7-9547-06dbee14244f", "metadata": {}, "source": [ "Now that we have a list of tuples containing the attributes `created_at` and `num_comments` we are going to create the frequency table for both of these attributes. The frequency tables will take in the hour per day in a 24 hour format as a key and posts created and comments made on those hour as the values.\n", "\n", "So we will have two frequency table:\n", "1. Hour of the day by the number of posts created\n", "2. Hour of the day by the number of comments made" ] }, { "cell_type": "code", "execution_count": 14, "id": "ec00cf62-4f0e-41d2-9658-f152b78337b2", "metadata": { "tags": [] }, "outputs": [], "source": [ "counts_by_hour = dict()\n", "comments_by_hour = dict()\n", "\n", "for row in result_list:\n", " hour = row[0].time().hour\n", " counts_by_hour[hour] = counts_by_hour.get(hour, 0)+1\n", " if hour not in comments_by_hour:\n", " comments_by_hour[hour] = row[1]\n", " elif hour in comments_by_hour:\n", " comments_by_hour[hour] += row[1]" ] }, { "cell_type": "code", "execution_count": 15, "id": "436f6756-6c6f-46ed-92b9-7f7d2e1ee67e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of posts created by the hour of the day:\n", "Hour:Number of posts\n", "{9: 45, 13: 85, 10: 59, 14: 107, 16: 108, 23: 68, 12: 73, 17: 100, 15: 116, 21: 109, 20: 80, 2: 58, 18: 109, 3: 54, 5: 46, 19: 110, 1: 60, 22: 71, 8: 48, 4: 47, 0: 55, 6: 44, 7: 34, 11: 58}\n", "\n", "\n", "Number of comments made by the hour of the day:\n", "Hour:Number of comments\n", "{9: 251, 13: 1253, 10: 793, 14: 1416, 16: 1814, 23: 543, 12: 687, 17: 1146, 15: 4477, 21: 1745, 20: 1722, 2: 1381, 18: 1439, 3: 421, 5: 464, 19: 1188, 1: 683, 22: 479, 8: 492, 4: 337, 0: 447, 6: 397, 7: 267, 11: 641}\n" ] } ], "source": [ "print('Number of posts created by the hour of the day:')\n", "print('Hour:Number of posts')\n", "print(counts_by_hour)\n", "print('\\n')\n", "print('Number of comments made by the hour of the day:')\n", "print('Hour:Number of comments')\n", "print(comments_by_hour)" ] }, { "cell_type": "markdown", "id": "da023216-75b3-4667-9daa-a4b51994ed8a", "metadata": {}, "source": [ "Now, getting an insight on this frequency table is very confusing. A much better way of representing these numbers is by using a `line graph`. It is easier to derive a meaning from a line graph rather than looking at these numbers. In the below graphs, we are going to show the relationship of the hour of the day by the number of comments made and posts created." ] }, { "cell_type": "code", "execution_count": 16, "id": "bf7b3c18-7b4d-4068-872a-64a627c12d95", "metadata": {}, "outputs": [], "source": [ "# Since we are using a 24 hour time. We will create a list consisting of the values in our time. The purpose of this list is to label our x-axis which is the `hour` in our dataset.\n", "hours_24 = [hour for hour in range(24)]" ] }, { "cell_type": "markdown", "id": "646ffdce-8e7a-485d-8340-bec4a474b1b1", "metadata": {}, "source": [ "#### Posts created by hour" ] }, { "cell_type": "code", "execution_count": 17, "id": "d475accb-1841-4e60-8dcf-cf2886963cec", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = sorted(counts_by_hour.items(), key=lambda x: x[0])\n", "plt.plot(*zip(*x))\n", "plt.xlabel(\"Hour\")\n", "plt.ylabel(\"Number of posts\")\n", "plt.title('Posts created by hour')\n", "plt.xticks(hours_24[::2])\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "166248ca-0614-4ffd-b8bd-0a21dc96eabe", "metadata": {}, "source": [ "As we can see there is a spike of posts being created by the afternoon up to the evening. We can see `three` peaks in our line graph, which all of them are in the afternoon and evening." ] }, { "cell_type": "markdown", "id": "c1c0a120-97e2-4392-bd15-ad29991a7d21", "metadata": {}, "source": [ "#### Comments made by hour" ] }, { "cell_type": "code", "execution_count": 18, "id": "eff6b49f-a22c-4e80-a8a6-838777f87840", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "y=sorted(comments_by_hour.items(), key=lambda x: x[0])\n", "plt.plot(*zip(*y))\n", "plt.xlabel(\"Hour\")\n", "plt.ylabel(\"Number of comments\")\n", "plt.title('Comments by hour')\n", "plt.xticks(hours_24[::2])\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "90cd36f3-660b-40f8-b47d-3930d2fd6c4f", "metadata": {}, "source": [ "We can observe from the line graph above that there is a higher surge of comments being made by `15:00` or `3:00 PM`. And a lot less throughout the day.\n", "
\n", "\n", "Now that we have an insight on posts created and comments made by the hour. We are going to look at the average number of comments per posts by the hour. Following below, we are going to create a list of lists of the average comments per posts by the hour. Since we have already sorted out our dataset above, we can directly iterate on our two list two create the list of lists." ] }, { "cell_type": "code", "execution_count": 19, "id": "5b3cb2db-fdcc-4c46-82cb-f94597e25428", "metadata": {}, "outputs": [], "source": [ "average_per_hour = list()\n", "for i in range(24):\n", " posts = x[i][1] # Since we have a tupple of (hour,posts) we are going to extract the value by specifying the index [1]\n", " comments = y[i][1] # Since we have a tupple of (hour,comments) we are going to extract the value by specifying the index [1]\n", " average = round((comments/posts),2)\n", " average_by_hour = i, average\n", " average_per_hour.append(average_by_hour)" ] }, { "cell_type": "markdown", "id": "04c376cd-1ccc-4f0f-a97b-d521e7c8b9a5", "metadata": {}, "source": [ "#### Average comments made per posts created" ] }, { "cell_type": "code", "execution_count": 20, "id": "b74163ce-a493-46ad-bd6a-e7f103b5fa42", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(*zip(*average_per_hour))\n", "plt.xlabel(\"Hour\")\n", "plt.ylabel(\"Number of comments\")\n", "plt.title('Average comments per posts')\n", "plt.xticks(hours_24[::2])\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "cfb0e61b-6398-4f6d-8479-4ca09f6f60d4", "metadata": {}, "source": [ "As expected there is a spike of comments made per posts created on `13:00` or `3:00PM` but we can also observe that there is are peaks that happened on the morning and the evening. Remember that `Ask HN` data has an [**average 14.04 number of comments**](#average). So we can say that the times around `02:00` or `2:00 AM`, `13:00` or `3:00PM` and `20:00` or `8:00PM` are all above average." ] }, { "cell_type": "code", "execution_count": 21, "id": "4ad609e7-fac9-454b-ba7e-0bbfc5478634", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "15:00: Average of 38.59 number of comments\n", "02:00: Average of 23.81 number of comments\n", "20:00: Average of 21.52 number of comments\n", "16:00: Average of 16.8 number of comments\n", "21:00: Average of 16.01 number of comments\n", "13:00: Average of 14.74 number of comments\n" ] } ], "source": [ "sorted(average_per_hour, key=lambda x: x[1],reverse = True)\n", "\n", "above_average_hours = list()\n", "for hours in range(24):\n", " if average_per_hour[hours][1] > ask_posts_comments[1]:\n", " avg_per_hour = average_per_hour[hours][1]\n", " hours = average_per_hour[hours][0]\n", " total_avg = hours,avg_per_hour\n", " above_average_hours.append(total_avg)\n", " \n", "top_above_avg_hours = sorted(above_average_hours,key = lambda x:x[1], reverse = True)\n", "\n", "for hours in top_above_avg_hours:\n", " time = dt.time(hours[0])\n", " formatted_time = time.strftime('%H:%M')\n", " print('{0}: Average of {1} number of comments'.format(formatted_time,hours[1]))" ] }, { "cell_type": "markdown", "id": "0540784d-f09d-4826-a951-993ef8605c78", "metadata": {}, "source": [ "We can see that the hours that has an above average of comments made per posts created corresponds with the [results of our line graph above](#line_graph)." ] }, { "cell_type": "markdown", "id": "1df7a0d7-d427-40ed-967b-fc7a073bc6e0", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "1bc8fea1-8f53-4c63-b0ff-7f5c0c523e46", "metadata": {}, "source": [ "# Conclusion and Recommendations" ] }, { "cell_type": "markdown", "id": "c5a0de73-0981-48c8-a975-f14fff08d9d8", "metadata": {}, "source": [ "From the information that we extracted from our results, we can the **peak times** below where a user who created a posts are more likely to receive a comment:\n", "1. 15:00 or 3:00 PM\n", "2. 02:00 or 2:00 AM\n", "3. 20:00 or 8:00 PM\n", "4. 16:00 or 4:00 PM\n", "5. 21:00 or 9:00 PM\n", "6. 13:00 or 1:00 PM\n", "\n", "**Note**: These timings are in **Eastern Time in the US**. \n", "\n", "The following times below are in `Qatar Timezone (GMT +3)`\n", "\n", "1. 22:00 or 10:00 PM\n", "2. 09:00 or 9:00 AM\n", "3. 02:00 or 2:00 AM\n", "4. 23:00 or 11:00 PM\n", "5. 04:00 or 4:00 AM\n", "6. 20:00 or 8:00 PM\n", "\n", "And the following times below are in `Philippines Timezone (GMT +8)`\n", "\n", "1. 03:00 or 3:00 AM\n", "2. 14:00 or 2:00 PM\n", "3. 07:00 or 7:00 AM\n", "4. 04:00 or 4:00 AM\n", "5. 09:00 or 9:00 AM\n", "6. 13:00 or 1:00 AM\n", "\n", "Even though these times **exceeds the average number of comments by posts created** we have to remember that we have only identified the times where it is more *more likely* to receive a comment on a topic relating to `Ask HN` posts. But *we cannot guarantee* that we will receive a comment for posting on these times.\n", "\n", "Though due to the **high number of active people** on these times, we recommend to posT the `Ask HN` related posts by these hours." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.5" } }, "nbformat": 4, "nbformat_minor": 5 }