{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Exploring One-Dimensional Data\n", "one-dimensional dataset is usually a collection of numbers. An obvious first step is to compute a few summary statistics, like how many data points you have, the smallest, the largest, the mean, and the standard deviation." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 3, 2, 0, 123, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]\n", "26\n", "123\n", "0\n" ] } ], "source": [ "L = [1,3,2,0,123,23]\n", "for i in range(20):\n", " L.append(i)\n", "print(L)\n", "print(len(L))\n", "print(max(L))\n", "print(min(L))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A good next step is to create a histogram, in which you group your data into discrete buckets and count how many points fall into each bucket" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from typing import List, Dict\n", "from collections import Counter\n", "import math\n", "import matplotlib.pyplot as plt\n", "def bucketize(point: float, bucket_size: float) -> float:\n", " \"\"\"Floor the point to the next lower multiple of bucket_size\"\"\"\n", " return bucket_size * math.floor(point / bucket_size)\n", "\n", "def make_histogram(points: List[float], bucket_size: float) -> Dict[float, int]:\n", " \"\"\"Buckets the points and counts how many in each bucket\"\"\" \n", " return Counter(bucketize(point, bucket_size) for point in points)\n", "\n", "def plot_histogram(points: List[float], bucket_size: float, title: str = \"\"): \n", " histogram = make_histogram(points, bucket_size) \n", " plt.bar(histogram.keys(), histogram.values(), width=bucket_size) \n", " plt.title(title)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Consider the following two datasets: uniform and normal, what is there mean and statndard deviation?" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import random\n", "import numpy as np\n", "\n", "\n", "random.seed(233)\n", "\n", "# uniform between -100 and 100\n", "uniform = [200 * random.random() - 100 for _ in range(10000)]\n", "\n", "# normal distribution created by numpy\n", "normal = list(np.random.normal(0, 57, 10000))\n", "#normal = [57 * inverse_normal_cdf(random.random()) \n", "# for _ in range(10000)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## However, they have very different distributions, let's take a look at them by ploting it." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_histogram(uniform, 10, \"Uniform Histogram\")\n", "plot_histogram(normal, 10, \"Normal Histogram\")" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Two dimensional data\n", "What kind of data is two dimensional? Let's create it by ourself" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "def random_normal(mean, std, total=1) ->float:\n", " \"\"\" return random draw from normal distribution \"\"\"\n", " return np.random.normal(mean,std,total)\n", "\n", "xs = list(random_normal(0,10,1000))\n", "ys1 = [x + random_normal(0,10).item() for x in xs]\n", "ys2 = [-x + random_normal(0,10).item() for x in xs]\n", "\n", "#print(ys1)\n", " " ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEICAYAAABcVE8dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAEO9JREFUeJzt3X+s3XV9x/HnC6po/BFgLdi13W41dQr+QFIZC3HDsSk/DMU4NsjUxpFUHRrM2GbBZfqHJHVTmW6TpAqzGhQJ4mgGOrEjM/4BWBCBWpmNVri2o9f5AxwbrvDeH+dbPcCF++Pce0/P/Twfyck538/5fO95f/JNX/dzP+f7/TZVhSRp8Ttk2AVIkhaGgS9JjTDwJakRBr4kNcLAl6RGGPiS1AgDX5IaYeBL05RkeZKtSfYkqSRjw65JmgkDX5q+R4EvAW8YdiHSbMQrbdWiJH8BnFhVb+hr+3vgEeAO4K+BZcAPgb+qqiv7+i0B/g9YXVW7F7JuaRAGvpqUZDmwC1hRVT/pQnwP8Hrgi8Arq+qert+RVbWjb18DXyPJJR01qar2Al8Fzu6aTqU3m7+D3tLNS5I8s6r29oe9NMoMfLVsC/DG7vUbgU9X1X8DfwS8Ddib5PokLxpWgdJccklHzUryDGAv8CrgZuCYqrq37/1nAu8HTqiqV/W1u6SjkeQMX82qqv8FrgE+A9xaVfcmOTrJmUmeBTwM/IzeF7nAL35JHNZtHtZtSyPBwFfrtgAvBT7dbR8CXEjvC9wfAb8D/Glf//+h90sA4NvdtjQSXNJR05L8Gr3gfl5VPTDseqT55AxfzUpyCPBnwFWGvVqwZNgFSMPQrdHfD3yf3imZ0qLnko4kNcIlHUlqxEGxpLN06dIaGxsbdhmSNFJuu+22H1bVsun2PygCf2xsjO3btw+7DEkaKUm+P5P+LulIUiMMfElqhIEvSY0w8CWpEQa+JDXCwJekRhj4ktQIA1+SGmHgS1IjDoorbaWFMLbx+gX7rN2bzliwz5Kmyxm+JDXCwJekRhj4ktQIA1+SGmHgS1IjDHxJaoSBL0mNMPAlqREGviQ1wsCXpEYY+JLUCANfkhrhzdM0NAt5MzNJzvAlqRkGviQ1YsrAT7IqyU1JdibZkeSCrv19SX6Q5I7ucXrfPhcl2ZXkniSvnc8BSJKmZzpr+PuBC6vq9iTPAW5LcmP33qVV9cH+zkmOAc4BjgV+FfhKkhdW1SNzWbgkaWamnOFX1d6qur17/SCwE1jxFLusA66qqoer6nvALuCEuShWkjR7M1rDTzIGvAK4pWt6R5I7k1yR5IiubQVwX99u40zyCyLJhiTbk2yfmJiYceGSpJmZduAneTbweeBdVfUAcBnwAuA4YC/woQNdJ9m9ntBQtbmq1lbV2mXLls24cEnSzEwr8JM8jV7YX1lV1wJU1f1V9UhVPQp8nF8u24wDq/p2XwnsmbuSJUmzMZ2zdAJcDuysqg/3tS/v6/Z64O7u9VbgnCSHJVkNrAFunbuSJUmzMZ2zdE4C3gTcleSOru1i4Nwkx9FbrtkNvBWgqnYkuRr4Fr0zfM73DB1JGr4pA7+qvsbk6/I3PMU+lwCXDFCXJGmOeaWtJDXCwJekRhj4ktQIA1+SGmHgS1IjDHxJaoSBL0mNMPAlqREGviQ1wsCXpEYY+JLUCANfkhph4EtSIwx8SWqEgS9JjTDwJakRBr4kNcLAl6RGGPiS1AgDX5IaYeBLUiMMfElqhIEvSY0w8CWpEQa+JDXCwJekRhj4ktQIA1+SGmHgS1Ijpgz8JKuS3JRkZ5IdSS7o2o9McmOS73TPR3TtSfLRJLuS3Jnk+PkehCRpatOZ4e8HLqyqFwMnAucnOQbYCGyrqjXAtm4b4DRgTffYAFw251VLkmZsysCvqr1VdXv3+kFgJ7ACWAds6bptAc7qXq8DPlU9NwOHJ1k+55VLkmZkRmv4ScaAVwC3AEdX1V7o/VIAjuq6rQDu69ttvGt7/M/akGR7ku0TExMzr1ySNCPTDvwkzwY+D7yrqh54qq6TtNUTGqo2V9Xaqlq7bNmy6ZYhSZqlaQV+kqfRC/srq+rarvn+A0s13fO+rn0cWNW3+0pgz9yUK0maremcpRPgcmBnVX24762twPru9Xrgur72N3dn65wI/PTA0o8kaXiWTKPPScCbgLuS3NG1XQxsAq5Och5wL3B2994NwOnALuAh4C1zWrEkaVamDPyq+hqTr8sDnDJJ/wLOH7AuSdIc80pbSWqEgS9JjTDwJakRBr4kNcLAl6RGGPiS1AgDX5IaYeBLUiMMfElqhIEvSY0w8CWpEQa+JDXCwJekRhj4ktQIA1+SGmHgS1IjDHxJaoSBL0mNMPAlqREGviQ1wsCXpEYY+JLUCANfkhqxZNgFSIvR2MbrF/Tzdm86Y0E/T6PJGb4kNcLAl6RGuKSjX1joZQhJC8sZviQ1YsrAT3JFkn1J7u5re1+SHyS5o3uc3vfeRUl2JbknyWvnq3BJ0sxMZ4b/SeDUSdovrarjuscNAEmOAc4Bju32+ViSQ+eqWEnS7E0Z+FX1VeBH0/x564CrqurhqvoesAs4YYD6JElzZJA1/HckubNb8jmia1sB3NfXZ7xre4IkG5JsT7J9YmJigDIkSdMx28C/DHgBcBywF/hQ155J+tZkP6CqNlfV2qpau2zZslmWIUmarlkFflXdX1WPVNWjwMf55bLNOLCqr+tKYM9gJUqS5sKsAj/J8r7N1wMHzuDZCpyT5LAkq4E1wK2DlShJmgtTXniV5LPAycDSJOPAe4GTkxxHb7lmN/BWgKrakeRq4FvAfuD8qnpkfkqXJM3ElIFfVedO0nz5U/S/BLhkkKIkSXPPK20lqREGviQ1wsCXpEYY+JLUCANfkhph4EtSIwx8SWqEgS9JjTDwJakRBr4kNcLAl6RGGPiS1AgDX5IaYeBLUiMMfElqhIEvSY0w8CWpEQa+JDXCwJekRhj4ktQIA1+SGmHgS1IjDHxJaoSBL0mNMPAlqREGviQ1wsCXpEYY+JLUCANfkhoxZeAnuSLJviR397UdmeTGJN/pno/o2pPko0l2JbkzyfHzWbwkafqmM8P/JHDq49o2Atuqag2wrdsGOA1Y0z02AJfNTZmSpEFNGfhV9VXgR49rXgds6V5vAc7qa/9U9dwMHJ5k+VwVK0mavdmu4R9dVXsBuuejuvYVwH19/ca7tidIsiHJ9iTbJyYmZlmGJGm65vpL20zSVpN1rKrNVbW2qtYuW7ZsjsuQJD3ebAP//gNLNd3zvq59HFjV128lsGf25UmS5spsA38rsL57vR64rq/9zd3ZOicCPz2w9CNJGq4lU3VI8lngZGBpknHgvcAm4Ook5wH3Amd33W8ATgd2AQ8Bb5mHmiVJszBl4FfVuU/y1imT9C3g/EGLkiTNPa+0laRGGPiS1AgDX5IaYeBLUiMMfElqhIEvSY0w8CWpEQa+JDXCwJekRhj4ktQIA1+SGmHgS1IjDHxJaoSBL0mNMPAlqREGviQ1wsCXpEYY+JLUCANfkhph4EtSIwx8SWqEgS9JjTDwJakRS4ZdgKTBjW28fkE/b/emMxb08zQ3nOFLUiOc4R/kFnrmJmnxcoYvSY0w8CWpEQMt6STZDTwIPALsr6q1SY4EPgeMAbuBP6yqHw9WpiRpUHMxw391VR1XVWu77Y3AtqpaA2zrtiVJQzYfSzrrgC3d6y3AWfPwGZKkGRo08Av4cpLbkmzo2o6uqr0A3fNRk+2YZEOS7Um2T0xMDFiGJGkqg56WeVJV7UlyFHBjkm9Pd8eq2gxsBli7dm0NWIckaQoDzfCrak/3vA/4AnACcH+S5QDd875Bi5QkDW7WgZ/kWUmec+A18BrgbmArsL7rth64btAiJUmDG2RJ52jgC0kO/JzPVNWXknwduDrJecC9wNmDlylJGtSsA7+qvgu8fJL2/wJOGaQoSdLc80pbSWqEgS9JjTDwJakRBr4kNcLAl6RGGPiS1AgDX5IaYeBLUiMMfElqhIEvSY0w8CWpEQa+JDXCwJekRhj4ktQIA1+SGmHgS1IjDHxJaoSBL0mNMPAlqREGviQ1wsCXpEYY+JLUiCXDLkDS6BnbeP2CfdbuTWcs2Gctds7wJakRzvBnaCFnNpI0l5zhS1IjDHxJaoSBL0mNMPAlqRHzFvhJTk1yT5JdSTbO1+dIkqZnXs7SSXIo8I/A7wPjwNeTbK2qb831Z3nWjCRNz3ydlnkCsKuqvguQ5CpgHTDngS9pcVvsk7qFvLBsvgJ/BXBf3/Y48Jv9HZJsADZ0mz9Lcg+wFPjhPNU0bI5tdC3m8Tm2IcsHZr3rUuDXZ7LDfAV+Jmmrx2xUbQY2P2anZHtVrZ2nmobKsY2uxTw+xza6uvGNzWSf+frSdhxY1be9EtgzT58lSZqG+Qr8rwNrkqxO8nTgHGDrPH2WJGka5mVJp6r2J3kH8K/AocAVVbVjGrtunrrLyHJso2sxj8+xja4Zjy9VNXUvSdLI80pbSWqEgS9JjTgoAj/JO7vbMOxI8jd97Rd1t2a4J8lrh1njoJL8eZJKsrTbTpKPduO7M8nxw65xppL8bZJvd/V/Icnhfe+N/LFbTLcHSbIqyU1Jdnb/zi7o2o9McmOS73TPRwy71tlKcmiSbyT5l257dZJburF9rjuBZCQlOTzJNd2/t51Jfms2x27ogZ/k1fSuwn1ZVR0LfLBrP4be2T3HAqcCH+tu2TBykqyid5uJe/uaTwPWdI8NwGVDKG1QNwIvqaqXAf8BXASL49j13R7kNOAY4NxuXKNqP3BhVb0YOBE4vxvPRmBbVa0BtnXbo+oCYGff9geAS7ux/Rg4byhVzY2PAF+qqhcBL6c3zhkfu6EHPvB2YFNVPQxQVfu69nXAVVX1cFV9D9hF75YNo+hS4C957MVn64BPVc/NwOFJlg+lulmqqi9X1f5u82Z611vA4jh2v7g9SFX9HDhwe5CRVFV7q+r27vWD9AJjBb0xbem6bQHOGk6Fg0myEjgD+ES3HeB3gWu6LqM8tucCvw1cDlBVP6+qnzCLY3cwBP4LgVd1f3r9e5JXdu2T3Z5hxYJXN6AkZwI/qKpvPu6tRTG+Pn8CfLF7vRjGthjGMKkkY8ArgFuAo6tqL/R+KQBHDa+ygfwdvUnVo932rwA/6ZuQjPLxez4wAfxTt2T1iSTPYhbHbkH+T9skXwGeN8lb7+lqOILen5mvBK5O8nymcXuGg8UU47sYeM1ku03SdtCN76nGVlXXdX3eQ2/J4MoDu03S/6Ab2xQWwxieIMmzgc8D76qqB3oT4dGW5HXAvqq6LcnJB5on6Tqqx28JcDzwzqq6JclHmOXS24IEflX93pO9l+TtwLXVuyDg1iSP0rsp0MjcnuHJxpfkpcBq4JvdP6yVwO1JTmBExvdUxw4gyXrgdcAp9cuLOkZibFNYDGN4jCRPoxf2V1bVtV3z/UmWV9Xebklx35P/hIPWScCZSU4HngE8l96M//AkS7pZ/igfv3FgvKpu6bavoRf4Mz52B8OSzj/TW2sjyQuBp9O7w91W4JwkhyVZTe/LzVuHVuUsVNVdVXVUVY11NzkaB46vqv+kN743d2frnAj89MCfZ6MiyanAu4Ezq+qhvrdG/tixyG4P0q1pXw7srKoP9721FVjfvV4PXLfQtQ2qqi6qqpXdv7FzgH+rqj8GbgL+oOs2kmMD6PLiviS/0TWdQu9W8zM+dgsyw5/CFcAVSe4Gfg6s72aKO5JcTW9g+4Hzq+qRIdY5124ATqf3heZDwFuGW86s/ANwGHBj9xfMzVX1tqoa+WM3wO1BDlYnAW8C7kpyR9d2MbCJ3jLqefTOIjt7SPXNh3cDVyV5P/ANui89R9Q7gSu7ycd36eXFIczw2HlrBUlqxMGwpCNJWgAGviQ1wsCXpEYY+JLUCANfkhph4EtSIwx8SWrE/wOCjq7om1IChgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_histogram(ys1,10, \"ys1\")\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_histogram(ys2,10, \"ys2\")" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_histogram(ys1,10, \"ys1\")\n", "plot_histogram(ys2,10, \"ys2\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## It seems they have similar distribution, but actually they are different" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(xs, ys1, marker='.', color='black', label='ys1')\n", "plt.scatter(xs, ys2, marker='.', color='gray', label='ys2')\n", "plt.xlabel('xs')\n", "plt.ylabel('ys')\n", "plt.legend(loc=9)\n", "plt.title(\"Very Different Joint Distributions\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1. , -0.50820192],\n", " [-0.50820192, 1. ]])" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.corrcoef(ys1,ys2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Many dimensions\n", "Once you have many dimensional data, what can you do to understand the relationship?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# One method is to calculate the pairwise correlation matrix of row[i] and row[j] or for each column. Another method is visualize them. Let's try" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[-10.07037320130648, 7.54357728556117, 84.26572847019293, 37.7188446576464, 53.45221950709595, -82.04716628028241, 33.910950529788295, 4.363057331682455, 82.20555440861361, 65.47891296722028, -44.26978927080609, -69.20877093131455, -48.694578242387855, 77.39122074538395, 64.50492070988153, -63.568310359919835, 94.19208746851965, -27.313487933244616, -73.85048949306356, 87.15167094618855, -70.775987523308, -3.1582444952727826, -22.17973392171774, -53.67379946387514, -43.11250563378535, 29.62649043454823, 91.2626176052851, 56.014266514744406, -70.18051848992874, -59.16711972662536, 50.472128583031065, -66.34162207635566, -96.11297474718448, -72.54088746100021, -63.22992924604325, 67.943141677814, 40.39572713874432, -57.96230477017499, -33.6209209388858, -87.9146533814712, -51.49453883191208, -2.8353303705110307, 38.921437814049256, 41.870615976947846, 80.06650820299444, 87.51971344086681, 8.896196655562846, 0.38243142266334473, -42.49310578640249, 50.68694964434226, 75.14354376028359, -91.06936556413943, -22.40996575833711, -55.408476939806306, 85.22633350194062, 12.753256541437537, -76.09573171393285, 91.55790772680018, -75.5042866564041, 47.86685608437472, -6.707132463004669, -42.11881625688343, -68.50130479642883, -48.99640550984048, 9.554285310812588, -70.95667231260099, 17.38722947318105, 12.509481694115237, -45.05793971596419, 66.80257081376914, -31.35049203000655, 3.912028762768614, -82.47871481014614, -97.93962984530805, 32.530448675701365, -87.68616226286443, -21.743747685260757, 36.70531791315659, 55.487794137821254, -58.73451782578294, 52.583678319253835, 4.197917825772905, 48.972892081165696, 27.135679978131975, 19.179639209832473, -86.1125456318949, 61.89431644282706, -98.67087999879276, 63.721545378670186, 40.97821322469872, 90.22582368109516, 93.54812360582358, -99.53829615703339, 65.38378776525659, -57.914556734413836, -58.57116540063407, -84.94819422701545, 38.47380573020729, 17.17265334646207, -29.510587195234834, -47.75734830136458, 34.83039385272514, -85.62621824245986, -34.750398529935, 15.403480846808293, 73.58379513068829, -3.094271625428192, -67.10421319574884, -64.60798706550155, 81.6694827445317, 48.62847873973669, -77.4211249632867, 33.853169489110826, 5.483020426780058, -47.59899742312746, 23.955003259589077, 29.901699536204518, 99.46252169383786, 75.26776105029165, 6.70743096700825, -40.36276262058236, -6.564776129266818, 20.437249034152202, 41.64355706946844, 9.485282997104576, 85.4448693096432, -68.39079155926449, -71.97040586931993, 16.93681720123594, -63.64243545180559, -43.524788234455805, -4.41935834561815, 56.02423426413662, -75.55499011980613, -15.198950502142267, -5.963855519292281, 98.55158606681661, 55.29511553653802, -51.10017457613325, -5.159323352793052, 69.10976481821208, -8.289775668904426, 75.00070564931761, 88.89275572488046, 10.877029065758464, -12.024630195624965, -73.1679915335419, -54.21241953540821, 39.706650465679786, 94.87145840884057, -1.9688185684088069, 64.83250574478237, 31.846195401065756, 72.28775769217461, 48.191549188371056, 70.34732082294548, 69.64797690766068, 69.2040816574669, -9.997264092338384, 42.22207745326375, 28.830743538200636, -2.9730566170706823, 76.70715966633935, -95.54357794370235, 36.60371200340114, -98.20910283177045, -97.27176921431749, -38.91791010564059, 11.47229257672042, 58.795593243579304, 26.24544323628035, 43.486420103204495, -62.71023614383551, -27.4574875827154, 11.28062523967995, 72.19690547563161, -31.105808264697046, -95.03980775799002, 62.51736895791046, 26.79852883784868, 38.62046644386467, -96.72163261793543, -47.674482762656865, -55.22213078525591, 25.38189505350617, 30.475874721323436, 70.1506927319493, 68.31306977769023, 17.74352101094057, -2.202342158622187, -93.79978534768402, 0.11550055810471349, -77.62082681100684, -83.28468266569394, -74.05152978499567, -41.18715025015034, -37.795100977773565, -0.16489935604487016, -72.16849230764204, 23.83002222890424, -82.95836242544902, -64.38877272871859, 15.654595290922984, -15.825990167035371, -49.26109196654227, -51.158689968650826, 2.5596623433128656, -21.18959088311894, -5.761977795639311, 48.476102210940155, -45.64631579875804, -41.273603089379954, 31.686168431020377, -68.38026663025254, 26.4692598250531, -12.706050597601632, -5.295078891035445, 8.624928032755477, -79.08198144531771, -50.662189909311394, 3.4790669732306156, 60.384588223271265, -15.115672729507253, 74.64095374372562, -14.758881519591213, -67.02533538527655, 40.10599578447, -0.3644081536382231, -71.55485849423029, -85.47176168176884, 41.26198281158511, 42.28106304156077, -57.383214111511506, -58.858170119629996, 3.077948347040291, -38.634691766896, 40.503075896120436, 29.8296371049249, -32.555563924152864, 47.59777754388617, -19.330390734432527, -25.424984849454717, -33.26445653759403, 88.82897471240733, -4.845931268869791, -27.84450053615106, 93.27930198588464, 77.68285272309384, 68.56837891603237, 49.72355946489222, 26.49593020890319, -17.97578935690467, -23.899392167564983, 83.40555090521548, -32.94660894119825, 65.55848007284149, -18.141160302065032, 83.74323215933825, -57.63573091622973, -5.532959991867841, -25.379309677424615, 87.28601778145816, 90.69045127613657, -13.753082190295032, -82.63350715020465, 12.562709895571317, -17.895375624236493, 46.4480217487926, -73.32729214623004, 41.97864675312573, -78.54931021620538, 15.002550325659072, 43.47478152561095, -91.70911381171338, -43.865506812821664, -31.4953771099799, 4.386843161957742, 28.123932737106145, -64.12444644019592, -53.9215677829396, 9.080103270244223, -61.54081679708297, -2.29724950668988, 28.52657766692525, 6.641702333270331, 22.91674130488714, 66.09284654434785, 95.70443649720582, 58.434419598208564, 88.87041597153276, -21.930839113907695, 23.954256949302646, -24.68055810304466, 15.457918129963517, -28.462854894929762, 70.13174638167484, 68.87736366438622, 26.213645330524173, 31.45484068199403, -10.570446659523043, -27.400687245693916, -17.51678870133604, -57.30522236638534, -69.41921709741416, 80.98798597566153, 90.6478783364924, -81.87908780063978, 61.18199551417666, 81.60716297839977, 65.79269805412636, 30.667056023813643, 78.8759908873482, 57.19819724288479, -25.265727711675694, -61.53896694970178, 32.38100051643832, -67.68389278033933, -89.00002259051575, -14.253588142388864, 21.453646926737363, 20.040140169862156, -38.5906661070861, -26.42695795627192, -31.99842113325515, -89.27199889784485, 91.77065178742771, -99.96541573447844, 59.835629005009366, -18.377889468686533, -72.37444561253452, 75.45882328899376, -19.843104187435912, -1.8806492391191227, -81.08977268542253, 39.16191684734886, 48.42302071364696, 28.02815404568068, 94.76332911763791, 35.51039853765036, 89.03375461465313, 63.00514995928316, 36.94857490920299, -52.190529916319136, 5.470430669545308, -79.65416017471142, 24.199106302810875, -5.11388413743947, -51.75900201885002, 79.13631404961674, -15.551932490617702, 53.58101098636254, -61.98260256135961, 95.18659702538125, -40.71177639721499, 78.67194177423005, 33.42352480743085, -4.446346936379513, -90.48116525621124, 67.25619918314774, 94.81231822381545, 42.24114614603678, 26.936902106343055, -25.297679518626808, -10.892183059212712, 2.62541147143844, 5.040840507828406, 28.675922825459338, -72.51890805479528, 94.70685604275985, -19.899985276358834, 69.96065139244249, -93.08302657708802, 95.55123524483409, 41.59044884515956, -62.42310955130881, 38.61046940335706, -54.629075654416795, -87.59895713239206, 43.3643370782068, -93.73010032841331, -62.440021490689105, 37.92008255376865, 19.61867635359762, 69.6009306124426, -54.27908673426505, 31.340183090002938, 44.89726195461802, -54.23333821177303, -68.3885733756505, -18.046201641786496, 65.45403311658285, -59.03904419583434, -62.6186453851316, 44.31953125508744, -93.79927491947406, 81.21810409221558, 59.40098133348994, -49.79135853071668, -59.111266942597254, -94.19522580049838, 55.01410573000754, 14.397635917597398, 3.0786614605199816, -62.40542061129499, 9.262019821047332, 79.78004686211492, 65.43172756451742, -73.92249261048312, 51.189335315953144, -27.77155637223771, -16.964626190058112, 91.0163979275953, -38.643577872427784, -75.47778760996191, 53.25338854217807, -46.70042207019493, -46.950795033585216, -82.03432998797769, 61.008638588032625, -22.345086840473655, 32.82490155955625, 66.16586859291041, -24.498620578613625, -22.11388314365476, 64.39599436666245, 55.85611901487505, -3.4063346771554137, -52.096497955887266, 90.55295331671368, 0.779161432342292, 46.21744618715579, 24.20949918346193, 51.20696892267938, -77.79333737681667, -40.66704314969116, 73.69571012663346, -68.13076406682359, -84.02852477866779, -59.04040556502088, -51.89349629544271, -43.961480528286124, 65.68523875574081, 38.246941004674596, 25.283636309210806, -62.194710902879066, 35.284502657865005, 79.30488895520199, 19.09098637160136, -39.07256792898628, -62.07155321918325, 88.98568202015528, 24.77212128230147, -95.53212015187637, 0.5225374954353157, -10.313123449457763, -89.04084438515964, 18.169250781664175, 15.081222942243727, 2.7869894261736334, 86.21285964148439, -54.16468843378033, -10.640331386960298, 89.79817366132744, -67.81431114825045, 62.786369336356216, 76.70093387784215, 45.60353010547675, -73.42211606684555, 34.4102796525427, -79.66488459299401, -64.36148981924538, -17.807158704232947, -81.65564383341868, 53.84740179888385, -10.635233872055565, 17.987279665030684, -38.545787385895046, 19.19112276562865, 86.24449123234862, 99.62492491876912, 60.60128033040283, 28.84101491349739, 56.0266061630704, -48.10598670031616, -74.42844022381898, 0.3348918866598325, -67.90703656260573, -63.15768530935151, 26.05065758670034, -72.18191245339102, -83.35584915956315, 46.54542843109763, -18.589430027319054, -20.20899135246958, 65.00050746768653, -27.4150932977208, 16.687217145791692, -22.32335776515484, 74.76838525215351, 83.27120811167467, 75.1747503733381, 91.19448473874286, 66.81600709827416, 31.535177780403586, -69.33989172783248, 52.20605253684985, 11.882558967339648, 30.97012388192593, -46.73608236891307, 64.08712352422933, -47.097190001886105, 93.40592072481058, -2.858308021887865, 20.64481414508282, 69.36345917009618, 4.681393885929097, -79.13062567107103, -85.52185205049383, 21.017800913779936, -68.88501531944391, -61.09701200930138, 35.69345809291889, -42.81472881352508, 65.91959838822922, -55.90460399565362, 88.48268925873668, -78.03363675467222, -44.58853304157127, -82.88808493183197, -64.64103017449844, -76.25036145851615, 56.447080738110486, 14.07306701971558, 54.52269285281727, -47.88519705275436, -46.36406113500746, 59.95963254018338, -80.3193547738976, 90.59583932620365, 77.52221439106148, -74.37116090646406, 43.47593058237595, 63.24632616930418, -32.88863110408104, -59.23754362383442, 70.05900458272254, -43.18075380666102, -37.25389373632693, -73.51203057855436, 29.433325633503216, 96.7948391980058, -96.27171951384372, -41.22342097243434, -13.458717858053902, 1.9985639014747676, 86.27191396930692, 5.214998673193477, -99.59278982482209, -74.83823313794076, -69.16535065256848, 73.67901711569158, -85.27869254062645, -14.852954015940242, 72.28220457668729, 48.24873005889975, 2.7030070507923654, -60.25903688110448, -8.611432040566001, -29.456951993033528, -59.663603198439866, 23.929561441217245, 37.106715496925545, 5.983479761490315, 71.71602322283906, 29.45879849750844, -11.908884532016216, 90.88406770767682, -24.877134797444796, 40.288560549369635, 80.3382908491246, 32.323505522224764, -13.554680340370567, -56.86527951833704, -1.2713562127788123, -88.06852724949472, 28.467026364875238, -19.792491791757953, 9.175425158999516, 8.477064240806499, 45.57817708606967, 36.109601678018635, -34.83364935800388, 52.31426914409073, -30.64891733543014, 49.970287489032245, 64.01879030859646, 30.853633000247612, 22.774674314569765, -3.4125476911120955, 13.58179807660234, -17.679077191900603, -30.18852126519687, -85.6707835085114, 81.27242871791344, -77.27697327010517, -49.24416787866805, -9.22882498916853, -80.32200338735265, 48.33306376035537, -88.12218800362768, 8.492351115324823, 85.04917969942957, 44.382014830535155, 46.72938369580487, 37.983913248088726, 86.19873532154651, -39.633068439276386, -17.18216879865149, 63.64144152452792, -11.728335173015395, 9.84761076328708, -55.18065438202298, -30.695342883001047, -43.8021137894222, 68.27327101673495, -78.93543861865761, 6.951335051436374, 99.17396721916836, -34.56383340409445, 13.79997732593749, 54.18156728496274, -38.75321238638945, -88.83751257930861, -92.39606662165347, 8.831866702796233, -94.19420874151527, 27.61712184796359, 72.89824640412868, 49.723670737667675, 78.13295130405939, -0.051875562429799515, 12.671309505068379, -1.8612947286210044, 38.93775225980136, -15.770333028441158, 77.33085550810983, -30.75969096584501, -73.85757637329587, 41.608251893861194, 82.34043804600603, -53.07899767045401, 34.910133035849384, -43.38678810897465, -52.606994323900366, -14.324173917065863, 44.526222334233324, -26.511816220562352, -42.09487071891793, 70.95646719148337, 31.28680094816977, 80.68235360963848, 52.47601035967759, -66.01819366441642, -82.97829355006266, -61.28114503504904, -29.27291172059583, -89.01940391310521, -33.19111005825815, 91.63661977113168, 6.032579709611525, 94.74855489723265, -2.654530840308894, -30.16996297031025, 39.32703369856179, 97.98492973066297, -79.45844726822867, 17.452074845731474, -22.462978804693392, 81.89282689342409, 93.61303103970192, -31.049397200193013, -94.29182577421413, -36.77331561471775, 59.58141305232277, 20.179693075418427, -4.914731394113332, 49.89860852749928, -44.350697841574146, -57.426233983328245, -40.88465635699525, -94.99577069051053, 43.45189713165905, 23.682813197254134, -39.465707668133575, -83.98320890056522, 74.32346876431541, 69.57559030536217, -0.8506975437535971, -26.97735054925859, 46.67886357045907, 32.52260193162101, -72.83392963045053, 69.45703002646371, -46.87963539832016, 49.181207199345465, 32.88221184914326, -26.274849088024283, 30.289190491406742, -65.45241554964254, -23.16121777130573, 35.74209482948936, -11.571317164627828, 74.62251243018301, -76.23532209091266, -30.18718899379627, -74.34117703639433, 49.06823649615552, -33.409739485343465, 11.464881593899662, 24.484691329188223, 46.02466010333066, 92.16403173228628, 30.565026515145263, -35.296427068248164, -98.67212191450618, -71.45104589377192, -80.6670504074763, -72.7741149680154, 33.81161851792007, 22.676113165032774, -98.55628277792512, -95.87196918993766, 20.87909196547089, 86.17662110304599, -32.21041111216745, -88.44889755560325, 66.9265612559937, -21.698591328313327, -2.586847352403794, -70.93216494452201, 67.01737543271602, 33.2976500085706, -54.54112302122025, 5.969644331848627, -19.372341784221007, 59.520635689025056, -33.27431686144568, 82.59509464583127, 85.87169976812865, -9.282363240222423, -58.43573687079366, 52.14961119406249, 74.42668406555865, 17.318404604500543, -75.96124537291946, 96.38232890059535, 53.50125594989851, -6.612408491910031, 41.806786463033916, 92.18637027017945, -62.08475053803599, -66.53976598452746, -76.1302385215754, 16.152786171765342, -69.97041873379122, -70.39021163567018, 13.112331787114655, 25.81063783639881, -74.93752957967111, 25.823349942259583, -30.05067181861456, 54.26396924450802, -44.60598936985654, 20.52398629162542, -4.452710656404065, -82.5482201065123, 21.73812459675564, 8.787452604463269, 89.95369126578808, 73.72848558533937, 36.81732632765471, 43.888734176037445, -18.28340375488746, 47.17945069144406, 95.83037044573175, 54.82448689747582, -51.819131536666575, 83.57912808076873, -43.72084048544953, 6.637385897571207, 22.70106957186357, -66.6874122063383, -6.477970353569901, 56.165880580905, 33.20148585877604, -76.08789215419718, -87.89195005978189, 73.77009625894112, 61.675727541100116, -84.54961421788538, -77.90958003887923, -91.7578443311849, 75.96151985181663, -31.397708162169607, 19.41950464961097, 80.94593665618282, -91.52885713018566, -82.62497215486192, -47.741125118235914, 71.60766297186356, -37.6964730945625, -79.48797170165005, -40.7417793881901, -8.083731207771365, 35.343568741458995, 27.972617283547805, 30.89933534421627, -73.75272686491037, -4.638586312684538, -83.14905048650212, -69.49592139991395, -94.74623581619961, -24.324102562317535, -9.588810001826829, 11.207124959926489, -40.09634776552815, 89.93417801257601, 5.081255535457245, 79.1572152416044, 3.018135734461552, -6.413892288155964, 54.66139672626855, 51.9910125324578, -87.27938600497176, 67.32173519292891, -17.635837723592388, -25.679774958858758, 3.3898164345888375, -42.945827104317715, 55.19398046177585, 29.527506579971543, -16.572894407565528, -85.27858727700222, -45.16416299637245, 87.05809539520106, -59.36863810762143, -0.19528209398565366, 45.44661721517696, 92.66978438464187, 13.623968426277358, 33.516616049496065, -45.158877758161054, -48.138965550921476, -70.1145445240383, 38.42992997973943, -39.833852886726895, -83.5302596761072, 31.965050108099433, 21.125696431314296, -33.65049530648423, 30.15177081310702, 56.248703329360836, -20.140799760706656, -87.10241994979296, 12.049825688978814, -43.430350963945855, 86.81740180171255, 53.813723035244664, -39.82711242646424, 6.968082005179397, 11.400778094070631, -82.21535053038752, 75.2207476876427, 13.032078272624716, 29.629639058769385, 67.65298972614261, 87.35440605944746, -80.66241420868849, 34.206635430673515, 33.315310585338636, -59.6595704867451, -11.800630384979627, -14.143325007416195, -53.652200423582094, -42.33483902483142, 40.68232378012914, -53.92847438752746, 77.77025347518182, 87.64479403111383, -47.27879735672538, 22.77176147720911, -5.560571911469253, 25.131331603334758, -75.08701531630449, -88.86966241345169, 13.858807838719429, -56.46175447550705, 80.13075357658707, -59.04509407626715, -86.83890860316478, -2.2705322784888295, -92.96963718615909, -78.06882945468305, -92.17058387026734, 59.73946566620327, 59.10565840814047, 48.00935067166634, -61.47403506504807, 22.04239204090068, -29.00665082396796, -58.38003251467994, -33.86163047798145, 15.902417691779007, 53.96269963758843, -24.61352315838556, -0.000977020428294395, -54.2626639264008, 45.094009293434425, 30.72811157571806, -2.772611929482153, 53.11182222113561, -95.02056815243746, 60.50037666222309, 4.283323755983076, -44.79235899983358, -45.33959377846013, -50.46482148274238, 16.117963026477938, -25.6613508925831, -32.325329246450224, -71.32496588213809, 71.51561687618675, -46.15393663039393, 96.97746353996303, -32.541455538910185, -79.22690080321782, -80.15697867962359, -52.49801389282547, 61.590139426214904, -29.91193104571694, -33.59386388795389, 90.79554515151182, -37.577479992156725, -83.52384982477872, 94.35380322016229, 75.96610363811033, 51.49242807598057, 30.852657600463033, -31.8026506844499, 92.86592577111321, -10.576019789793094, -31.719274341065244, 99.75368716254209, 0.7696966020669862, -55.190041975704204, 20.368199615787333, -29.38349261032016, -31.71770825716962, 9.200324861710612, -28.272707008526282, 97.75105249222423, -19.263938678070616, -34.06776152552038, 66.42555195749554, 66.5427180286421, -83.00929729621097, 20.532648193851657, -29.888656209734336, -78.83719186842866, -8.554088995694116, -24.059463429811217, -42.909700218887004, -79.04395361599839, -41.738195520915134, -0.2683285347328024, -77.66973704813076, -86.86228733832488, 48.19464591627289, -27.692871293962256, 16.24895313085368, -1.7736473024567232, 9.97113480577832, -9.973476610152971, 98.01635541553381, -77.8082857236581, -73.78614258656226, 96.8425680891635, -68.89929217382225, 34.66537254571617, 67.60000069832842, 53.95579564856888, -76.79449708861337, -85.97770284023558, -7.904320441801531, -8.087359732942616, 84.65613130304015, 6.045597024105632, -67.2119966761478, -5.776491187346238, 36.823766725263226], [15.228245504374144, -2.775261163574902, -0.5369713661063087, 12.948551591517957, 1.7023207769522508, -16.827982633393685, 4.513503345341188, 9.023699509219247, 4.955478029473733, -0.48698525161161604, 1.950148231342629, 17.298805886957812, -3.860555348136967, -15.483254284994635, 5.618337632765851, 6.3326954399437305, -0.8882358010651179, -7.674923316636013, 4.608879701479573, -7.7684045300863644, 1.1127931339668917, 5.344710293313025, -0.3362202055980016, 4.31216065759647, 10.555636657894338, 2.708991184161112, -2.0939518591591555, -11.399751755568815, -24.985819463026814, 10.155537493512902, -17.885641916360665, 14.934517771368515, 5.787152444880893, 21.533231716758014, 8.474689561209349, 11.737045883855874, 2.433701172836098, 0.18270921810166346, -8.702418401590235, -22.94252118776518, 7.135850657528364, -4.269747116137856, -14.888372175170055, 7.144197032763079, -12.675083477747046, -18.272751089001346, 13.680761382450424, -4.560735335954681, 13.905588145817449, 3.198374761580343, 13.642764721287362, -5.107034882555993, 6.286344439211405, -1.172728270912519, 0.8210006428805522, 7.9427540797008165, 21.766277550009296, -1.8375520800791176, -22.09777866623021, -7.829063329204336, -10.20251173856889, 4.434576539777215, 0.8470428089074706, 7.273548146044558, -13.250188511827986, 17.83747508952542, 9.118212114674934, 0.8247947267338028, -10.364086712521598, -10.487840977912171, 18.75649023650884, -1.0205047060004029, -6.737909996375979, -8.830189874930266, -8.746712293083965, 0.7003141202440994, 10.492212709951405, -1.0069770418535737, -2.3474138078484446, 2.908166106137618, 6.213497006346174, -6.0135023499847895, -25.412558674773816, -13.643278328302674, 18.35033657175106, 4.486136774443198, -3.715283579081409, -13.891376584257316, -12.050358766823932, -6.453669688312153, -3.639059368907434, -2.349927818567153, -13.707283191765038, 2.587875850787512, -3.599279089076714, 18.129116558657582, -13.940210476225865, 0.3029141050394747, 3.2863239369170665, -9.02426476152395, 2.573542825277225, 1.47816641470621, 1.464888889271694, -13.229240507094, -9.182963650833253, -16.69327176473989, 2.0379211634277254, 8.989769800260179, 8.191440062328711, 12.081417065030323, -4.490660454438084, 3.6800340278675456, 19.349002087552037, -11.045447134910646, 10.335484248817405, 8.610711272667636, 7.887759703035314, -4.225948191286484, -0.9737640195530793, -6.786966536280572, 17.89230790963336, -4.026648111564799, -1.8572797882607197, -1.2785673197111544, 14.641555861218137, 12.60780243137971, 8.020818147348876, -8.466002406079676, -27.710040732398085, 2.343726238220609, -8.557668089774497, 1.1117526790977936, 7.673914706726952, -4.494057016672819, 0.5281641971273865, -7.636002591522269, -8.706977167325284, -1.9362064474321414, 3.7084029400186074, -12.275537872436956, 7.835921927661005, -3.3007535136062733, -1.6203360357365533, 5.192014130844135, -1.818360583583825, -17.598703536874144, -4.174549331023549, -7.20620113483826, -7.766241681675431, -3.3386110832374256, 19.218936133332672, 2.919689579721947, -4.148190429608116, -11.269347297647634, 16.810741687723166, -6.918076430661738, -7.196899164019089, 9.866725370398553, 2.1047343628236796, 23.12739175859063, -19.342757340052007, 7.400924764565444, -22.997839848942586, -15.213569558071981, 8.700847040030421, -2.887929321673343, 8.324695838247077, -17.201802984494186, 16.59618308202227, 9.513602914947757, -3.835234383280326, -5.409075424312385, 7.995607354171085, -5.643600182109437, -2.477062331621654, -3.0597096820678003, -3.7998273129679743, 18.311624962058442, -5.04695239948882, -6.212095600025535, 3.0650800877918356, 18.364170991667276, 2.5992003972017335, 8.821168908342035, 14.06961068585474, -1.170821662936044, 1.9557711410840506, 22.364372955738354, 11.39530036145086, 2.3773175728079914, 7.340167507458039, -2.106630280746147, 11.744333553986731, -4.746639586948799, -5.986894129936907, 3.5737613522366694, 9.000715242055215, -9.75469804034585, -19.860706482107396, 0.8107174106710763, 11.651266686988468, -2.2681574994944933, 4.802983648606513, 11.645121503364624, 0.533435437486176, 10.086697765201444, 10.10905136973877, -25.230023883908522, 1.7368236770382048, 3.5902979844937417, 5.936605707771562, -9.638945553324284, -2.524131319836775, 7.710899622981032, 2.4594165690979066, -8.449232289808023, 6.612476612440949, 8.406687683932383, -1.6701002030450274, 1.0221221996947627, 10.951835606447817, -4.787864779386915, 1.7935741960313298, 7.627045495844326, 3.8138005977507703, 5.021570344666587, -21.885942409335406, 13.222601992231107, 15.711286113540035, 5.164918514446091, 1.2850550492781843, 6.660745982634566, 19.533390568543837, 11.486005474593806, 6.220579949349264, 3.383639467011065, 8.634683992085355, 2.1768793701892375, -0.3559457749460562, 6.430445752811376, 2.706020081102973, -11.487403890593795, 4.929789777769596, -3.5281306703540514, 17.050556782495082, 1.0944371567301505, -10.23548903431629, -6.602792450473628, -0.25045666361227853, 7.258547542319596, -9.933203780328197, -4.3874703343453305, -14.545980218190714, -3.2043621825517388, -24.12575013026172, 8.424026841111369, 12.925925266074863, 2.246927786017193, 2.171837000938773, -11.901011259710375, 11.090533448147887, 0.364756284428998, -0.6565781612237453, -10.665300846204817, 0.2582332015982039, 4.9600879769772295, 5.239077675238427, -13.529850999149051, -1.4424535066341793, -19.839825199063906, -6.137501429003567, 14.61665924983598, 4.204117043916037, -0.1258711527296252, -11.649244025436074, -8.893224507930787, -7.7951520595724855, 14.323076381842776, -3.9351012072156033, 5.311058457593393, -15.688262700262234, -12.004112555484918, -7.099773770247477, -13.972133838606617, -7.792199122815662, 3.0327585624037368, 9.019334645955745, 1.531618225906681, -16.76690932343955, 3.5061505779448243, -2.167111264579577, -7.896977648374738, -8.871686775315107, -0.07404526858594788, -6.479489081171911, 3.7720898523686057, -2.9007731129163594, 0.9487383138213351, 5.578269827414991, 7.04530968185546, -9.494810611793142, 10.800738317689639, 7.710090990409534, -16.95846061017493, 3.645780199344197, -10.667179356255396, -18.63367087004602, -7.41870280757298, -1.6290655148301536, -12.894880633038749, 3.385885623993306, -6.675043817680062, 6.2353368046479165, -0.21935965934301077, 9.110088321487996, 1.5567049939683715, 3.028658050430452, 4.3967953999452725, -3.070472864162646, -3.919325443380149, -2.919202546972928, -7.376842149726696, -7.471024161508071, 2.3686213939434473, -1.536063492638693, -28.53720061247207, -5.0095924847324325, -10.385266757111083, -4.427492409456618, 12.97001174448701, 4.306627084225137, -20.27662735018351, -14.59163532137561, 2.382849656834043, 5.970365441046258, -5.3504768565736525, 10.831980260780053, -8.128560846300987, 0.410624735411663, 0.2876299110895132, 1.5119684601829255, -1.737221262555836, 5.161020121333646, 7.340879973285269, -3.1227423119540374, 0.8612720983973798, 1.8557976586948566, 2.4366783458662984, -11.506870320508206, -10.337509515769197, -25.8808332609215, -15.524660566087167, 16.8686125138036, -5.047366704332493, -10.10790866458678, 3.8172952740436665, -4.324563833417207, -1.8169228688431014, 8.851432947350238, -5.134361539013289, 5.803475590223883, 0.1271815440730136, 16.1465007950172, -9.984296026150536, -5.937170287307159, 1.2050952722152724, 4.738590343538189, -3.5468105933276943, -2.9809639875847687, 17.218822386328835, -0.02356512337185366, -9.458140787638671, -8.125931507750225, 13.84836340977932, -0.815552502654155, 8.864180230359826, -10.207020514437877, 7.02313195955214, 4.769701648952371, -12.289879351774555, -12.22795205959037, 6.800546036859458, 6.243151721830289, -1.9504166496478632, 9.826989870916925, -12.195412177943677, -6.657466479625764, 1.4803369149044947, 3.4922474348704173, 5.006094924351318, 10.850571397406208, 4.063521635722867, -6.2090742391740585, 14.672648949656882, 3.793589440312712, -0.1496518917292575, 9.759532489792132, 4.602405287636278, -7.956810826192481, 15.51092513352862, 11.38284146546767, -0.05058847841734859, 6.396128685977022, 13.372777884802701, -1.3748723338465088, -3.662953413483187, -0.5386020281283043, -3.705004544027956, -1.7328910406909936, -11.890934148135377, -8.560369156000894, -14.103362114573827, 7.488471840356353, 7.191879250451421, 7.105930518683388, 4.088335118438227, 13.617160656908492, 6.157334559884706, -11.110912006335967, 0.93072942257592, -5.646838847303439, 2.5213093506740036, 22.11808858939505, -12.522668906759524, 14.066682043847727, 1.494707938116023, 1.6901431517287198, 5.860176761304041, 10.682948255333024, -1.9487733902157767, -14.634915203558432, 0.908995023161143, 2.374205028280179, 0.10940601381663906, -9.645988253489442, 9.703251390665605, -20.56477414202228, 13.923181636214403, 11.505921868882975, 3.2243000425778257, -10.064909959257305, 9.860056650925198, 5.992847486386978, -0.6730369814691118, 9.243710461604463, -4.476334028602013, -17.517292745794318, 6.898024617162184, -21.039377958976505, -6.554522953211194, -16.240489986000075, 1.943183191602075, 10.011734406055634, -15.542460978573223, -7.17021557435354, -11.25868383550733, 10.897939334877496, -12.577880155925316, 9.13775772294328, 2.8300343529410705, -4.952642368059338, 17.353796787063587, 7.590043624519519, 6.095839125230912, -6.230390930639468, -5.123833998271069, -9.457343375746785, -3.0614892819495463, 17.219422839410846, -1.62074700330641, 2.0048480218287703, -9.100409807308875, 12.717653669431094, -29.7574275571914, -3.0298297394888767, -4.639251851465303, -12.617485079204076, 14.622226539600724, 6.123426701207007, -7.196317990774183, -3.505423787303003, 2.56719731665095, 2.254253302456299, 17.2188730833934, -15.451283548829107, 19.97227835687337, 7.550516696631064, -8.967920875190142, -6.35613415062184, -5.952952011258198, -6.175143687704053, -9.004675708499674, 9.754022600816072, 3.744997155751308, 0.27216724547977594, 13.996860664682742, -3.664207348968589, 3.9706353726034784, -5.669623620932017, -5.150573225443403, -14.637456938626674, -6.5762230713595535, 6.6575969802538895, 0.4632260546107738, 9.401191016333224, -11.471257133576112, 5.720374998387213, 15.178098086695684, -8.288340425773452, -4.800935900526411, 8.32756078428996, -6.800236757198982, 14.934912236594904, 13.9245406642628, -2.616663970730262, 10.21246235431887, -0.5376739364862291, -2.1237003136440316, -11.921745276855859, -11.607737091077317, -10.983439978291695, -14.758076166189655, 0.008600034606901851, -9.37904650878573, 10.158020541531592, 10.868719342024626, -14.745894725987723, 15.097069850536482, -14.083656987787162, 1.6978381000874265, 19.69160495147247, -3.306090021966685, -6.919241643092685, -2.8597545514911777, 7.335220327941178, -2.1170307649802442, -15.709799472729033, -9.072996189974452, 4.486244594555738, -11.894043710600105, -11.973888693863039, 5.88031605632577, -5.493670614177962, -9.326632321103851, -5.879565517792065, 7.126305698507279, -10.309573453350954, -2.616647707943058, -10.19396298693616, 8.452468611259041, -5.704411226926648, 10.857867656455781, 0.26091262956628, -4.970647947358272, -9.380400614905438, -5.2442102675032665, -1.3645601775619567, 18.422045343324175, 2.9198086830866776, 17.08074682190276, -7.813983747789931, -9.227217882461545, 3.558080482233763, 21.154327947996315, -10.163561986612004, -7.774661467952737, 2.9077066797283893, 2.7270887717239023, -2.3319967304109395, -5.950509992981473, 0.8737941425285702, -0.19328705835494692, 3.7103145454444353, 9.387172574987654, 17.989883126100615, 2.4553061229753834, -5.646840949571529, 14.709285610078219, 0.23317786166283283, 6.692977314813614, -7.569568735733608, -6.067258408940969, 11.214853254802094, 9.796958311787243, -7.295698002213895, 14.48132246594569, -8.566968965926955, 7.32319749368973, 22.365840033282552, 10.785059271012118, -23.563762815442402, -2.747208135246369, -2.2013633519053792, -7.254311129940748, 17.621519993869267, 20.382957032051372, -14.216246842103947, 3.8847304462540073, -3.5235517230928655, -9.755557022222023, 7.384701122690024, -0.8428641515861602, -10.158209743029614, 4.307475197953759, 11.645148969384252, -9.449653487635835, 2.857256159763705, -21.522162729993553, -18.286539091336703, 2.492852517431822, -15.40920645005075, -9.034418342710737, -5.293644471336769, 22.966920022742535, -4.244759332306497, -16.328711484000195, 3.499000582824518, -1.8213876932467687, -2.6501170404390946, 13.781210402903493, -3.8185198025458895, 0.6150245674895142, 2.5315683017116415, -4.657709462700917, -1.2018375539652242, 3.6462753431841795, 1.4407649315654, 21.613055430233405, -11.15482941811447, 10.527522637835169, 2.6394931534265176, 1.820263320919627, -2.7759304826780795, -6.848831773158269, 2.4871349266993987, 10.232752783372144, -3.6336222442802746, 1.8050935009337954, -15.755056414796375, 3.4363130943999214, -3.0919043041301886, 12.697354604398681, -7.4422158914487815, 3.7637479639462477, -4.6206271088141655, 5.805868482685206, -3.14495401784128, -6.496999763877208, -21.161957583258438, 0.5225498796909022, 9.109629132229722, 1.2464872921544536, 5.355070967599861, -4.2137137701063185, -1.2900497588235105, -11.951070267493309, -6.487361804759633, 1.394298445150321, -11.296659204259221, -9.629721182329982, 3.4663184350070413, 7.517628885102889, -2.0413851326763224, -5.147990859728846, 0.2564499558540441, 2.6191548197277443, -5.445820382746818, -0.0553044032736351, -8.73865524722678, -5.26989495486924, -10.790576557871681, 7.294854887189065, -6.062345412176553, -2.4744471870261027, 3.11633277469936, 3.7254779037473384, -10.628886174752562, -10.888564182342028, 3.19785922189952, 9.008886912997054, -5.554155390706635, -9.634804738136921, 5.3259456139532375, 23.2532879395265, 20.186345632555188, 2.2108706432339114, -1.9698279235991194, -3.6637114956540158, 7.11565245604834, -13.122797923889294, 1.270182589722857, 10.188244861804103, -8.819728925150335, -3.6299501555185207, -7.001019558300006, 14.555118637035022, -3.6622122657392566, 6.437378019648307, -5.278874261721871, 0.5567792995316586, 23.979689931438873, 4.20666968331242, -0.5831426504472406, -9.070195789522392, -7.180071873707075, 18.663290893011528, -12.45836807887324, -2.8192028420181, 3.9776487197936374, -5.631170520995306, -0.874028076736259, 8.47218586745483, 8.705290386710704, 2.5290823037895143, 11.096874236750537, 3.560482215690018, 23.2141701240787, -9.881252503620662, 0.3629034439730711, -8.338397806809597, -3.911438390213579, -8.909977779992955, 20.849402662028623, 5.396126190371232, -8.558639847232268, -8.410506468569473, -7.192256995237117, -17.268443535835914, -4.040364859140675, -11.444010452977944, -0.7688614794635845, 12.557879125601001, 1.4539003379296322, 4.353898457991815, -7.836562157153145, 16.376985391846762, 17.82604580507516, 0.36142955619119155, 28.845797952872832, -7.978223844156654, -10.099956125613485, 9.653944004257106, -3.943975658437417, -4.777416307189586, -3.536704599438602, -4.421842148990929, 12.14666263301394, 2.9170536474425686, -9.361481192633814, 8.175466071625893, -7.040943064961105, 3.4201685019483543, -22.977453759020534, 2.2943318043740786, -9.359089756334527, 11.732571341585585, 0.9351295456747205, -24.230880934244205, -10.930383323995754, -2.670709794893181, 13.500468368376193, 1.9762872006736307, 8.832051158573766, -0.0416473063676429, -5.416776605019827, -3.53198724963434, 30.198373887681825, -13.246501403413095, 5.526246403417243, -4.006508772444496, -2.1616037605934006, 9.164620124430678, 7.732603194731871, -19.94169717281511, -0.24500742212712312, -11.913561070367336, 4.118090321050555, -13.77346329604171, -7.766390052998519, 13.141115041236729, 4.7647223447428235, -6.127104936822436, 4.344850893276735, -4.758368492090858, 13.116333052600899, -12.261424214534555, -7.616017644486121, -6.892450432266423, 11.143739288370524, -5.284619864593656, 0.6089277232728743, -9.347401282017216, -1.7224584362843876, -5.104061734000112, 6.022745568889942, 10.797778898789087, 9.430163149032762, 0.10644595734405209, 2.6092212718540138, -15.804533060004486, 22.804070859718998, -1.7054607430320676, -9.29578768680014, 3.4264650399100045, -8.016601190741977, -15.390365039240647, 11.353572410480645, 0.3619113738590488, 5.273308738871199, -1.430991048519047, -3.6921187737021155, -7.833436488645904, 4.297448999642642, -10.781094198010013, -0.3374338627703918, -3.448478507241864, -13.464347735432527, 10.29196433426684, -3.9760605415423806, 20.571656214561287, -4.243193018962268, -6.6841048636179305, -1.4341686213527363, 11.624578582527146, -16.26372664789796, 12.808171582853799, 8.81229025112592, -6.423234357906154, 12.547240894518783, -3.1812198245762806, -10.755414139566998, 5.535408382199546, 13.49125608615238, -8.814865199698744, -13.59845479895013, -2.382851692110655, 9.785956195943875, -12.783146210298877, -2.1517958152365018, 2.3595345627790993, -7.199927944719605, 12.38275200820973, 22.842587121968677, 20.32244853453293, -16.33656991154259, -2.1544119776426567, -7.982481246296496, 11.916993393327617, -1.7573877820610593, -0.8697384103036738, 8.2089512574467, -4.005188165958282, -3.3996796678384293, -7.700620190051902, -17.004797264603237, 13.854877213480739, 17.164225151257614, -11.495399780425464, 11.61296739909567, 3.843310129562119, -2.8145852915363285, 7.683296143914985, 0.6339573843946955, -6.134360815039255, 9.697322994544784, -1.1483648403141489, -5.772083465970203, 0.29810035453487765, 3.8321104504383325, 6.35905917170372, 1.9327167624745707, 0.5098848871239132, -2.420303482161676, 14.292295295284989, -1.1083749436788923, 0.8985637117742948, 11.070399214339808, -5.571182675492199, -1.862748167729476, 17.737994518883937, 0.6410521475958677, -16.388566387937555, -4.596030894268236, 19.258837756073063, 0.053178016197903515, -6.985285185360821, 10.225677434872537, 0.8907754254625927, -5.9339844874384, 16.228226547636673, -14.74228712093331, 3.7757187937185095, 8.091964023696232, 9.653083614432255, -7.105326158539168, -6.246422344343752, -0.3461240644690256, -6.495927762309794, 9.213803343382493, 32.443100294475855, 7.980537717146529, 11.237096787545834, 1.4685197587932273, -5.212908641693804, -11.17128528882121, 0.6895047949044566, -1.489002954255139, 2.253114614458758, -4.753860400447345, 10.766391390882879, -15.078462297772147, 16.893144877669645, -4.302845774456283, -10.589974808024227, -5.1938088070229815, -29.484665159154318, 7.125010595024356, 2.5300989478868683, 11.936256898587683, 2.6347550784190883, 3.076197493853083, 5.575982843181634, 8.623364757485488, -3.7835829593453907, -4.069538513373579, 10.101518191537496, -9.636414174882193, 1.4084437449559097, -10.03469630326392, -2.1955585316103963, 32.307676308515774, 9.238450549755532, -8.852011080930211, 6.685521658353259, -0.4646596938138852, -8.626916719454664, -2.3664407080739163, 5.505216693597025, -6.074566227488912, -1.8254389618020772, 2.074495920438996, 11.20511113505573, -11.035343843095585, 8.243331584863085, -6.281190018509052, 10.472394370406278, -5.673647046388827, 5.82386404108796, -1.798139495167566, 3.942200395752039, -7.537443043286988, -1.5566989138126273, -3.98151086465038, -7.387739050332701, 13.57112433048208, 0.5540315038032069, 1.134965207185589, -8.580471956360544, -4.569890053158244, -14.958432636089153, -2.059603325102827, -9.64276875962714, 18.053225662132252, -3.909342312726181, 13.343551970432856, -2.5668723398222597, -13.974127447667083, 12.115204687319267, -16.728402701734893, 19.235182965328903, 11.617631989139326, -1.4448526290411003, 10.251254500293907, 0.4463563697614311, 8.631172355203262, 7.796857432317587, 0.14109601532966468, 14.038035526206228, -8.309882203754213, 0.094910465885197, -7.421786698096461, 9.262181650078087, 13.80159136525531, 0.8663951713275877, 0.5098867919971071, 0.8244156661033217, 23.658655977205434, -7.394862617867394, -10.965846421118009, -2.4051221518556933, -5.699659992929123, -13.803149822092355, 2.7035250863152283, -8.168229667575243, -0.08030082907626307, 15.484734493041577, -6.329826236507314, 2.64501204014463, -3.484352110317626, -10.407412308194628], [-23.19181033909185, -24.073739769635758, 6.224775019037001, 2.1351425798489903, -3.2968771726774375, 16.270892609810208, -8.462630552647342, -13.238096621013876, -21.468609877117004, -1.7476037664270447, -14.959881159206855, 13.58671080453594, -7.38291144903704, -9.084505527920285, -15.451975148382251, -12.348160326130039, -2.1728406388551216, -0.27238949412556396, 3.7292666987160468, -4.629433274453005, 1.0168870892818624, -2.712715911665404, 7.296982098897294, -3.795189650019015, 1.4909103864931752, -0.5688648989970023, -2.697435440211206, -2.3122142221921322, 9.677738879127181, -9.107331441592736, 7.53375286965066, -5.347706316629446, -2.232505641904876, -0.921635214298379, -12.40158490296988, -17.500753585439963, -2.4326267088799405, 2.6294434263309037, -11.036547714768403, 6.500426652155592, 12.053550511391052, -3.8584742233863745, -10.482360434246836, -3.89086054597094, 8.906967469679202, -17.851619664621758, 0.9660245138807981, 5.966325445213436, 4.1957537596007075, 18.01694696213819, 1.8246138359724817, -6.242372149154659, -3.119160215888375, 12.23007191000029, -5.977153214676839, -5.247155459321968, 13.494450139703535, -9.601041489513136, 10.03361131766707, -16.972411437526617, -10.77181861965132, -7.509755681696469, -3.9786441020576295, 9.939012571007558, -15.512169506608798, -2.2515439464201146, 14.354054333230096, -0.950542644659266, 12.90292701074667, 12.164258663892422, -5.308840753545522, -1.420405862429305, 22.884674156559193, 5.477649663509844, 8.16469506687926, -1.1093103170476903, -5.1617945915496355, 5.992406189699889, -7.261194089699259, -3.072331578311634, 2.8916811236354123, 0.39617433807061697, -8.447764321478052, 12.742646163716781, -8.800306055001743, 1.0264558765083507, -4.342038589991836, 0.12648556675014988, -5.7372472320408665, -3.3254370452985853, -5.324733290938834, 17.538400048282554, -1.576831761413824, 22.128113756990835, -18.671977665850616, -0.19330623678472156, 8.747798755593484, -10.628351141813386, 4.606484873314281, -0.21759635319857726, -2.6197449095157186, 4.1106024492683275, -9.364596193933938, -6.701242939433648, 13.383673880953815, -7.054238602178417, 13.282105554872736, 9.25841156138903, 2.2933142595094465, -7.032494996415018, -0.9101675258220255, -2.059748484020144, -12.849000089615942, 10.831626040310569, 0.4832253081612803, 2.1520213612471575, 0.9660485354448146, 0.11844118382685959, -10.09821418411793, 0.008622293347995254, -5.669816446293558, -4.872770854453226, 8.99065422777053, -2.4353118758382717, -21.3391584167705, 9.687449442190509, -9.182284677688155, -11.470461833627251, 3.187315912666297, -1.223086900175711, -7.782000982317653, -2.056671768136329, -12.911193614166871, 3.3921457188614217, -9.002914449055329, -10.754405645437462, -6.523972676384718, -9.357471582867163, 11.406541205719286, -6.373797376636633, -13.745293735535665, 9.249564089687158, -8.470572242587625, 8.493021500556782, -7.583848461687175, 10.951663597035342, -3.0808525514217253, 10.83204987524945, 1.1900594069754353, 14.264500751685167, -14.278855958928588, 2.975830430603514, 7.775845745565815, 5.0752160224013165, -12.720214250135985, 3.418527534430197, -7.080096351007718, -3.6013653779208306, -9.515102507628793, 18.639811230652914, 6.004615285510568, -4.64677630894227, -10.335507028417153, -11.797632616435417, 15.216315885154446, -5.431578726265074, -7.881469254663756, -6.249943603389678, 10.402571913808005, 2.2198994540307138, -13.984511967705494, -2.7548942946090054, 6.274128946498955, -25.67388096167752, -9.419264310091611, 5.743456029105204, -2.130900044053277, -11.331677542769672, -3.142389172951084, 3.9242096459601354, -11.080618098177219, -2.782200213839603, -3.410284589991016, 5.275703461197326, 5.709896578911254, 10.378551796355415, -0.8516830697284085, -0.24941964852278875, -6.817767384864806, -0.08191969382555597, -1.678020307322168, -1.45681683637713, -12.668165141942069, 5.407860585771981, -4.155548587889247, 17.122346609480896, 14.959010121702592, -15.199246630292492, -19.016933127603252, -26.870014851483027, 12.214988487299717, 5.499637671419995, -2.8484420458138255, -3.2995522718932118, 5.382526894326473, 7.918509397554406, -4.012244993683264, -15.734861141283305, 6.215776420597116, 6.8590073608673165, 20.229492587621998, 10.528450720467234, 2.765822032083858, -1.3143007623740455, 6.673694747631639, 3.8815736402660166, 3.800462667962213, -6.494625577997147, -6.26543733616709, 5.1776421999166535, 3.965392025173851, -7.151093971459808, -3.030706560671555, 10.799516231603034, 19.091962660643905, -5.700728469820831, 6.179484230017811, 6.311293717366997, -5.631437595457838, 2.5414534454828757, -2.263442836796879, -5.619603393521539, -3.32839440584745, -0.7148338272110921, -15.883506300207149, 10.030986024408302, -1.2834844718197338, 15.291173201608801, 1.9154861913876553, 2.3305116810903446, 10.535273554184833, 9.975443343333056, 11.274223202873095, 4.911240430380505, -10.290621035159997, 1.2074788769480986, 0.05335865774833316, 3.9842849144803907, -15.889202629265826, -5.323807575182453, 13.79053009577463, 4.861567670692323, 12.128334509546486, 16.860721376411213, 4.571377746377515, 7.685955762637691, -1.0882770774048494, 15.270372259283496, -12.205198761288678, 5.227042416325719, -15.197806915330588, 4.8264300989105555, 10.756323875102495, 2.6794654805776257, 6.524999609377851, -20.382934060172747, -4.377506875835337, 23.673238930147683, -15.165888350205446, 5.874934784280903, 4.266896041420341, 11.154121439762024, -2.2762651541107752, -17.263282564745744, -12.871243309174913, 11.218012364831013, -2.194902141546116, 17.44048231557777, 8.29621291350948, 22.574324554398117, 5.501679922922368, -5.939308962158746, 1.3831461344674414, -0.9894154702653768, -21.504869521082913, 11.731883883162384, -6.08412557598967, -10.39957790361062, -3.1610525315093803, -1.9467724226377012, 5.443495376588921, -10.918566562492046, -4.174610060163458, 1.8445953289959265, 15.364894870804587, 9.56492971653397, -21.58626234483266, -0.31303205629388486, -13.203419735212838, -1.9265541769417471, -5.250878428402903, 7.458682643252715, -15.880438511034967, -1.1264900991391644, -16.148445426761057, 3.018358619989519, -1.2326197845225837, 0.9673054445466753, 3.7743003999574127, -3.8977045800521886, 4.1795513299878895, 3.99391051174236, -5.435651604320312, 3.5513499342808825, 5.795335618482687, 2.3806986600707503, -2.229780056611344, 8.579020386701519, -8.964597358272222, -3.837547022033406, -11.312737684129296, 26.07918373376533, 5.715805363050594, 6.928291536068766, 5.698344783694531, -11.048609003648176, 3.2172815456539765, 9.909687773347555, 4.316663889793809, 9.269902553556532, 4.37844593904178, -0.9495405839395437, -9.630888248035571, -2.3048257947281225, -2.956929413202938, -10.89229653410989, -13.834818033350825, -11.755076744112099, -5.421980769148504, -10.588121413583263, 4.559203620575256, -3.24493745311818, -6.961211846429522, 10.610682472020606, 8.257990176985908, 9.389065201518726, -0.8608039696314528, -3.261427192951376, -6.788393417563345, -13.826131297537675, 1.6483846446476, -7.883727743007083, 16.500300161645683, -4.664796302213906, -25.255288391999237, 3.9202515119295227, -5.238121339077827, 14.05640876916472, -8.651828207867808, -2.919126923631954, 6.405751593111187, -7.297738873138378, 1.4346957223349774, -0.9937498857776462, 10.057425292079065, 10.183313638127984, 11.953964886326913, -4.037946729855642, 18.3300568005927, 9.989601100922386, -10.050955540671001, 8.087456024243542, -11.028178065679, 21.927948700252852, -4.233289749087039, 1.6789971302809592, -9.041317676583956, 3.0327693142393732, -5.694666736181882, -14.508951487010393, 0.6469975516905162, -2.959600416810726, -28.81502961706815, -2.2892040426926803, 15.734605877562204, -4.208197268925502, 4.223239171270394, 17.974185063926228, 0.36511893478475244, -9.029462653870457, 0.5459254023671484, 3.5019004793449566, 3.828333937559804, 10.749850265255212, 0.8934775941850999, -12.250193463240551, -2.251373883860924, 1.7872913711365699, -1.6680585851821859, 0.8912681978901564, 6.368807934076409, -3.4324836038519644, -6.379003001046504, 10.23919668948826, 8.69085259140164, 4.148300071403067, 8.541184906914985, 0.24324416721156328, -0.18166133815935073, 15.020516185636048, -5.288681933595205, -5.095925428376303, -19.399894216807322, 6.151362098556578, -6.689073490022238, -1.0772541309301085, 10.866105122527415, -7.572462012731762, 17.36260939838369, 6.672851198424491, -20.182887133761945, 10.468455210768603, 15.830869245587742, -14.152177340632328, 19.951786083111934, 4.1254493372628795, -5.6049889594267714, 27.163905163143234, -0.4426890869062075, -15.40603806096171, 13.230129956671613, 9.992030280471786, -0.6625049774889569, 3.9013056579406986, -19.497979461791836, 4.738043889140201, 11.46685733372392, 5.468033135461518, 12.185465026258317, 8.74370290088497, -17.50774414825964, -6.671859222257784, 8.467399893103277, 14.705716772577, 21.89708514073045, -2.223168399045883, 2.9723329875218956, -17.074218807694855, -16.680990307939506, -2.4872261709826207, -9.894477280535062, -0.12543451546003173, 12.336295565317547, -7.286377660453698, -7.563745983568993, -6.964036455500264, 10.166897434896905, -6.057526025609726, 6.687514073137101, 0.842706364678689, 9.944266750653085, 8.60953079776924, -12.425839982676957, 7.2587183337105365, 6.988259554468161, -2.153779125080658, 9.897281387949953, -7.650059859801326, 1.7482904407242426, 15.24467892690515, 0.7848146391940436, -0.06718948323067024, 0.6471080385983046, 0.5251321900274769, -10.610628806134363, 14.2002888049362, 11.788743704886674, 5.011193800204476, -1.3169667753134606, 9.388652127016272, 3.858762583173708, -9.763839993328855, 18.471486994040873, 0.6337821168913236, -0.4982965365070683, -6.554244038509905, 6.834959708647754, 0.16202408117549386, -15.915415930834062, -3.434724359925358, 0.08193849514272203, 5.42085844504777, -7.302545492768932, 0.49263478039275327, -6.272661895612764, 3.3515959535041335, -14.89257739892603, -9.212052095826346, -9.566829746349702, -0.13342305197075, -20.227497719917324, 1.362950352493706, -0.4823834037103483, -7.1376916393531245, -3.8171207600236374, 12.104536974552595, -2.32725070810262, -11.219252265193706, 4.986528492731436, -0.29100916117515685, 14.039761405319773, 17.599312170151308, -3.9929677915968225, 2.229753915352555, 0.022847516997903966, -9.516303291988805, 4.229486521517936, 7.2982011868184475, 2.8196835285668342, 3.418027129913064, 2.0199341346293775, -10.86593666058281, 5.696117281793606, 2.7375380746010114, 0.8526914271922372, -0.571501881387057, -10.721024985558376, -6.172363850637556, -12.894344405552625, -7.345400907721834, 1.5735500353622633, -3.7360203888455654, -6.646673523151153, 16.911167342912307, 4.545974275737078, -0.6492587561344609, -19.865769345133458, 17.460614252488554, 0.4092308168332446, 9.150659933083668, 0.4653329175568918, 2.5814912239918737, 5.501496295796034, -2.8894910050000955, 4.335309740058288, -10.424015108322195, 1.6680494952899958, 3.8903947324480437, -12.354954067002561, -7.732768086509929, -18.200981838236807, -5.972263121184238, 9.434431173849852, -10.903040707233458, 19.137118850283645, -16.997957441212804, -2.981085881908086, -7.540972918001194, 13.484775655873769, 1.2246445108557826, 15.129071442800404, -0.3022630673310358, -0.3876575743990843, -4.597845853646926, 0.4800109359029605, 3.433932325031292, -25.88229968549557, 2.9876464059662378, -13.193705266445834, -3.2561831409762765, -0.030916534217639912, -2.620512609015069, 15.756643471296305, -9.434104262544185, -2.4600819580051523, 4.106778766783192, 12.472095906552791, 5.213317434354082, 0.36771089057291206, -1.9150294466136786, 20.83755533643613, 9.431967808738221, -4.260105374184596, -8.095874095157722, 15.906973779147282, 1.51017687238173, -14.648706977253767, -6.080014333700471, 3.5998260097477552, 12.05955516096374, -6.162741512369156, 17.75364750784959, 11.912407447975443, -6.8509946245373, -3.185233711105149, -4.7730350070813286, -3.939785969144208, 2.059401077568466, -6.430658394536714, 7.648987806002028, -18.343086968583254, 14.512996894056556, -6.230277967775693, 0.009582118195388465, 2.594616145254285, -9.732481003513854, 1.4032636695350578, -7.862964177781189, -1.6956266025797473, -0.9977995618559317, -6.516360744594762, -9.849122171212239, 2.549718349510388, 3.9305708663892296, -20.20494475318527, 0.37557638971590734, -1.2546457617514455, -1.103074690682701, -0.5463653974217447, -0.8849633564331549, -4.447511039824185, 1.833912924702672, -11.601155765687638, -3.770666034242909, 13.886016685218635, 4.78060202978698, 7.31428774622005, -17.83535335694336, 1.9244805791573307, -12.266504395462254, 5.153232073904915, 3.199128746758626, 6.35018735303016, 8.203430272208605, -1.5826461620309227, 24.99293739021148, -2.9318347963810734, -7.029188816570496, 11.236043414795375, 0.46998331890671585, -9.318126567491268, -0.6297241469879084, 1.3922409611733522, -7.865345036232538, -18.573239937934588, 0.9791051815652664, -3.0377061984693157, 1.0883122305290818, -2.296528801329964, 10.729275126290602, 14.05391945959386, 4.599898054544344, -7.179570367600178, 1.4331738884851395, 4.00473249260581, 4.482083949876578, 13.276357203568319, 4.941431699869808, 4.173125818091857, 10.609957906404148, -14.082522824398552, 10.362150523025173, 22.064691768974495, -21.31077697773335, 6.606898823836803, -3.8665136887599596, 15.75372871031008, -9.502851586735334, -3.5810669307963194, -5.285475618766709, 2.7007618281007533, -13.52383549627228, 4.289007755429757, -3.248798034147316, -4.906829441316415, -10.201054104440178, 9.468419345889947, 15.537060442033468, 1.8724607903992794, 5.646526455549564, 13.023620658860505, 0.29294022250775364, 0.9155261769795917, -0.24339402696105492, 12.60282175796629, 10.314312934828784, -10.003230811091264, 2.891428804539462, -10.828626910668808, -6.2682251704986145, 16.5295159139692, -3.84867112246964, -7.953165138836699, 3.189629249536743, -2.0814684840976208, 4.5536195968461595, 5.537802801436107, -8.129454044488634, 17.517680312895656, 12.179469636089554, 0.12376206594395736, -6.476646725211422, -10.843156765252104, -15.196824635131298, 3.2432560436119506, -14.004152196087396, -5.112209343597504, 2.4738877499009972, -3.4354134024838796, 6.453735556292842, 6.477880545432946, 5.784093250558574, 0.42015330313310606, -5.541190922369049, 16.834998763355678, -9.542737880570852, -12.572718602138995, 1.2417096488819475, -10.909441953070003, 3.489490853071559, -24.330571074602283, 13.28310832778664, -8.95648082393832, 12.159688273146115, 13.681658503173713, -6.021977154065253, -5.4509579899415295, -7.891527943153528, -18.100090297200843, -0.8800427029314438, -20.43018932259079, 9.491356878020225, -13.797664227739347, 10.466681430576145, -12.215686074514258, 8.721390012683639, 0.03839987123369115, 21.052554774149954, 2.056471403309335, 21.782759337007136, 22.022298307940087, 5.94823378980303, 13.115964031639765, -6.9010699576291845, 13.391422188065647, 0.4413402026024651, 2.603796172799325, -2.2151254821390602, -7.929115340805838, 15.253070102704287, -2.2414881949663723, 4.673666760171029, 13.980949314310395, 7.333287396956835, -13.028874589247643, -22.181308090464785, -1.764439468841742, 9.221245647636112, 3.52257484956475, 17.111182923837024, -13.144891893677244, -9.094001512747457, -0.850473584859729, 28.575992527996178, 3.5016120428999944, -22.445251072586707, -7.062843951373969, 3.5308076359257967, -5.381350602745778, -10.033811581119155, -1.5259238619907265, 10.346646207144463, 12.068842684589484, 17.49538284234005, -1.6268542325259365, 16.641844904687204, -11.389473051119957, 7.110159427857454, 6.4606174152964115, 6.971163091365483, -19.80349512255669, 4.462698135529143, -8.005104762831794, 4.3984938173967345, 5.302925365619701, -11.401779672510283, -0.8641098551926354, -7.288188023395391, -9.862134134051818, 0.48861696933648635, 1.6733255073398414, -15.514195596140656, -20.568560546216133, -5.084486797068611, -0.14197156166219585, 7.2087262922001685, 10.183583681496495, 14.462025408978807, -0.12028147376277068, -13.315117261617882, -4.628663954901036, -3.1790548032326624, -12.515938361577902, 3.176348052467479, -9.78866628955938, -3.908465125107515, 5.0451501265960825, 33.92217748629279, 14.705304399367844, 9.708081863955686, -5.200876399070861, 16.022188537959085, -0.4292784897606128, 13.359636056048835, 10.561795388033566, -16.097354975946967, -6.5209205634581195, 12.171839543515208, -4.337666749667222, -5.989063231631835, -13.745825645290093, 21.346712289491823, -14.809430183052463, -7.417318912206529, 23.37542892610944, -3.8257884468914707, -3.376454988819842, 7.6380717021634155, -2.0254155972693093, -1.727729080849012, 11.664024830209058, -9.746900072510392, -15.073709972029363, 3.048201991854424, 15.595970693870086, 5.222938239141298, -5.641953271992655, 14.851395292738445, -17.947169884413988, 26.446334826992015, 2.7246328181528874, -3.9676179260404068, -3.113577473523639, 2.5284465639630174, 3.007062152681037, 1.8715978711604067, 2.825511125304236, 7.3058785693911235, 1.8571807622892924, -8.76792367040403, -6.162156972280629, -1.982258668210275, 8.974244585947913, -4.589040553044795, 8.12997148182539, 10.401832981660457, -9.243331878154788, -2.834018038073425, -6.427053271476156, -6.551585451111639, -6.4596640371013, -0.6558565598082301, 0.5464755363501518, 16.044026133971293, 13.216632534859256, -10.917138090966915, -13.058068147019961, 1.9420349170542268, -18.695665919153694, -6.873234635466046, -8.370267870063369, 13.074781069201096, 18.899285482298577, 1.6801909641350978, 0.06264798881438062, -13.416535787622843, -4.795173162453538, 4.894651581784887, 2.6532654870007906, 4.792419795594838, 16.100183793374228, 5.033263156612426, 9.916483067259227, 20.85186359056836, -8.755396866194122, -7.512367430982801, 4.878818640495818, -2.248506961547496, -12.347240948991736, -0.7623752680489513, 20.4957920498909, -1.4044518819899696, 4.496394271010808, 2.596913072126638, 7.8314434052901944, -6.026544269503745, -21.56494483219904, -4.403688383546934, -0.9232826657865977, -14.250429377882188, -20.495204261583126, -10.03950056461506, -17.96057005491886, 11.241506716781803, -24.153809717843288, 6.4139492535507925, 8.536976461880371, 20.803243438830762, -4.026226968273486, 5.832717114108492, -0.7943118640526261, -4.795410635563532, -9.305220329666648, -7.69788052184671, 2.83631205544637, 8.913726496904662, -0.8603011402942885, -23.353638249065224, -1.803724718354619, -5.558176681572149, 0.03085852099110867, -6.913606780549564, -15.104047735909864, -4.097807413896561, -14.643375079508136, -4.761892789862432, -11.680654248348505, -2.222213488280577, -2.0427363950494613, 9.166792139665908, 3.1705184476041466, 16.16164809146569, -0.5555612570472797, 4.423925119077953, -14.560279089600064, -23.78163469886061, -13.397197061979544, 13.17050339175987, 6.459180135854787, 13.445215633010308, -16.361358952887795, 6.394868621142268, -2.7733100109610493, -4.953466745290881, 11.420849440090375, 17.49490983263928, 3.016685087394941, 16.273871395943853, 8.0260341252423, -5.210783803992637, -6.915583804486549, -13.008402553599712, -9.629903475783065, 10.425903638835447, 9.958950817634221, -5.014978846849299, -9.363799374290329, -11.378925970132078, 3.117710090989612, 7.529678396193056, 3.3944328421682926, 4.23807127008396, -8.851185737630999, -21.242777986828866, 5.507485555457112, -13.553605608032838, -3.095658448126029, -14.117367891111245, 20.45204058020985, 8.026428230432034, -3.433331376451967, 6.923453213993524, 3.9454595850423275, -14.969885778929841, -16.645197512402497, -1.7113692523116217, -8.440185124375573, 8.782863081648353, 20.247730008169455, 5.8091923610468585, -11.120022623639539, 1.9684569312853575, 16.243829470112267, 6.02403317019251, -8.16117301920235, -7.07816544547704, -12.562314866183414, 10.443920832546079, -9.589017246065357, -5.676323799118299, -3.4792210052622603, -2.8991039847348574, -1.8801431942117641, 19.57834522868159, -5.673706720712804, 4.412356656285088, -8.422588835033887, 2.2814846944307026, 10.339997994825312, 2.463510469851865], [24.144979120690415, 24.363945982148095, 22.193704012784245, 20.7632212582155, 12.858655942446557, 11.191230146103349, 7.274088990878864, 20.442442383610473, 27.620455910775622, 14.048827757253992, 17.814007599415987, 3.6040761520734605, 17.499977092979577, 8.702003624375372, 25.391481869466393, 16.04717418489919, 37.524858200722434, 20.58435831763462, 21.97252037592998, 17.90079843537124, 10.785922436932328, 23.383016081523145, 7.390421433616147, 15.076737342464972, 13.316047482630822, 32.11980713400128, 12.957219267282042, 25.26045855755479, 27.006742265469683, 22.751318977119748, 38.72650061231458, 30.835807884715738, 18.191672272194282, 27.202912198744222, 6.122794757756777, 24.426546023084487, 34.35562721328489, 15.125694281700309, 12.916285491108722, 15.900243281808986, 17.346862914207, 36.68721375685946, 15.089530001423, 0.21153499803527964, 27.683593561827166, 20.35054857462412, 12.700722285192128, 18.058148497404556, 14.650411298038273, 15.824314769359713, 23.55140538986037, 27.806539230101514, 41.984610111528795, 41.13138536908693, 15.057518191325055, 22.610847029050376, 19.625088703108105, 18.35048731326972, 26.043019835558354, 17.65472753233118, 24.11694860514052, 19.770024426018427, 10.230492222968001, 23.05404901493081, 27.07437967333533, 22.064310993307092, 39.34376028353307, 19.10753555184072, 30.35483567573027, 28.27148034638615, 12.080722519155179, 13.678004497653852, 12.930544067592821, 6.294406211437122, -1.12829801379376, 36.35210376885304, 40.39301550626605, 10.389297099063283, 9.044251094898872, 11.484876487480713, 25.06634785390836, 24.536284109482864, 17.340172808674957, 19.463660271082915, 21.945481191540303, 24.305590968771284, -7.889374377319925, 22.72375559590256, 24.795494738816995, 29.886285996898938, 27.831252701633804, 24.832635412380263, 23.702669933823998, 17.709763093945277, 9.460518460910963, 8.316901711262743, 10.19326984921642, 21.084715161665386, -1.8484176459049664, 29.951541031494788, 16.972127358658902, 11.127429387399754, 28.747968403832054, 19.53653733352477, 24.550222782558297, 21.188902448708582, 20.019616629913425, 33.529614289597596, 45.50692970322097, 30.895237507958782, 12.91692120790831, 50.42424508238743, 6.421567112911449, 34.99553674265378, 19.468283121507337, 16.273748942532894, 34.720358036931614, 30.856654840356576, 8.81772415099438, 17.68789367002979, 32.26576494131728, 27.555897612691087, 31.515857352779108, 19.205889145257306, 38.06324668792741, 18.894105720103852, 24.575067309301236, 28.858814733461372, 26.705381224655767, 35.760555168135504, 32.40407225223126, 24.223492964032474, 4.095374117071424, 26.557243082098644, 25.622567895371844, 18.718308915014223, 33.560638098145105, 21.622147153606818, 22.143688864091846, 41.40560755265987, 32.21739356368092, 16.654699733203223, 7.995046276402784, 18.7984936468284, 1.1698331060472, 23.46255993196878, 18.928015832283844, 5.901704813171429, 24.78355245092879, 24.061312999976273, 19.363139828108057, 14.639993363877409, 20.26003578990633, 17.531831324678645, 21.89614740667911, 18.239177337137274, 27.11952771818463, 10.233571523049383, 31.62599034043285, 20.354037492844924, 13.643483169171637, 22.53238518468192, 29.260167074722197, 8.677156989129191, 23.422636598760267, 15.59215547903419, -0.9108698211564601, 18.047276769106347, 23.59248576925069, 31.776645899374298, 11.87109311832225, 15.945781206046206, 21.58290760600193, 30.54898910903644, 23.703516953802392, 18.377595855496054, 13.078927472349683, 49.56622151268761, 33.62329782354862, 13.691073504774872, 41.93368611601337, 7.282065848241881, 24.331599370728444, 19.536296907660006, 8.04662749558176, 29.23809605012557, 22.182844429809347, 10.535966251322117, 0.617536191824172, 19.51049794212255, 30.956912178182325, 12.01909831389737, 31.295053625837078, -0.3906085228349845, 19.16320284321859, 10.503421512081804, 24.04662336663685, 27.741394602673413, -3.648378907324407, 25.40135742832298, 28.81164216256166, -2.164819846005077, 3.0425864935467857, 14.276753457980298, 14.83569919952076, 30.97240827186421, 26.57716562464308, 13.34785531070416, 10.32091404582162, 18.898885284822217, 32.44599368285629, 30.155632358532554, 13.072406256829552, 23.38229198688002, 16.94730688240264, 30.582422749297614, 25.699825895470468, 30.329052665202596, 2.7576054498645846, 18.358500979678297, 11.142162870635989, 31.083770869028395, 28.082856986057365, 14.892358075429367, 13.109852001934765, 22.75819307804839, 27.752468912752086, 18.849945748650494, 18.536946459843005, 22.650559243341448, 4.179579831600243, 17.477843548543223, 27.63945130808128, 17.8115362242245, 18.609391370551563, 15.55681615365933, 9.225099821901598, 20.487863010405484, 28.70816035031992, 31.589062657110325, 11.028159445986205, 15.10238992727896, 20.079457379744095, 30.67942491927437, 7.802329527155596, 14.461110959241129, 15.078911656004195, 19.350782191450584, 20.570785321179425, 18.913572444527066, 2.765686978113841, 31.727847757165204, 27.974675323898722, 28.087681075480127, 31.246719698319655, 1.8941505619921415, 18.871592350946226, 12.496277002340584, 33.62673208086322, 8.873811500760683, -11.15916199774821, 36.54447823742958, 1.569130488925012, 19.42202229976946, 13.864287243326249, 11.515439374273868, 13.354573659822524, 13.711756958523384, 24.587985386528267, -6.1174258065401474, 6.386653723417924, 35.32312505316422, 20.29010680037448, 12.96352565525444, 31.999631288242778, 42.641566636163205, 14.93455510350903, 10.68451141890834, 27.512030268076145, 18.117456112623657, 21.83829809570317, 23.427860612206878, 30.607422289418032, 11.672573349813627, 11.725270586268458, 27.473341813856287, 31.178144994484747, 22.724568007332365, 13.99926082994764, 32.68768957366352, 27.218691815620176, 16.769921289463632, 22.57612031912589, 24.666865058636162, 11.995135177713921, 33.58139615858768, 26.064733752674677, 22.508928166393815, -2.5334864079211386, 19.56589750478162, 8.350080387408696, 4.011004816510944, 18.292149118813214, 19.59137427536853, 18.85330226716769, 19.89281932261865, 21.951744960677804, 6.637377743341519, 21.51591530074143, 8.243165329291479, 29.357917417010025, 12.06499485944672, 28.44265800292495, 8.14856719602232, 11.62918158129583, 44.51356779263824, 6.308946165942128, 6.842906127491094, 20.489365655670788, 20.099643662359682, 11.35071979213407, 23.586237004381456, 22.367975928531838, 30.43710785150978, 16.966092240700245, 29.218615458284063, 14.865661402158452, 18.36420172422141, 19.441880992201053, 42.96833478199183, 34.11984352354209, 12.655988307159433, 14.398122978828201, 15.987133321736438, 17.751705834890387, 28.51258604529658, 10.713552394024674, 22.520370043919463, 14.259465631993976, 6.15561661522335, 3.0432985530499117, 15.658163851193109, 16.34020102829143, 18.965392186779702, 18.318976250000045, 1.8633572874688156, 29.92163020048653, 27.32250943090474, 23.812968010066967, 9.352184651127686, 23.64793956004871, 22.264103473322248, 31.451675434849516, 22.42664977495199, 0.37671208346118235, 41.19342680247806, 14.236351637520706, 11.947451768821354, 15.221748904228942, 8.767226598558315, 20.02676579417383, 15.795609451151453, 25.875758506438103, 14.98189489322408, 22.388530944682916, 26.342963947918143, 24.122000979262765, 16.43335936702234, 12.991812734118628, 23.25192698427304, 15.930748717720501, 9.742936485028874, 18.298897565096745, 14.90543935506799, 4.333294777681072, 22.741473028137253, 22.675075538890205, 21.94656898284295, 24.636371533019883, 23.662507118301786, 17.42286974102092, 13.087996925973034, 21.66618828243863, 13.835656976162356, 16.60338706184228, 25.827700795779478, 7.3979853966764, 10.506429410150094, 19.480279737166995, 28.553349523749876, 37.543161874667746, -0.4015201825406578, 16.901076239678833, 22.029367714125538, 13.331032349365996, 17.435149066821477, 14.591200695335482, 38.3723259784735, 13.802650265039311, 13.238791074956811, 27.688651874148405, 16.261038767857137, 17.524695692507088, 26.106735756894725, 22.257394366123417, 15.41676164134809, 21.215966027595776, 32.00964830503377, 14.712875951117137, 25.681360020015788, 21.082042250255846, 13.475726637578777, 13.962931577432306, 19.1547215069848, 13.940197503081075, 20.00999951515817, 9.606372765487128, 38.839719664971675, 15.364749309968438, 21.166280345711343, 14.59787510859972, 14.468203671594123, 14.422028688724698, 27.534373086613165, 28.51312694892446, 38.32253175705199, 24.575097786832206, 32.55517916188313, 20.672749293164177, 11.835155059833381, 24.46219378095161, 23.410676999508194, 24.600476035459515, 21.36267994675564, 12.626490928923412, 19.780068794984807, 18.91653524809063, 20.650697366810498, 20.59463262783747, 34.600096756046156, 33.349439442707876, 16.667787587952667, 30.244473399663143, 18.937380553728296, 41.568723102910255, 23.929036598900954, 3.642794409718185, 33.883335403990706, 5.887257308799093, 26.97921656456801, 11.816355588322123, -3.8317328336414, 25.09916001828288, 18.774143987658412, 5.996045371001518, 30.7003735565686, 6.018187642638328, 34.580869395127536, 24.393615823236495, 30.269705821510676, 40.54579609463441, 18.15405417165336, 23.962248650674535, 20.319152959989886, 16.02878845795654, 32.638424843987494, 13.509586732367659, 21.3301640338681, 5.943359867952962, 31.44693458322713, 19.807440002947807, 10.564077623328572, 22.46727242037524, 23.927704284774236, 13.72314817024822, 2.098295170278803, 20.654262853839466, 6.4495862235311545, 21.69299956501621, 16.30285672021578, 4.481013926340447, 31.86271271902516, 10.560850490820053, -11.049720104709198, 21.162882893226133, 26.114333686500206, 34.84777810726166, 19.61969916219817, 22.311797014588578, 27.675856812846845, 34.37272985409753, 1.7070931574626549, 2.803692201146756, 25.08402145778758, 34.80183072815903, 24.68294362394119, 8.583242368296906, 22.60218874838121, 14.360047583813099, 12.245370086297566, 16.091918620425844, 28.60255198314703, 16.064766509640112, 18.099875067916912, 16.140412415370406, 37.18650805894598, 24.433821988269116, 20.302683742240195, 6.499070138514426, 20.166373919101208, 21.969060327166357, 10.321760646608242, 31.698658353145955, 34.2967809889382, 25.759898061283394, 7.845435312796496, 4.674720596649397, 14.809302166119943, 23.8463619280664, 19.070271923761958, 12.306272391559421, 16.112043017681227, 27.56641874311809, 23.000169359580898, 25.04405571171906, 23.408972250801593, 19.561505090206246, 10.481799104549726, 15.40844656428354, 11.961897404431555, 17.237057212220133, 45.2057088073626, 35.697319505023685, 25.0279559038092, 21.071583553569507, 24.32598481991817, 21.770386247286716, 26.67972761894087, 5.934512255761373, 22.27311382738511, 10.173181589799903, 20.571205157392, 19.275192801580076, 16.50258304547432, 12.784825463913215, 9.18783822740888, -3.4510795034330926, 18.45332936801189, 14.224640599496091, 36.06856315653919, 15.445364822952687, 13.52061850128542, 34.309038873754396, 26.990820003973493, 4.187044702598563, 42.679170506613104, 17.077796994502034, 9.88019909413158, 17.856641108991045, 32.093766294643835, 31.63515418868414, 26.846825412350178, 21.92483479215749, 23.590997535019692, 18.16955405491139, 11.0031082915721, 20.892065810532042, 33.8884796778686, 17.81845276167649, 21.066796991700272, 42.688102646080516, 30.794894022601902, 9.66704672801367, 20.007032022161052, 10.355473518519462, 22.706244276129574, 28.971800312773627, 26.541834658718333, 27.67141511157039, 6.642749828885448, 24.003344247145247, 20.660791210046796, 14.375410654030002, 24.99827456588761, 25.564913698810734, 22.876565694766082, 15.38142563450929, 10.838626335228428, 6.419909034819115, 7.417874702116144, 9.243736567505591, 27.292023418242813, 3.924137918332246, 37.90076292823907, 12.839978362525219, 25.776149211820336, 26.538043551021413, 23.665640954253654, 18.95492133933964, 7.49123279047334, 10.906038764980394, 19.549304208379453, 21.40696168238394, 8.690008383477373, 17.633711066544, 27.268698010956456, 11.51352841831086, 18.718647660353167, 27.034470218236848, 22.287236463821298, 29.86476439764451, -0.34575205411290355, 9.050693588565421, 5.178917676200598, 21.764604603472307, 10.407622820657402, 27.544506678681376, 13.340117599839115, 24.043247568603917, 10.026601629447041, 16.07512499139821, 20.291601441915834, 33.6115985142005, 19.3725911480145, 2.2606477133171907, 10.318553159281995, 16.113775522861843, 6.537928202261202, 22.51960323455909, 28.842100071566918, 7.689130002277874, 9.138003806405683, 21.617691930165154, 23.528455586084373, 39.478506956927944, 19.339438283150304, 43.840854757778594, 22.05890769314444, 26.2783542708895, 19.780365307820777, 23.039621972652203, 23.574322737463007, 18.491135930017887, 10.877421780244354, 25.11197398605554, 18.26001710141298, 23.999249439327087, 36.06490429745986, 16.187188784460773, 25.29661798319887, 17.32751721877599, 25.296622156612834, 19.33667928842639, 31.708610460733635, 18.786963676038333, 19.668324683906626, 36.74272886517358, 12.334256116631533, 17.093033510007864, 36.845823822760806, 24.55386472475, 34.23210238014671, 26.801626727044688, 14.760808523758993, 14.79066194043226, 10.969656632491905, 19.26543049352585, 17.896127133233364, 24.00964257036918, 17.88633973065883, 25.599738283808747, 25.974428488209433, 18.907861512047155, 10.380657123360175, 13.022679037206, 4.772245236218598, 15.795471632685633, 14.318823352507197, 22.78562595710174, 7.965338628770478, 14.244551550776801, 3.789867389666867, 13.56969778185245, 23.690787056467943, 14.20367698044365, 24.77976187234263, 26.40509061536862, 11.32183649130488, 19.81387436329251, 9.98834308158302, 23.552914494119346, 13.275226215797396, 15.64691557403955, 13.680498720249444, 17.07582996080438, 19.82633930009612, 21.22419730255193, 24.33855491794295, 25.706641192633164, 18.61477543430327, 14.332687334693516, 30.520515916974865, 16.094692365214087, 24.749996051529617, 12.131711093270685, 16.20312787544825, 16.343873167601398, 21.758080711331576, 17.70166862930189, 14.660256521626376, 3.00024744662349, 28.04948352601104, 28.80390625205322, 21.148563544762773, 24.050437852938952, 7.64737112181621, 15.842123321867163, 29.43159283729942, 12.453569294226169, 34.457861144561136, 21.92464513261612, 25.097714782483358, 16.19810468426723, 13.289167801240094, 5.250399659674512, 14.094453034772691, 11.050774782507318, 10.479629620271368, 7.35052727793439, 11.00976722643226, 23.769764687532042, 23.083446299484603, 22.256340585006253, 9.980780544526805, 14.395411875893265, 27.786757570865817, -3.2547066847355275, 26.273568814682264, 19.348437768661928, 24.53353343364876, 18.652663920084287, 8.9856944709395, 34.868874389853225, 5.5669702895701185, 31.873807549208948, 27.639381905581246, 21.911898536561058, 25.469742668727186, 29.26170415733167, 21.09182775957343, 16.14054997729289, 19.00233866386112, 28.181281428034247, 13.767095807467616, 14.34365341984438, 38.72476619046191, 10.919082821933694, 17.6680882384536, 30.068042993406046, 20.01992380590582, -0.3655444420945777, 16.393057162788594, 20.93296677833516, -9.373996981672459, 9.005203643850756, 12.824573534096151, 28.16859205487556, 19.913799041890638, 17.828088414613507, 14.928355181628124, 24.659406189197163, 24.8926311373684, 3.4202252352286493, 6.104305858105031, 14.772667094865554, 30.299519318034637, 19.247345991290988, 24.048712243920573, 13.689312483547816, 21.20474949840462, 38.9254537826324, 20.256508185702426, 13.030737718121006, 37.714288651693124, 22.855703682319234, 9.993416702782778, 16.286395245003803, -9.772741783126794, -21.66428687461847, -10.304604725932265, 25.548237461724703, 20.9280642827227, -1.0276359656260468, 8.031622417040769, 29.7634717607702, 23.312012450389304, 19.46529222468142, 24.624988137489147, 32.82429942088913, 32.45500990174666, 25.79987530052188, 26.77346660188855, 21.80299488537627, 37.92460157938032, 22.501673095422724, 21.787799556662552, 20.99237151593337, 19.800062001854542, 18.59022517633146, 35.21507858108697, 21.425283999167437, 23.50155906000038, 20.208756062385348, 20.162910414366383, 6.738668856659668, 7.720108171447473, 28.281568203834375, 27.043364396939637, 23.189829950179103, 8.878060295543047, 12.053745645173791, 5.191667220691439, 17.07440776639067, 25.618078624272645, 12.932304189602403, 23.333941671988136, 15.879121454463217, 6.437083219920419, 22.797901167961456, 27.95483651063135, 10.173424595867598, 25.80527345881923, 25.74821374022312, 14.462492888565723, 6.489968732882863, 4.471372415961072, 13.678558635880012, 22.69218272989461, 25.082659490595994, 26.146226222458626, 31.541115193425423, 15.783771922651258, 5.007009531919193, 27.329841617121367, 12.388641221283544, 32.543200578669, 24.51791122630967, 34.938310468949695, 16.861605110907433, 25.370042114308013, 13.35434700805342, 4.31969312123625, 56.39681596823562, 21.8752347156651, 23.715674082224456, 9.172247003118372, 26.509830362230772, 32.493008932976856, 14.580834505326624, 25.014123047808738, 21.2835388481819, 21.97953923804592, 21.588550535650278, 21.0060969155311, 23.268908910045738, 28.934385916287717, 16.358914741476593, 40.115603555912735, 25.06970907759179, 39.51101396070887, 14.978768249543059, 23.667419065574, 16.891090916051887, 36.73003726387556, 18.34876642077084, 28.076913796476145, 28.210862942691534, 4.24633182807627, 27.864329559547784, 19.996825010452238, 25.486908180483812, 22.534712654983093, 23.931355666030445, 21.20539646153028, 1.8585546608940078, 28.818043346342343, 15.832624687033874, 18.412223773288133, 10.525381131896822, 18.841361310131543, 14.583694308900057, 32.1273625186406, 24.406889023052052, 29.270100807488117, 6.620641922496869, 14.277276033359323, 2.463761131437799, 37.91663468318508, 26.288040115947503, 17.369151247862646, 11.704197665303669, 14.093380906516433, 9.505702079853098, 24.210601868352278, 17.73472830544039, 30.488547046585772, 31.094917840304145, 19.30361945887205, 33.35767309669101, 19.13227974760672, 22.957523746571347, 18.921596071740094, 8.520539876563138, 41.08388704539968, 25.2136595844575, 26.140035539965766, 11.614101825283228, 19.564209867732966, 25.067902074305685, 0.8515259314536863, 30.691717719019362, 20.80962819260533, 28.458518358055805, 19.36500050510415, 15.18139367977055, 30.630844237819094, 44.547589169258444, 29.748192390005094, 25.50460892204581, 53.81347285941574, 40.98412410661027, 21.51080412988832, 17.777260749690708, 24.761212660456458, 19.170957624754884, 18.94289033474282, 29.190953900006523, 25.91102442663525, 21.77816467179297, 18.981880689411557, 21.672646273334077, 15.233350134516655, 22.46792358743541, 25.6791163078585, 30.701363730872934, 18.112464764906612, 20.177576349974846, 10.670367690404266, 4.970263952505432, 21.633201003984563, 17.011804827508325, 16.112799791345118, 16.701778433176923, 31.13975878974835, 25.908647907294515, 29.16815760499363, 36.91699026760226, 10.0594371124645, 18.211664242412883, 1.3623073219519917, 35.00278314881551, 22.35847756051493, 29.97990464686631, 13.673631746828285, 29.697406332157325, 21.580581763438165, 14.73489156469082, 26.384859984435305, 19.500538948066488, 16.386826398838217, 18.966346269427913, 22.274138248385466, 32.5103971783909, 26.526695615314907, 17.28624000861138, 18.247656044630784, 13.00604878519649, 7.594651980659934, 16.782024887769605, 28.02123025144991, 29.189847980346443, 27.898568858908725, 27.442742647060268, 14.956008249489296, 20.8842971885263, 14.846464071572745, 42.63166761262368, 27.762723004859218, 27.707194041750636, 21.488244221167882, 21.337996952262124, 24.489081702719464, 26.04282009953721, 19.453957665507968, 23.38731523244711, 14.840908197861097, -2.3462718695811375, 27.103591861419186, 27.839751064926467, 29.46528326091332]]\n" ] } ], "source": [ "corr_data = [[200 * random.random() - 100 for _ in range(1000)],list(random_normal(0,10,1000)), \n", " list(-1*random_normal(0,10,1000)),list(20-random_normal(0,10,1000))]\n", "print(corr_data)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_vectors = len(corr_data)\n", "fig, ax = plt.subplots(num_vectors, num_vectors) # plt.subplots would allow us to create subplots\n", "\n", "for i in range(num_vectors):\n", " for j in range(num_vectors):\n", "\n", " # Scatter column_j on the x-axis vs. column_i on the y-axis\n", " if i != j: ax[i][j].scatter(corr_data[j], corr_data[i])\n", "\n", " # unless i == j, in which case show the series name\n", " else: ax[i][j].annotate(\"series \" + str(i), (0.5, 0.5),\n", " xycoords='axes fraction',\n", " ha=\"center\", va=\"center\")\n", "\n", " # Then hide axis labels except left and bottom charts\n", " if i < num_vectors - 1: ax[i][j].xaxis.set_visible(False)\n", " if j > 0: ax[i][j].yaxis.set_visible(False)\n", "\n", "# Fix the bottom-right and top-left axis labels, which are wrong because\n", "# their charts only have text in them\n", "ax[-1][-1].set_xlim(ax[0][-1].get_xlim())\n", "ax[0][0].set_ylim(ax[0][1].get_ylim())\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Now could you try to create another corr_data with different kind of data, and run your script to draw correlation pictures?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## How to understand multidimentional data like Stock? For example,\n", "AAPL,6/20/2014,90.91
\n", "MSFT,6/20/2014,41.68
\n", "FB,6/20/3014,64.5
\n", "AAPL,6/19/2014,91.86
\n", "MSFT,6/19/2014,n/a
\n", "FB,6/19/2014,64.34
\n", "Any ideas to represent this data? " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## One way to represent this is by using dictionary" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "import datetime\n", "\n", "stock_price = {'closing_price': 102.06,\n", " 'date': datetime.date(2014, 8, 29),\n", " 'symbol': 'AAPL'}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Issues: need a lot of memory, accessing things by dict key is error-prone:\n", "#oops, typo\n", "stock_price['cosing_price'] = 103.06" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Another solution: namedtuple class, tuple with named slots. Like regular tuples, namedtuples are immutable, which means that you can’t modify their values once they’re created. Occasionally this will get in our way, but mostly that’s a good thing. Let's see the following example:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "from collections import namedtuple\n", "\n", "StockPrice = namedtuple('StockPrice', ['symbol', 'date', 'closing_price'])\n", "price = StockPrice('MSFT', datetime.date(2018, 12, 14), 106.03)\n", "\n", "assert price.symbol == 'MSFT'\n", "assert price.closing_price == 106.03\n", "\n", "# now let's solve the type annotation issue\n", "from typing import NamedTuple\n", "\n", "class StockPrice(NamedTuple):\n", " symbol: str\n", " date: datetime.date\n", " closing_price: float\n", "\n", " def is_high_tech(self) -> bool:\n", " \"\"\"It's a class, so we can add methods too\"\"\"\n", " return self.symbol in ['MSFT', 'GOOG', 'FB', 'AMZN', 'AAPL']\n", "\n", "price = StockPrice('MSFT', datetime.date(2018, 12, 14), 106.03)\n", "\n", "assert price.symbol == 'MSFT' # so now you have to use price.symbol, this will avoid your typos.\n", "assert price.closing_price == 106.03\n", "assert price.is_high_tech()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cleaning and Munging.\n", "Real-world data is dirty. Often you’ll have to do some work on it before you can use it. For example, you may need to convert strings to floats or ints, check missing values and outliers and bad data:\n", "closing_price = float(row[2])\n", "Let's write a function to do the parsing" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "from dateutil.parser import parse\n", "\n", "def parse_row(row: List[str]) -> StockPrice:\n", " symbol, date, closing_price = row\n", " return StockPrice(symbol=symbol,\n", " date=parse(date).date(),\n", " closing_price=float(closing_price))\n", "\n", "# Now test our function\n", "stock = parse_row([\"MSFT\", \"2018-12-14\", \"106.03\"])\n", "\n", "assert stock.symbol == \"MSFT\"\n", "assert stock.date == datetime.date(2018, 12, 14)\n", "assert stock.closing_price == 106.03" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## How about bad data? Please try the following:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "could not convert string to float: 'oh my data'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mstock\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_row\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"MSFT\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"2018-12-14\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"oh my data\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m\u001b[0m in \u001b[0;36mparse_row\u001b[0;34m(row)\u001b[0m\n\u001b[1;32m 5\u001b[0m return StockPrice(symbol=symbol,\n\u001b[1;32m 6\u001b[0m \u001b[0mdate\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdate\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m closing_price=float(closing_price))\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;31m# Now test our function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mValueError\u001b[0m: could not convert string to float: 'oh my data'" ] } ], "source": [ "stock = parse_row([\"MSFT\", \"2018-12-14\", \"oh my data\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Maybe it should return None instead of crash? Let's see this function:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "from typing import Optional\n", "import re\n", "\n", "def try_parse_row(row: List[str]) -> Optional[StockPrice]:\n", " symbol, date_, closing_price_ = row\n", "\n", " # Stock symbol should be all capital letters\n", " if not re.match(r\"^[A-Z]+$\", symbol):\n", " return None\n", "\n", " try:\n", " date = parse(date_).date()\n", " except ValueError:\n", " return None\n", "\n", " try:\n", " closing_price = float(closing_price_)\n", " except ValueError:\n", " return None\n", "\n", " return StockPrice(symbol, date, closing_price)\n", "\n", "# Should return None for errors\n", "assert try_parse_row([\"MSFT0\", \"2018-12-14\", \"106.03\"]) is None\n", "assert try_parse_row([\"MSFT\", \"2018-12--14\", \"106.03\"]) is None\n", "assert try_parse_row([\"MSFT\", \"2018-12-14\", \"x\"]) is None\n", "\n", "# But should return same as before if data is good\n", "assert try_parse_row([\"MSFT\", \"2018-12-14\", \"106.03\"]) == stock" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Try to create a CSV file \"comma_delimited_stock_prices.csv\" with the following data:
\n", "AAPL,6/20/2014,90.91
\n", "MSFT,6/20/2014,41.68
\n", "FB,6/20/3014,64.5
\n", "AAPL,6/19/2014,91.86
\n", "MSFT,6/19/2014,n/a
\n", "FB,6/19/2014,64.34
\n", "And then run the following function" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "skipping invalid row: ['MSFT', '6/19/2014', 'n/a']\n" ] } ], "source": [ "import csv\n", "\n", "data: List[StockPrice] = []\n", "\n", "with open(\"comma_delimited_stock_prices.csv\") as f:\n", " reader = csv.reader(f)\n", " for row in reader:\n", " maybe_stock = try_parse_row(row)\n", " if maybe_stock is None:\n", " print(f\"skipping invalid row: {row}\")\n", " else:\n", " data.append(maybe_stock)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Think about what else error in your data? Any outliers? " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Manipulating Data\n", "One of the most important skills of a data scientist is manipulating data. It’s more of a general approach than a specific technique, so we’ll just work through a handful of examples to give you the flavor of it.
\n", "Continue the stock data example, now I want to know the highest-ever closing price for AAPL, what can we do? " ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "91.86\n" ] } ], "source": [ "max_aapl_price = max(StockPrice.closing_price\n", " for StockPrice in data\n", " if StockPrice.symbol == \"AAPL\")\n", "print(max_aapl_price)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## More generally, how to find the highest-ever closing price for each stock? \n", "Idea: Create a dict to keep track of highest prices (we’ll use a defaultdict that returns minus infinity for missing values, since any price will be greater than that).
\n", "Iterate over our data, updating it." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "defaultdict( at 0x1199ea598>, {'AAPL': 91.86, 'MSFT': 41.68, 'FB': 64.5})\n" ] } ], "source": [ "from collections import defaultdict\n", "\n", "max_prices: Dict[str, float] = defaultdict(lambda: float('-inf'))\n", "\n", "for sp in data:\n", " symbol, closing_price = sp.symbol, sp.closing_price\n", " if closing_price > max_prices[symbol]:\n", " max_prices[symbol] = closing_price\n", "\n", "print(max_prices)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Now we coud do some more complicated things\n", "Such as the largest and smallest changes? The per-day change could be calculated by: price_today / price_yesterday - 1. Ideas?
\n", "\n", "1. Order the prices by date.
\n", "\n", "2. Use zip to get (previous, current) pairs.
\n", "\n", "3. Turn the pairs into new “percent change” rows.
\n" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "from typing import List\n", "from collections import defaultdict\n", "\n", "# Collect the prices by symbol\n", "prices: Dict[str, List[StockPrice]] = defaultdict(list)\n", "\n", "for sp in data:\n", " prices[sp.symbol].append(sp)\n" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "# Order the prices by date. \n", "prices = {symbol: sorted(symbol_prices)\n", " for symbol, symbol_prices in prices.items()}" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[DailyChange(symbol='AAPL', date=datetime.date(2014, 6, 20), pct_change=-0.0103418245155672), DailyChange(symbol='FB', date=datetime.date(3014, 6, 20), pct_change=0.0024867889337891746)]\n" ] } ], "source": [ "# compute a sequence of day-over-day changes\n", "def pct_change(yesterday: StockPrice, today: StockPrice) -> float:\n", " return today.closing_price / yesterday.closing_price - 1\n", "\n", "class DailyChange(NamedTuple):\n", " symbol: str\n", " date: datetime.date\n", " pct_change: float\n", "\n", "def day_over_day_changes(prices: List[StockPrice]) -> List[DailyChange]:\n", " \"\"\"\n", " Assumes prices are for one stock and are in order\n", " \"\"\"\n", " return [DailyChange(symbol=today.symbol,\n", " date=today.date,\n", " pct_change=pct_change(yesterday, today))\n", " for yesterday, today in zip(prices, prices[1:])]\n", "\n", "# now get all of them\n", "all_changes = [change\n", " for symbol_prices in prices.values()\n", " for change in day_over_day_changes(symbol_prices)]\n", "print(all_changes)" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "FB\n", "3014-06-20\n", "0.0024867889337891746\n", "AAPL\n", "2014-06-20\n", "-0.0103418245155672\n" ] } ], "source": [ "# now we could find the largest and smallest\n", "max_change = max(all_changes, key=lambda change: change.pct_change)\n", "print(max_change.symbol)\n", "print(max_change.date)\n", "print(max_change.pct_change)\n", "\n", "min_change = min(all_changes, key=lambda change: change.pct_change)\n", "print(min_change.symbol)\n", "print(min_change.date)\n", "print(min_change.pct_change)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "ename": "ZeroDivisionError", "evalue": "division by zero", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 8\u001b[0m avg_daily_change = {\n\u001b[1;32m 9\u001b[0m \u001b[0mmonth\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchange\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpct_change\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mchange\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mchanges\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchanges\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mmonth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchanges\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mchanges_by_month\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m }\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 8\u001b[0m avg_daily_change = {\n\u001b[1;32m 9\u001b[0m \u001b[0mmonth\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchange\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpct_change\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mchange\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mchanges\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchanges\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mmonth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchanges\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mchanges_by_month\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m }\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mZeroDivisionError\u001b[0m: division by zero" ] } ], "source": [ "# Now we could try to use this to find out which month is the best to invest? \n", "# Let's just check the average daily change by month\n", "changes_by_month: List[DailyChange] = {month: [] for month in range(1, 13)}\n", "\n", "for change in all_changes:\n", " changes_by_month[change.date.month].append(change)\n", "\n", "avg_daily_change = {\n", " month: sum(change.pct_change for change in changes) / len(changes)\n", " for month, changes in changes_by_month.items()\n", "}\n", "\n", "# If October is the best month, we could find it now\n", "#assert avg_daily_change[10] == max(avg_daily_change.values())\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Rescaling\n", "Many techniques are sensitive to the scale of your data. For example, imagine that you have a dataset consisting of the heights and weights of hundreds of data scientists, and that you are trying to identify clusters of body sizes. \n", "Like A has height and weight 63, 120, B has height and weight 67, 200, etc. You could directly compare but maybe height is in the range of 0 and 100, but weight in the range of 0 and 300, they are not in the same scale, the general idea is to rescale each data so they are all in the distribution of mean 0 and standard deviation 1, please read book for example of details. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# tqdm\n", "Frequently we’ll end up doing computations that take a long time. When you’re doing such work, you’d like to know that you’re making progress and how long you should expect to wait.
\n", "You should first install: python -m pip install tqdm" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 100/100 [00:12<00:00, 8.38it/s]\n" ] } ], "source": [ "import tqdm\n", "\n", "for i in tqdm.tqdm(range(100)):\n", " # do something slow\n", " _ = [random.random() for _ in range(1000000)]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "6802 primes: 68%|██████▊ | 68375/99997 [00:48<00:24, 1306.79it/s]" ] } ], "source": [ "# Practice the following example\n", "from typing import List\n", "\n", "def primes_up_to(n: int) -> List[int]:\n", " primes = [2]\n", "\n", " with tqdm.trange(3, n) as t:\n", " for i in t:\n", " # i is prime if no smaller prime divides it\n", " i_is_prime = not any(i % p == 0 for p in primes)\n", " if i_is_prime:\n", " primes.append(i)\n", "\n", " t.set_description(f\"{len(primes)} primes\")\n", "\n", " return primes\n", "\n", "my_primes = primes_up_to(100_000)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }