Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
261 lines (260 sloc) 44.3 KB
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Loading dependecies\n"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"import aylien_news_api\n",
"from aylien_news_api.rest import ApiException\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import sys\n",
"import datetime\n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Global script configs"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# start and end of period\n",
"start = \"NOW-300DAY\"\n",
"end = \"NOW\"\n",
"# summarize key. possible values = day, week, month\n",
"summarize = \"week\"\n",
"# count of parts to split each bucket (for weighted average)\n",
"weight_steps = 4\n",
"# AYLIEN News API keys\n",
"aylien_news_api.configuration.api_key['X-AYLIEN-NewsAPI-Application-ID'] = ''\n",
"aylien_news_api.configuration.api_key['X-AYLIEN-NewsAPI-Application-Key'] = ''"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Main() { ... }"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"fetching data...\n",
"skipping... Tuesday at 9\n",
"skipping... Wednesday at 9\n",
"skipping... Thursday at 9\n",
"skipping... Friday at 9\n",
"skipping... Saturday at 9\n",
"skipping... Sunday at 9\n",
"skipping... Tuesday at 9\n",
"skipping... Wednesday at 9\n",
"skipping... Thursday at 9\n",
"skipping... Friday at 9\n",
"skipping... Saturday at 9\n",
"skipping... Sunday at 9\n",
"score array: [29, 0, 0, 11]\n",
"score array: [29, 0, 0, 11]\n",
"score array: [29, 0, 0, 11]\n",
"score array: [28, 0, 1, 11]\n",
"score array: [28, 0, 0, 12]\n",
"score array: [28, 0, 0, 12]\n",
"score array: [28, 0, 0, 12]\n"
]
},
{
"data": {
"image/png": "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\nfzm2/K9UoXtfAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1093fec50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"if (summarize == \"month\"):\n",
" period = \"+1DAY\"\n",
" chunks = 30\n",
"elif (summarize == \"week\"):\n",
" period = \"+1DAY\"\n",
" chunks = 7\n",
"elif (summarize == \"day\"):\n",
" period = \"+1HOUR\"\n",
" chunks = 24\n",
"else:\n",
" print('Invalid summarize value')\n",
" sys.exit(0)\n",
"\n",
"api_instance = aylien_news_api.DefaultApi()\n",
"\n",
"try: \n",
" print('fetching data...')\n",
" \n",
" # List time series\n",
" api_response = api_instance.list_time_series(published_at_start = start, \n",
" published_at_end = end, \n",
" period = period)\n",
" \n",
" data = api_response.time_series\n",
" chunk = [0] * chunks\n",
" tmp_chunk = [0] * chunks\n",
" history_tmp_chunks = []\n",
" i = 0\n",
" i_total = 0\n",
" skip = True\n",
" \n",
" for d in data:\n",
" # EST timezone\n",
" d.published_at = d.published_at - datetime.timedelta(hours=+5)\n",
" \n",
" # we should start adding values when we are on the first member of our series\n",
" # e.g. if the summarize is weekly, we should start adding values on Monday\n",
" # e.g. if the summzrize is daily, we should start adding values when it's 00:00\n",
" if (summarize == \"week\" and d.published_at.strftime(\"%A\") == 'Monday'):\n",
" skip = False\n",
" elif (summarize == \"day\" and \n",
" d.published_at.hour == 0):\n",
" skip = False\n",
" elif (summarize == \"month\" and d.published_at.day == 1):\n",
" skip = False\n",
" \n",
" \n",
" # also, we should skip adding values if don't have enough members left to add (based on chunk size)\n",
" if (data.index(d) + chunks > len(data)):\n",
" skip = True\n",
" \n",
" if skip:\n",
" print('skipping...', d.published_at.strftime('%A'), 'at ' + str(d.published_at.hour))\n",
" continue\n",
" \n",
" if (i == chunks):\n",
" plt.plot(tmp_chunk, color='gray', alpha=0.3)\n",
" i = 0\n",
" i_total += 1\n",
" history_tmp_chunks.append(tmp_chunk[:])\n",
" \n",
" \n",
" chunk[i] += d.count\n",
" tmp_chunk[i] = d.count\n",
" \n",
" i += 1\n",
" \n",
" weighted_col = []\n",
" # calculating the weight\n",
" for w in range(chunks):\n",
" col = np.array(history_tmp_chunks)[:, w]\n",
" col_min, col_max = min(col), max(col)\n",
" step_val = (col_max - col_min) / weight_steps\n",
" \n",
" # because the col_min is only the first element of steps\n",
" steps = [col_min]\n",
" \n",
" # the score of each step\n",
" steps_score = [0] * weight_steps\n",
" \n",
" # preparing the `steps` array \n",
" for step in range(weight_steps):\n",
" steps.append(steps[-1] + step_val)\n",
" \n",
" for i in range(len(col)):\n",
" for j in range(len(steps)):\n",
" \n",
" if j == 0:\n",
" continue\n",
" \n",
" if steps[j - 1] <= col[i] < steps[j]:\n",
" steps_score[j - 1] += 1\n",
" \n",
" weighted_col_tmp = []\n",
" weighted_col_sum = []\n",
" for i in range(len(col)):\n",
" for j in range(len(steps)):\n",
" \n",
" if steps[j - 1] <= col[i] < steps[j]:\n",
" weighted_col_tmp.append(col[i] * steps_score[j - 1])\n",
" weighted_col_sum.append(steps_score[j - 1])\n",
"\n",
" weighted_col.append(np.sum(weighted_col_tmp) / np.sum(weighted_col_sum))\n",
" \n",
" print('score array:', steps_score)\n",
" \n",
" \n",
" weighted, = plt.plot(weighted_col, label='Weighted')\n",
" \n",
" j = 0\n",
" for c in chunk:\n",
" if (chunk[j] != 0):\n",
" chunk[j] = c / i_total\n",
" \n",
" j += 1\n",
" \n",
" no_weight, = plt.plot(chunk, label='No weight')\n",
" \n",
" plt.legend(handles=[no_weight, weighted])\n",
"\n",
" \n",
"except ApiException as e:\n",
" print(\"Exception when calling DefaultApi->list_time_series: %s\\n\" % e)\n"
]
}
],
"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.4.3"
},
"widgets": {
"state": {},
"version": "1.1.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}