├── .ipynb_checkpoints └── PythonWorkshop_solutions-checkpoint.ipynb ├── Homework_PythonWorkshop.ipynb ├── PythonWorkshop.ipynb ├── PythonWorkshop_solutions.ipynb ├── README.md ├── ReadMore.md ├── data ├── ALUR.csv ├── CAUR.csv ├── FLUR.csv ├── JuliusCaesar.txt ├── JuliusCaesar.txt.1 ├── JuliusCaesar2.txt ├── NYUR.csv ├── TNUR.csv ├── TXUR.csv ├── stopwords.pkl └── us-states.json ├── images ├── Logo_Univ_AI_Blue_Rectangle.png ├── unemploy.jpg └── unemploy.png └── slides.pdf /Homework_PythonWorkshop.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "kernelspec": { 4 | "display_name": "ml1-arm64", 5 | "language": "python", 6 | "name": "ml1-arm64" 7 | }, 8 | "language_info": { 9 | "codemirror_mode": { 10 | "name": "ipython", 11 | "version": 3 12 | }, 13 | "file_extension": ".py", 14 | "mimetype": "text/x-python", 15 | "name": "python", 16 | "nbconvert_exporter": "python", 17 | "pygments_lexer": "ipython3", 18 | "version": "3.9.1" 19 | } 20 | }, 21 | "nbformat": 4, 22 | "nbformat_minor": 4, 23 | "cells": [ 24 | { 25 | "cell_type": "markdown", 26 | "metadata": {}, 27 | "source": [ 28 | "# Homework for the Python Basics Workshop" 29 | ] 30 | }, 31 | { 32 | "cell_type": "markdown", 33 | "metadata": {}, 34 | "source": [ 35 | "Ok, so we delivered on our promise of making you capable of writing non-trivial python programs. Now, you can become even more dangerous by learning how to read text files directly, and then how to parse these text files and calculate statistics on the words inside of them. We're going to expose you to files and strings and ask you to do some data analysis using them." 36 | ] 37 | }, 38 | { 39 | "cell_type": "markdown", 40 | "metadata": { 41 | "id": "zk7aypXSoCOJ" 42 | }, 43 | "source": [ 44 | "### Files\n", 45 | "\n", 46 | "The built-in `open()` function is a **constructor** that creates a Python file object, which serves as a link to a file residing on your machine. After calling 'open()', data can be transferred to and from the associated file by calling the returned file object's **methods**.\n", 47 | "\n", 48 | "At this point, you can read data from the file as a whole (`.read()`, or n bytes at a time, `.read(n`). You can read a line at a time with `.readline()`, and all the lines into a list of strings with `.readlines()`. Or simply treat the file like a list and iterate through it: you will get line by line. Similar methods exist for writing.\n", 49 | "\n", 50 | "You must close the file `.close()` after you finish using it.\n", 51 | "\n", 52 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/filemethods.png)" 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": {}, 58 | "source": [ 59 | "The next line is to fetch data into Colab. You can safely ignore it." 60 | ] 61 | }, 62 | { 63 | "cell_type": "code", 64 | "execution_count": 3, 65 | "metadata": {}, 66 | "outputs": [], 67 | "source": [ 68 | "mkdir -p data; pushd data; wget https://raw.githubusercontent.com/univai-ghf/ghfmedia/main/data/JuliusCaesar.txt; popd" 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": 4, 74 | "metadata": {}, 75 | "outputs": [], 76 | "source": [ 77 | "fd = open(\"data/JuliusCaesar.txt\")\n", 78 | "thecontents = fd.read()\n", 79 | "fd.close()\n", 80 | "type(thecontents)" 81 | ] 82 | }, 83 | { 84 | "cell_type": "markdown", 85 | "metadata": {}, 86 | "source": [ 87 | "The text read in from a file is a **string** of characters. Gere are the first 200" 88 | ] 89 | }, 90 | { 91 | "cell_type": "code", 92 | "execution_count": 5, 93 | "metadata": {}, 94 | "outputs": [], 95 | "source": [ 96 | "thecontents[0:200]" 97 | ] 98 | }, 99 | { 100 | "cell_type": "markdown", 101 | "metadata": {}, 102 | "source": [ 103 | "### Strings\n", 104 | "\n", 105 | "Strings are objects which behave like lists, but just like lists, also have methods defined on them." 106 | ] 107 | }, 108 | { 109 | "cell_type": "code", 110 | "execution_count": 6, 111 | "metadata": {}, 112 | "outputs": [], 113 | "source": [ 114 | "# a long string in python split over multiple lines\n", 115 | "alongstring = \"\"\"\n", 116 | "Hello World\n", 117 | "Hello My Friends\n", 118 | "\"\"\"" 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": 7, 124 | "metadata": {}, 125 | "outputs": [], 126 | "source": [ 127 | "# a string is listy\n", 128 | "for character in alongstring:\n", 129 | " print(character, end=\":\")" 130 | ] 131 | }, 132 | { 133 | "cell_type": "code", 134 | "execution_count": 8, 135 | "metadata": {}, 136 | "outputs": [], 137 | "source": [ 138 | "# how did I find the arguments to print out?\n", 139 | "?print" 140 | ] 141 | }, 142 | { 143 | "cell_type": "markdown", 144 | "metadata": {}, 145 | "source": [ 146 | "Here's a method that splits the string on whitespace (including newlines, tabs, and spaces)" 147 | ] 148 | }, 149 | { 150 | "cell_type": "code", 151 | "execution_count": 9, 152 | "metadata": {}, 153 | "outputs": [], 154 | "source": [ 155 | "alongstring.split()" 156 | ] 157 | }, 158 | { 159 | "cell_type": "markdown", 160 | "metadata": {}, 161 | "source": [ 162 | "### Files are like lists" 163 | ] 164 | }, 165 | { 166 | "cell_type": "code", 167 | "execution_count": 10, 168 | "metadata": { 169 | "colab": { 170 | "base_uri": "https://localhost:8080/" 171 | }, 172 | "id": "3K2UQWeqoA60", 173 | "outputId": "2a3897fb-6638-4c8c-b931-6099345e5a45" 174 | }, 175 | "outputs": [], 176 | "source": [ 177 | "fd = open(\"data/JuliusCaesar.txt\")\n", 178 | "counter = 0\n", 179 | "for line in fd:\n", 180 | " if counter < 10: # print first 10 lines, there are lots!\n", 181 | " print(\"<<\", line, \">>\")\n", 182 | " counter = counter + 1 # also writeable as counter += 1\n", 183 | "fd.close()" 184 | ] 185 | }, 186 | { 187 | "cell_type": "markdown", 188 | "metadata": { 189 | "id": "tzPQVSS5oytQ" 190 | }, 191 | "source": [ 192 | "Notice that the newlines remain. You can use the string method `strip` on `line` to remove them. " 193 | ] 194 | }, 195 | { 196 | "cell_type": "code", 197 | "execution_count": 11, 198 | "metadata": { 199 | "colab": { 200 | "base_uri": "https://localhost:8080/" 201 | }, 202 | "id": "GCi3pOLaoo2p", 203 | "outputId": "416bf6f3-4754-4e08-a9f4-7968ff5079a8" 204 | }, 205 | "outputs": [], 206 | "source": [ 207 | "fd = open(\"data/JuliusCaesar.txt\")\n", 208 | "counter = 0\n", 209 | "for line in fd:\n", 210 | " if counter < 10: # print first 10 lines\n", 211 | " print(\"<<\", line.strip(), \">>\")\n", 212 | " else:\n", 213 | " break # break out of for loop\n", 214 | " counter = counter + 1 # also writeable as counter += 1\n", 215 | "fd.close()\n", 216 | "print(counter)" 217 | ] 218 | }, 219 | { 220 | "cell_type": "markdown", 221 | "metadata": { 222 | "id": "rzdMCkOBpMFx" 223 | }, 224 | "source": [ 225 | "### What about writing?\n", 226 | "\n", 227 | "We may want to modify or process files, and then write them out. For this we must use the `open` constructor with an additional argument, which signifies that we are in a writing mode." 228 | ] 229 | }, 230 | { 231 | "cell_type": "code", 232 | "execution_count": 12, 233 | "metadata": { 234 | "colab": { 235 | "base_uri": "https://localhost:8080/" 236 | }, 237 | "id": "o9smIsSapKSy", 238 | "outputId": "6f1a0432-ee67-4064-dc9f-a8b086c6ce51" 239 | }, 240 | "outputs": [], 241 | "source": [ 242 | "fd2 = open(\"data/JuliusCaesar2.txt\", \"w\")\n", 243 | "fd2.write(thecontents)\n", 244 | "fd2.close()" 245 | ] 246 | }, 247 | { 248 | "cell_type": "markdown", 249 | "metadata": {}, 250 | "source": [ 251 | "## Finally the homework QUESTION" 252 | ] 253 | }, 254 | { 255 | "cell_type": "markdown", 256 | "metadata": {}, 257 | "source": [ 258 | "1. Read Julius Caesar. \n", 259 | "2. Get each line. \n", 260 | "3. Remove newline characters from each line. \n", 261 | "4. Split the line to get the words from the line (use the split method on strings). \n", 262 | "5. Lowercase them (use the `lower` method on strings).\n", 263 | "6. Now let us make a histogram that has the counts of all the words in the play except for words which are in `stop_words` list provided below. This list contains a most common words in the english language like 'and', 'the', 'i', 'we'. \n", 264 | "7. Your output is a dictionary `worddict` which will store these counts as values, with the words as keys." 265 | ] 266 | }, 267 | { 268 | "cell_type": "code", 269 | "execution_count": null, 270 | "metadata": {}, 271 | "outputs": [], 272 | "source": [ 273 | "mkdir -p data; pushd data; wget https://raw.githubusercontent.com/univai-ghf/ghfmedia/main/data/stopwords.pkl; popd" 274 | ] 275 | }, 276 | { 277 | "cell_type": "code", 278 | "execution_count": 20, 279 | "metadata": { 280 | "scrolled": true 281 | }, 282 | "outputs": [], 283 | "source": [ 284 | "# pickle library serializes and de-serializes a \n", 285 | "# Python object structure.\n", 286 | "# In simple words it can be used to save python \n", 287 | "# objects(almost everything in python is an object)\n", 288 | "import pickle\n", 289 | "fd = open('data/stopwords.pkl','rb') # binary read\n", 290 | "stop_words=pickle.load(fd)\n", 291 | "fd.close()\n", 292 | "\n", 293 | "#display the first 20 elements in the list\n", 294 | "stop_words[:20]" 295 | ] 296 | }, 297 | { 298 | "cell_type": "code", 299 | "execution_count": 15, 300 | "metadata": {}, 301 | "outputs": [], 302 | "source": [ 303 | "# your code here\n" 304 | ] 305 | }, 306 | { 307 | "cell_type": "markdown", 308 | "metadata": {}, 309 | "source": [ 310 | "We sort the worddict, using the function worddict.get to provide the values, which are the counts. We print the top 20 counts" 311 | ] 312 | }, 313 | { 314 | "cell_type": "code", 315 | "execution_count": 16, 316 | "metadata": {}, 317 | "outputs": [], 318 | "source": [ 319 | "topwords = sorted(worddict, key = worddict.get, reverse=True)\n", 320 | "top20 = topwords[:20]\n", 321 | "for word in top20:\n", 322 | " print(word, worddict[word])" 323 | ] 324 | }, 325 | { 326 | "cell_type": "markdown", 327 | "metadata": {}, 328 | "source": [ 329 | "Now we use matplotlib to plot a horizontal bar chart for these top 20" 330 | ] 331 | }, 332 | { 333 | "cell_type": "code", 334 | "execution_count": 18, 335 | "metadata": {}, 336 | "outputs": [], 337 | "source": [ 338 | "# various imports of libraries\n", 339 | "\n", 340 | "import numpy as np\n", 341 | "import matplotlib.pyplot as plt\n", 342 | "\n", 343 | "# ask matplotlib to plot in notebooks\n", 344 | "%matplotlib inline\n", 345 | "fig, ax = plt.subplots(figsize=(9, 7))\n", 346 | "pos = range(len(top20))\n", 347 | "ax.barh(pos, [worddict[word] for word in top20],\n", 348 | " align='center',\n", 349 | " tick_label=top20)\n", 350 | "ax.set_title('Most frequent words in THE TRAGEDY OF JULIUS CAESAR')\n", 351 | "plt.show()" 352 | ] 353 | } 354 | ] 355 | } -------------------------------------------------------------------------------- /PythonWorkshop.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "kernelspec": { 4 | "display_name": "ml1-arm64", 5 | "name": "ml1-arm64", 6 | "language": "python" 7 | }, 8 | "toc-autonumbering": false, 9 | "language_info": { 10 | "mimetype": "text/x-python", 11 | "nbconvert_exporter": "python", 12 | "name": "python", 13 | "file_extension": ".py", 14 | "version": "3.9.1", 15 | "pygments_lexer": "ipython3", 16 | "codemirror_mode": { 17 | "version": 3, 18 | "name": "ipython" 19 | } 20 | }, 21 | "toc-showmarkdowntxt": false, 22 | "toc-showtags": false 23 | }, 24 | "nbformat": 4, 25 | "nbformat_minor": 4, 26 | "cells": [ 27 | { 28 | "source": [ 29 | "# Basic Python for Data Science\n", 30 | "\n", 31 | "A quickstart Python workshop..." 32 | ], 33 | "cell_type": "markdown", 34 | "metadata": {} 35 | }, 36 | { 37 | "source": [ 38 | "## 0. What you will learn\n", 39 | "\n", 40 | "Our aim in this workshop is to make you familiar with the basics of Python, focusing on those aspects that will jump-start your ability to write data-science programs. \n", 41 | "\n", 42 | "In other words, we want to make you **dangerous enough** soon :-).\n", 43 | "\n", 44 | "Accordingly, we will cover fundamental python concepts including variables, lists, dictionaries, iteration, and functions; moving on to useful list like objects such as Pandas Series and numpy `ndarray`s, and their use in analyzing and making plots of data.\n", 45 | "\n", 46 | "Here is the outline:\n", 47 | "\n", 48 | "1. Getting Started\n", 49 | "2. Libraries and Functions\n", 50 | "3. Dictionaries\n", 51 | "4. Listiness\n", 52 | "5. Plotting with matplotlib\n", 53 | "6. Putting it all together\n", 54 | "\n", 55 | "We will end up with the code shown below, which leads to a plot of unemployment rates in multiple American states. This example exercises all basic python concepts for data science..if you understand it you are golden! \n", 56 | "\n", 57 | "Finally, a homework problem will help cement your understanding, and make you even more dangerous!\n", 58 | "\n", 59 | "Here is what the unemployment data looks like:" 60 | ], 61 | "cell_type": "markdown", 62 | "metadata": {} 63 | }, 64 | { 65 | "source": [ 66 | "\n", 67 | "```\n", 68 | "DATE,FLUR\n", 69 | "1976-01-01,9.7\n", 70 | "1976-02-01,9.7\n", 71 | "1976-03-01,9.6\n", 72 | "1976-04-01,9.5\n", 73 | "1976-05-01,9.3\n", 74 | "1976-06-01,9.2\n", 75 | "1976-07-01,9.1\n", 76 | "1976-08-01,9.1\n", 77 | "1976-09-01,9.1\n", 78 | "1976-10-01,9.1\n", 79 | "1976-11-01,9.1\n", 80 | "1976-12-01,9.1\n", 81 | "1977-01-01,9.0\n", 82 | "```\n", 83 | "\n", 84 | "...And here is the code..." 85 | ], 86 | "cell_type": "markdown", 87 | "metadata": {} 88 | }, 89 | { 90 | "execution_count": 1, 91 | "cell_type": "code", 92 | "source": [ 93 | "# various imports of libraries\n", 94 | "\n", 95 | "import numpy as np\n", 96 | "import pandas as pd\n", 97 | "import matplotlib.pyplot as plt\n", 98 | "\n", 99 | "# ask matplotlib to plot in notebooks\n", 100 | "%matplotlib inline\n", 101 | "\n", 102 | "# setting up plot sizes\n", 103 | "width_inches = 9\n", 104 | "subplot_height_inches = 2\n", 105 | "\n", 106 | "# where is our data?\n", 107 | "baseurl = \"https://raw.githubusercontent.com/univai-ghf/ghfmedia/main/\"\n", 108 | "\n", 109 | "# defining a function to load and clean unemployment data\n", 110 | "def get_unemployment_data(state_abbrev):\n", 111 | " # fetch and read csv file into a dataframe\n", 112 | " data = pd.read_csv(baseurl+\"data/\"+state_abbrev+\"UR.csv\")\n", 113 | " # convert date to a python datetime object\n", 114 | " data['DATE'] = pd.to_datetime(data['DATE'])\n", 115 | " return data\n", 116 | "\n", 117 | "# creating a dictionary the hold the data, with\n", 118 | "# the lookup keys being the state abbreviations\n", 119 | "states = ['AL', 'TN', 'TX', 'NY', 'CA']\n", 120 | "state_data=dict()\n", 121 | "for abbrev in states:\n", 122 | " state_data[abbrev] = get_unemployment_data(abbrev)\n", 123 | " \n", 124 | "# plotting the data \n", 125 | "\n", 126 | "# create as many subplots as we have states\n", 127 | "fig, ax = plt.subplots(nrows=len(states), \n", 128 | " figsize = (width_inches, subplot_height_inches*len(states)))\n", 129 | "\n", 130 | "counter = 0\n", 131 | "for state_abbrev in states:\n", 132 | " # get daraframe from dictionary\n", 133 | " data = state_data[state_abbrev]\n", 134 | " # plot the data\n", 135 | " ax[counter].plot(data['DATE'], data[state_abbrev+'UR'])\n", 136 | " # label which state it is\n", 137 | " ax[counter].set_ylabel(state_abbrev)\n", 138 | " counter = counter + 1\n", 139 | "# Year label only below last subplot\n", 140 | "ax[4].set_xlabel(\"Year\")\n", 141 | "\n", 142 | "# title only on first subplot\n", 143 | "ax[0].set_title(\"Percentage Un-employment\");" 144 | ], 145 | "outputs": [], 146 | "metadata": {} 147 | }, 148 | { 149 | "source": [ 150 | "## 1. Getting Started\n", 151 | "\n", 152 | "Lets start at the very beginning. You can use Python as a calculator. Lets do some arithmetic in Python." 153 | ], 154 | "cell_type": "markdown", 155 | "metadata": { 156 | "id": "4A7IZqAlgwIH" 157 | } 158 | }, 159 | { 160 | "source": [ 161 | "### Arithmetic Operators" 162 | ], 163 | "cell_type": "markdown", 164 | "metadata": { 165 | "id": "4A7IZqAlgwIH" 166 | } 167 | }, 168 | { 169 | "source": [ 170 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/calculator.png)" 171 | ], 172 | "cell_type": "markdown", 173 | "metadata": { 174 | "id": "F0rZHyfEgc20" 175 | } 176 | }, 177 | { 178 | "execution_count": 2, 179 | "cell_type": "code", 180 | "source": [ 181 | "1 + 1" 182 | ], 183 | "outputs": [], 184 | "metadata": { 185 | "outputId": "4d2b00bf-b5c1-4160-a7e0-10deced5bd2b", 186 | "id": "siqC1BNaggkD", 187 | "colab": { 188 | "base_uri": "https://localhost:8080/" 189 | } 190 | } 191 | }, 192 | { 193 | "execution_count": 3, 194 | "cell_type": "code", 195 | "source": [ 196 | "2**10 # 2 to the power of 10" 197 | ], 198 | "outputs": [], 199 | "metadata": { 200 | "outputId": "0fc197c2-e463-4d11-f213-c68f8a323c7f", 201 | "id": "WWns1uqOhH-L", 202 | "colab": { 203 | "base_uri": "https://localhost:8080/" 204 | } 205 | } 206 | }, 207 | { 208 | "execution_count": 4, 209 | "cell_type": "code", 210 | "source": [ 211 | "5/2" 212 | ], 213 | "outputs": [], 214 | "metadata": { 215 | "outputId": "9776ff9d-d782-4733-c6ec-84a687532b7b", 216 | "id": "_9OTo_JWhKZx", 217 | "colab": { 218 | "base_uri": "https://localhost:8080/" 219 | } 220 | } 221 | }, 222 | { 223 | "execution_count": 5, 224 | "cell_type": "code", 225 | "source": [ 226 | "5//2 # integer division" 227 | ], 228 | "outputs": [], 229 | "metadata": { 230 | "outputId": "0077e001-d8d0-4388-8e8c-4c9b98b1c3c4", 231 | "id": "yyOpHZluhLrN", 232 | "colab": { 233 | "base_uri": "https://localhost:8080/" 234 | } 235 | } 236 | }, 237 | { 238 | "execution_count": 6, 239 | "cell_type": "code", 240 | "source": [ 241 | "5 % 2 # get the remainder" 242 | ], 243 | "outputs": [], 244 | "metadata": {} 245 | }, 246 | { 247 | "source": [ 248 | "### Variables\n", 249 | "\n", 250 | "Variables are labels for values\n", 251 | "\n", 252 | "- Start with a letter or underscore\n", 253 | "- Can contain only alpha-numeric characters and underscore\n", 254 | "- Are case sensitive" 255 | ], 256 | "cell_type": "markdown", 257 | "metadata": { 258 | "id": "hIubnDszhNCF" 259 | } 260 | }, 261 | { 262 | "execution_count": 7, 263 | "cell_type": "code", 264 | "source": [ 265 | "Var = \"hello\" # CANT DO THIS 9variable = \"hello\"\n", 266 | "Var" 267 | ], 268 | "outputs": [], 269 | "metadata": { 270 | "outputId": "1d1d9075-a487-451a-cd4a-c62d5e072a35", 271 | "id": "RvjT6_VchV9A", 272 | "colab": { 273 | "base_uri": "https://localhost:8080/" 274 | } 275 | } 276 | }, 277 | { 278 | "source": [ 279 | "What happened above? In the computer's memory, a location was found, and then filled with the word \"hello\". Then a variable Var was created and was used to label this memory location.\n", 280 | "\n", 281 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/labelmem.jpg)\n", 282 | "\n", 283 | "A variable is literally a label. You can think of it as a post-it, or sticky note, or a pointer. Do not think of it as a box in which a value is stored.\n", 284 | "\n" 285 | ], 286 | "cell_type": "markdown", 287 | "metadata": { 288 | "id": "znklPOb_hxSJ" 289 | } 290 | }, 291 | { 292 | "source": [ 293 | "### Types\n", 294 | "\n", 295 | "Python is a **typed** language. That is, values in Python have types. The most general type is `Object`. But there are more specific ones, and you can define your own.\n", 296 | "\n", 297 | "Variables can point to values of different types. See below:" 298 | ], 299 | "cell_type": "markdown", 300 | "metadata": { 301 | "id": "znklPOb_hxSJ" 302 | } 303 | }, 304 | { 305 | "execution_count": 8, 306 | "cell_type": "code", 307 | "source": [ 308 | "var_integer = 7\n", 309 | "print (\"INTEGER\", var_integer, type(var_integer))\n", 310 | "var_float = 7.01\n", 311 | "print (\"FLOAT\", var_float, type(var_float))\n", 312 | "var_string = \"Hello World!\"\n", 313 | "print (\"STRING\", var_string, type(var_string))\n", 314 | "var_boolean = True\n", 315 | "print (\"BOOLEAN\", var_boolean, type(var_boolean))" 316 | ], 317 | "outputs": [], 318 | "metadata": { 319 | "outputId": "d24f0df9-abde-415d-bfb4-1992f2bf6e64", 320 | "id": "40Uwt7THhsy1", 321 | "colab": { 322 | "base_uri": "https://localhost:8080/" 323 | } 324 | } 325 | }, 326 | { 327 | "source": [ 328 | "Python, as you might expect, also has the concept of a list:" 329 | ], 330 | "cell_type": "markdown", 331 | "metadata": {} 332 | }, 333 | { 334 | "execution_count": 9, 335 | "cell_type": "code", 336 | "source": [ 337 | "mylist = [1, 2, 3, 4, 5, 6, 7, 8]\n", 338 | "type(mylist)" 339 | ], 340 | "outputs": [], 341 | "metadata": {} 342 | }, 343 | { 344 | "execution_count": 10, 345 | "cell_type": "code", 346 | "source": [ 347 | "for item in mylist:\n", 348 | " print(item, type(item))" 349 | ], 350 | "outputs": [], 351 | "metadata": {} 352 | }, 353 | { 354 | "source": [ 355 | "Notice the indentation: python dispenses with brackets and uses a colon and indentation (here 4 spaces) to denote that the `print` statement runs in the context of our list.\n", 356 | "\n", 357 | "You can also get the length of the list:" 358 | ], 359 | "cell_type": "markdown", 360 | "metadata": {} 361 | }, 362 | { 363 | "execution_count": 11, 364 | "cell_type": "code", 365 | "source": [ 366 | "len(mylist)" 367 | ], 368 | "outputs": [], 369 | "metadata": {} 370 | }, 371 | { 372 | "source": [ 373 | "### Back to our example\n", 374 | "\n", 375 | "Now we can see that the code right at the beginning of our example set us up with some integer variables that specified the size of some plots we want to create:" 376 | ], 377 | "cell_type": "markdown", 378 | "metadata": {} 379 | }, 380 | { 381 | "execution_count": 12, 382 | "cell_type": "code", 383 | "source": [ 384 | "width_inches = 9\n", 385 | "subplot_height_inches = 2\n", 386 | "baseurl = \"https://raw.githubusercontent.com/univai-ghf/ghfmedia/main/\"" 387 | ], 388 | "outputs": [], 389 | "metadata": {} 390 | }, 391 | { 392 | "source": [ 393 | "The `baseurl` simply sets up a path to our data files. We use remote data files (which are supported by Pandas) here since Google Colab does not have good support for files." 394 | ], 395 | "cell_type": "markdown", 396 | "metadata": {} 397 | }, 398 | { 399 | "source": [ 400 | "### Comparisons\n", 401 | "\n", 402 | "Python has comparison operators, which can be used to make decisions:" 403 | ], 404 | "cell_type": "markdown", 405 | "metadata": { 406 | "id": "nrjc0oIHizIv" 407 | } 408 | }, 409 | { 410 | "source": [ 411 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/condslide.png)" 412 | ], 413 | "cell_type": "markdown", 414 | "metadata": {} 415 | }, 416 | { 417 | "execution_count": 13, 418 | "cell_type": "code", 419 | "source": [ 420 | "a = \"hgi\"\n", 421 | "b = \"hello\"\n", 422 | "c = \"hi\"\n", 423 | "d = \"hello\"\n", 424 | "print (a==c)\n", 425 | "print (b==d)\n", 426 | "var1 = 5\n", 427 | "var2 = 3\n", 428 | "print (var1 < var2)" 429 | ], 430 | "outputs": [], 431 | "metadata": { 432 | "outputId": "f2acfd80-3053-4c2a-820b-cb04377821c8", 433 | "id": "H7alzW88igui", 434 | "colab": { 435 | "base_uri": "https://localhost:8080/" 436 | } 437 | } 438 | }, 439 | { 440 | "source": [ 441 | "The first comparison compares the contents of the memory for a and c and finds that both are different, giving us False. Conversely, the second comparison gives us True. We can utilize such comparisons in \"decision statements\". The third is a numerical comparison. The fact that these comparisons give us a boolean value can be used in the decision-making:" 442 | ], 443 | "cell_type": "markdown", 444 | "metadata": { 445 | "id": "IrYxzwOJjDAU" 446 | } 447 | }, 448 | { 449 | "execution_count": 14, 450 | "cell_type": "code", 451 | "source": [ 452 | "var1 = 5\n", 453 | "var2 = 10\n", 454 | "\n", 455 | "if (var1 == var2):\n", 456 | " print(\"The values are equal\")\n", 457 | "elif (var1 < var2):\n", 458 | " print(\"First variable is lesser than the second variable\") \n", 459 | "else:\n", 460 | " print(\"Second variable is lesser than the first variable\")" 461 | ], 462 | "outputs": [], 463 | "metadata": { 464 | "outputId": "1f7f74e8-ce71-4b12-aad0-3df2e616d2ad", 465 | "id": "kS9VtABSjUiE", 466 | "colab": { 467 | "base_uri": "https://localhost:8080/" 468 | } 469 | } 470 | }, 471 | { 472 | "source": [ 473 | "Notice again how python dispenses with brackets, replacing them by a colon and an indented next line. The indentation tells us that the code below runs when the condition holds. Python uses this colon-indentation for many things, such as in for loops for iteration, for conditionals, for function and class definition, etc.\n", 474 | "\n", 475 | "Indeed you can nest conditionals inside iteration, with this colon-indentation syntax, to make very readable and usable code!" 476 | ], 477 | "cell_type": "markdown", 478 | "metadata": { 479 | "id": "8rvW-j1QjYtU" 480 | } 481 | }, 482 | { 483 | "execution_count": 15, 484 | "cell_type": "code", 485 | "source": [ 486 | "mylist = [1, 2, 3, 4, 5, 6, 7, 8]\n", 487 | "for ele in mylist:\n", 488 | " if ele % 2 == 0: #even numbers only\n", 489 | " print(ele)" 490 | ], 491 | "outputs": [], 492 | "metadata": { 493 | "outputId": "25f213e2-2e1a-40a7-d639-20070c9f6b09", 494 | "id": "qEPSTJTqnX90", 495 | "colab": { 496 | "base_uri": "https://localhost:8080/" 497 | } 498 | } 499 | }, 500 | { 501 | "source": [ 502 | "## A: EXERCISES\n", 503 | "\n", 504 | "\n", 505 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/2.png)" 506 | ], 507 | "cell_type": "markdown", 508 | "metadata": {} 509 | }, 510 | { 511 | "source": [ 512 | "## 2. Libraries and Functions\n", 513 | "\n", 514 | "If all python did was to provide a calculator with variables that would not be very ineresting. We want to have access to pre-made **libraries** of functionality!" 515 | ], 516 | "cell_type": "markdown", 517 | "metadata": { 518 | "id": "927rJoinjjun" 519 | } 520 | }, 521 | { 522 | "source": [ 523 | "### Libraries\n", 524 | "\n", 525 | "At the beginning of this notebook we defined some strange looking symbols:" 526 | ], 527 | "cell_type": "markdown", 528 | "metadata": { 529 | "id": "927rJoinjjun" 530 | } 531 | }, 532 | { 533 | "execution_count": 16, 534 | "cell_type": "code", 535 | "source": [ 536 | "import numpy as np\n", 537 | "import pandas as pd\n", 538 | "import matplotlib.pyplot as plt" 539 | ], 540 | "outputs": [], 541 | "metadata": {} 542 | }, 543 | { 544 | "source": [ 545 | "These are **imports** of **libraries** in the python ecosystem. They are also called **modules**. Having to write all of our code ourselves is no fun! Whats the whole point if we cant use code others have written for us?\n", 546 | "\n", 547 | "These imports allow us to use existing libraries. More precisely they allow us to use functions defined by others in these libraries. \n", 548 | "\n", 549 | "For example, we can say:\n", 550 | "\n", 551 | "```python\n", 552 | "import pandas\n", 553 | "df = pandas.read_csv(\"somefile.csv\") # Use a function from the library\n", 554 | "```\n", 555 | "\n", 556 | "or use `as` to provide a short form for the library name:\n", 557 | "```python\n", 558 | "import pandas as pd\n", 559 | "df = pd.read_csv(\"somefile.csv\")\n", 560 | "```\n", 561 | "\n", 562 | "But what IS a function, exactly?" 563 | ], 564 | "cell_type": "markdown", 565 | "metadata": {} 566 | }, 567 | { 568 | "source": [ 569 | "Combine with `if` to filter out some elements:" 570 | ], 571 | "cell_type": "markdown", 572 | "metadata": {} 573 | }, 574 | { 575 | "source": [ 576 | "### Functions\n", 577 | "\n", 578 | "A function is an **encapsulated** set of statements that take input, do some specific computation and produce output.\n", 579 | "\n", 580 | "There are many ways to define functions:\n", 581 | "\n", 582 | "- Functions can be built-in to python\n", 583 | "- Functions can imported from an existing Python Library, including libraries you have installed\n", 584 | "- A function can be user defined\n", 585 | "- A function can be anonymous\n", 586 | "- functions can belong to objects. These functions are called **methods**.\n", 587 | "\n", 588 | "Properties of functions:\n", 589 | "\n", 590 | "- A function can be called from other functions\n", 591 | "- Can return data, or even other functions\n", 592 | "\n", 593 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/runfuncs.png)" 594 | ], 595 | "cell_type": "markdown", 596 | "metadata": { 597 | "id": "927rJoinjjun" 598 | } 599 | }, 600 | { 601 | "execution_count": 17, 602 | "cell_type": "code", 603 | "source": [ 604 | "# Built-in functions\n", 605 | "\n", 606 | "var1 = -15\n", 607 | "abs(var1)" 608 | ], 609 | "outputs": [], 610 | "metadata": { 611 | "outputId": "a0b84532-1f20-4f78-a419-1c786ad95183", 612 | "id": "zKtATFxFkJ4m", 613 | "colab": { 614 | "base_uri": "https://localhost:8080/" 615 | } 616 | } 617 | }, 618 | { 619 | "source": [ 620 | "Here are the two different ways of importing a function from a module." 621 | ], 622 | "cell_type": "markdown", 623 | "metadata": { 624 | "id": "B92MLiNpkSou" 625 | } 626 | }, 627 | { 628 | "execution_count": 18, 629 | "cell_type": "code", 630 | "source": [ 631 | "import os\n", 632 | "os.cpu_count()" 633 | ], 634 | "outputs": [], 635 | "metadata": { 636 | "outputId": "577bf8c0-ab3e-45fb-aee5-2cebd0813d40", 637 | "id": "UgFRAMpmkWPh", 638 | "colab": { 639 | "base_uri": "https://localhost:8080/" 640 | } 641 | } 642 | }, 643 | { 644 | "source": [ 645 | "The special `from` syntax allows us to import just one function:" 646 | ], 647 | "cell_type": "markdown", 648 | "metadata": {} 649 | }, 650 | { 651 | "execution_count": 19, 652 | "cell_type": "code", 653 | "source": [ 654 | "from math import sqrt\n", 655 | "sqrt(4)" 656 | ], 657 | "outputs": [], 658 | "metadata": { 659 | "outputId": "4915c52c-e590-4ca8-ef4b-cf1361277e75", 660 | "id": "x6RN4wQBkQIB", 661 | "colab": { 662 | "base_uri": "https://localhost:8080/" 663 | } 664 | } 665 | }, 666 | { 667 | "source": [ 668 | "Functions are not the only thing we can import: pre-defined variables representing constants or other objects (like a database connection) may be imported as well.\n", 669 | "\n", 670 | "```python\n", 671 | "import math\n", 672 | "print(math.pi)\n", 673 | "```\n", 674 | "\n", 675 | "One can even import a single variable from a library, using the `from` syntax:" 676 | ], 677 | "cell_type": "markdown", 678 | "metadata": {} 679 | }, 680 | { 681 | "execution_count": 20, 682 | "cell_type": "code", 683 | "source": [ 684 | "from math import pi" 685 | ], 686 | "outputs": [], 687 | "metadata": {} 688 | }, 689 | { 690 | "source": [ 691 | "Now let us **define our own function**:" 692 | ], 693 | "cell_type": "markdown", 694 | "metadata": {} 695 | }, 696 | { 697 | "execution_count": 21, 698 | "cell_type": "code", 699 | "source": [ 700 | "def circle_area(radius):\n", 701 | " area = pi*radius*radius\n", 702 | " return area\n", 703 | "circle_area(10)" 704 | ], 705 | "outputs": [], 706 | "metadata": {} 707 | }, 708 | { 709 | "source": [ 710 | "Notice the **indentation** of the function body, just as we did with conditional blocks...." 711 | ], 712 | "cell_type": "markdown", 713 | "metadata": {} 714 | }, 715 | { 716 | "source": [ 717 | "One can define **anonymous functions** and assign them to variables:" 718 | ], 719 | "cell_type": "markdown", 720 | "metadata": {} 721 | }, 722 | { 723 | "execution_count": 22, 724 | "cell_type": "code", 725 | "source": [ 726 | "from math import sqrt\n", 727 | "hypot = lambda x, y: sqrt(x*x + y*y) # imported from math\n", 728 | "hypot(3,4)" 729 | ], 730 | "outputs": [], 731 | "metadata": {} 732 | }, 733 | { 734 | "source": [ 735 | "In data science these are often used to define one-line math functions..." 736 | ], 737 | "cell_type": "markdown", 738 | "metadata": {} 739 | }, 740 | { 741 | "source": [ 742 | "### Back to our example" 743 | ], 744 | "cell_type": "markdown", 745 | "metadata": {} 746 | }, 747 | { 748 | "source": [ 749 | "At this point the following code should broadly make sense to you. We import the libraries we need, set up some variables, and define a function" 750 | ], 751 | "cell_type": "markdown", 752 | "metadata": {} 753 | }, 754 | { 755 | "execution_count": 23, 756 | "cell_type": "code", 757 | "source": [ 758 | "import numpy as np\n", 759 | "import pandas as pd\n", 760 | "import matplotlib.pyplot as plt\n", 761 | "%matplotlib inline" 762 | ], 763 | "outputs": [], 764 | "metadata": {} 765 | }, 766 | { 767 | "execution_count": 24, 768 | "cell_type": "code", 769 | "source": [ 770 | "width_inches = 9\n", 771 | "subplot_height_inches = 2\n", 772 | "baseurl = \"https://raw.githubusercontent.com/univai-ghf/ghfmedia/main/\"" 773 | ], 774 | "outputs": [], 775 | "metadata": {} 776 | }, 777 | { 778 | "execution_count": 25, 779 | "cell_type": "code", 780 | "source": [ 781 | "def get_unemployment_data(state_abbrev):\n", 782 | " data = pd.read_csv(baseurl+\"data/\"+state_abbrev+\"UR.csv\")\n", 783 | " data['DATE'] = pd.to_datetime(data['DATE'])\n", 784 | " return data" 785 | ], 786 | "outputs": [], 787 | "metadata": {} 788 | }, 789 | { 790 | "source": [ 791 | "What is going on inside the function? It loads some data from a csv, does something with a date and returns some data...let us break it down.\n", 792 | "\n", 793 | "Let us focus on the string inside the `pd.read_csv` call and what is inside it first:\n", 794 | "\n", 795 | "`state_abbrev` is provided as an argument to `get_unemployment_data` and we use it in the string. Lets simulate this outside of the function to understand:" 796 | ], 797 | "cell_type": "markdown", 798 | "metadata": {} 799 | }, 800 | { 801 | "execution_count": 26, 802 | "cell_type": "code", 803 | "source": [ 804 | "state_abbrev = 'CA'\n", 805 | "baseurl+\"data/\"+state_abbrev+\"UR.csv\"" 806 | ], 807 | "outputs": [], 808 | "metadata": {} 809 | }, 810 | { 811 | "source": [ 812 | "So, the addition operator on strings simply concatenates them together. " 813 | ], 814 | "cell_type": "markdown", 815 | "metadata": {} 816 | }, 817 | { 818 | "source": [ 819 | "### Constructors, Methods and Instance variables" 820 | ], 821 | "cell_type": "markdown", 822 | "metadata": {} 823 | }, 824 | { 825 | "source": [ 826 | "Ok, now to read in the data. The `pd.read_csv` function is a **constructor function** that creates a Pandas **dataframe object** from a CSV file. The file can be at a remote url. A dataframe object is like a spreadsheet in memory:" 827 | ], 828 | "cell_type": "markdown", 829 | "metadata": {} 830 | }, 831 | { 832 | "execution_count": 27, 833 | "cell_type": "code", 834 | "source": [ 835 | "data = pd.read_csv(baseurl+\"data/\"+state_abbrev+\"UR.csv\")\n", 836 | "type(data)" 837 | ], 838 | "outputs": [], 839 | "metadata": {} 840 | }, 841 | { 842 | "source": [ 843 | "Now, various functions can be carried out on this dataframe. Functions that belong to objects are called **methods**. The `.head` method on dataframes shows us the first 5 rows of this spreadsheet, the column names, and row ids." 844 | ], 845 | "cell_type": "markdown", 846 | "metadata": {} 847 | }, 848 | { 849 | "execution_count": 28, 850 | "cell_type": "code", 851 | "source": [ 852 | "data.head()" 853 | ], 854 | "outputs": [], 855 | "metadata": {} 856 | }, 857 | { 858 | "source": [ 859 | "*lists* also have a list constructor and an append method to add things into them" 860 | ], 861 | "cell_type": "markdown", 862 | "metadata": {} 863 | }, 864 | { 865 | "execution_count": 29, 866 | "cell_type": "code", 867 | "source": [ 868 | "alist = list() # or [], the square brackets invoke the list constructor\n", 869 | "alist.append(5.6)\n", 870 | "alist" 871 | ], 872 | "outputs": [], 873 | "metadata": {} 874 | }, 875 | { 876 | "source": [ 877 | "Objects can have **properties**, or **attributes**, also called **instance variables**, because they belong to an instance of the object. For example, if I want to know all the column types in a given dataframe object, I can use the `.dtypes` instance variable" 878 | ], 879 | "cell_type": "markdown", 880 | "metadata": {} 881 | }, 882 | { 883 | "execution_count": 30, 884 | "cell_type": "code", 885 | "source": [ 886 | "data.dtypes" 887 | ], 888 | "outputs": [], 889 | "metadata": {} 890 | }, 891 | { 892 | "source": [ 893 | "What is in the column? This is an interesting syntax, to be read as \"the `DATE` in the `data`\":" 894 | ], 895 | "cell_type": "markdown", 896 | "metadata": {} 897 | }, 898 | { 899 | "execution_count": 31, 900 | "cell_type": "code", 901 | "source": [ 902 | "data['DATE']" 903 | ], 904 | "outputs": [], 905 | "metadata": {} 906 | }, 907 | { 908 | "execution_count": 29, 909 | "cell_type": "code", 910 | "source": [ 911 | "type(data['DATE'])" 912 | ], 913 | "outputs": [], 914 | "metadata": {} 915 | }, 916 | { 917 | "source": [ 918 | "Its a Pandas Series: a series of dates to be precise, of length 550." 919 | ], 920 | "cell_type": "markdown", 921 | "metadata": {} 922 | }, 923 | { 924 | "source": [ 925 | "Notice that the `DATE` column has the generic `object` type. " 926 | ], 927 | "cell_type": "markdown", 928 | "metadata": {} 929 | }, 930 | { 931 | "execution_count": 32, 932 | "cell_type": "code", 933 | "source": [ 934 | "data.dtypes" 935 | ], 936 | "outputs": [], 937 | "metadata": {} 938 | }, 939 | { 940 | "source": [ 941 | "We really want a date. It turns out that a function defined in the pandas library can do this conversion for us:" 942 | ], 943 | "cell_type": "markdown", 944 | "metadata": {} 945 | }, 946 | { 947 | "execution_count": 31, 948 | "cell_type": "code", 949 | "source": [ 950 | "data['DATE'] = pd.to_datetime(data['DATE'])\n", 951 | "data.dtypes" 952 | ], 953 | "outputs": [], 954 | "metadata": {} 955 | }, 956 | { 957 | "source": [ 958 | "Note that I re-assigned the output of `pd.to_datetime` to `data['DATE']`. In other words I labeled a new piece of memory with the old post-it. What happened to the original piece of memory with the old series? Its been abandoned, and python will free its memory...this is called **garbage collection**.\n", 959 | "\n", 960 | "Reading in the data into a dataframe and then making a change to the `DATE` column is exactly what the function `get_unemployment_data` does:\n", 961 | "\n", 962 | "```python\n", 963 | "def get_unemployment_data(state_abbrev):\n", 964 | " data = pd.read_csv(baseurl+\"data/\"+state_abbrev+\"UR.csv\")\n", 965 | " data['DATE'] = pd.to_datetime(df['DATE'])\n", 966 | " return data\n", 967 | "```" 968 | ], 969 | "cell_type": "markdown", 970 | "metadata": {} 971 | }, 972 | { 973 | "source": [ 974 | "## B. CODING BREAKOUT\n", 975 | "\n", 976 | "Here is a list of x-values, the deviations from the mean temperature of a mechanical device. The corresponding y-values are failures. Plotted, they look like this:\n", 977 | "\n", 978 | "![](images/failures.png)" 979 | ], 980 | "cell_type": "markdown", 981 | "metadata": {} 982 | }, 983 | { 984 | "execution_count": 30, 985 | "cell_type": "code", 986 | "source": [ 987 | "xvals = [-2.022945287808054, -1.8486091760122103, -1.8476481826866842, -1.7435854332654428, \n", 988 | " -1.5282423673888716, -1.3945778557109074, -1.1403979924220742, -0.8009077275459544,\n", 989 | " -0.7108560219444477, -0.5638678812593274, -0.43048994749879754, -0.4265240230310121,\n", 990 | " -0.23456806947264375, -0.08933017942095312, 0.04091978204507629, 0.5542534388866378,\n", 991 | " 0.5558786314354511, 0.8006640938973202, 1.2144534202678483, 1.9118026057089639]\n", 992 | "y = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1]" 993 | ], 994 | "outputs": [], 995 | "metadata": {} 996 | }, 997 | { 998 | "source": [ 999 | "Future you has run a logistic regression model and come up with the following parameters called slope and intercept:" 1000 | ], 1001 | "cell_type": "markdown", 1002 | "metadata": {} 1003 | }, 1004 | { 1005 | "execution_count": 31, 1006 | "cell_type": "code", 1007 | "source": [ 1008 | "slope, intercept = (9.812037170985635, 5.175316482607568) " 1009 | ], 1010 | "outputs": [], 1011 | "metadata": {} 1012 | }, 1013 | { 1014 | "source": [ 1015 | "This syntax is called the destructuring of another kind of list, called a tuple.\n", 1016 | "\n", 1017 | "1. Implement an anonymous or other function to calculate the probability of failure $p(x)$:\n", 1018 | "\n", 1019 | "$$p(x) = \\frac{1}{1+e^{-(b + m x)}}$$\n", 1020 | "\n", 1021 | "where $m$ is the slope and $b$ is the intercept. Use the function you defined to create an array `probs` of the probability of failures at the 20 temperatures above" 1022 | ], 1023 | "cell_type": "markdown", 1024 | "metadata": {} 1025 | }, 1026 | { 1027 | "execution_count": 32, 1028 | "cell_type": "code", 1029 | "source": [ 1030 | "# your code here\n" 1031 | ], 1032 | "outputs": [], 1033 | "metadata": {} 1034 | }, 1035 | { 1036 | "source": [ 1037 | "2. Use these probabilities to make classifications at each of these 20 x-values in a new list `classi`. A data point is classified as a failure if the probability of failure $p(x)$ is greater than or equal to the probability of not failing (which is $1 - p(x)$. Compare these to the $y$ values in the data set to report the fraction of correctly classified failures (an element in `classi` is equal to the corresponding element in $y$) from the model. (you will need to create a counter which you increment to track the total number of correctly classified data points." 1038 | ], 1039 | "cell_type": "markdown", 1040 | "metadata": {} 1041 | }, 1042 | { 1043 | "execution_count": 33, 1044 | "cell_type": "code", 1045 | "source": [ 1046 | "# your code here\n" 1047 | ], 1048 | "outputs": [], 1049 | "metadata": {} 1050 | }, 1051 | { 1052 | "source": [ 1053 | "## 3. Dictionaries" 1054 | ], 1055 | "cell_type": "markdown", 1056 | "metadata": { 1057 | "id": "2ScIB5ykqc5M" 1058 | } 1059 | }, 1060 | { 1061 | "source": [ 1062 | "This `data['DATE']` syntax says: look up whats in the dataframe `data` under the **key** `DATE`. Give us that column. The key is like a word in a dictionary: you look up a word and get its meaning...here you look up the key and get the data associated with it.\n", 1063 | "\n", 1064 | "Why is it like this?\n", 1065 | "\n", 1066 | "It is because python has a **data structure** called a **dictionary**. The creators of Pandas wanted a dataframe to feel like a dictionary...\n", 1067 | "\n", 1068 | "Let's learn a bit about dictionaries.." 1069 | ], 1070 | "cell_type": "markdown", 1071 | "metadata": {} 1072 | }, 1073 | { 1074 | "source": [ 1075 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/dict.png)\n", 1076 | "\n", 1077 | "A dictionary is a \"bag\" of **value**s, each with its own label, called a **key**. \n", 1078 | "\n", 1079 | "A unique 'key' is associated with each 'value' . The 'key' can be any **immutable data type**: boolean, float, int, tuple, string (but it is often a string)\n", 1080 | "\n", 1081 | "Dictionaries themselves are \"Mutable\" (the values can be changed)." 1082 | ], 1083 | "cell_type": "markdown", 1084 | "metadata": { 1085 | "id": "2ScIB5ykqc5M" 1086 | } 1087 | }, 1088 | { 1089 | "source": [ 1090 | "You can create a dictionary using the `{}` notation, which is an alias for calling the constructor `dict()`." 1091 | ], 1092 | "cell_type": "markdown", 1093 | "metadata": {} 1094 | }, 1095 | { 1096 | "execution_count": 33, 1097 | "cell_type": "code", 1098 | "source": [ 1099 | "# Creating a dictionary:\n", 1100 | "# 1. Using {}\n", 1101 | "empty_dict = {} \n", 1102 | "print (type(empty_dict))\n", 1103 | "new_dict = { \"day\": 5, \"venue\": \"GJB\", \"event\": \"Python Carnival!\" }\n", 1104 | "print(new_dict)" 1105 | ], 1106 | "outputs": [], 1107 | "metadata": { 1108 | "outputId": "06fff31c-dfcc-46de-9401-94cab24e739e", 1109 | "id": "QPBdWy84qsFl", 1110 | "colab": { 1111 | "base_uri": "https://localhost:8080/" 1112 | } 1113 | } 1114 | }, 1115 | { 1116 | "execution_count": 34, 1117 | "cell_type": "code", 1118 | "source": [ 1119 | "another_empty_dict = dict()\n", 1120 | "another_empty_dict" 1121 | ], 1122 | "outputs": [], 1123 | "metadata": {} 1124 | }, 1125 | { 1126 | "source": [ 1127 | "The `dict` constructor can take arguments to initialize the dictionary:" 1128 | ], 1129 | "cell_type": "markdown", 1130 | "metadata": {} 1131 | }, 1132 | { 1133 | "execution_count": 35, 1134 | "cell_type": "code", 1135 | "source": [ 1136 | "#2. Using dict()\n", 1137 | "purse = dict(type=\"wallet\", material=\"leather\")\n", 1138 | "purse" 1139 | ], 1140 | "outputs": [], 1141 | "metadata": { 1142 | "outputId": "d7d8713d-006b-4b85-ca5f-c9cb9927fe93", 1143 | "id": "m2iT93clrDiM", 1144 | "colab": { 1145 | "base_uri": "https://localhost:8080/" 1146 | } 1147 | } 1148 | }, 1149 | { 1150 | "source": [ 1151 | "Getting and Setting values from a dictionary is easy:" 1152 | ], 1153 | "cell_type": "markdown", 1154 | "metadata": { 1155 | "id": "GzH2VuEqry-o" 1156 | } 1157 | }, 1158 | { 1159 | "execution_count": 36, 1160 | "cell_type": "code", 1161 | "source": [ 1162 | "purse['type']" 1163 | ], 1164 | "outputs": [], 1165 | "metadata": { 1166 | "outputId": "768b237d-ce69-4290-b236-d4af69251d77", 1167 | "id": "hUPBbJTgr2JY", 1168 | "colab": { 1169 | "base_uri": "https://localhost:8080/", 1170 | "height": 37 1171 | } 1172 | } 1173 | }, 1174 | { 1175 | "execution_count": 37, 1176 | "cell_type": "code", 1177 | "source": [ 1178 | "purse['make'] = \"Versace\"\n", 1179 | "purse" 1180 | ], 1181 | "outputs": [], 1182 | "metadata": { 1183 | "outputId": "2fc69c07-e80b-4760-a494-019f5f1a5f5b", 1184 | "id": "IP3h7K8prF6T", 1185 | "colab": { 1186 | "base_uri": "https://localhost:8080/" 1187 | } 1188 | } 1189 | }, 1190 | { 1191 | "source": [ 1192 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/dictmethod.png)\n" 1193 | ], 1194 | "cell_type": "markdown", 1195 | "metadata": { 1196 | "id": "bdapLUbwrgmw" 1197 | } 1198 | }, 1199 | { 1200 | "source": [ 1201 | "## C. EXERCISES\n", 1202 | "\n", 1203 | "\n", 1204 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/3.png)" 1205 | ], 1206 | "cell_type": "markdown", 1207 | "metadata": {} 1208 | }, 1209 | { 1210 | "source": [ 1211 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/4.png)" 1212 | ], 1213 | "cell_type": "markdown", 1214 | "metadata": {} 1215 | }, 1216 | { 1217 | "source": [ 1218 | "## 4. Lists and Listiness.. or behaving like a list\n", 1219 | "\n", 1220 | "Python puts great stock in the idea of having protocols or mechanisms of behavior, and identifying cases in which this behavior is common.\n", 1221 | "\n", 1222 | "One of the most important ideas is that of things that behave like a list of items.\n", 1223 | "\n", 1224 | "These include lists, strings, dictionaries, pandas series, and even files! Many other data structures in Python are made to behave like lists as well, so that their content can be iterated through, in addition to their own native behavior.\n", 1225 | "\n", 1226 | "Here is an example, a **range** object, which is an un-materialized sequence..one that is not loaded into memory (why would you not materialize a sequence? ). " 1227 | ], 1228 | "cell_type": "markdown", 1229 | "metadata": { 1230 | "id": "7mIkf6kRlvy5" 1231 | } 1232 | }, 1233 | { 1234 | "execution_count": 38, 1235 | "cell_type": "code", 1236 | "source": [ 1237 | "range(1,5)" 1238 | ], 1239 | "outputs": [], 1240 | "metadata": {} 1241 | }, 1242 | { 1243 | "execution_count": 39, 1244 | "cell_type": "code", 1245 | "source": [ 1246 | "r = range(1, 5)\n", 1247 | "type(r)" 1248 | ], 1249 | "outputs": [], 1250 | "metadata": {} 1251 | }, 1252 | { 1253 | "execution_count": 40, 1254 | "cell_type": "code", 1255 | "source": [ 1256 | "for item in r:\n", 1257 | " print(item)" 1258 | ], 1259 | "outputs": [], 1260 | "metadata": {} 1261 | }, 1262 | { 1263 | "source": [ 1264 | "### Lists, again\n", 1265 | "\n", 1266 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/lists.png)\n", 1267 | "\n", 1268 | "Here is a list our initial code created:" 1269 | ], 1270 | "cell_type": "markdown", 1271 | "metadata": { 1272 | "id": "7mIkf6kRlvy5" 1273 | } 1274 | }, 1275 | { 1276 | "execution_count": 39, 1277 | "cell_type": "code", 1278 | "source": [ 1279 | "states = ['AL', 'TN', 'TX', 'NY', 'CA']" 1280 | ], 1281 | "outputs": [], 1282 | "metadata": {} 1283 | }, 1284 | { 1285 | "source": [ 1286 | "We have seen that you can create an empty list using the `list()` constructor, and add things to it using the `append` method. " 1287 | ], 1288 | "cell_type": "markdown", 1289 | "metadata": {} 1290 | }, 1291 | { 1292 | "source": [ 1293 | "But the constructor can take arguments: a very useful one is the **range** object.. " 1294 | ], 1295 | "cell_type": "markdown", 1296 | "metadata": {} 1297 | }, 1298 | { 1299 | "execution_count": 42, 1300 | "cell_type": "code", 1301 | "source": [ 1302 | "lst = list(range(1,5))\n", 1303 | "lst" 1304 | ], 1305 | "outputs": [], 1306 | "metadata": { 1307 | "outputId": "42abc8ff-52b4-42d5-c1cf-5e8d1613ba64", 1308 | "id": "sKftKsU5mKS8", 1309 | "colab": { 1310 | "base_uri": "https://localhost:8080/" 1311 | } 1312 | } 1313 | }, 1314 | { 1315 | "source": [ 1316 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/listops.png)" 1317 | ], 1318 | "cell_type": "markdown", 1319 | "metadata": { 1320 | "id": "MLZNK3_Rmao4" 1321 | } 1322 | }, 1323 | { 1324 | "source": [ 1325 | "How would you access various elements of `lst` ? You can get the first and the last like so:" 1326 | ], 1327 | "cell_type": "markdown", 1328 | "metadata": {} 1329 | }, 1330 | { 1331 | "execution_count": 43, 1332 | "cell_type": "code", 1333 | "source": [ 1334 | "print (lst[0],lst[-1])" 1335 | ], 1336 | "outputs": [], 1337 | "metadata": { 1338 | "outputId": "42abc8ff-52b4-42d5-c1cf-5e8d1613ba64", 1339 | "id": "sKftKsU5mKS8", 1340 | "colab": { 1341 | "base_uri": "https://localhost:8080/" 1342 | } 1343 | } 1344 | }, 1345 | { 1346 | "source": [ 1347 | "Rememer Python is like buildings in India..you start at the ground or 0th floor: so `lst[0]` is the *first* item in the list. " 1348 | ], 1349 | "cell_type": "markdown", 1350 | "metadata": {} 1351 | }, 1352 | { 1353 | "source": [ 1354 | "Or a **slice** of the list as so:" 1355 | ], 1356 | "cell_type": "markdown", 1357 | "metadata": {} 1358 | }, 1359 | { 1360 | "execution_count": 44, 1361 | "cell_type": "code", 1362 | "source": [ 1363 | "lst[0:3] # from 0 upto 3, dont include whats at index 3. Can also say lst[:3], 0 is implied" 1364 | ], 1365 | "outputs": [], 1366 | "metadata": { 1367 | "outputId": "a595ce2c-d2f0-4447-f256-1ff9fda91fa1", 1368 | "id": "czQ1Vd07mhQr", 1369 | "colab": { 1370 | "base_uri": "https://localhost:8080/" 1371 | } 1372 | } 1373 | }, 1374 | { 1375 | "execution_count": 45, 1376 | "cell_type": "code", 1377 | "source": [ 1378 | "lst[-3:-1]" 1379 | ], 1380 | "outputs": [], 1381 | "metadata": { 1382 | "outputId": "ac7b93e1-276e-4e54-b60f-fa15cd9caa1a", 1383 | "id": "tXi6tdKGmkNH", 1384 | "colab": { 1385 | "base_uri": "https://localhost:8080/" 1386 | } 1387 | } 1388 | }, 1389 | { 1390 | "source": [ 1391 | "How do you know that something is in a list?" 1392 | ], 1393 | "cell_type": "markdown", 1394 | "metadata": {} 1395 | }, 1396 | { 1397 | "execution_count": 34, 1398 | "cell_type": "code", 1399 | "source": [ 1400 | "# Membership (using 'in' operator)\n", 1401 | "courses = ['PP', 'RD', 'JG']\n", 1402 | "'PP' in courses" 1403 | ], 1404 | "outputs": [], 1405 | "metadata": { 1406 | "outputId": "b06b407b-621c-4c15-9c0a-0a81c4627bf6", 1407 | "id": "S3n0bTcUmt34", 1408 | "colab": { 1409 | "base_uri": "https://localhost:8080/" 1410 | } 1411 | } 1412 | }, 1413 | { 1414 | "source": [ 1415 | "### Comprehensions\n" 1416 | ], 1417 | "cell_type": "markdown", 1418 | "metadata": { 1419 | "id": "FLKWEot9nNFZ" 1420 | } 1421 | }, 1422 | { 1423 | "source": [ 1424 | "There is a short-cut iteration syntax called a **list comprehension**, often used to construct new lists" 1425 | ], 1426 | "cell_type": "markdown", 1427 | "metadata": { 1428 | "id": "QqUiaw7Xneav" 1429 | } 1430 | }, 1431 | { 1432 | "execution_count": 48, 1433 | "cell_type": "code", 1434 | "source": [ 1435 | "num = [4, 7, 2, 6, 3, 9]" 1436 | ], 1437 | "outputs": [], 1438 | "metadata": {} 1439 | }, 1440 | { 1441 | "execution_count": 49, 1442 | "cell_type": "code", 1443 | "source": [ 1444 | "list_with_same_as_num = [e for e in num]\n", 1445 | "list_with_same_as_num" 1446 | ], 1447 | "outputs": [], 1448 | "metadata": { 1449 | "outputId": "7bad03d8-f06d-4a84-d5fc-c19aa5204e21", 1450 | "id": "uCDuB1PvncOP", 1451 | "colab": { 1452 | "base_uri": "https://localhost:8080/" 1453 | } 1454 | } 1455 | }, 1456 | { 1457 | "execution_count": 50, 1458 | "cell_type": "code", 1459 | "source": [ 1460 | "squared_list = [e*e for e in num]\n", 1461 | "squared_list" 1462 | ], 1463 | "outputs": [], 1464 | "metadata": { 1465 | "outputId": "7642798e-536a-4529-c432-34ccedb466c1", 1466 | "id": "iFlgf3MmnmN-", 1467 | "colab": { 1468 | "base_uri": "https://localhost:8080/" 1469 | } 1470 | } 1471 | }, 1472 | { 1473 | "execution_count": 51, 1474 | "cell_type": "code", 1475 | "source": [ 1476 | "list_with_evens = [e for e in num if e % 2 == 0]\n", 1477 | "list_with_evens" 1478 | ], 1479 | "outputs": [], 1480 | "metadata": { 1481 | "outputId": "a5275655-25f9-439f-dd33-b63e38dd359e", 1482 | "id": "qrTcWIwgnib-", 1483 | "colab": { 1484 | "base_uri": "https://localhost:8080/" 1485 | } 1486 | } 1487 | }, 1488 | { 1489 | "source": [ 1490 | "Python has a *ternary* expression you can use in conjunction with a comprehension to bring in the power of *else* in a succint syntax:" 1491 | ], 1492 | "cell_type": "markdown", 1493 | "metadata": {} 1494 | }, 1495 | { 1496 | "execution_count": 52, 1497 | "cell_type": "code", 1498 | "source": [ 1499 | "a = 1\n", 1500 | "b = \"good\" if a==1 else \"bad\"\n", 1501 | "b" 1502 | ], 1503 | "outputs": [], 1504 | "metadata": {} 1505 | }, 1506 | { 1507 | "execution_count": 53, 1508 | "cell_type": "code", 1509 | "source": [ 1510 | "[e if e % 2 == 0 else 5 for e in num ]" 1511 | ], 1512 | "outputs": [], 1513 | "metadata": {} 1514 | }, 1515 | { 1516 | "source": [ 1517 | "### Listiness\n", 1518 | "\n", 1519 | "How about other things that behave like lists?" 1520 | ], 1521 | "cell_type": "markdown", 1522 | "metadata": {} 1523 | }, 1524 | { 1525 | "source": [ 1526 | "Dictionaries are listy, with the iteration going the keys:" 1527 | ], 1528 | "cell_type": "markdown", 1529 | "metadata": {} 1530 | }, 1531 | { 1532 | "execution_count": 53, 1533 | "cell_type": "code", 1534 | "source": [ 1535 | "purse" 1536 | ], 1537 | "outputs": [], 1538 | "metadata": {} 1539 | }, 1540 | { 1541 | "execution_count": 54, 1542 | "cell_type": "code", 1543 | "source": [ 1544 | "for key in purse:\n", 1545 | " print(key,\":\",purse[key])" 1546 | ], 1547 | "outputs": [], 1548 | "metadata": {} 1549 | }, 1550 | { 1551 | "source": [ 1552 | "Pandas Series are listy too: (Our series of dates in `data` is big so i print only the first 10)" 1553 | ], 1554 | "cell_type": "markdown", 1555 | "metadata": {} 1556 | }, 1557 | { 1558 | "execution_count": 55, 1559 | "cell_type": "code", 1560 | "source": [ 1561 | "for date in data['DATE'][:10]:\n", 1562 | " print(date)" 1563 | ], 1564 | "outputs": [], 1565 | "metadata": {} 1566 | }, 1567 | { 1568 | "source": [ 1569 | "This brings us to another listy construct, one that is critical in datascience..." 1570 | ], 1571 | "cell_type": "markdown", 1572 | "metadata": {} 1573 | }, 1574 | { 1575 | "source": [ 1576 | "### Numpy's `ndarray`s\n", 1577 | "\n", 1578 | "Pandas Series objects are actually are thin veneers around a different list type in Python, called the `ndarray`. Unlike regular Python lists, `ndarray`s cannot have heterogeneous elements: all elements must have the same type. This means that python can optimize how these arrays are stored and accessed, which leads to faster access.\n", 1579 | "\n", 1580 | "Look:" 1581 | ], 1582 | "cell_type": "markdown", 1583 | "metadata": {} 1584 | }, 1585 | { 1586 | "execution_count": 41, 1587 | "cell_type": "code", 1588 | "source": [ 1589 | "caurvalues = data['CAUR'].values\n", 1590 | "caurvalues" 1591 | ], 1592 | "outputs": [], 1593 | "metadata": {} 1594 | }, 1595 | { 1596 | "execution_count": 42, 1597 | "cell_type": "code", 1598 | "source": [ 1599 | "type(caurvalues)" 1600 | ], 1601 | "outputs": [], 1602 | "metadata": {} 1603 | }, 1604 | { 1605 | "execution_count": 43, 1606 | "cell_type": "code", 1607 | "source": [ 1608 | "caurvalues.dtype" 1609 | ], 1610 | "outputs": [], 1611 | "metadata": {} 1612 | }, 1613 | { 1614 | "source": [ 1615 | "Here all these floating point numbers are stored next to each other in memory.\n", 1616 | "\n", 1617 | "While you can iterate over `ndarray`s, you are advised not to. This is because the `numpy` library optimizes operations over entire arrays, the so called **vectorized** operations, to be very fast. It also re-purposes standard python syntax for this..\n", 1618 | "\n", 1619 | "Dont do this:" 1620 | ], 1621 | "cell_type": "markdown", 1622 | "metadata": {} 1623 | }, 1624 | { 1625 | "execution_count": 44, 1626 | "cell_type": "code", 1627 | "source": [ 1628 | "squares = []\n", 1629 | "for element in caurvalues:\n", 1630 | " squares.append(element*element)" 1631 | ], 1632 | "outputs": [], 1633 | "metadata": {} 1634 | }, 1635 | { 1636 | "source": [ 1637 | "But rather do this:" 1638 | ], 1639 | "cell_type": "markdown", 1640 | "metadata": {} 1641 | }, 1642 | { 1643 | "execution_count": 45, 1644 | "cell_type": "code", 1645 | "source": [ 1646 | "squares = caurvalues*caurvalues " 1647 | ], 1648 | "outputs": [], 1649 | "metadata": {} 1650 | }, 1651 | { 1652 | "source": [ 1653 | "In this calculation the `*` operations work pairwise: each element of the `caurvalues` array is multiplied by itself to create the new array. Because there is no iteration and Python handles the multiplication internally, this is a fast operation. This is called a **vector operation**. Another one:" 1654 | ], 1655 | "cell_type": "markdown", 1656 | "metadata": {} 1657 | }, 1658 | { 1659 | "execution_count": 46, 1660 | "cell_type": "code", 1661 | "source": [ 1662 | "caurvalues + caurvalues" 1663 | ], 1664 | "outputs": [], 1665 | "metadata": {} 1666 | }, 1667 | { 1668 | "source": [ 1669 | "**Broadcasting** allows us to all kinds of nice things with numpy arrays:" 1670 | ], 1671 | "cell_type": "markdown", 1672 | "metadata": {} 1673 | }, 1674 | { 1675 | "execution_count": 47, 1676 | "cell_type": "code", 1677 | "source": [ 1678 | "caurvalues + 5" 1679 | ], 1680 | "outputs": [], 1681 | "metadata": {} 1682 | }, 1683 | { 1684 | "source": [ 1685 | "Remember how we said that instead of explicit iteration, you should use built-in numpy functions? For example, the `numpy` library also gives us access to some simple statistics for these unemployment rates:" 1686 | ], 1687 | "cell_type": "markdown", 1688 | "metadata": {} 1689 | }, 1690 | { 1691 | "execution_count": 48, 1692 | "cell_type": "code", 1693 | "source": [ 1694 | "np.mean(caurvalues)" 1695 | ], 1696 | "outputs": [], 1697 | "metadata": {} 1698 | }, 1699 | { 1700 | "execution_count": 49, 1701 | "cell_type": "code", 1702 | "source": [ 1703 | "np.median(caurvalues)" 1704 | ], 1705 | "outputs": [], 1706 | "metadata": {} 1707 | }, 1708 | { 1709 | "execution_count": 50, 1710 | "cell_type": "code", 1711 | "source": [ 1712 | "np.std(caurvalues)" 1713 | ], 1714 | "outputs": [], 1715 | "metadata": {} 1716 | }, 1717 | { 1718 | "source": [ 1719 | "There are many other ways of creating numpy arrays. You will learn these in time." 1720 | ], 1721 | "cell_type": "markdown", 1722 | "metadata": {} 1723 | }, 1724 | { 1725 | "execution_count": 51, 1726 | "cell_type": "code", 1727 | "source": [ 1728 | "my_array = np.array([1, 2, 3, 4])\n", 1729 | "my_array" 1730 | ], 1731 | "outputs": [], 1732 | "metadata": {} 1733 | }, 1734 | { 1735 | "source": [ 1736 | "### Back to our example" 1737 | ], 1738 | "cell_type": "markdown", 1739 | "metadata": {} 1740 | }, 1741 | { 1742 | "source": [ 1743 | "We now create an empty dictionary `state_data` to hold all our data. Then we iterate over our states, reading the CSV file for each state and putting the resultant Pandas Dataframes as the value corresponding to the state abbreviation key in the dictionary" 1744 | ], 1745 | "cell_type": "markdown", 1746 | "metadata": {} 1747 | }, 1748 | { 1749 | "execution_count": 52, 1750 | "cell_type": "code", 1751 | "source": [ 1752 | "states = ['AL', 'TN', 'TX', 'NY', 'CA']\n", 1753 | "state_data=dict()\n", 1754 | "for abbrev in states:\n", 1755 | " state_data[abbrev] = get_unemployment_data(abbrev)" 1756 | ], 1757 | "outputs": [], 1758 | "metadata": {} 1759 | }, 1760 | { 1761 | "execution_count": 53, 1762 | "cell_type": "code", 1763 | "source": [ 1764 | "state_data" 1765 | ], 1766 | "outputs": [], 1767 | "metadata": {} 1768 | }, 1769 | { 1770 | "source": [ 1771 | "## D. EXERCISES" 1772 | ], 1773 | "cell_type": "markdown", 1774 | "metadata": {} 1775 | }, 1776 | { 1777 | "source": [ 1778 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/5.png)" 1779 | ], 1780 | "cell_type": "markdown", 1781 | "metadata": {} 1782 | }, 1783 | { 1784 | "source": [ 1785 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/6.png)" 1786 | ], 1787 | "cell_type": "markdown", 1788 | "metadata": {} 1789 | }, 1790 | { 1791 | "source": [ 1792 | "## 5. Plotting using the library `matplotlib`\n", 1793 | "\n", 1794 | "The standard plotting library in python is `matplotlib`, which is a very powerful plotting library. Let us see how to plot the time series of unemployment numbers from California.\n", 1795 | "\n", 1796 | "We first import the library and instruct it to plot \"inline\" in the Jupyter notebook." 1797 | ], 1798 | "cell_type": "markdown", 1799 | "metadata": {} 1800 | }, 1801 | { 1802 | "execution_count": 54, 1803 | "cell_type": "code", 1804 | "source": [ 1805 | "import matplotlib.pyplot as plt\n", 1806 | "%matplotlib inline" 1807 | ], 1808 | "outputs": [], 1809 | "metadata": {} 1810 | }, 1811 | { 1812 | "source": [ 1813 | "We first create a figure, and axes associated with this figure using the figure constructor. The relationship of the axes to the figure can be seen in this diagram from Brandon Rohrer's excellent free matplotlib course at https://end-to-end-machine-learning.teachable.com/p/navigating-matplotlib-tutorial-how-to/ .\n", 1814 | "\n", 1815 | "For us though, the main thing to know is that figures hold axes, and axes hold lines. This plot from the above course illustrates this well:\n", 1816 | "\n", 1817 | "![](https://github.com/univai-ghf/ghfmedia/raw/main/images/figax.png)" 1818 | ], 1819 | "cell_type": "markdown", 1820 | "metadata": {} 1821 | }, 1822 | { 1823 | "source": [ 1824 | "The `subplots` constructor, in the `matplotlib.pyplot` module, returns us BOTH these objects:" 1825 | ], 1826 | "cell_type": "markdown", 1827 | "metadata": {} 1828 | }, 1829 | { 1830 | "execution_count": 55, 1831 | "cell_type": "code", 1832 | "source": [ 1833 | "fig, ax = plt.subplots(figsize = (9,6))" 1834 | ], 1835 | "outputs": [], 1836 | "metadata": {} 1837 | }, 1838 | { 1839 | "execution_count": 56, 1840 | "cell_type": "code", 1841 | "source": [ 1842 | "type(fig)" 1843 | ], 1844 | "outputs": [], 1845 | "metadata": {} 1846 | }, 1847 | { 1848 | "execution_count": 57, 1849 | "cell_type": "code", 1850 | "source": [ 1851 | "type(ax)" 1852 | ], 1853 | "outputs": [], 1854 | "metadata": {} 1855 | }, 1856 | { 1857 | "source": [ 1858 | "The axes object has a method `plot` defined on it. \n", 1859 | "\n", 1860 | "It takes as its first argument something listy for the x-axis..a list, or a numpy `ndarray`, or a Pandas Series. \n", 1861 | "\n", 1862 | "The second argument represents the y-data, also something listy. So, for example:" 1863 | ], 1864 | "cell_type": "markdown", 1865 | "metadata": {} 1866 | }, 1867 | { 1868 | "execution_count": 58, 1869 | "cell_type": "code", 1870 | "source": [ 1871 | "fig, ax = plt.subplots(figsize = (9,6))\n", 1872 | "ax.plot(data['DATE'], data['CAUR'])" 1873 | ], 1874 | "outputs": [], 1875 | "metadata": {} 1876 | }, 1877 | { 1878 | "source": [ 1879 | "We'll use some other methods on the axes object to create a nicely labeled plot:" 1880 | ], 1881 | "cell_type": "markdown", 1882 | "metadata": {} 1883 | }, 1884 | { 1885 | "execution_count": 59, 1886 | "cell_type": "code", 1887 | "source": [ 1888 | "fig, ax = plt.subplots(figsize = (9,6))\n", 1889 | "ax.plot(data['DATE'], data['CAUR'])\n", 1890 | "ax.set_xlabel(\"Year\")\n", 1891 | "ax.set_ylabel(\"Percentage\")\n", 1892 | "ax.set_title(\"State of California Un-employment\");" 1893 | ], 1894 | "outputs": [], 1895 | "metadata": {} 1896 | }, 1897 | { 1898 | "source": [ 1899 | "## E. CODING BREAKOUT\n", 1900 | "\n", 1901 | "Here is a dictionary with the percentage of double vaccinated (against Covid-19) people in the population in 50 US States." 1902 | ], 1903 | "cell_type": "markdown", 1904 | "metadata": {} 1905 | }, 1906 | { 1907 | "execution_count": 60, 1908 | "cell_type": "code", 1909 | "source": [ 1910 | "vaxdict = {'Alaska': 52.3,\n", 1911 | " 'Alabama': 45.6,\n", 1912 | " 'Arkansas': 48.9,\n", 1913 | " 'Arizona': 54.2,\n", 1914 | " 'California': 63.3,\n", 1915 | " 'Colorado': 63.3,\n", 1916 | " 'Connecticut': 71.0,\n", 1917 | " 'Delaware': 60.7,\n", 1918 | " 'Florida': 59.1,\n", 1919 | " 'Georgia': 49.2,\n", 1920 | " 'Hawaii': 60.8,\n", 1921 | " 'Iowa': 55.8,\n", 1922 | " 'Idaho': 43.2,\n", 1923 | " 'Illinois': 61.5,\n", 1924 | " 'Indiana': 49.4,\n", 1925 | " 'Kansas': 54.5,\n", 1926 | " 'Kentucky': 51.2,\n", 1927 | " 'Louisiana': 47.9,\n", 1928 | " 'Massachusetts': 71.8,\n", 1929 | " 'Maryland': 67.8,\n", 1930 | " 'Maine': 69.9,\n", 1931 | " 'Michigan': 54.5,\n", 1932 | " 'Minnesota': 62.9,\n", 1933 | " 'Missouri': 50.6,\n", 1934 | " 'Mississippi': 46.7,\n", 1935 | " 'Montana': 50.6,\n", 1936 | " 'North Carolina': 53.5,\n", 1937 | " 'North Dakota': 49.6,\n", 1938 | " 'Nebraska': 57.5,\n", 1939 | " 'New Hampshire': 62.5,\n", 1940 | " 'New Jersey': 67.2,\n", 1941 | " 'New Mexico': 63.3,\n", 1942 | " 'Nevada': 52.7,\n", 1943 | " 'New York': 67.9,\n", 1944 | " 'Ohio': 52.7,\n", 1945 | " 'Oklahoma': 51.2,\n", 1946 | " 'Oregon': 62.9,\n", 1947 | " 'Pennsylvania': 59.3,\n", 1948 | " 'Rhode Island': 74.1,\n", 1949 | " 'South Carolina': 50.6,\n", 1950 | " 'South Dakota': 54.3,\n", 1951 | " 'Tennessee': 49.3,\n", 1952 | " 'Texas': 54.1,\n", 1953 | " 'Utah': 55.6,\n", 1954 | " 'Virginia': 65.2,\n", 1955 | " 'Vermont': 74.0,\n", 1956 | " 'Washington': 64.2,\n", 1957 | " 'Wisconsin': 59.3,\n", 1958 | " 'West Virginia': 52.8,\n", 1959 | " 'Wyoming': 44.4}" 1960 | ], 1961 | "outputs": [], 1962 | "metadata": {} 1963 | }, 1964 | { 1965 | "source": [ 1966 | "Let's plot a histogram of percentage of double vaccinated (against Covid-19) people in the US states. Label the x and y axis and set a title" 1967 | ], 1968 | "cell_type": "markdown", 1969 | "metadata": {} 1970 | }, 1971 | { 1972 | "execution_count": 61, 1973 | "cell_type": "code", 1974 | "source": [ 1975 | "# use a list comprehension to get all the values from the vaxdict\n", 1976 | "\n", 1977 | "# your code here\n" 1978 | ], 1979 | "outputs": [], 1980 | "metadata": {} 1981 | }, 1982 | { 1983 | "source": [ 1984 | "## 6. Putting it all together\n", 1985 | "\n", 1986 | "We are now in the position of keeping our promise of being able to make a comparative plot of employment rates." 1987 | ], 1988 | "cell_type": "markdown", 1989 | "metadata": {} 1990 | }, 1991 | { 1992 | "execution_count": 62, 1993 | "cell_type": "code", 1994 | "source": [ 1995 | "import numpy as np\n", 1996 | "import pandas as pd\n", 1997 | "import matplotlib.pyplot as plt\n", 1998 | "%matplotlib inline" 1999 | ], 2000 | "outputs": [], 2001 | "metadata": {} 2002 | }, 2003 | { 2004 | "execution_count": 63, 2005 | "cell_type": "code", 2006 | "source": [ 2007 | "width_inches = 9\n", 2008 | "subplot_height_inches = 2\n", 2009 | "baseurl = \"https://raw.githubusercontent.com/univai-ghf/ghfmedia/main/\"" 2010 | ], 2011 | "outputs": [], 2012 | "metadata": {} 2013 | }, 2014 | { 2015 | "execution_count": 64, 2016 | "cell_type": "code", 2017 | "source": [ 2018 | "def get_unemployment_data(state_abbrev):\n", 2019 | " data = pd.read_csv(baseurl+\"data/\"+state_abbrev+\"UR.csv\")\n", 2020 | " data['DATE'] = pd.to_datetime(data['DATE'])\n", 2021 | " return data" 2022 | ], 2023 | "outputs": [], 2024 | "metadata": {} 2025 | }, 2026 | { 2027 | "source": [ 2028 | "We now provide the `subplots` constructor function with an additional argument, the number of rows. We want to make a figure with multiple rows, each row corresponding to a state. The figure size needs to change too, as the height must keep up with the number of states in the `states` list. Then, the enumeration gives us the index for each state, and uses that index to match the axes for the subplot. We use that axes to plot the corresponding data, labeling the y-axis for each subplot with the state abbreviation. Finally we set an x-label on the last axes, and a title on the first one!" 2029 | ], 2030 | "cell_type": "markdown", 2031 | "metadata": {} 2032 | }, 2033 | { 2034 | "execution_count": 65, 2035 | "cell_type": "code", 2036 | "source": [ 2037 | "fig, ax = plt.subplots(nrows=len(states), \n", 2038 | " figsize = (width_inches, subplot_height_inches*len(states)))\n", 2039 | "counter = 0\n", 2040 | "for state_abbrev in states:\n", 2041 | " data = state_data[state_abbrev]\n", 2042 | " ax[counter].plot(data['DATE'], data[state_abbrev+'UR'])\n", 2043 | " ax[counter].set_ylabel(state_abbrev)\n", 2044 | " counter = counter + 1\n", 2045 | "ax[-1].set_xlabel(\"Year\")\n", 2046 | "ax[0].set_title(\"Percentage Un-employment\");" 2047 | ], 2048 | "outputs": [], 2049 | "metadata": {} 2050 | }, 2051 | { 2052 | "source": [ 2053 | "## 7. What did you learn?\n", 2054 | "\n", 2055 | "At the end of this workshop, you are now able to create reasonably complex plots from data! \n", 2056 | "\n", 2057 | "This is because you understand enough of Python to be dangerous: its libraries, its dictionaries, how many things behave like lists, and how these lists can be used to make plots.\n", 2058 | "\n", 2059 | "Go forth and have fun!" 2060 | ], 2061 | "cell_type": "markdown", 2062 | "metadata": {} 2063 | } 2064 | ] 2065 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Our aim in this workshop is to make you familiar with the basics of Python, focusing on those aspects that will jump-start your ability to write data-science programs. 2 | 3 | In other words, we want to make you dangerous enough soon :-). 4 | 5 | Accordingly, we will cover fundamental python concepts including variables, lists, dictionaries, iteration, and functions; moving on to useful list like objects such as Pandas Series and numpy ndarrays, and their use in analyzing and making plots of data. 6 | 7 | Here is the outline: 8 | 9 | 1. Getting Started 10 | 2. Libraries and Functions 11 | 3. Dictionaries 12 | 4. Listiness 13 | 5. Plotting with matplotlib 14 | 6. Putting it all together 15 | 16 | Workshop: [![Open Workshop In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/univai-ghf/PythonWorkshop/blob/main/PythonWorkshop.ipynb) 17 | 18 | We will end up with code that plots unemployment rates in multiple American states. This example exercises all basic python concepts for data science..if you understand it you are golden! 19 | 20 | ![](images/unemploy.jpg) 21 | 22 | Finally, a homework problem will help cement your understanding, and make you even more dangerous!# PythonWorkshop 23 | 24 | Homework: [![Open Homework In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/univai-ghf/PythonWorkshop/blob/main/Homework_PythonWorkshop.ipynb) 25 | -------------------------------------------------------------------------------- /ReadMore.md: -------------------------------------------------------------------------------- 1 | # What more should you read and do? 2 | 3 | - First, do the homework and discuss it on our [community forums](https://discourse.univ.ai). Feel free to ask any and all questions there. 4 | - If you have the time, the material from [Software Carpentry's Python workshop](https://swcarpentry.github.io/python-novice-inflammation/) is quite good: 5 | - If you would like to learn all aspects of Python (and some math and stats) needed to do AI, our [PyDS](https://welcome.univ.ai/courses/pyds/) course is great! 6 | - [Jake Vanderplas's Book](https://jakevdp.github.io/PythonDataScienceHandbook/) is a great resource. -------------------------------------------------------------------------------- /data/ALUR.csv: -------------------------------------------------------------------------------- 1 | DATE,ALUR 2 | 1976-01-01,6.6 3 | 1976-02-01,6.6 4 | 1976-03-01,6.600 5 | 1976-04-01,6.500 6 | 1976-05-01,6.400 7 | 1976-06-01,6.500 8 | 1976-07-01,6.600 9 | 1976-08-01,6.7 10 | 1976-09-01,6.8 11 | 1976-10-01,6.9 12 | 1976-11-01,7.0 13 | 1976-12-01,7.2 14 | 1977-01-01,7.3 15 | 1977-02-01,7.4 16 | 1977-03-01,7.5 17 | 1977-04-01,7.5 18 | 1977-05-01,7.5 19 | 1977-06-01,7.4 20 | 1977-07-01,7.3 21 | 1977-08-01,7.100 22 | 1977-09-01,6.900 23 | 1977-10-01,6.800 24 | 1977-11-01,6.6 25 | 1977-12-01,6.5 26 | 1978-01-01,6.4 27 | 1978-02-01,6.3 28 | 1978-03-01,6.3 29 | 1978-04-01,6.2 30 | 1978-05-01,6.2 31 | 1978-06-01,6.2 32 | 1978-07-01,6.3 33 | 1978-08-01,6.4 34 | 1978-09-01,6.5 35 | 1978-10-01,6.6 36 | 1978-11-01,6.7 37 | 1978-12-01,6.8 38 | 1979-01-01,6.9 39 | 1979-02-01,7.0 40 | 1979-03-01,7.0 41 | 1979-04-01,7.1 42 | 1979-05-01,7.2 43 | 1979-06-01,7.2 44 | 1979-07-01,7.300 45 | 1979-08-01,7.300 46 | 1979-09-01,7.4 47 | 1979-10-01,7.4 48 | 1979-11-01,7.4 49 | 1979-12-01,7.5 50 | 1980-01-01,7.6 51 | 1980-02-01,7.7 52 | 1980-03-01,8.0 53 | 1980-04-01,8.300 54 | 1980-05-01,8.7 55 | 1980-06-01,9.0 56 | 1980-07-01,9.2 57 | 1980-08-01,9.3 58 | 1980-09-01,9.4 59 | 1980-10-01,9.5 60 | 1980-11-01,9.5 61 | 1980-12-01,9.600 62 | 1981-01-01,9.7 63 | 1981-02-01,9.8 64 | 1981-03-01,9.9 65 | 1981-04-01,10.0 66 | 1981-05-01,10.1 67 | 1981-06-01,10.3 68 | 1981-07-01,10.5 69 | 1981-08-01,10.8 70 | 1981-09-01,11.2 71 | 1981-10-01,11.6 72 | 1981-11-01,12.0 73 | 1981-12-01,12.4 74 | 1982-01-01,12.7 75 | 1982-02-01,13.0 76 | 1982-03-01,13.2 77 | 1982-04-01,13.5 78 | 1982-05-01,13.7 79 | 1982-06-01,13.900 80 | 1982-07-01,14.1 81 | 1982-08-01,14.3 82 | 1982-09-01,14.5 83 | 1982-10-01,14.7 84 | 1982-11-01,14.9 85 | 1982-12-01,14.9 86 | 1983-01-01,14.9 87 | 1983-02-01,14.8 88 | 1983-03-01,14.6 89 | 1983-04-01,14.4 90 | 1983-05-01,14.200 91 | 1983-06-01,14.000 92 | 1983-07-01,13.8 93 | 1983-08-01,13.6 94 | 1983-09-01,13.3 95 | 1983-10-01,13.0 96 | 1983-11-01,12.7 97 | 1983-12-01,12.5 98 | 1984-01-01,12.3 99 | 1984-02-01,12.0 100 | 1984-03-01,11.8 101 | 1984-04-01,11.7 102 | 1984-05-01,11.5 103 | 1984-06-01,11.4 104 | 1984-07-01,11.2 105 | 1984-08-01,11.1 106 | 1984-09-01,10.9 107 | 1984-10-01,10.7 108 | 1984-11-01,10.5 109 | 1984-12-01,10.3 110 | 1985-01-01,10.1 111 | 1985-02-01,10.0 112 | 1985-03-01,9.9 113 | 1985-04-01,9.8 114 | 1985-05-01,9.6 115 | 1985-06-01,9.5 116 | 1985-07-01,9.4 117 | 1985-08-01,9.3 118 | 1985-09-01,9.2 119 | 1985-10-01,9.2 120 | 1985-11-01,9.2 121 | 1985-12-01,9.3 122 | 1986-01-01,9.4 123 | 1986-02-01,9.500 124 | 1986-03-01,9.7 125 | 1986-04-01,9.7 126 | 1986-05-01,9.8 127 | 1986-06-01,9.7 128 | 1986-07-01,9.7 129 | 1986-08-01,9.6 130 | 1986-09-01,9.5 131 | 1986-10-01,9.5 132 | 1986-11-01,9.4 133 | 1986-12-01,9.3 134 | 1987-01-01,9.2 135 | 1987-02-01,9.000 136 | 1987-03-01,8.8 137 | 1987-04-01,8.5 138 | 1987-05-01,8.3 139 | 1987-06-01,8.1 140 | 1987-07-01,7.9 141 | 1987-08-01,7.8 142 | 1987-09-01,7.8 143 | 1987-10-01,7.7 144 | 1987-11-01,7.6 145 | 1987-12-01,7.5 146 | 1988-01-01,7.4 147 | 1988-02-01,7.3 148 | 1988-03-01,7.3 149 | 1988-04-01,7.2 150 | 1988-05-01,7.2 151 | 1988-06-01,7.2 152 | 1988-07-01,7.2 153 | 1988-08-01,7.3 154 | 1988-09-01,7.300 155 | 1988-10-01,7.3 156 | 1988-11-01,7.3 157 | 1988-12-01,7.3 158 | 1989-01-01,7.200 159 | 1989-02-01,7.100 160 | 1989-03-01,7.100 161 | 1989-04-01,7.100 162 | 1989-05-01,7.100 163 | 1989-06-01,7.1 164 | 1989-07-01,7.1 165 | 1989-08-01,7.0 166 | 1989-09-01,6.9 167 | 1989-10-01,6.8 168 | 1989-11-01,6.800 169 | 1989-12-01,6.700 170 | 1990-01-01,6.700 171 | 1990-02-01,6.700 172 | 1990-03-01,6.700 173 | 1990-04-01,6.700 174 | 1990-05-01,6.7 175 | 1990-06-01,6.7 176 | 1990-07-01,6.8 177 | 1990-08-01,6.8 178 | 1990-09-01,6.9 179 | 1990-10-01,7.000 180 | 1990-11-01,7.100 181 | 1990-12-01,7.1 182 | 1991-01-01,7.2 183 | 1991-02-01,7.3 184 | 1991-03-01,7.3 185 | 1991-04-01,7.4 186 | 1991-05-01,7.4 187 | 1991-06-01,7.3 188 | 1991-07-01,7.300 189 | 1991-08-01,7.3 190 | 1991-09-01,7.3 191 | 1991-10-01,7.3 192 | 1991-11-01,7.4 193 | 1991-12-01,7.4 194 | 1992-01-01,7.500 195 | 1992-02-01,7.5 196 | 1992-03-01,7.6 197 | 1992-04-01,7.6 198 | 1992-05-01,7.6 199 | 1992-06-01,7.6 200 | 1992-07-01,7.600 201 | 1992-08-01,7.5 202 | 1992-09-01,7.500 203 | 1992-10-01,7.400 204 | 1992-11-01,7.400 205 | 1992-12-01,7.5 206 | 1993-01-01,7.500 207 | 1993-02-01,7.500 208 | 1993-03-01,7.500 209 | 1993-04-01,7.4 210 | 1993-05-01,7.4 211 | 1993-06-01,7.3 212 | 1993-07-01,7.3 213 | 1993-08-01,7.2 214 | 1993-09-01,7.1 215 | 1993-10-01,7.0 216 | 1993-11-01,6.9 217 | 1993-12-01,6.8 218 | 1994-01-01,6.7 219 | 1994-02-01,6.600 220 | 1994-03-01,6.4 221 | 1994-04-01,6.300 222 | 1994-05-01,6.2 223 | 1994-06-01,6.1 224 | 1994-07-01,6.000 225 | 1994-08-01,6.000 226 | 1994-09-01,6.000 227 | 1994-10-01,6.000 228 | 1994-11-01,5.9 229 | 1994-12-01,5.900 230 | 1995-01-01,5.9 231 | 1995-02-01,5.9 232 | 1995-03-01,5.9 233 | 1995-04-01,5.9 234 | 1995-05-01,6.0 235 | 1995-06-01,6.0 236 | 1995-07-01,5.9 237 | 1995-08-01,5.9 238 | 1995-09-01,5.8 239 | 1995-10-01,5.7 240 | 1995-11-01,5.600 241 | 1995-12-01,5.500 242 | 1996-01-01,5.5 243 | 1996-02-01,5.400 244 | 1996-03-01,5.400 245 | 1996-04-01,5.3 246 | 1996-05-01,5.300 247 | 1996-06-01,5.200 248 | 1996-07-01,5.100 249 | 1996-08-01,5.000 250 | 1996-09-01,5.000 251 | 1996-10-01,5.100 252 | 1996-11-01,5.1 253 | 1996-12-01,5.1 254 | 1997-01-01,5.1 255 | 1997-02-01,5.1 256 | 1997-03-01,5.100 257 | 1997-04-01,5.100 258 | 1997-05-01,5.0 259 | 1997-06-01,5.0 260 | 1997-07-01,5.0 261 | 1997-08-01,4.9 262 | 1997-09-01,4.8 263 | 1997-10-01,4.800 264 | 1997-11-01,4.7 265 | 1997-12-01,4.6 266 | 1998-01-01,4.5 267 | 1998-02-01,4.4 268 | 1998-03-01,4.4 269 | 1998-04-01,4.4 270 | 1998-05-01,4.4 271 | 1998-06-01,4.400 272 | 1998-07-01,4.5 273 | 1998-08-01,4.500 274 | 1998-09-01,4.500 275 | 1998-10-01,4.500 276 | 1998-11-01,4.500 277 | 1998-12-01,4.500 278 | 1999-01-01,4.6 279 | 1999-02-01,4.600 280 | 1999-03-01,4.7 281 | 1999-04-01,4.700 282 | 1999-05-01,4.800 283 | 1999-06-01,4.800 284 | 1999-07-01,4.800 285 | 1999-08-01,4.800 286 | 1999-09-01,4.800 287 | 1999-10-01,4.7 288 | 1999-11-01,4.7 289 | 1999-12-01,4.7 290 | 2000-01-01,4.700 291 | 2000-02-01,4.7 292 | 2000-03-01,4.600 293 | 2000-04-01,4.6 294 | 2000-05-01,4.6 295 | 2000-06-01,4.6 296 | 2000-07-01,4.6 297 | 2000-08-01,4.6 298 | 2000-09-01,4.6 299 | 2000-10-01,4.6 300 | 2000-11-01,4.600 301 | 2000-12-01,4.7 302 | 2001-01-01,4.700 303 | 2001-02-01,4.8 304 | 2001-03-01,4.8 305 | 2001-04-01,4.9 306 | 2001-05-01,4.9 307 | 2001-06-01,5.0 308 | 2001-07-01,5.1 309 | 2001-08-01,5.3 310 | 2001-09-01,5.400 311 | 2001-10-01,5.6 312 | 2001-11-01,5.8 313 | 2001-12-01,5.9 314 | 2002-01-01,5.9 315 | 2002-02-01,6.0 316 | 2002-03-01,6.000 317 | 2002-04-01,6.000 318 | 2002-05-01,5.900 319 | 2002-06-01,5.900 320 | 2002-07-01,5.9 321 | 2002-08-01,5.9 322 | 2002-09-01,5.9 323 | 2002-10-01,5.9 324 | 2002-11-01,5.9 325 | 2002-12-01,5.9 326 | 2003-01-01,5.9 327 | 2003-02-01,5.9 328 | 2003-03-01,5.900 329 | 2003-04-01,6.000 330 | 2003-05-01,6.0 331 | 2003-06-01,6.100 332 | 2003-07-01,6.1 333 | 2003-08-01,6.1 334 | 2003-09-01,6.0 335 | 2003-10-01,6.0 336 | 2003-11-01,5.9 337 | 2003-12-01,5.9 338 | 2004-01-01,5.9 339 | 2004-02-01,5.9 340 | 2004-03-01,5.8 341 | 2004-04-01,5.8 342 | 2004-05-01,5.7 343 | 2004-06-01,5.7 344 | 2004-07-01,5.6 345 | 2004-08-01,5.5 346 | 2004-09-01,5.4 347 | 2004-10-01,5.3 348 | 2004-11-01,5.2 349 | 2004-12-01,5.1 350 | 2005-01-01,5.0 351 | 2005-02-01,4.900 352 | 2005-03-01,4.7 353 | 2005-04-01,4.600 354 | 2005-05-01,4.4 355 | 2005-06-01,4.400 356 | 2005-07-01,4.3 357 | 2005-08-01,4.300 358 | 2005-09-01,4.300 359 | 2005-10-01,4.2 360 | 2005-11-01,4.200 361 | 2005-12-01,4.200 362 | 2006-01-01,4.100 363 | 2006-02-01,4.100 364 | 2006-03-01,4.1 365 | 2006-04-01,4.100 366 | 2006-05-01,4.100 367 | 2006-06-01,4.0 368 | 2006-07-01,4.0 369 | 2006-08-01,4.0 370 | 2006-09-01,3.9 371 | 2006-10-01,3.9 372 | 2006-11-01,3.9 373 | 2006-12-01,3.8 374 | 2007-01-01,3.8 375 | 2007-02-01,3.8 376 | 2007-03-01,3.9 377 | 2007-04-01,3.9 378 | 2007-05-01,3.9 379 | 2007-06-01,4.0 380 | 2007-07-01,4.0 381 | 2007-08-01,4.1 382 | 2007-09-01,4.2 383 | 2007-10-01,4.2 384 | 2007-11-01,4.3 385 | 2007-12-01,4.4 386 | 2008-01-01,4.5 387 | 2008-02-01,4.7 388 | 2008-03-01,4.9 389 | 2008-04-01,5.1 390 | 2008-05-01,5.3 391 | 2008-06-01,5.6 392 | 2008-07-01,5.9 393 | 2008-08-01,6.1 394 | 2008-09-01,6.5 395 | 2008-10-01,6.9 396 | 2008-11-01,7.3 397 | 2008-12-01,7.8 398 | 2009-01-01,8.4 399 | 2009-02-01,8.8 400 | 2009-03-01,9.3 401 | 2009-04-01,9.6 402 | 2009-05-01,9.9 403 | 2009-06-01,10.2 404 | 2009-07-01,10.4 405 | 2009-08-01,10.6 406 | 2009-09-01,10.8 407 | 2009-10-01,10.9 408 | 2009-11-01,11.0 409 | 2009-12-01,11.1 410 | 2010-01-01,11.1 411 | 2010-02-01,11.0 412 | 2010-03-01,10.9 413 | 2010-04-01,10.5 414 | 2010-05-01,10.3 415 | 2010-06-01,10.100 416 | 2010-07-01,10.1 417 | 2010-08-01,10.0 418 | 2010-09-01,10.1 419 | 2010-10-01,10.100 420 | 2010-11-01,10.200 421 | 2010-12-01,10.1 422 | 2011-01-01,10.1 423 | 2011-02-01,10.0 424 | 2011-03-01,9.9 425 | 2011-04-01,9.9 426 | 2011-05-01,9.8 427 | 2011-06-01,9.8 428 | 2011-07-01,9.7 429 | 2011-08-01,9.6 430 | 2011-09-01,9.4 431 | 2011-10-01,9.2 432 | 2011-11-01,8.9 433 | 2011-12-01,8.7 434 | 2012-01-01,8.5 435 | 2012-02-01,8.4 436 | 2012-03-01,8.4 437 | 2012-04-01,8.4 438 | 2012-05-01,8.4 439 | 2012-06-01,8.3 440 | 2012-07-01,8.200 441 | 2012-08-01,8.100 442 | 2012-09-01,7.900 443 | 2012-10-01,7.800 444 | 2012-11-01,7.8 445 | 2012-12-01,7.7 446 | 2013-01-01,7.6 447 | 2013-02-01,7.6 448 | 2013-03-01,7.5 449 | 2013-04-01,7.4 450 | 2013-05-01,7.3 451 | 2013-06-01,7.3 452 | 2013-07-01,7.2 453 | 2013-08-01,7.2 454 | 2013-09-01,7.2 455 | 2013-10-01,7.2 456 | 2013-11-01,7.2 457 | 2013-12-01,7.2 458 | 2014-01-01,7.2 459 | 2014-02-01,7.1 460 | 2014-03-01,7.1 461 | 2014-04-01,7.0 462 | 2014-05-01,6.9 463 | 2014-06-01,6.8 464 | 2014-07-01,6.7 465 | 2014-08-01,6.6 466 | 2014-09-01,6.5 467 | 2014-10-01,6.4 468 | 2014-11-01,6.3 469 | 2014-12-01,6.2 470 | 2015-01-01,6.1 471 | 2015-02-01,6.1 472 | 2015-03-01,6.1 473 | 2015-04-01,6.1 474 | 2015-05-01,6.1 475 | 2015-06-01,6.2 476 | 2015-07-01,6.2 477 | 2015-08-01,6.2 478 | 2015-09-01,6.1 479 | 2015-10-01,6.1 480 | 2015-11-01,6.1 481 | 2015-12-01,6.1 482 | 2016-01-01,6.1 483 | 2016-02-01,6.0 484 | 2016-03-01,6.0 485 | 2016-04-01,5.9 486 | 2016-05-01,5.9 487 | 2016-06-01,5.9 488 | 2016-07-01,5.9 489 | 2016-08-01,5.9 490 | 2016-09-01,5.9 491 | 2016-10-01,5.9 492 | 2016-11-01,5.8 493 | 2016-12-01,5.7 494 | 2017-01-01,5.5 495 | 2017-02-01,5.3 496 | 2017-03-01,5.1 497 | 2017-04-01,4.9 498 | 2017-05-01,4.7 499 | 2017-06-01,4.5 500 | 2017-07-01,4.4 501 | 2017-08-01,4.3 502 | 2017-09-01,4.2 503 | 2017-10-01,4.1 504 | 2017-11-01,4.0 505 | 2017-12-01,4.0 506 | 2018-01-01,4.0 507 | 2018-02-01,4.0 508 | 2018-03-01,4.0 509 | 2018-04-01,4.0 510 | 2018-05-01,4.0 511 | 2018-06-01,4.0 512 | 2018-07-01,4.0 513 | 2018-08-01,3.9 514 | 2018-09-01,3.9 515 | 2018-10-01,3.8 516 | 2018-11-01,3.8 517 | 2018-12-01,3.7 518 | 2019-01-01,3.6 519 | 2019-02-01,3.5 520 | 2019-03-01,3.3 521 | 2019-04-01,3.2 522 | 2019-05-01,3.1 523 | 2019-06-01,2.9 524 | 2019-07-01,2.9 525 | 2019-08-01,2.8 526 | 2019-09-01,2.8 527 | 2019-10-01,2.8 528 | 2019-11-01,2.7 529 | 2019-12-01,2.7 530 | 2020-01-01,2.7 531 | 2020-02-01,2.6 532 | 2020-03-01,2.6 533 | 2020-04-01,13.2 534 | 2020-05-01,7.9 535 | 2020-06-01,7.7 536 | 2020-07-01,7.4 537 | 2020-08-01,7.1 538 | 2020-09-01,6.7 539 | 2020-10-01,4.7 540 | 2020-11-01,4.7 541 | 2020-12-01,4.7 542 | 2021-01-01,4.3 543 | 2021-02-01,4.0 544 | 2021-03-01,3.8 545 | 2021-04-01,3.6 546 | 2021-05-01,3.4 547 | 2021-06-01,3.3 548 | 2021-07-01,3.2 549 | 2021-08-01,3.1 550 | 2021-09-01,3.1 551 | 2021-10-01,3.1 552 | -------------------------------------------------------------------------------- /data/CAUR.csv: -------------------------------------------------------------------------------- 1 | DATE,CAUR 2 | 1976-01-01,9.2 3 | 1976-02-01,9.2 4 | 1976-03-01,9.1 5 | 1976-04-01,9.1 6 | 1976-05-01,9.0 7 | 1976-06-01,9.0 8 | 1976-07-01,9.000 9 | 1976-08-01,9.100 10 | 1976-09-01,9.200 11 | 1976-10-01,9.300 12 | 1976-11-01,9.3 13 | 1976-12-01,9.300 14 | 1977-01-01,9.200 15 | 1977-02-01,9.1 16 | 1977-03-01,8.9 17 | 1977-04-01,8.700 18 | 1977-05-01,8.6 19 | 1977-06-01,8.4 20 | 1977-07-01,8.3 21 | 1977-08-01,8.100 22 | 1977-09-01,8.0 23 | 1977-10-01,7.9 24 | 1977-11-01,7.8 25 | 1977-12-01,7.7 26 | 1978-01-01,7.600 27 | 1978-02-01,7.500 28 | 1978-03-01,7.500 29 | 1978-04-01,7.4 30 | 1978-05-01,7.3 31 | 1978-06-01,7.2 32 | 1978-07-01,7.100 33 | 1978-08-01,7.000 34 | 1978-09-01,6.900 35 | 1978-10-01,6.800 36 | 1978-11-01,6.700 37 | 1978-12-01,6.600 38 | 1979-01-01,6.500 39 | 1979-02-01,6.400 40 | 1979-03-01,6.300 41 | 1979-04-01,6.200 42 | 1979-05-01,6.200 43 | 1979-06-01,6.1 44 | 1979-07-01,6.1 45 | 1979-08-01,6.200 46 | 1979-09-01,6.200 47 | 1979-10-01,6.200 48 | 1979-11-01,6.1 49 | 1979-12-01,6.100 50 | 1980-01-01,6.2 51 | 1980-02-01,6.3 52 | 1980-03-01,6.5 53 | 1980-04-01,6.7 54 | 1980-05-01,6.900 55 | 1980-06-01,7.100 56 | 1980-07-01,7.200 57 | 1980-08-01,7.3 58 | 1980-09-01,7.200 59 | 1980-10-01,7.2 60 | 1980-11-01,7.100 61 | 1980-12-01,7.100 62 | 1981-01-01,7.100 63 | 1981-02-01,7.100 64 | 1981-03-01,7.100 65 | 1981-04-01,7.1 66 | 1981-05-01,7.000 67 | 1981-06-01,7.100 68 | 1981-07-01,7.2 69 | 1981-08-01,7.300 70 | 1981-09-01,7.6 71 | 1981-10-01,7.9 72 | 1981-11-01,8.2 73 | 1981-12-01,8.5 74 | 1982-01-01,8.8 75 | 1982-02-01,9.1 76 | 1982-03-01,9.3 77 | 1982-04-01,9.6 78 | 1982-05-01,9.8 79 | 1982-06-01,10.0 80 | 1982-07-01,10.2 81 | 1982-08-01,10.4 82 | 1982-09-01,10.6 83 | 1982-10-01,10.8 84 | 1982-11-01,11.0 85 | 1982-12-01,11.1 86 | 1983-01-01,11.1 87 | 1983-02-01,11.0 88 | 1983-03-01,10.8 89 | 1983-04-01,10.500 90 | 1983-05-01,10.3 91 | 1983-06-01,10.000 92 | 1983-07-01,9.700 93 | 1983-08-01,9.400 94 | 1983-09-01,9.2 95 | 1983-10-01,8.900 96 | 1983-11-01,8.6 97 | 1983-12-01,8.4 98 | 1984-01-01,8.300 99 | 1984-02-01,8.1 100 | 1984-03-01,8.000 101 | 1984-04-01,7.900 102 | 1984-05-01,7.800 103 | 1984-06-01,7.700 104 | 1984-07-01,7.700 105 | 1984-08-01,7.600 106 | 1984-09-01,7.600 107 | 1984-10-01,7.500 108 | 1984-11-01,7.5 109 | 1984-12-01,7.400 110 | 1985-01-01,7.300 111 | 1985-02-01,7.300 112 | 1985-03-01,7.3 113 | 1985-04-01,7.3 114 | 1985-05-01,7.300 115 | 1985-06-01,7.300 116 | 1985-07-01,7.3 117 | 1985-08-01,7.200 118 | 1985-09-01,7.100 119 | 1985-10-01,7.000 120 | 1985-11-01,6.900 121 | 1985-12-01,6.9 122 | 1986-01-01,6.9 123 | 1986-02-01,6.9 124 | 1986-03-01,6.900 125 | 1986-04-01,6.900 126 | 1986-05-01,6.900 127 | 1986-06-01,6.800 128 | 1986-07-01,6.800 129 | 1986-08-01,6.700 130 | 1986-09-01,6.7 131 | 1986-10-01,6.600 132 | 1986-11-01,6.6 133 | 1986-12-01,6.500 134 | 1987-01-01,6.400 135 | 1987-02-01,6.300 136 | 1987-03-01,6.2 137 | 1987-04-01,6.000 138 | 1987-05-01,5.9 139 | 1987-06-01,5.8 140 | 1987-07-01,5.7 141 | 1987-08-01,5.600 142 | 1987-09-01,5.6 143 | 1987-10-01,5.500 144 | 1987-11-01,5.500 145 | 1987-12-01,5.4 146 | 1988-01-01,5.400 147 | 1988-02-01,5.3 148 | 1988-03-01,5.300 149 | 1988-04-01,5.300 150 | 1988-05-01,5.300 151 | 1988-06-01,5.300 152 | 1988-07-01,5.300 153 | 1988-08-01,5.300 154 | 1988-09-01,5.300 155 | 1988-10-01,5.2 156 | 1988-11-01,5.200 157 | 1988-12-01,5.100 158 | 1989-01-01,5.0 159 | 1989-02-01,5.000 160 | 1989-03-01,5.000 161 | 1989-04-01,5.000 162 | 1989-05-01,5.0 163 | 1989-06-01,5.100 164 | 1989-07-01,5.1 165 | 1989-08-01,5.1 166 | 1989-09-01,5.200 167 | 1989-10-01,5.200 168 | 1989-11-01,5.200 169 | 1989-12-01,5.200 170 | 1990-01-01,5.200 171 | 1990-02-01,5.200 172 | 1990-03-01,5.200 173 | 1990-04-01,5.300 174 | 1990-05-01,5.400 175 | 1990-06-01,5.500 176 | 1990-07-01,5.700 177 | 1990-08-01,5.900 178 | 1990-09-01,6.100 179 | 1990-10-01,6.400 180 | 1990-11-01,6.7 181 | 1990-12-01,6.900 182 | 1991-01-01,7.100 183 | 1991-02-01,7.4 184 | 1991-03-01,7.6 185 | 1991-04-01,7.7 186 | 1991-05-01,7.8 187 | 1991-06-01,7.8 188 | 1991-07-01,7.9 189 | 1991-08-01,7.9 190 | 1991-09-01,8.0 191 | 1991-10-01,8.1 192 | 1991-11-01,8.2 193 | 1991-12-01,8.4 194 | 1992-01-01,8.6 195 | 1992-02-01,8.8 196 | 1992-03-01,8.9 197 | 1992-04-01,9.1 198 | 1992-05-01,9.200 199 | 1992-06-01,9.4 200 | 1992-07-01,9.500 201 | 1992-08-01,9.600 202 | 1992-09-01,9.700 203 | 1992-10-01,9.8 204 | 1992-11-01,9.8 205 | 1992-12-01,9.8 206 | 1993-01-01,9.8 207 | 1993-02-01,9.7 208 | 1993-03-01,9.7 209 | 1993-04-01,9.6 210 | 1993-05-01,9.6 211 | 1993-06-01,9.6 212 | 1993-07-01,9.5 213 | 1993-08-01,9.5 214 | 1993-09-01,9.4 215 | 1993-10-01,9.4 216 | 1993-11-01,9.300 217 | 1993-12-01,9.3 218 | 1994-01-01,9.3 219 | 1994-02-01,9.2 220 | 1994-03-01,9.1 221 | 1994-04-01,9.0 222 | 1994-05-01,8.9 223 | 1994-06-01,8.700 224 | 1994-07-01,8.600 225 | 1994-08-01,8.500 226 | 1994-09-01,8.4 227 | 1994-10-01,8.200 228 | 1994-11-01,8.000 229 | 1994-12-01,7.9 230 | 1995-01-01,7.8 231 | 1995-02-01,7.8 232 | 1995-03-01,7.800 233 | 1995-04-01,7.8 234 | 1995-05-01,7.900 235 | 1995-06-01,8.000 236 | 1995-07-01,8.000 237 | 1995-08-01,8.0 238 | 1995-09-01,7.900 239 | 1995-10-01,7.900 240 | 1995-11-01,7.9 241 | 1995-12-01,7.9 242 | 1996-01-01,7.8 243 | 1996-02-01,7.8 244 | 1996-03-01,7.7 245 | 1996-04-01,7.6 246 | 1996-05-01,7.5 247 | 1996-06-01,7.4 248 | 1996-07-01,7.2 249 | 1996-08-01,7.1 250 | 1996-09-01,7.1 251 | 1996-10-01,7.0 252 | 1996-11-01,7.0 253 | 1996-12-01,7.0 254 | 1997-01-01,6.9 255 | 1997-02-01,6.8 256 | 1997-03-01,6.7 257 | 1997-04-01,6.6 258 | 1997-05-01,6.5 259 | 1997-06-01,6.4 260 | 1997-07-01,6.300 261 | 1997-08-01,6.200 262 | 1997-09-01,6.200 263 | 1997-10-01,6.100 264 | 1997-11-01,6.100 265 | 1997-12-01,6.1 266 | 1998-01-01,6.000 267 | 1998-02-01,6.000 268 | 1998-03-01,6.000 269 | 1998-04-01,6.000 270 | 1998-05-01,5.9 271 | 1998-06-01,5.9 272 | 1998-07-01,6.000 273 | 1998-08-01,6.000 274 | 1998-09-01,6.0 275 | 1998-10-01,5.900 276 | 1998-11-01,5.800 277 | 1998-12-01,5.700 278 | 1999-01-01,5.600 279 | 1999-02-01,5.500 280 | 1999-03-01,5.5 281 | 1999-04-01,5.4 282 | 1999-05-01,5.300 283 | 1999-06-01,5.3 284 | 1999-07-01,5.200 285 | 1999-08-01,5.2 286 | 1999-09-01,5.100 287 | 1999-10-01,5.100 288 | 1999-11-01,5.000 289 | 1999-12-01,5.000 290 | 2000-01-01,5.000 291 | 2000-02-01,5.000 292 | 2000-03-01,5.000 293 | 2000-04-01,5.0 294 | 2000-05-01,5.0 295 | 2000-06-01,5.0 296 | 2000-07-01,5.000 297 | 2000-08-01,4.9 298 | 2000-09-01,4.8 299 | 2000-10-01,4.800 300 | 2000-11-01,4.8 301 | 2000-12-01,4.8 302 | 2001-01-01,4.800 303 | 2001-02-01,4.800 304 | 2001-03-01,4.900 305 | 2001-04-01,5.000 306 | 2001-05-01,5.100 307 | 2001-06-01,5.2 308 | 2001-07-01,5.400 309 | 2001-08-01,5.600 310 | 2001-09-01,5.9 311 | 2001-10-01,6.1 312 | 2001-11-01,6.3 313 | 2001-12-01,6.5 314 | 2002-01-01,6.6 315 | 2002-02-01,6.7 316 | 2002-03-01,6.7 317 | 2002-04-01,6.7 318 | 2002-05-01,6.8 319 | 2002-06-01,6.8 320 | 2002-07-01,6.8 321 | 2002-08-01,6.700 322 | 2002-09-01,6.8 323 | 2002-10-01,6.8 324 | 2002-11-01,6.800 325 | 2002-12-01,6.9 326 | 2003-01-01,6.9 327 | 2003-02-01,6.9 328 | 2003-03-01,6.9 329 | 2003-04-01,7.0 330 | 2003-05-01,7.0 331 | 2003-06-01,7.0 332 | 2003-07-01,7.0 333 | 2003-08-01,7.0 334 | 2003-09-01,6.9 335 | 2003-10-01,6.8 336 | 2003-11-01,6.7 337 | 2003-12-01,6.600 338 | 2004-01-01,6.6 339 | 2004-02-01,6.500 340 | 2004-03-01,6.5 341 | 2004-04-01,6.400 342 | 2004-05-01,6.4 343 | 2004-06-01,6.3 344 | 2004-07-01,6.2 345 | 2004-08-01,6.1 346 | 2004-09-01,6.000 347 | 2004-10-01,5.900 348 | 2004-11-01,5.900 349 | 2004-12-01,5.800 350 | 2005-01-01,5.8 351 | 2005-02-01,5.700 352 | 2005-03-01,5.600 353 | 2005-04-01,5.500 354 | 2005-05-01,5.400 355 | 2005-06-01,5.300 356 | 2005-07-01,5.300 357 | 2005-08-01,5.300 358 | 2005-09-01,5.2 359 | 2005-10-01,5.2 360 | 2005-11-01,5.2 361 | 2005-12-01,5.100 362 | 2006-01-01,5.000 363 | 2006-02-01,5.000 364 | 2006-03-01,4.900 365 | 2006-04-01,4.900 366 | 2006-05-01,4.900 367 | 2006-06-01,4.900 368 | 2006-07-01,4.900 369 | 2006-08-01,4.900 370 | 2006-09-01,4.900 371 | 2006-10-01,4.900 372 | 2006-11-01,4.900 373 | 2006-12-01,4.900 374 | 2007-01-01,4.9 375 | 2007-02-01,5.000 376 | 2007-03-01,5.0 377 | 2007-04-01,5.100 378 | 2007-05-01,5.1 379 | 2007-06-01,5.2 380 | 2007-07-01,5.3 381 | 2007-08-01,5.4 382 | 2007-09-01,5.5 383 | 2007-10-01,5.7 384 | 2007-11-01,5.7 385 | 2007-12-01,5.8 386 | 2008-01-01,5.9 387 | 2008-02-01,6.0 388 | 2008-03-01,6.2 389 | 2008-04-01,6.4 390 | 2008-05-01,6.7 391 | 2008-06-01,7.0 392 | 2008-07-01,7.3 393 | 2008-08-01,7.6 394 | 2008-09-01,8.0 395 | 2008-10-01,8.4 396 | 2008-11-01,8.8 397 | 2008-12-01,9.3 398 | 2009-01-01,9.9 399 | 2009-02-01,10.4 400 | 2009-03-01,10.8 401 | 2009-04-01,11.2 402 | 2009-05-01,11.4 403 | 2009-06-01,11.7 404 | 2009-07-01,11.8 405 | 2009-08-01,12.0 406 | 2009-09-01,12.1 407 | 2009-10-01,12.3 408 | 2009-11-01,12.4 409 | 2009-12-01,12.5 410 | 2010-01-01,12.6 411 | 2010-02-01,12.6 412 | 2010-03-01,12.6 413 | 2010-04-01,12.5 414 | 2010-05-01,12.5 415 | 2010-06-01,12.4 416 | 2010-07-01,12.3 417 | 2010-08-01,12.4 418 | 2010-09-01,12.4 419 | 2010-10-01,12.4 420 | 2010-11-01,12.4 421 | 2010-12-01,12.4 422 | 2011-01-01,12.3 423 | 2011-02-01,12.2 424 | 2011-03-01,12.1 425 | 2011-04-01,12.0 426 | 2011-05-01,12.0 427 | 2011-06-01,12.0 428 | 2011-07-01,12.0 429 | 2011-08-01,11.9 430 | 2011-09-01,11.8 431 | 2011-10-01,11.6 432 | 2011-11-01,11.5 433 | 2011-12-01,11.3 434 | 2012-01-01,11.2 435 | 2012-02-01,11.0 436 | 2012-03-01,11.0 437 | 2012-04-01,10.9 438 | 2012-05-01,10.8 439 | 2012-06-01,10.7 440 | 2012-07-01,10.5 441 | 2012-08-01,10.3 442 | 2012-09-01,10.2 443 | 2012-10-01,10.0 444 | 2012-11-01,9.9 445 | 2012-12-01,9.8 446 | 2013-01-01,9.7 447 | 2013-02-01,9.5 448 | 2013-03-01,9.4 449 | 2013-04-01,9.3 450 | 2013-05-01,9.2 451 | 2013-06-01,9.1 452 | 2013-07-01,9.0 453 | 2013-08-01,8.9 454 | 2013-09-01,8.8 455 | 2013-10-01,8.6 456 | 2013-11-01,8.5 457 | 2013-12-01,8.4 458 | 2014-01-01,8.2 459 | 2014-02-01,8.1 460 | 2014-03-01,8.0 461 | 2014-04-01,7.8 462 | 2014-05-01,7.7 463 | 2014-06-01,7.6 464 | 2014-07-01,7.5 465 | 2014-08-01,7.4 466 | 2014-09-01,7.3 467 | 2014-10-01,7.2 468 | 2014-11-01,7.1 469 | 2014-12-01,6.9 470 | 2015-01-01,6.8 471 | 2015-02-01,6.7 472 | 2015-03-01,6.6 473 | 2015-04-01,6.5 474 | 2015-05-01,6.4 475 | 2015-06-01,6.3 476 | 2015-07-01,6.2 477 | 2015-08-01,6.0 478 | 2015-09-01,5.9 479 | 2015-10-01,5.8 480 | 2015-11-01,5.8 481 | 2015-12-01,5.7 482 | 2016-01-01,5.7 483 | 2016-02-01,5.6 484 | 2016-03-01,5.6 485 | 2016-04-01,5.5 486 | 2016-05-01,5.5 487 | 2016-06-01,5.5 488 | 2016-07-01,5.5 489 | 2016-08-01,5.5 490 | 2016-09-01,5.5 491 | 2016-10-01,5.5 492 | 2016-11-01,5.4 493 | 2016-12-01,5.4 494 | 2017-01-01,5.3 495 | 2017-02-01,5.2 496 | 2017-03-01,5.1 497 | 2017-04-01,5.0 498 | 2017-05-01,4.9 499 | 2017-06-01,4.8 500 | 2017-07-01,4.8 501 | 2017-08-01,4.7 502 | 2017-09-01,4.7 503 | 2017-10-01,4.6 504 | 2017-11-01,4.5 505 | 2017-12-01,4.5 506 | 2018-01-01,4.4 507 | 2018-02-01,4.4 508 | 2018-03-01,4.3 509 | 2018-04-01,4.3 510 | 2018-05-01,4.2 511 | 2018-06-01,4.2 512 | 2018-07-01,4.2 513 | 2018-08-01,4.2 514 | 2018-09-01,4.2 515 | 2018-10-01,4.3 516 | 2018-11-01,4.3 517 | 2018-12-01,4.3 518 | 2019-01-01,4.3 519 | 2019-02-01,4.3 520 | 2019-03-01,4.2 521 | 2019-04-01,4.1 522 | 2019-05-01,4.1 523 | 2019-06-01,4.1 524 | 2019-07-01,4.1 525 | 2019-08-01,4.1 526 | 2019-09-01,4.1 527 | 2019-10-01,4.1 528 | 2019-11-01,4.1 529 | 2019-12-01,4.2 530 | 2020-01-01,4.2 531 | 2020-02-01,4.3 532 | 2020-03-01,4.5 533 | 2020-04-01,16.0 534 | 2020-05-01,15.6 535 | 2020-06-01,14.1 536 | 2020-07-01,13.2 537 | 2020-08-01,12.3 538 | 2020-09-01,10.6 539 | 2020-10-01,9.8 540 | 2020-11-01,8.7 541 | 2020-12-01,9.3 542 | 2021-01-01,9.0 543 | 2021-02-01,8.5 544 | 2021-03-01,8.3 545 | 2021-04-01,8.0 546 | 2021-05-01,7.7 547 | 2021-06-01,7.6 548 | 2021-07-01,7.6 549 | 2021-08-01,7.5 550 | 2021-09-01,7.5 551 | 2021-10-01,7.3 552 | -------------------------------------------------------------------------------- /data/FLUR.csv: -------------------------------------------------------------------------------- 1 | DATE,FLUR 2 | 1976-01-01,9.7 3 | 1976-02-01,9.7 4 | 1976-03-01,9.6 5 | 1976-04-01,9.5 6 | 1976-05-01,9.3 7 | 1976-06-01,9.2 8 | 1976-07-01,9.1 9 | 1976-08-01,9.1 10 | 1976-09-01,9.1 11 | 1976-10-01,9.1 12 | 1976-11-01,9.1 13 | 1976-12-01,9.1 14 | 1977-01-01,9.0 15 | 1977-02-01,9.000 16 | 1977-03-01,8.900 17 | 1977-04-01,8.7 18 | 1977-05-01,8.6 19 | 1977-06-01,8.4 20 | 1977-07-01,8.2 21 | 1977-08-01,8.1 22 | 1977-09-01,7.9 23 | 1977-10-01,7.7 24 | 1977-11-01,7.5 25 | 1977-12-01,7.3 26 | 1978-01-01,7.1 27 | 1978-02-01,7.0 28 | 1978-03-01,6.9 29 | 1978-04-01,6.800 30 | 1978-05-01,6.8 31 | 1978-06-01,6.8 32 | 1978-07-01,6.700 33 | 1978-08-01,6.700 34 | 1978-09-01,6.600 35 | 1978-10-01,6.600 36 | 1978-11-01,6.6 37 | 1978-12-01,6.500 38 | 1979-01-01,6.5 39 | 1979-02-01,6.4 40 | 1979-03-01,6.3 41 | 1979-04-01,6.2 42 | 1979-05-01,6.000 43 | 1979-06-01,6.000 44 | 1979-07-01,5.900 45 | 1979-08-01,5.8 46 | 1979-09-01,5.800 47 | 1979-10-01,5.700 48 | 1979-11-01,5.7 49 | 1979-12-01,5.6 50 | 1980-01-01,5.6 51 | 1980-02-01,5.6 52 | 1980-03-01,5.700 53 | 1980-04-01,5.900 54 | 1980-05-01,6.0 55 | 1980-06-01,6.1 56 | 1980-07-01,6.1 57 | 1980-08-01,6.2 58 | 1980-09-01,6.1 59 | 1980-10-01,6.1 60 | 1980-11-01,6.2 61 | 1980-12-01,6.2 62 | 1981-01-01,6.3 63 | 1981-02-01,6.400 64 | 1981-03-01,6.400 65 | 1981-04-01,6.5 66 | 1981-05-01,6.6 67 | 1981-06-01,6.6 68 | 1981-07-01,6.7 69 | 1981-08-01,6.9 70 | 1981-09-01,7.0 71 | 1981-10-01,7.2 72 | 1981-11-01,7.4 73 | 1981-12-01,7.6 74 | 1982-01-01,7.7 75 | 1982-02-01,7.9 76 | 1982-03-01,8.0 77 | 1982-04-01,8.100 78 | 1982-05-01,8.3 79 | 1982-06-01,8.4 80 | 1982-07-01,8.5 81 | 1982-08-01,8.600 82 | 1982-09-01,8.800 83 | 1982-10-01,9.000 84 | 1982-11-01,9.200 85 | 1982-12-01,9.3 86 | 1983-01-01,9.4 87 | 1983-02-01,9.400 88 | 1983-03-01,9.300 89 | 1983-04-01,9.200 90 | 1983-05-01,9.000 91 | 1983-06-01,8.9 92 | 1983-07-01,8.7 93 | 1983-08-01,8.5 94 | 1983-09-01,8.2 95 | 1983-10-01,8.0 96 | 1983-11-01,7.7 97 | 1983-12-01,7.4 98 | 1984-01-01,7.2 99 | 1984-02-01,7.0 100 | 1984-03-01,6.8 101 | 1984-04-01,6.7 102 | 1984-05-01,6.6 103 | 1984-06-01,6.5 104 | 1984-07-01,6.5 105 | 1984-08-01,6.4 106 | 1984-09-01,6.4 107 | 1984-10-01,6.4 108 | 1984-11-01,6.3 109 | 1984-12-01,6.3 110 | 1985-01-01,6.3 111 | 1985-02-01,6.3 112 | 1985-03-01,6.2 113 | 1985-04-01,6.2 114 | 1985-05-01,6.2 115 | 1985-06-01,6.2 116 | 1985-07-01,6.1 117 | 1985-08-01,6.000 118 | 1985-09-01,5.900 119 | 1985-10-01,5.9 120 | 1985-11-01,5.8 121 | 1985-12-01,5.8 122 | 1986-01-01,5.8 123 | 1986-02-01,5.800 124 | 1986-03-01,5.9 125 | 1986-04-01,5.9 126 | 1986-05-01,5.900 127 | 1986-06-01,5.9 128 | 1986-07-01,5.9 129 | 1986-08-01,5.9 130 | 1986-09-01,5.800 131 | 1986-10-01,5.800 132 | 1986-11-01,5.8 133 | 1986-12-01,5.700 134 | 1987-01-01,5.7 135 | 1987-02-01,5.6 136 | 1987-03-01,5.6 137 | 1987-04-01,5.5 138 | 1987-05-01,5.4 139 | 1987-06-01,5.4 140 | 1987-07-01,5.3 141 | 1987-08-01,5.3 142 | 1987-09-01,5.3 143 | 1987-10-01,5.3 144 | 1987-11-01,5.2 145 | 1987-12-01,5.2 146 | 1988-01-01,5.2 147 | 1988-02-01,5.2 148 | 1988-03-01,5.2 149 | 1988-04-01,5.100 150 | 1988-05-01,5.1 151 | 1988-06-01,5.1 152 | 1988-07-01,5.1 153 | 1988-08-01,5.2 154 | 1988-09-01,5.2 155 | 1988-10-01,5.3 156 | 1988-11-01,5.3 157 | 1988-12-01,5.300 158 | 1989-01-01,5.4 159 | 1989-02-01,5.400 160 | 1989-03-01,5.5 161 | 1989-04-01,5.500 162 | 1989-05-01,5.6 163 | 1989-06-01,5.600 164 | 1989-07-01,5.600 165 | 1989-08-01,5.700 166 | 1989-09-01,5.700 167 | 1989-10-01,5.700 168 | 1989-11-01,5.8 169 | 1989-12-01,5.8 170 | 1990-01-01,5.8 171 | 1990-02-01,5.800 172 | 1990-03-01,5.9 173 | 1990-04-01,5.9 174 | 1990-05-01,6.0 175 | 1990-06-01,6.1 176 | 1990-07-01,6.2 177 | 1990-08-01,6.3 178 | 1990-09-01,6.5 179 | 1990-10-01,6.6 180 | 1990-11-01,6.8 181 | 1990-12-01,6.9 182 | 1991-01-01,7.0 183 | 1991-02-01,7.100 184 | 1991-03-01,7.3 185 | 1991-04-01,7.4 186 | 1991-05-01,7.500 187 | 1991-06-01,7.6 188 | 1991-07-01,7.7 189 | 1991-08-01,7.8 190 | 1991-09-01,7.9 191 | 1991-10-01,8.0 192 | 1991-11-01,8.1 193 | 1991-12-01,8.3 194 | 1992-01-01,8.3 195 | 1992-02-01,8.4 196 | 1992-03-01,8.500 197 | 1992-04-01,8.500 198 | 1992-05-01,8.5 199 | 1992-06-01,8.5 200 | 1992-07-01,8.5 201 | 1992-08-01,8.4 202 | 1992-09-01,8.4 203 | 1992-10-01,8.3 204 | 1992-11-01,8.1 205 | 1992-12-01,8.0 206 | 1993-01-01,7.9 207 | 1993-02-01,7.8 208 | 1993-03-01,7.7 209 | 1993-04-01,7.6 210 | 1993-05-01,7.5 211 | 1993-06-01,7.4 212 | 1993-07-01,7.3 213 | 1993-08-01,7.2 214 | 1993-09-01,7.2 215 | 1993-10-01,7.1 216 | 1993-11-01,7.1 217 | 1993-12-01,7.0 218 | 1994-01-01,7.0 219 | 1994-02-01,7.0 220 | 1994-03-01,6.9 221 | 1994-04-01,6.8 222 | 1994-05-01,6.7 223 | 1994-06-01,6.6 224 | 1994-07-01,6.400 225 | 1994-08-01,6.300 226 | 1994-09-01,6.200 227 | 1994-10-01,6.1 228 | 1994-11-01,5.900 229 | 1994-12-01,5.8 230 | 1995-01-01,5.7 231 | 1995-02-01,5.6 232 | 1995-03-01,5.6 233 | 1995-04-01,5.6 234 | 1995-05-01,5.6 235 | 1995-06-01,5.6 236 | 1995-07-01,5.600 237 | 1995-08-01,5.600 238 | 1995-09-01,5.600 239 | 1995-10-01,5.600 240 | 1995-11-01,5.6 241 | 1995-12-01,5.500 242 | 1996-01-01,5.5 243 | 1996-02-01,5.4 244 | 1996-03-01,5.4 245 | 1996-04-01,5.4 246 | 1996-05-01,5.3 247 | 1996-06-01,5.3 248 | 1996-07-01,5.2 249 | 1996-08-01,5.2 250 | 1996-09-01,5.2 251 | 1996-10-01,5.1 252 | 1996-11-01,5.2 253 | 1996-12-01,5.2 254 | 1997-01-01,5.2 255 | 1997-02-01,5.1 256 | 1997-03-01,5.1 257 | 1997-04-01,5.0 258 | 1997-05-01,5.0 259 | 1997-06-01,4.9 260 | 1997-07-01,4.9 261 | 1997-08-01,4.8 262 | 1997-09-01,4.8 263 | 1997-10-01,4.8 264 | 1997-11-01,4.8 265 | 1997-12-01,4.7 266 | 1998-01-01,4.7 267 | 1998-02-01,4.7 268 | 1998-03-01,4.6 269 | 1998-04-01,4.5 270 | 1998-05-01,4.5 271 | 1998-06-01,4.5 272 | 1998-07-01,4.4 273 | 1998-08-01,4.4 274 | 1998-09-01,4.4 275 | 1998-10-01,4.3 276 | 1998-11-01,4.2 277 | 1998-12-01,4.2 278 | 1999-01-01,4.1 279 | 1999-02-01,4.1 280 | 1999-03-01,4.000 281 | 1999-04-01,4.000 282 | 1999-05-01,4.0 283 | 1999-06-01,4.0 284 | 1999-07-01,3.900 285 | 1999-08-01,3.9 286 | 1999-09-01,3.9 287 | 1999-10-01,3.800 288 | 1999-11-01,3.8 289 | 1999-12-01,3.700 290 | 2000-01-01,3.700 291 | 2000-02-01,3.700 292 | 2000-03-01,3.700 293 | 2000-04-01,3.8 294 | 2000-05-01,3.8 295 | 2000-06-01,3.800 296 | 2000-07-01,3.800 297 | 2000-08-01,3.8 298 | 2000-09-01,3.700 299 | 2000-10-01,3.700 300 | 2000-11-01,3.8 301 | 2000-12-01,3.8 302 | 2001-01-01,3.9 303 | 2001-02-01,4.0 304 | 2001-03-01,4.0 305 | 2001-04-01,4.1 306 | 2001-05-01,4.200 307 | 2001-06-01,4.2 308 | 2001-07-01,4.3 309 | 2001-08-01,4.5 310 | 2001-09-01,4.6 311 | 2001-10-01,5.0 312 | 2001-11-01,5.1 313 | 2001-12-01,5.2 314 | 2002-01-01,5.2 315 | 2002-02-01,5.2 316 | 2002-03-01,5.1 317 | 2002-04-01,5.1 318 | 2002-05-01,5.0 319 | 2002-06-01,5.0 320 | 2002-07-01,4.9 321 | 2002-08-01,4.9 322 | 2002-09-01,4.8 323 | 2002-10-01,4.8 324 | 2002-11-01,4.8 325 | 2002-12-01,4.7 326 | 2003-01-01,4.7 327 | 2003-02-01,4.7 328 | 2003-03-01,4.6 329 | 2003-04-01,4.6 330 | 2003-05-01,4.6 331 | 2003-06-01,4.6 332 | 2003-07-01,4.5 333 | 2003-08-01,4.5 334 | 2003-09-01,4.4 335 | 2003-10-01,4.2 336 | 2003-11-01,4.1 337 | 2003-12-01,4.1 338 | 2004-01-01,4.0 339 | 2004-02-01,4.0 340 | 2004-03-01,3.9 341 | 2004-04-01,3.9 342 | 2004-05-01,3.9 343 | 2004-06-01,3.8 344 | 2004-07-01,3.7 345 | 2004-08-01,3.7 346 | 2004-09-01,3.6 347 | 2004-10-01,3.6 348 | 2004-11-01,3.5 349 | 2004-12-01,3.4 350 | 2005-01-01,3.4 351 | 2005-02-01,3.3 352 | 2005-03-01,3.2 353 | 2005-04-01,3.1 354 | 2005-05-01,3.0 355 | 2005-06-01,2.8 356 | 2005-07-01,2.8 357 | 2005-08-01,2.7 358 | 2005-09-01,2.6 359 | 2005-10-01,2.6 360 | 2005-11-01,2.5 361 | 2005-12-01,2.5 362 | 2006-01-01,2.4 363 | 2006-02-01,2.4 364 | 2006-03-01,2.4 365 | 2006-04-01,2.4 366 | 2006-05-01,2.4 367 | 2006-06-01,2.4 368 | 2006-07-01,2.5 369 | 2006-08-01,2.5 370 | 2006-09-01,2.5 371 | 2006-10-01,2.5 372 | 2006-11-01,2.6 373 | 2006-12-01,2.6 374 | 2007-01-01,2.7 375 | 2007-02-01,2.8 376 | 2007-03-01,2.9 377 | 2007-04-01,3.0 378 | 2007-05-01,3.1 379 | 2007-06-01,3.2 380 | 2007-07-01,3.3 381 | 2007-08-01,3.4 382 | 2007-09-01,3.6 383 | 2007-10-01,3.7 384 | 2007-11-01,3.9 385 | 2007-12-01,4.0 386 | 2008-01-01,4.2 387 | 2008-02-01,4.4 388 | 2008-03-01,4.6 389 | 2008-04-01,4.9 390 | 2008-05-01,5.2 391 | 2008-06-01,5.5 392 | 2008-07-01,5.8 393 | 2008-08-01,6.1 394 | 2008-09-01,6.4 395 | 2008-10-01,6.7 396 | 2008-11-01,7.1 397 | 2008-12-01,7.4 398 | 2009-01-01,7.8 399 | 2009-02-01,8.2 400 | 2009-03-01,8.5 401 | 2009-04-01,8.8 402 | 2009-05-01,9.4 403 | 2009-06-01,9.7 404 | 2009-07-01,9.9 405 | 2009-08-01,10.1 406 | 2009-09-01,10.3 407 | 2009-10-01,10.5 408 | 2009-11-01,10.7 409 | 2009-12-01,10.8 410 | 2010-01-01,10.9 411 | 2010-02-01,10.9 412 | 2010-03-01,10.9 413 | 2010-04-01,10.9 414 | 2010-05-01,10.8 415 | 2010-06-01,10.8 416 | 2010-07-01,10.8 417 | 2010-08-01,10.8 418 | 2010-09-01,10.8 419 | 2010-10-01,10.8 420 | 2010-11-01,10.8 421 | 2010-12-01,10.7 422 | 2011-01-01,10.6 423 | 2011-02-01,10.5 424 | 2011-03-01,10.4 425 | 2011-04-01,10.3 426 | 2011-05-01,10.2 427 | 2011-06-01,10.1 428 | 2011-07-01,10.0 429 | 2011-08-01,9.9 430 | 2011-09-01,9.7 431 | 2011-10-01,9.6 432 | 2011-11-01,9.4 433 | 2011-12-01,9.3 434 | 2012-01-01,9.2 435 | 2012-02-01,9.1 436 | 2012-03-01,9.0 437 | 2012-04-01,8.9 438 | 2012-05-01,8.9 439 | 2012-06-01,8.8 440 | 2012-07-01,8.6 441 | 2012-08-01,8.5 442 | 2012-09-01,8.4 443 | 2012-10-01,8.3 444 | 2012-11-01,8.2 445 | 2012-12-01,8.1 446 | 2013-01-01,8.0 447 | 2013-02-01,8.0 448 | 2013-03-01,7.9 449 | 2013-04-01,7.8 450 | 2013-05-01,7.6 451 | 2013-06-01,7.6 452 | 2013-07-01,7.5 453 | 2013-08-01,7.4 454 | 2013-09-01,7.3 455 | 2013-10-01,7.2 456 | 2013-11-01,7.1 457 | 2013-12-01,7.0 458 | 2014-01-01,6.9 459 | 2014-02-01,6.8 460 | 2014-03-01,6.7 461 | 2014-04-01,6.7 462 | 2014-05-01,6.6 463 | 2014-06-01,6.5 464 | 2014-07-01,6.4 465 | 2014-08-01,6.3 466 | 2014-09-01,6.2 467 | 2014-10-01,6.1 468 | 2014-11-01,6.0 469 | 2014-12-01,6.0 470 | 2015-01-01,5.9 471 | 2015-02-01,5.8 472 | 2015-03-01,5.8 473 | 2015-04-01,5.7 474 | 2015-05-01,5.7 475 | 2015-06-01,5.6 476 | 2015-07-01,5.5 477 | 2015-08-01,5.4 478 | 2015-09-01,5.3 479 | 2015-10-01,5.3 480 | 2015-11-01,5.2 481 | 2015-12-01,5.1 482 | 2016-01-01,5.1 483 | 2016-02-01,5.0 484 | 2016-03-01,5.0 485 | 2016-04-01,4.9 486 | 2016-05-01,4.9 487 | 2016-06-01,4.9 488 | 2016-07-01,4.9 489 | 2016-08-01,4.9 490 | 2016-09-01,4.9 491 | 2016-10-01,4.9 492 | 2016-11-01,4.8 493 | 2016-12-01,4.8 494 | 2017-01-01,4.7 495 | 2017-02-01,4.5 496 | 2017-03-01,4.4 497 | 2017-04-01,4.3 498 | 2017-05-01,4.3 499 | 2017-06-01,4.2 500 | 2017-07-01,4.2 501 | 2017-08-01,4.2 502 | 2017-09-01,4.1 503 | 2017-10-01,4.1 504 | 2017-11-01,4.0 505 | 2017-12-01,4.0 506 | 2018-01-01,3.9 507 | 2018-02-01,3.9 508 | 2018-03-01,3.8 509 | 2018-04-01,3.7 510 | 2018-05-01,3.6 511 | 2018-06-01,3.6 512 | 2018-07-01,3.5 513 | 2018-08-01,3.5 514 | 2018-09-01,3.5 515 | 2018-10-01,3.5 516 | 2018-11-01,3.5 517 | 2018-12-01,3.5 518 | 2019-01-01,3.5 519 | 2019-02-01,3.4 520 | 2019-03-01,3.4 521 | 2019-04-01,3.3 522 | 2019-05-01,3.3 523 | 2019-06-01,3.2 524 | 2019-07-01,3.3 525 | 2019-08-01,3.3 526 | 2019-09-01,3.2 527 | 2019-10-01,3.2 528 | 2019-11-01,3.2 529 | 2019-12-01,3.2 530 | 2020-01-01,3.3 531 | 2020-02-01,3.3 532 | 2020-03-01,4.9 533 | 2020-04-01,14.0 534 | 2020-05-01,14.2 535 | 2020-06-01,11.6 536 | 2020-07-01,11.5 537 | 2020-08-01,7.9 538 | 2020-09-01,7.2 539 | 2020-10-01,5.8 540 | 2020-11-01,5.4 541 | 2020-12-01,5.1 542 | 2021-01-01,4.8 543 | 2021-02-01,4.7 544 | 2021-03-01,4.7 545 | 2021-04-01,4.8 546 | 2021-05-01,4.9 547 | 2021-06-01,5.0 548 | 2021-07-01,5.1 549 | 2021-08-01,5.0 550 | 2021-09-01,4.8 551 | 2021-10-01,4.6 552 | -------------------------------------------------------------------------------- /data/NYUR.csv: -------------------------------------------------------------------------------- 1 | DATE,NYUR 2 | 1976-01-01,10.3 3 | 1976-02-01,10.300 4 | 1976-03-01,10.200 5 | 1976-04-01,10.200 6 | 1976-05-01,10.1 7 | 1976-06-01,10.200 8 | 1976-07-01,10.200 9 | 1976-08-01,10.200 10 | 1976-09-01,10.200 11 | 1976-10-01,10.200 12 | 1976-11-01,10.200 13 | 1976-12-01,10.2 14 | 1977-01-01,10.1 15 | 1977-02-01,10.0 16 | 1977-03-01,9.8 17 | 1977-04-01,9.6 18 | 1977-05-01,9.300 19 | 1977-06-01,9.100 20 | 1977-07-01,9.000 21 | 1977-08-01,8.800 22 | 1977-09-01,8.8 23 | 1977-10-01,8.600 24 | 1977-11-01,8.500 25 | 1977-12-01,8.400 26 | 1978-01-01,8.2 27 | 1978-02-01,8.100 28 | 1978-03-01,8.000 29 | 1978-04-01,7.900 30 | 1978-05-01,7.8 31 | 1978-06-01,7.800 32 | 1978-07-01,7.700 33 | 1978-08-01,7.600 34 | 1978-09-01,7.5 35 | 1978-10-01,7.4 36 | 1978-11-01,7.3 37 | 1978-12-01,7.2 38 | 1979-01-01,7.200 39 | 1979-02-01,7.100 40 | 1979-03-01,7.0 41 | 1979-04-01,7.000 42 | 1979-05-01,7.0 43 | 1979-06-01,7.0 44 | 1979-07-01,7.1 45 | 1979-08-01,7.1 46 | 1979-09-01,7.2 47 | 1979-10-01,7.2 48 | 1979-11-01,7.2 49 | 1979-12-01,7.1 50 | 1980-01-01,7.1 51 | 1980-02-01,7.1 52 | 1980-03-01,7.2 53 | 1980-04-01,7.400 54 | 1980-05-01,7.500 55 | 1980-06-01,7.600 56 | 1980-07-01,7.6 57 | 1980-08-01,7.600 58 | 1980-09-01,7.600 59 | 1980-10-01,7.500 60 | 1980-11-01,7.5 61 | 1980-12-01,7.5 62 | 1981-01-01,7.6 63 | 1981-02-01,7.6 64 | 1981-03-01,7.6 65 | 1981-04-01,7.6 66 | 1981-05-01,7.5 67 | 1981-06-01,7.4 68 | 1981-07-01,7.400 69 | 1981-08-01,7.4 70 | 1981-09-01,7.400 71 | 1981-10-01,7.6 72 | 1981-11-01,7.7 73 | 1981-12-01,7.9 74 | 1982-01-01,8.1 75 | 1982-02-01,8.2 76 | 1982-03-01,8.3 77 | 1982-04-01,8.4 78 | 1982-05-01,8.4 79 | 1982-06-01,8.5 80 | 1982-07-01,8.6 81 | 1982-08-01,8.8 82 | 1982-09-01,9.0 83 | 1982-10-01,9.2 84 | 1982-11-01,9.4 85 | 1982-12-01,9.5 86 | 1983-01-01,9.6 87 | 1983-02-01,9.5 88 | 1983-03-01,9.5 89 | 1983-04-01,9.4 90 | 1983-05-01,9.3 91 | 1983-06-01,9.1 92 | 1983-07-01,8.9 93 | 1983-08-01,8.7 94 | 1983-09-01,8.5 95 | 1983-10-01,8.3 96 | 1983-11-01,8.0 97 | 1983-12-01,7.8 98 | 1984-01-01,7.6 99 | 1984-02-01,7.5 100 | 1984-03-01,7.3 101 | 1984-04-01,7.2 102 | 1984-05-01,7.2 103 | 1984-06-01,7.200 104 | 1984-07-01,7.3 105 | 1984-08-01,7.200 106 | 1984-09-01,7.200 107 | 1984-10-01,7.100 108 | 1984-11-01,7.000 109 | 1984-12-01,6.9 110 | 1985-01-01,6.800 111 | 1985-02-01,6.800 112 | 1985-03-01,6.800 113 | 1985-04-01,6.700 114 | 1985-05-01,6.700 115 | 1985-06-01,6.600 116 | 1985-07-01,6.600 117 | 1985-08-01,6.500 118 | 1985-09-01,6.500 119 | 1985-10-01,6.400 120 | 1985-11-01,6.400 121 | 1985-12-01,6.4 122 | 1986-01-01,6.500 123 | 1986-02-01,6.600 124 | 1986-03-01,6.600 125 | 1986-04-01,6.6 126 | 1986-05-01,6.600 127 | 1986-06-01,6.500 128 | 1986-07-01,6.300 129 | 1986-08-01,6.100 130 | 1986-09-01,5.900 131 | 1986-10-01,5.800 132 | 1986-11-01,5.6 133 | 1986-12-01,5.500 134 | 1987-01-01,5.3 135 | 1987-02-01,5.2 136 | 1987-03-01,5.100 137 | 1987-04-01,4.9 138 | 1987-05-01,4.8 139 | 1987-06-01,4.7 140 | 1987-07-01,4.7 141 | 1987-08-01,4.700 142 | 1987-09-01,4.6 143 | 1987-10-01,4.6 144 | 1987-11-01,4.5 145 | 1987-12-01,4.4 146 | 1988-01-01,4.300 147 | 1988-02-01,4.1 148 | 1988-03-01,4.000 149 | 1988-04-01,4.000 150 | 1988-05-01,4.000 151 | 1988-06-01,4.100 152 | 1988-07-01,4.200 153 | 1988-08-01,4.3 154 | 1988-09-01,4.4 155 | 1988-10-01,4.4 156 | 1988-11-01,4.5 157 | 1988-12-01,4.5 158 | 1989-01-01,4.5 159 | 1989-02-01,4.6 160 | 1989-03-01,4.6 161 | 1989-04-01,4.7 162 | 1989-05-01,4.7 163 | 1989-06-01,4.8 164 | 1989-07-01,4.9 165 | 1989-08-01,5.0 166 | 1989-09-01,5.100 167 | 1989-10-01,5.1 168 | 1989-11-01,5.200 169 | 1989-12-01,5.200 170 | 1990-01-01,5.200 171 | 1990-02-01,5.1 172 | 1990-03-01,5.100 173 | 1990-04-01,5.0 174 | 1990-05-01,5.0 175 | 1990-06-01,5.100 176 | 1990-07-01,5.1 177 | 1990-08-01,5.300 178 | 1990-09-01,5.500 179 | 1990-10-01,5.7 180 | 1990-11-01,5.900 181 | 1990-12-01,6.2 182 | 1991-01-01,6.400 183 | 1991-02-01,6.7 184 | 1991-03-01,7.0 185 | 1991-04-01,7.2 186 | 1991-05-01,7.300 187 | 1991-06-01,7.4 188 | 1991-07-01,7.4 189 | 1991-08-01,7.400 190 | 1991-09-01,7.5 191 | 1991-10-01,7.600 192 | 1991-11-01,7.8 193 | 1991-12-01,8.000 194 | 1992-01-01,8.2 195 | 1992-02-01,8.4 196 | 1992-03-01,8.500 197 | 1992-04-01,8.7 198 | 1992-05-01,8.8 199 | 1992-06-01,8.800 200 | 1992-07-01,8.9 201 | 1992-08-01,8.9 202 | 1992-09-01,8.9 203 | 1992-10-01,8.8 204 | 1992-11-01,8.7 205 | 1992-12-01,8.6 206 | 1993-01-01,8.400 207 | 1993-02-01,8.3 208 | 1993-03-01,8.1 209 | 1993-04-01,8.0 210 | 1993-05-01,7.9 211 | 1993-06-01,7.800 212 | 1993-07-01,7.800 213 | 1993-08-01,7.800 214 | 1993-09-01,7.800 215 | 1993-10-01,7.800 216 | 1993-11-01,7.7 217 | 1993-12-01,7.700 218 | 1994-01-01,7.6 219 | 1994-02-01,7.5 220 | 1994-03-01,7.400 221 | 1994-04-01,7.300 222 | 1994-05-01,7.100 223 | 1994-06-01,7.000 224 | 1994-07-01,6.8 225 | 1994-08-01,6.700 226 | 1994-09-01,6.600 227 | 1994-10-01,6.500 228 | 1994-11-01,6.300 229 | 1994-12-01,6.200 230 | 1995-01-01,6.200 231 | 1995-02-01,6.200 232 | 1995-03-01,6.200 233 | 1995-04-01,6.300 234 | 1995-05-01,6.300 235 | 1995-06-01,6.400 236 | 1995-07-01,6.400 237 | 1995-08-01,6.5 238 | 1995-09-01,6.400 239 | 1995-10-01,6.400 240 | 1995-11-01,6.4 241 | 1995-12-01,6.300 242 | 1996-01-01,6.300 243 | 1996-02-01,6.300 244 | 1996-03-01,6.300 245 | 1996-04-01,6.3 246 | 1996-05-01,6.300 247 | 1996-06-01,6.300 248 | 1996-07-01,6.200 249 | 1996-08-01,6.100 250 | 1996-09-01,6.100 251 | 1996-10-01,6.2 252 | 1996-11-01,6.300 253 | 1996-12-01,6.400 254 | 1997-01-01,6.500 255 | 1997-02-01,6.5 256 | 1997-03-01,6.600 257 | 1997-04-01,6.5 258 | 1997-05-01,6.5 259 | 1997-06-01,6.5 260 | 1997-07-01,6.500 261 | 1997-08-01,6.400 262 | 1997-09-01,6.300 263 | 1997-10-01,6.2 264 | 1997-11-01,6.200 265 | 1997-12-01,6.100 266 | 1998-01-01,6.000 267 | 1998-02-01,5.900 268 | 1998-03-01,5.800 269 | 1998-04-01,5.700 270 | 1998-05-01,5.600 271 | 1998-06-01,5.500 272 | 1998-07-01,5.500 273 | 1998-08-01,5.500 274 | 1998-09-01,5.500 275 | 1998-10-01,5.4 276 | 1998-11-01,5.400 277 | 1998-12-01,5.400 278 | 1999-01-01,5.300 279 | 1999-02-01,5.300 280 | 1999-03-01,5.300 281 | 1999-04-01,5.300 282 | 1999-05-01,5.300 283 | 1999-06-01,5.300 284 | 1999-07-01,5.300 285 | 1999-08-01,5.200 286 | 1999-09-01,5.2 287 | 1999-10-01,5.000 288 | 1999-11-01,4.900 289 | 1999-12-01,4.800 290 | 2000-01-01,4.700 291 | 2000-02-01,4.6 292 | 2000-03-01,4.600 293 | 2000-04-01,4.600 294 | 2000-05-01,4.600 295 | 2000-06-01,4.5 296 | 2000-07-01,4.5 297 | 2000-08-01,4.500 298 | 2000-09-01,4.500 299 | 2000-10-01,4.400 300 | 2000-11-01,4.300 301 | 2000-12-01,4.3 302 | 2001-01-01,4.200 303 | 2001-02-01,4.200 304 | 2001-03-01,4.3 305 | 2001-04-01,4.3 306 | 2001-05-01,4.400 307 | 2001-06-01,4.6 308 | 2001-07-01,4.8 309 | 2001-08-01,5.000 310 | 2001-09-01,5.300 311 | 2001-10-01,5.6 312 | 2001-11-01,5.800 313 | 2001-12-01,6.000 314 | 2002-01-01,6.2 315 | 2002-02-01,6.3 316 | 2002-03-01,6.300 317 | 2002-04-01,6.300 318 | 2002-05-01,6.3 319 | 2002-06-01,6.2 320 | 2002-07-01,6.100 321 | 2002-08-01,6.1 322 | 2002-09-01,6.1 323 | 2002-10-01,6.100 324 | 2002-11-01,6.2 325 | 2002-12-01,6.200 326 | 2003-01-01,6.300 327 | 2003-02-01,6.300 328 | 2003-03-01,6.300 329 | 2003-04-01,6.4 330 | 2003-05-01,6.400 331 | 2003-06-01,6.5 332 | 2003-07-01,6.500 333 | 2003-08-01,6.500 334 | 2003-09-01,6.500 335 | 2003-10-01,6.400 336 | 2003-11-01,6.400 337 | 2003-12-01,6.3 338 | 2004-01-01,6.3 339 | 2004-02-01,6.300 340 | 2004-03-01,6.2 341 | 2004-04-01,6.100 342 | 2004-05-01,6.000 343 | 2004-06-01,5.9 344 | 2004-07-01,5.700 345 | 2004-08-01,5.600 346 | 2004-09-01,5.5 347 | 2004-10-01,5.4 348 | 2004-11-01,5.300 349 | 2004-12-01,5.200 350 | 2005-01-01,5.100 351 | 2005-02-01,5.1 352 | 2005-03-01,5.000 353 | 2005-04-01,4.9 354 | 2005-05-01,4.900 355 | 2005-06-01,4.900 356 | 2005-07-01,4.9 357 | 2005-08-01,5.000 358 | 2005-09-01,5.0 359 | 2005-10-01,4.9 360 | 2005-11-01,4.9 361 | 2005-12-01,4.900 362 | 2006-01-01,4.800 363 | 2006-02-01,4.7 364 | 2006-03-01,4.700 365 | 2006-04-01,4.700 366 | 2006-05-01,4.700 367 | 2006-06-01,4.6 368 | 2006-07-01,4.5 369 | 2006-08-01,4.500 370 | 2006-09-01,4.400 371 | 2006-10-01,4.300 372 | 2006-11-01,4.300 373 | 2006-12-01,4.2 374 | 2007-01-01,4.2 375 | 2007-02-01,4.2 376 | 2007-03-01,4.2 377 | 2007-04-01,4.3 378 | 2007-05-01,4.3 379 | 2007-06-01,4.4 380 | 2007-07-01,4.5 381 | 2007-08-01,4.5 382 | 2007-09-01,4.6 383 | 2007-10-01,4.6 384 | 2007-11-01,4.7 385 | 2007-12-01,4.7 386 | 2008-01-01,4.7 387 | 2008-02-01,4.8 388 | 2008-03-01,4.8 389 | 2008-04-01,4.9 390 | 2008-05-01,5.0 391 | 2008-06-01,5.2 392 | 2008-07-01,5.3 393 | 2008-08-01,5.5 394 | 2008-09-01,5.7 395 | 2008-10-01,6.0 396 | 2008-11-01,6.3 397 | 2008-12-01,6.7 398 | 2009-01-01,7.1 399 | 2009-02-01,7.5 400 | 2009-03-01,7.9 401 | 2009-04-01,8.1 402 | 2009-05-01,8.3 403 | 2009-06-01,8.5 404 | 2009-07-01,8.6 405 | 2009-08-01,8.7 406 | 2009-09-01,8.800 407 | 2009-10-01,8.9 408 | 2009-11-01,9.0 409 | 2009-12-01,9.0 410 | 2010-01-01,9.0 411 | 2010-02-01,9.0 412 | 2010-03-01,8.9 413 | 2010-04-01,8.8 414 | 2010-05-01,8.8 415 | 2010-06-01,8.7 416 | 2010-07-01,8.6 417 | 2010-08-01,8.6 418 | 2010-09-01,8.6 419 | 2010-10-01,8.6 420 | 2010-11-01,8.5 421 | 2010-12-01,8.5 422 | 2011-01-01,8.4 423 | 2011-02-01,8.3 424 | 2011-03-01,8.2 425 | 2011-04-01,8.2 426 | 2011-05-01,8.2 427 | 2011-06-01,8.3 428 | 2011-07-01,8.3 429 | 2011-08-01,8.4 430 | 2011-09-01,8.400 431 | 2011-10-01,8.5 432 | 2011-11-01,8.500 433 | 2011-12-01,8.6 434 | 2012-01-01,8.600 435 | 2012-02-01,8.600 436 | 2012-03-01,8.7 437 | 2012-04-01,8.8 438 | 2012-05-01,8.8 439 | 2012-06-01,8.8 440 | 2012-07-01,8.7 441 | 2012-08-01,8.6 442 | 2012-09-01,8.6 443 | 2012-10-01,8.5 444 | 2012-11-01,8.4 445 | 2012-12-01,8.4 446 | 2013-01-01,8.3 447 | 2013-02-01,8.2 448 | 2013-03-01,8.1 449 | 2013-04-01,8.0 450 | 2013-05-01,7.9 451 | 2013-06-01,7.9 452 | 2013-07-01,7.8 453 | 2013-08-01,7.8 454 | 2013-09-01,7.6 455 | 2013-10-01,7.5 456 | 2013-11-01,7.3 457 | 2013-12-01,7.1 458 | 2014-01-01,7.0 459 | 2014-02-01,6.8 460 | 2014-03-01,6.7 461 | 2014-04-01,6.5 462 | 2014-05-01,6.4 463 | 2014-06-01,6.3 464 | 2014-07-01,6.2 465 | 2014-08-01,6.1 466 | 2014-09-01,6.000 467 | 2014-10-01,5.9 468 | 2014-11-01,5.8 469 | 2014-12-01,5.800 470 | 2015-01-01,5.7 471 | 2015-02-01,5.6 472 | 2015-03-01,5.6 473 | 2015-04-01,5.5 474 | 2015-05-01,5.4 475 | 2015-06-01,5.3 476 | 2015-07-01,5.2 477 | 2015-08-01,5.0 478 | 2015-09-01,4.9 479 | 2015-10-01,4.9 480 | 2015-11-01,4.9 481 | 2015-12-01,4.8 482 | 2016-01-01,4.8 483 | 2016-02-01,4.8 484 | 2016-03-01,4.8 485 | 2016-04-01,4.8 486 | 2016-05-01,4.8 487 | 2016-06-01,4.9 488 | 2016-07-01,4.9 489 | 2016-08-01,5.0 490 | 2016-09-01,5.0 491 | 2016-10-01,5.0 492 | 2016-11-01,4.9 493 | 2016-12-01,4.8 494 | 2017-01-01,4.7 495 | 2017-02-01,4.7 496 | 2017-03-01,4.6 497 | 2017-04-01,4.6 498 | 2017-05-01,4.6 499 | 2017-06-01,4.7 500 | 2017-07-01,4.7 501 | 2017-08-01,4.7 502 | 2017-09-01,4.7 503 | 2017-10-01,4.6 504 | 2017-11-01,4.6 505 | 2017-12-01,4.6 506 | 2018-01-01,4.5 507 | 2018-02-01,4.4 508 | 2018-03-01,4.3 509 | 2018-04-01,4.2 510 | 2018-05-01,4.1 511 | 2018-06-01,4.0 512 | 2018-07-01,3.9 513 | 2018-08-01,3.9 514 | 2018-09-01,3.9 515 | 2018-10-01,3.9 516 | 2018-11-01,4.0 517 | 2018-12-01,4.0 518 | 2019-01-01,4.0 519 | 2019-02-01,3.9 520 | 2019-03-01,3.9 521 | 2019-04-01,3.8 522 | 2019-05-01,3.8 523 | 2019-06-01,3.8 524 | 2019-07-01,3.8 525 | 2019-08-01,3.8 526 | 2019-09-01,3.8 527 | 2019-10-01,3.8 528 | 2019-11-01,3.7 529 | 2019-12-01,3.7 530 | 2020-01-01,3.8 531 | 2020-02-01,3.9 532 | 2020-03-01,3.9 533 | 2020-04-01,16.2 534 | 2020-05-01,15.7 535 | 2020-06-01,15.0 536 | 2020-07-01,14.7 537 | 2020-08-01,11.7 538 | 2020-09-01,10.0 539 | 2020-10-01,8.7 540 | 2020-11-01,8.7 541 | 2020-12-01,8.7 542 | 2021-01-01,8.8 543 | 2021-02-01,8.9 544 | 2021-03-01,8.4 545 | 2021-04-01,8.2 546 | 2021-05-01,7.8 547 | 2021-06-01,7.7 548 | 2021-07-01,7.6 549 | 2021-08-01,7.4 550 | 2021-09-01,7.1 551 | 2021-10-01,6.9 552 | -------------------------------------------------------------------------------- /data/TNUR.csv: -------------------------------------------------------------------------------- 1 | DATE,TNUR 2 | 1976-01-01,6.0 3 | 1976-02-01,6.0 4 | 1976-03-01,6.000 5 | 1976-04-01,6.0 6 | 1976-05-01,5.9 7 | 1976-06-01,5.9 8 | 1976-07-01,6.0 9 | 1976-08-01,6.1 10 | 1976-09-01,6.100 11 | 1976-10-01,6.3 12 | 1976-11-01,6.400 13 | 1976-12-01,6.500 14 | 1977-01-01,6.5 15 | 1977-02-01,6.600 16 | 1977-03-01,6.5 17 | 1977-04-01,6.500 18 | 1977-05-01,6.400 19 | 1977-06-01,6.3 20 | 1977-07-01,6.2 21 | 1977-08-01,6.1 22 | 1977-09-01,6.1 23 | 1977-10-01,6.000 24 | 1977-11-01,6.0 25 | 1977-12-01,6.0 26 | 1978-01-01,5.9 27 | 1978-02-01,5.9 28 | 1978-03-01,5.8 29 | 1978-04-01,5.8 30 | 1978-05-01,5.8 31 | 1978-06-01,5.800 32 | 1978-07-01,5.900 33 | 1978-08-01,5.900 34 | 1978-09-01,5.9 35 | 1978-10-01,5.900 36 | 1978-11-01,5.8 37 | 1978-12-01,5.700 38 | 1979-01-01,5.7 39 | 1979-02-01,5.600 40 | 1979-03-01,5.7 41 | 1979-04-01,5.700 42 | 1979-05-01,5.800 43 | 1979-06-01,5.900 44 | 1979-07-01,5.9 45 | 1979-08-01,6.0 46 | 1979-09-01,6.000 47 | 1979-10-01,6.000 48 | 1979-11-01,6.0 49 | 1979-12-01,6.000 50 | 1980-01-01,6.100 51 | 1980-02-01,6.2 52 | 1980-03-01,6.4 53 | 1980-04-01,6.7 54 | 1980-05-01,7.1 55 | 1980-06-01,7.4 56 | 1980-07-01,7.6 57 | 1980-08-01,7.7 58 | 1980-09-01,7.8 59 | 1980-10-01,7.8 60 | 1980-11-01,7.9 61 | 1980-12-01,8.0 62 | 1981-01-01,8.2 63 | 1981-02-01,8.3 64 | 1981-03-01,8.5 65 | 1981-04-01,8.500 66 | 1981-05-01,8.6 67 | 1981-06-01,8.6 68 | 1981-07-01,8.7 69 | 1981-08-01,8.9 70 | 1981-09-01,9.100 71 | 1981-10-01,9.4 72 | 1981-11-01,9.8 73 | 1981-12-01,10.2 74 | 1982-01-01,10.6 75 | 1982-02-01,10.9 76 | 1982-03-01,11.1 77 | 1982-04-01,11.2 78 | 1982-05-01,11.3 79 | 1982-06-01,11.4 80 | 1982-07-01,11.600 81 | 1982-08-01,11.800 82 | 1982-09-01,12.2 83 | 1982-10-01,12.500 84 | 1982-11-01,12.7 85 | 1982-12-01,12.8 86 | 1983-01-01,12.8 87 | 1983-02-01,12.7 88 | 1983-03-01,12.5 89 | 1983-04-01,12.300 90 | 1983-05-01,12.100 91 | 1983-06-01,11.9 92 | 1983-07-01,11.7 93 | 1983-08-01,11.4 94 | 1983-09-01,11.1 95 | 1983-10-01,10.8 96 | 1983-11-01,10.4 97 | 1983-12-01,10.1 98 | 1984-01-01,9.8 99 | 1984-02-01,9.5 100 | 1984-03-01,9.3 101 | 1984-04-01,9.1 102 | 1984-05-01,9.0 103 | 1984-06-01,8.9 104 | 1984-07-01,8.8 105 | 1984-08-01,8.6 106 | 1984-09-01,8.5 107 | 1984-10-01,8.3 108 | 1984-11-01,8.2 109 | 1984-12-01,8.1 110 | 1985-01-01,8.0 111 | 1985-02-01,8.0 112 | 1985-03-01,8.000 113 | 1985-04-01,8.000 114 | 1985-05-01,8.0 115 | 1985-06-01,8.0 116 | 1985-07-01,7.9 117 | 1985-08-01,7.900 118 | 1985-09-01,7.800 119 | 1985-10-01,7.800 120 | 1985-11-01,7.800 121 | 1985-12-01,7.8 122 | 1986-01-01,7.9 123 | 1986-02-01,8.0 124 | 1986-03-01,8.0 125 | 1986-04-01,8.100 126 | 1986-05-01,8.000 127 | 1986-06-01,8.0 128 | 1986-07-01,7.9 129 | 1986-08-01,7.9 130 | 1986-09-01,7.9 131 | 1986-10-01,7.800 132 | 1986-11-01,7.700 133 | 1986-12-01,7.600 134 | 1987-01-01,7.5 135 | 1987-02-01,7.4 136 | 1987-03-01,7.3 137 | 1987-04-01,7.1 138 | 1987-05-01,7.0 139 | 1987-06-01,6.8 140 | 1987-07-01,6.6 141 | 1987-08-01,6.4 142 | 1987-09-01,6.2 143 | 1987-10-01,6.1 144 | 1987-11-01,6.0 145 | 1987-12-01,5.900 146 | 1988-01-01,5.800 147 | 1988-02-01,5.800 148 | 1988-03-01,5.800 149 | 1988-04-01,5.800 150 | 1988-05-01,5.800 151 | 1988-06-01,5.800 152 | 1988-07-01,5.8 153 | 1988-08-01,5.900 154 | 1988-09-01,5.900 155 | 1988-10-01,5.8 156 | 1988-11-01,5.7 157 | 1988-12-01,5.600 158 | 1989-01-01,5.4 159 | 1989-02-01,5.2 160 | 1989-03-01,5.1 161 | 1989-04-01,5.0 162 | 1989-05-01,5.0 163 | 1989-06-01,5.000 164 | 1989-07-01,5.0 165 | 1989-08-01,5.100 166 | 1989-09-01,5.1 167 | 1989-10-01,5.1 168 | 1989-11-01,5.0 169 | 1989-12-01,5.000 170 | 1990-01-01,5.000 171 | 1990-02-01,5.000 172 | 1990-03-01,5.000 173 | 1990-04-01,5.100 174 | 1990-05-01,5.100 175 | 1990-06-01,5.200 176 | 1990-07-01,5.300 177 | 1990-08-01,5.400 178 | 1990-09-01,5.500 179 | 1990-10-01,5.6 180 | 1990-11-01,5.9 181 | 1990-12-01,6.1 182 | 1991-01-01,6.2 183 | 1991-02-01,6.4 184 | 1991-03-01,6.5 185 | 1991-04-01,6.6 186 | 1991-05-01,6.6 187 | 1991-06-01,6.6 188 | 1991-07-01,6.6 189 | 1991-08-01,6.7 190 | 1991-09-01,6.7 191 | 1991-10-01,6.7 192 | 1991-11-01,6.800 193 | 1991-12-01,6.800 194 | 1992-01-01,6.800 195 | 1992-02-01,6.700 196 | 1992-03-01,6.600 197 | 1992-04-01,6.6 198 | 1992-05-01,6.500 199 | 1992-06-01,6.400 200 | 1992-07-01,6.3 201 | 1992-08-01,6.3 202 | 1992-09-01,6.3 203 | 1992-10-01,6.3 204 | 1992-11-01,6.3 205 | 1992-12-01,6.3 206 | 1993-01-01,6.3 207 | 1993-02-01,6.3 208 | 1993-03-01,6.2 209 | 1993-04-01,6.200 210 | 1993-05-01,6.100 211 | 1993-06-01,6.000 212 | 1993-07-01,5.9 213 | 1993-08-01,5.7 214 | 1993-09-01,5.6 215 | 1993-10-01,5.4 216 | 1993-11-01,5.3 217 | 1993-12-01,5.200 218 | 1994-01-01,5.2 219 | 1994-02-01,5.100 220 | 1994-03-01,5.000 221 | 1994-04-01,4.9 222 | 1994-05-01,4.8 223 | 1994-06-01,4.800 224 | 1994-07-01,4.7 225 | 1994-08-01,4.7 226 | 1994-09-01,4.700 227 | 1994-10-01,4.6 228 | 1994-11-01,4.600 229 | 1994-12-01,4.6 230 | 1995-01-01,4.6 231 | 1995-02-01,4.8 232 | 1995-03-01,4.900 233 | 1995-04-01,5.100 234 | 1995-05-01,5.300 235 | 1995-06-01,5.400 236 | 1995-07-01,5.4 237 | 1995-08-01,5.400 238 | 1995-09-01,5.3 239 | 1995-10-01,5.300 240 | 1995-11-01,5.200 241 | 1995-12-01,5.200 242 | 1996-01-01,5.2 243 | 1996-02-01,5.100 244 | 1996-03-01,5.100 245 | 1996-04-01,5.100 246 | 1996-05-01,5.000 247 | 1996-06-01,5.0 248 | 1996-07-01,5.0 249 | 1996-08-01,5.1 250 | 1996-09-01,5.2 251 | 1996-10-01,5.300 252 | 1996-11-01,5.4 253 | 1996-12-01,5.5 254 | 1997-01-01,5.5 255 | 1997-02-01,5.5 256 | 1997-03-01,5.500 257 | 1997-04-01,5.5 258 | 1997-05-01,5.400 259 | 1997-06-01,5.400 260 | 1997-07-01,5.400 261 | 1997-08-01,5.300 262 | 1997-09-01,5.2 263 | 1997-10-01,5.0 264 | 1997-11-01,4.8 265 | 1997-12-01,4.7 266 | 1998-01-01,4.6 267 | 1998-02-01,4.5 268 | 1998-03-01,4.4 269 | 1998-04-01,4.4 270 | 1998-05-01,4.300 271 | 1998-06-01,4.300 272 | 1998-07-01,4.300 273 | 1998-08-01,4.300 274 | 1998-09-01,4.300 275 | 1998-10-01,4.300 276 | 1998-11-01,4.300 277 | 1998-12-01,4.200 278 | 1999-01-01,4.200 279 | 1999-02-01,4.100 280 | 1999-03-01,4.100 281 | 1999-04-01,4.000 282 | 1999-05-01,3.9 283 | 1999-06-01,3.900 284 | 1999-07-01,3.900 285 | 1999-08-01,3.900 286 | 1999-09-01,3.900 287 | 1999-10-01,3.900 288 | 1999-11-01,3.9 289 | 1999-12-01,3.800 290 | 2000-01-01,3.8 291 | 2000-02-01,3.8 292 | 2000-03-01,3.8 293 | 2000-04-01,3.800 294 | 2000-05-01,3.9 295 | 2000-06-01,3.900 296 | 2000-07-01,3.9 297 | 2000-08-01,3.9 298 | 2000-09-01,3.900 299 | 2000-10-01,3.900 300 | 2000-11-01,3.900 301 | 2000-12-01,3.900 302 | 2001-01-01,3.900 303 | 2001-02-01,4.0 304 | 2001-03-01,4.000 305 | 2001-04-01,4.100 306 | 2001-05-01,4.200 307 | 2001-06-01,4.300 308 | 2001-07-01,4.500 309 | 2001-08-01,4.6 310 | 2001-09-01,4.8 311 | 2001-10-01,5.1 312 | 2001-11-01,5.3 313 | 2001-12-01,5.4 314 | 2002-01-01,5.5 315 | 2002-02-01,5.5 316 | 2002-03-01,5.5 317 | 2002-04-01,5.3 318 | 2002-05-01,5.2 319 | 2002-06-01,5.100 320 | 2002-07-01,5.0 321 | 2002-08-01,4.9 322 | 2002-09-01,4.800 323 | 2002-10-01,4.800 324 | 2002-11-01,4.900 325 | 2002-12-01,5.000 326 | 2003-01-01,5.1 327 | 2003-02-01,5.2 328 | 2003-03-01,5.3 329 | 2003-04-01,5.5 330 | 2003-05-01,5.6 331 | 2003-06-01,5.7 332 | 2003-07-01,5.7 333 | 2003-08-01,5.8 334 | 2003-09-01,5.7 335 | 2003-10-01,5.6 336 | 2003-11-01,5.5 337 | 2003-12-01,5.400 338 | 2004-01-01,5.300 339 | 2004-02-01,5.200 340 | 2004-03-01,5.100 341 | 2004-04-01,5.100 342 | 2004-05-01,5.100 343 | 2004-06-01,5.200 344 | 2004-07-01,5.300 345 | 2004-08-01,5.400 346 | 2004-09-01,5.500 347 | 2004-10-01,5.600 348 | 2004-11-01,5.700 349 | 2004-12-01,5.7 350 | 2005-01-01,5.8 351 | 2005-02-01,5.8 352 | 2005-03-01,5.7 353 | 2005-04-01,5.7 354 | 2005-05-01,5.6 355 | 2005-06-01,5.4 356 | 2005-07-01,5.400 357 | 2005-08-01,5.300 358 | 2005-09-01,5.4 359 | 2005-10-01,5.4 360 | 2005-11-01,5.4 361 | 2005-12-01,5.4 362 | 2006-01-01,5.4 363 | 2006-02-01,5.4 364 | 2006-03-01,5.5 365 | 2006-04-01,5.5 366 | 2006-05-01,5.5 367 | 2006-06-01,5.5 368 | 2006-07-01,5.400 369 | 2006-08-01,5.300 370 | 2006-09-01,5.200 371 | 2006-10-01,5.000 372 | 2006-11-01,4.9 373 | 2006-12-01,4.700 374 | 2007-01-01,4.6 375 | 2007-02-01,4.5 376 | 2007-03-01,4.4 377 | 2007-04-01,4.3 378 | 2007-05-01,4.3 379 | 2007-06-01,4.3 380 | 2007-07-01,4.5 381 | 2007-08-01,4.6 382 | 2007-09-01,4.8 383 | 2007-10-01,5.0 384 | 2007-11-01,5.1 385 | 2007-12-01,5.2 386 | 2008-01-01,5.3 387 | 2008-02-01,5.4 388 | 2008-03-01,5.6 389 | 2008-04-01,5.8 390 | 2008-05-01,6.1 391 | 2008-06-01,6.4 392 | 2008-07-01,6.6 393 | 2008-08-01,6.8 394 | 2008-09-01,7.0 395 | 2008-10-01,7.3 396 | 2008-11-01,7.7 397 | 2008-12-01,8.2 398 | 2009-01-01,8.7 399 | 2009-02-01,9.2 400 | 2009-03-01,9.7 401 | 2009-04-01,10.1 402 | 2009-05-01,10.3 403 | 2009-06-01,10.4 404 | 2009-07-01,10.5 405 | 2009-08-01,10.5 406 | 2009-09-01,10.5 407 | 2009-10-01,10.5 408 | 2009-11-01,10.5 409 | 2009-12-01,10.500 410 | 2010-01-01,10.5 411 | 2010-02-01,10.4 412 | 2010-03-01,10.2 413 | 2010-04-01,10.0 414 | 2010-05-01,9.8 415 | 2010-06-01,9.6 416 | 2010-07-01,9.5 417 | 2010-08-01,9.5 418 | 2010-09-01,9.5 419 | 2010-10-01,9.6 420 | 2010-11-01,9.7 421 | 2010-12-01,9.6 422 | 2011-01-01,9.6 423 | 2011-02-01,9.5 424 | 2011-03-01,9.4 425 | 2011-04-01,9.3 426 | 2011-05-01,9.3 427 | 2011-06-01,9.2 428 | 2011-07-01,9.2 429 | 2011-08-01,9.1 430 | 2011-09-01,8.9 431 | 2011-10-01,8.8 432 | 2011-11-01,8.6 433 | 2011-12-01,8.4 434 | 2012-01-01,8.2 435 | 2012-02-01,8.1 436 | 2012-03-01,8.0 437 | 2012-04-01,8.0 438 | 2012-05-01,8.0 439 | 2012-06-01,8.0 440 | 2012-07-01,8.0 441 | 2012-08-01,7.9 442 | 2012-09-01,7.8 443 | 2012-10-01,7.8 444 | 2012-11-01,7.8 445 | 2012-12-01,7.9 446 | 2013-01-01,8.0 447 | 2013-02-01,8.0 448 | 2013-03-01,8.0 449 | 2013-04-01,8.0 450 | 2013-05-01,7.9 451 | 2013-06-01,7.9 452 | 2013-07-01,7.800 453 | 2013-08-01,7.7 454 | 2013-09-01,7.6 455 | 2013-10-01,7.4 456 | 2013-11-01,7.3 457 | 2013-12-01,7.1 458 | 2014-01-01,6.9 459 | 2014-02-01,6.8 460 | 2014-03-01,6.8 461 | 2014-04-01,6.7 462 | 2014-05-01,6.7 463 | 2014-06-01,6.7 464 | 2014-07-01,6.6 465 | 2014-08-01,6.6 466 | 2014-09-01,6.5 467 | 2014-10-01,6.4 468 | 2014-11-01,6.3 469 | 2014-12-01,6.2 470 | 2015-01-01,6.1 471 | 2015-02-01,6.1 472 | 2015-03-01,6.0 473 | 2015-04-01,5.9 474 | 2015-05-01,5.8 475 | 2015-06-01,5.7 476 | 2015-07-01,5.5 477 | 2015-08-01,5.4 478 | 2015-09-01,5.3 479 | 2015-10-01,5.1 480 | 2015-11-01,5.0 481 | 2015-12-01,4.9 482 | 2016-01-01,4.8 483 | 2016-02-01,4.7 484 | 2016-03-01,4.7 485 | 2016-04-01,4.6 486 | 2016-05-01,4.7 487 | 2016-06-01,4.7 488 | 2016-07-01,4.8 489 | 2016-08-01,4.8 490 | 2016-09-01,4.9 491 | 2016-10-01,4.9 492 | 2016-11-01,4.8 493 | 2016-12-01,4.7 494 | 2017-01-01,4.6 495 | 2017-02-01,4.4 496 | 2017-03-01,4.1 497 | 2017-04-01,3.9 498 | 2017-05-01,3.7 499 | 2017-06-01,3.5 500 | 2017-07-01,3.5 501 | 2017-08-01,3.4 502 | 2017-09-01,3.4 503 | 2017-10-01,3.4 504 | 2017-11-01,3.5 505 | 2017-12-01,3.5 506 | 2018-01-01,3.5 507 | 2018-02-01,3.5 508 | 2018-03-01,3.5 509 | 2018-04-01,3.4 510 | 2018-05-01,3.5 511 | 2018-06-01,3.5 512 | 2018-07-01,3.5 513 | 2018-08-01,3.5 514 | 2018-09-01,3.5 515 | 2018-10-01,3.5 516 | 2018-11-01,3.5 517 | 2018-12-01,3.4 518 | 2019-01-01,3.4 519 | 2019-02-01,3.4 520 | 2019-03-01,3.3 521 | 2019-04-01,3.3 522 | 2019-05-01,3.3 523 | 2019-06-01,3.3 524 | 2019-07-01,3.3 525 | 2019-08-01,3.3 526 | 2019-09-01,3.4 527 | 2019-10-01,3.4 528 | 2019-11-01,3.5 529 | 2019-12-01,3.6 530 | 2020-01-01,3.7 531 | 2020-02-01,3.9 532 | 2020-03-01,4.0 533 | 2020-04-01,15.8 534 | 2020-05-01,9.6 535 | 2020-06-01,9.3 536 | 2020-07-01,8.9 537 | 2020-08-01,8.1 538 | 2020-09-01,7.9 539 | 2020-10-01,7.8 540 | 2020-11-01,5.6 541 | 2020-12-01,5.6 542 | 2021-01-01,5.1 543 | 2021-02-01,4.9 544 | 2021-03-01,5.1 545 | 2021-04-01,5.0 546 | 2021-05-01,5.0 547 | 2021-06-01,4.9 548 | 2021-07-01,4.7 549 | 2021-08-01,4.6 550 | 2021-09-01,4.4 551 | 2021-10-01,4.2 552 | -------------------------------------------------------------------------------- /data/TXUR.csv: -------------------------------------------------------------------------------- 1 | DATE,TXUR 2 | 1976-01-01,5.8 3 | 1976-02-01,5.8 4 | 1976-03-01,5.900 5 | 1976-04-01,5.900 6 | 1976-05-01,5.900 7 | 1976-06-01,5.9 8 | 1976-07-01,5.9 9 | 1976-08-01,5.8 10 | 1976-09-01,5.700 11 | 1976-10-01,5.7 12 | 1976-11-01,5.700 13 | 1976-12-01,5.8 14 | 1977-01-01,5.8 15 | 1977-02-01,5.8 16 | 1977-03-01,5.7 17 | 1977-04-01,5.5 18 | 1977-05-01,5.4 19 | 1977-06-01,5.3 20 | 1977-07-01,5.200 21 | 1977-08-01,5.3 22 | 1977-09-01,5.3 23 | 1977-10-01,5.3 24 | 1977-11-01,5.3 25 | 1977-12-01,5.3 26 | 1978-01-01,5.2 27 | 1978-02-01,5.1 28 | 1978-03-01,5.0 29 | 1978-04-01,4.9 30 | 1978-05-01,4.9 31 | 1978-06-01,4.8 32 | 1978-07-01,4.8 33 | 1978-08-01,4.8 34 | 1978-09-01,4.8 35 | 1978-10-01,4.8 36 | 1978-11-01,4.7 37 | 1978-12-01,4.600 38 | 1979-01-01,4.500 39 | 1979-02-01,4.400 40 | 1979-03-01,4.4 41 | 1979-04-01,4.4 42 | 1979-05-01,4.4 43 | 1979-06-01,4.4 44 | 1979-07-01,4.400 45 | 1979-08-01,4.4 46 | 1979-09-01,4.4 47 | 1979-10-01,4.4 48 | 1979-11-01,4.4 49 | 1979-12-01,4.5 50 | 1980-01-01,4.7 51 | 1980-02-01,4.9 52 | 1980-03-01,5.1 53 | 1980-04-01,5.3 54 | 1980-05-01,5.4 55 | 1980-06-01,5.4 56 | 1980-07-01,5.4 57 | 1980-08-01,5.4 58 | 1980-09-01,5.4 59 | 1980-10-01,5.4 60 | 1980-11-01,5.3 61 | 1980-12-01,5.3 62 | 1981-01-01,5.200 63 | 1981-02-01,5.200 64 | 1981-03-01,5.200 65 | 1981-04-01,5.200 66 | 1981-05-01,5.3 67 | 1981-06-01,5.3 68 | 1981-07-01,5.300 69 | 1981-08-01,5.4 70 | 1981-09-01,5.4 71 | 1981-10-01,5.5 72 | 1981-11-01,5.500 73 | 1981-12-01,5.7 74 | 1982-01-01,5.8 75 | 1982-02-01,6.0 76 | 1982-03-01,6.2 77 | 1982-04-01,6.3 78 | 1982-05-01,6.5 79 | 1982-06-01,6.700 80 | 1982-07-01,6.900 81 | 1982-08-01,7.1 82 | 1982-09-01,7.4 83 | 1982-10-01,7.7 84 | 1982-11-01,8.0 85 | 1982-12-01,8.2 86 | 1983-01-01,8.400 87 | 1983-02-01,8.500 88 | 1983-03-01,8.5 89 | 1983-04-01,8.5 90 | 1983-05-01,8.4 91 | 1983-06-01,8.3 92 | 1983-07-01,8.2 93 | 1983-08-01,8.0 94 | 1983-09-01,7.8 95 | 1983-10-01,7.6 96 | 1983-11-01,7.4 97 | 1983-12-01,7.1 98 | 1984-01-01,6.8 99 | 1984-02-01,6.6 100 | 1984-03-01,6.4 101 | 1984-04-01,6.200 102 | 1984-05-01,6.0 103 | 1984-06-01,5.9 104 | 1984-07-01,5.800 105 | 1984-08-01,5.800 106 | 1984-09-01,5.900 107 | 1984-10-01,6.000 108 | 1984-11-01,6.200 109 | 1984-12-01,6.300 110 | 1985-01-01,6.400 111 | 1985-02-01,6.600 112 | 1985-03-01,6.700 113 | 1985-04-01,6.800 114 | 1985-05-01,6.900 115 | 1985-06-01,7.100 116 | 1985-07-01,7.200 117 | 1985-08-01,7.2 118 | 1985-09-01,7.300 119 | 1985-10-01,7.300 120 | 1985-11-01,7.3 121 | 1985-12-01,7.500 122 | 1986-01-01,7.6 123 | 1986-02-01,7.9 124 | 1986-03-01,8.2 125 | 1986-04-01,8.5 126 | 1986-05-01,8.800 127 | 1986-06-01,8.900 128 | 1986-07-01,9.000 129 | 1986-08-01,9.100 130 | 1986-09-01,9.200 131 | 1986-10-01,9.3 132 | 1986-11-01,9.3 133 | 1986-12-01,9.2 134 | 1987-01-01,9.1 135 | 1987-02-01,9.0 136 | 1987-03-01,8.800 137 | 1987-04-01,8.7 138 | 1987-05-01,8.6 139 | 1987-06-01,8.5 140 | 1987-07-01,8.400 141 | 1987-08-01,8.4 142 | 1987-09-01,8.3 143 | 1987-10-01,8.2 144 | 1987-11-01,8.1 145 | 1987-12-01,8.0 146 | 1988-01-01,7.9 147 | 1988-02-01,7.8 148 | 1988-03-01,7.7 149 | 1988-04-01,7.6 150 | 1988-05-01,7.5 151 | 1988-06-01,7.4 152 | 1988-07-01,7.300 153 | 1988-08-01,7.3 154 | 1988-09-01,7.200 155 | 1988-10-01,7.2 156 | 1988-11-01,7.1 157 | 1988-12-01,7.000 158 | 1989-01-01,6.900 159 | 1989-02-01,6.9 160 | 1989-03-01,6.8 161 | 1989-04-01,6.8 162 | 1989-05-01,6.8 163 | 1989-06-01,6.8 164 | 1989-07-01,6.8 165 | 1989-08-01,6.700 166 | 1989-09-01,6.7 167 | 1989-10-01,6.6 168 | 1989-11-01,6.500 169 | 1989-12-01,6.400 170 | 1990-01-01,6.300 171 | 1990-02-01,6.300 172 | 1990-03-01,6.300 173 | 1990-04-01,6.200 174 | 1990-05-01,6.3 175 | 1990-06-01,6.3 176 | 1990-07-01,6.300 177 | 1990-08-01,6.4 178 | 1990-09-01,6.400 179 | 1990-10-01,6.5 180 | 1990-11-01,6.6 181 | 1990-12-01,6.7 182 | 1991-01-01,6.8 183 | 1991-02-01,6.8 184 | 1991-03-01,6.9 185 | 1991-04-01,6.9 186 | 1991-05-01,6.9 187 | 1991-06-01,6.9 188 | 1991-07-01,6.9 189 | 1991-08-01,6.900 190 | 1991-09-01,7.000 191 | 1991-10-01,7.100 192 | 1991-11-01,7.300 193 | 1991-12-01,7.400 194 | 1992-01-01,7.500 195 | 1992-02-01,7.600 196 | 1992-03-01,7.700 197 | 1992-04-01,7.700 198 | 1992-05-01,7.8 199 | 1992-06-01,7.8 200 | 1992-07-01,7.8 201 | 1992-08-01,7.7 202 | 1992-09-01,7.7 203 | 1992-10-01,7.7 204 | 1992-11-01,7.600 205 | 1992-12-01,7.6 206 | 1993-01-01,7.6 207 | 1993-02-01,7.5 208 | 1993-03-01,7.4 209 | 1993-04-01,7.3 210 | 1993-05-01,7.200 211 | 1993-06-01,7.2 212 | 1993-07-01,7.100 213 | 1993-08-01,7.100 214 | 1993-09-01,7.1 215 | 1993-10-01,7.1 216 | 1993-11-01,7.000 217 | 1993-12-01,7.000 218 | 1994-01-01,7.0 219 | 1994-02-01,7.0 220 | 1994-03-01,6.9 221 | 1994-04-01,6.9 222 | 1994-05-01,6.8 223 | 1994-06-01,6.7 224 | 1994-07-01,6.6 225 | 1994-08-01,6.400 226 | 1994-09-01,6.3 227 | 1994-10-01,6.2 228 | 1994-11-01,6.1 229 | 1994-12-01,5.900 230 | 1995-01-01,5.9 231 | 1995-02-01,5.9 232 | 1995-03-01,5.900 233 | 1995-04-01,6.000 234 | 1995-05-01,6.1 235 | 1995-06-01,6.2 236 | 1995-07-01,6.200 237 | 1995-08-01,6.3 238 | 1995-09-01,6.3 239 | 1995-10-01,6.200 240 | 1995-11-01,6.2 241 | 1995-12-01,6.2 242 | 1996-01-01,6.1 243 | 1996-02-01,6.1 244 | 1996-03-01,6.0 245 | 1996-04-01,5.9 246 | 1996-05-01,5.8 247 | 1996-06-01,5.7 248 | 1996-07-01,5.6 249 | 1996-08-01,5.500 250 | 1996-09-01,5.500 251 | 1996-10-01,5.500 252 | 1996-11-01,5.600 253 | 1996-12-01,5.7 254 | 1997-01-01,5.700 255 | 1997-02-01,5.7 256 | 1997-03-01,5.7 257 | 1997-04-01,5.6 258 | 1997-05-01,5.5 259 | 1997-06-01,5.5 260 | 1997-07-01,5.4 261 | 1997-08-01,5.3 262 | 1997-09-01,5.2 263 | 1997-10-01,5.1 264 | 1997-11-01,5.000 265 | 1997-12-01,5.0 266 | 1998-01-01,4.900 267 | 1998-02-01,4.9 268 | 1998-03-01,4.9 269 | 1998-04-01,4.9 270 | 1998-05-01,5.0 271 | 1998-06-01,5.0 272 | 1998-07-01,5.1 273 | 1998-08-01,5.1 274 | 1998-09-01,5.1 275 | 1998-10-01,5.0 276 | 1998-11-01,4.9 277 | 1998-12-01,4.8 278 | 1999-01-01,4.7 279 | 1999-02-01,4.7 280 | 1999-03-01,4.7 281 | 1999-04-01,4.7 282 | 1999-05-01,4.700 283 | 1999-06-01,4.700 284 | 1999-07-01,4.700 285 | 1999-08-01,4.700 286 | 1999-09-01,4.700 287 | 1999-10-01,4.8 288 | 1999-11-01,4.8 289 | 1999-12-01,4.8 290 | 2000-01-01,4.7 291 | 2000-02-01,4.7 292 | 2000-03-01,4.6 293 | 2000-04-01,4.5 294 | 2000-05-01,4.5 295 | 2000-06-01,4.4 296 | 2000-07-01,4.3 297 | 2000-08-01,4.3 298 | 2000-09-01,4.2 299 | 2000-10-01,4.2 300 | 2000-11-01,4.1 301 | 2000-12-01,4.1 302 | 2001-01-01,4.100 303 | 2001-02-01,4.200 304 | 2001-03-01,4.300 305 | 2001-04-01,4.500 306 | 2001-05-01,4.6 307 | 2001-06-01,4.800 308 | 2001-07-01,5.000 309 | 2001-08-01,5.200 310 | 2001-09-01,5.400 311 | 2001-10-01,5.600 312 | 2001-11-01,5.800 313 | 2001-12-01,6.000 314 | 2002-01-01,6.100 315 | 2002-02-01,6.200 316 | 2002-03-01,6.300 317 | 2002-04-01,6.300 318 | 2002-05-01,6.3 319 | 2002-06-01,6.400 320 | 2002-07-01,6.400 321 | 2002-08-01,6.400 322 | 2002-09-01,6.400 323 | 2002-10-01,6.4 324 | 2002-11-01,6.500 325 | 2002-12-01,6.600 326 | 2003-01-01,6.7 327 | 2003-02-01,6.700 328 | 2003-03-01,6.800 329 | 2003-04-01,6.9 330 | 2003-05-01,6.900 331 | 2003-06-01,6.900 332 | 2003-07-01,6.900 333 | 2003-08-01,6.800 334 | 2003-09-01,6.700 335 | 2003-10-01,6.6 336 | 2003-11-01,6.5 337 | 2003-12-01,6.4 338 | 2004-01-01,6.3 339 | 2004-02-01,6.200 340 | 2004-03-01,6.2 341 | 2004-04-01,6.100 342 | 2004-05-01,6.1 343 | 2004-06-01,6.0 344 | 2004-07-01,5.9 345 | 2004-08-01,5.9 346 | 2004-09-01,5.9 347 | 2004-10-01,5.9 348 | 2004-11-01,5.9 349 | 2004-12-01,5.8 350 | 2005-01-01,5.8 351 | 2005-02-01,5.7 352 | 2005-03-01,5.6 353 | 2005-04-01,5.5 354 | 2005-05-01,5.4 355 | 2005-06-01,5.300 356 | 2005-07-01,5.3 357 | 2005-08-01,5.4 358 | 2005-09-01,5.4 359 | 2005-10-01,5.4 360 | 2005-11-01,5.4 361 | 2005-12-01,5.3 362 | 2006-01-01,5.3 363 | 2006-02-01,5.2 364 | 2006-03-01,5.2 365 | 2006-04-01,5.2 366 | 2006-05-01,5.2 367 | 2006-06-01,5.2 368 | 2006-07-01,5.1 369 | 2006-08-01,5.0 370 | 2006-09-01,4.8 371 | 2006-10-01,4.7 372 | 2006-11-01,4.6 373 | 2006-12-01,4.5 374 | 2007-01-01,4.5 375 | 2007-02-01,4.4 376 | 2007-03-01,4.4 377 | 2007-04-01,4.3 378 | 2007-05-01,4.3 379 | 2007-06-01,4.3 380 | 2007-07-01,4.3 381 | 2007-08-01,4.300 382 | 2007-09-01,4.4 383 | 2007-10-01,4.4 384 | 2007-11-01,4.4 385 | 2007-12-01,4.4 386 | 2008-01-01,4.300 387 | 2008-02-01,4.300 388 | 2008-03-01,4.3 389 | 2008-04-01,4.400 390 | 2008-05-01,4.500 391 | 2008-06-01,4.7 392 | 2008-07-01,4.800 393 | 2008-08-01,5.0 394 | 2008-09-01,5.2 395 | 2008-10-01,5.4 396 | 2008-11-01,5.600 397 | 2008-12-01,5.9 398 | 2009-01-01,6.100 399 | 2009-02-01,6.300 400 | 2009-03-01,6.4 401 | 2009-04-01,6.5 402 | 2009-05-01,7.5 403 | 2009-06-01,8.0 404 | 2009-07-01,8.2 405 | 2009-08-01,8.3 406 | 2009-09-01,8.3 407 | 2009-10-01,8.3 408 | 2009-11-01,8.300 409 | 2009-12-01,8.300 410 | 2010-01-01,8.300 411 | 2010-02-01,8.300 412 | 2010-03-01,8.300 413 | 2010-04-01,8.200 414 | 2010-05-01,8.2 415 | 2010-06-01,8.1 416 | 2010-07-01,8.1 417 | 2010-08-01,8.1 418 | 2010-09-01,8.1 419 | 2010-10-01,8.2 420 | 2010-11-01,8.2 421 | 2010-12-01,8.2 422 | 2011-01-01,8.2 423 | 2011-02-01,8.2 424 | 2011-03-01,8.1 425 | 2011-04-01,8.1 426 | 2011-05-01,8.2 427 | 2011-06-01,8.3 428 | 2011-07-01,8.3 429 | 2011-08-01,8.2 430 | 2011-09-01,8.0 431 | 2011-10-01,7.8 432 | 2011-11-01,7.5 433 | 2011-12-01,7.3 434 | 2012-01-01,7.1 435 | 2012-02-01,7.0 436 | 2012-03-01,6.7 437 | 2012-04-01,6.8 438 | 2012-05-01,6.8 439 | 2012-06-01,6.8 440 | 2012-07-01,6.7 441 | 2012-08-01,6.6 442 | 2012-09-01,6.5 443 | 2012-10-01,6.5 444 | 2012-11-01,6.5 445 | 2012-12-01,6.5 446 | 2013-01-01,6.5 447 | 2013-02-01,6.6 448 | 2013-03-01,6.5 449 | 2013-04-01,6.5 450 | 2013-05-01,6.4 451 | 2013-06-01,6.4 452 | 2013-07-01,6.3 453 | 2013-08-01,6.3 454 | 2013-09-01,6.2 455 | 2013-10-01,6.1 456 | 2013-11-01,6.0 457 | 2013-12-01,5.8 458 | 2014-01-01,5.7 459 | 2014-02-01,5.6 460 | 2014-03-01,5.5 461 | 2014-04-01,5.4 462 | 2014-05-01,5.3 463 | 2014-06-01,5.2 464 | 2014-07-01,5.2 465 | 2014-08-01,5.1 466 | 2014-09-01,5.0 467 | 2014-10-01,4.9 468 | 2014-11-01,4.8 469 | 2014-12-01,4.6 470 | 2015-01-01,4.6 471 | 2015-02-01,4.5 472 | 2015-03-01,4.5 473 | 2015-04-01,4.5 474 | 2015-05-01,4.4 475 | 2015-06-01,4.4 476 | 2015-07-01,4.4 477 | 2015-08-01,4.5 478 | 2015-09-01,4.5 479 | 2015-10-01,4.5 480 | 2015-11-01,4.5 481 | 2015-12-01,4.5 482 | 2016-01-01,4.5 483 | 2016-02-01,4.4 484 | 2016-03-01,4.5 485 | 2016-04-01,4.5 486 | 2016-05-01,4.6 487 | 2016-06-01,4.7 488 | 2016-07-01,4.7 489 | 2016-08-01,4.7 490 | 2016-09-01,4.8 491 | 2016-10-01,4.8 492 | 2016-11-01,4.8 493 | 2016-12-01,4.8 494 | 2017-01-01,4.8 495 | 2017-02-01,4.7 496 | 2017-03-01,4.6 497 | 2017-04-01,4.5 498 | 2017-05-01,4.4 499 | 2017-06-01,4.3 500 | 2017-07-01,4.2 501 | 2017-08-01,4.2 502 | 2017-09-01,4.1 503 | 2017-10-01,4.1 504 | 2017-11-01,4.1 505 | 2017-12-01,4.1 506 | 2018-01-01,4.1 507 | 2018-02-01,4.0 508 | 2018-03-01,4.0 509 | 2018-04-01,4.0 510 | 2018-05-01,3.9 511 | 2018-06-01,3.9 512 | 2018-07-01,3.8 513 | 2018-08-01,3.8 514 | 2018-09-01,3.8 515 | 2018-10-01,3.8 516 | 2018-11-01,3.8 517 | 2018-12-01,3.8 518 | 2019-01-01,3.7 519 | 2019-02-01,3.6 520 | 2019-03-01,3.5 521 | 2019-04-01,3.5 522 | 2019-05-01,3.4 523 | 2019-06-01,3.4 524 | 2019-07-01,3.5 525 | 2019-08-01,3.5 526 | 2019-09-01,3.5 527 | 2019-10-01,3.5 528 | 2019-11-01,3.5 529 | 2019-12-01,3.5 530 | 2020-01-01,3.6 531 | 2020-02-01,3.7 532 | 2020-03-01,4.9 533 | 2020-04-01,12.9 534 | 2020-05-01,11.6 535 | 2020-06-01,10.2 536 | 2020-07-01,9.3 537 | 2020-08-01,6.9 538 | 2020-09-01,7.9 539 | 2020-10-01,7.3 540 | 2020-11-01,7.2 541 | 2020-12-01,6.9 542 | 2021-01-01,6.8 543 | 2021-02-01,6.9 544 | 2021-03-01,6.9 545 | 2021-04-01,6.7 546 | 2021-05-01,6.6 547 | 2021-06-01,6.5 548 | 2021-07-01,6.2 549 | 2021-08-01,5.9 550 | 2021-09-01,5.6 551 | 2021-10-01,5.4 552 | -------------------------------------------------------------------------------- /data/stopwords.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/univai-ghf/PythonWorkshop/0688ca360c28e186add201a61d8121be1b2e4d18/data/stopwords.pkl -------------------------------------------------------------------------------- /images/Logo_Univ_AI_Blue_Rectangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/univai-ghf/PythonWorkshop/0688ca360c28e186add201a61d8121be1b2e4d18/images/Logo_Univ_AI_Blue_Rectangle.png -------------------------------------------------------------------------------- /images/unemploy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/univai-ghf/PythonWorkshop/0688ca360c28e186add201a61d8121be1b2e4d18/images/unemploy.jpg -------------------------------------------------------------------------------- /images/unemploy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/univai-ghf/PythonWorkshop/0688ca360c28e186add201a61d8121be1b2e4d18/images/unemploy.png -------------------------------------------------------------------------------- /slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/univai-ghf/PythonWorkshop/0688ca360c28e186add201a61d8121be1b2e4d18/slides.pdf --------------------------------------------------------------------------------