├── .gitattributes ├── README.md ├── 习题 ├── .ipynb_checkpoints │ ├── 3.16 & 3.17-checkpoint.ipynb │ ├── 4.2-checkpoint.ipynb │ ├── 4.4-checkpoint.ipynb │ ├── 4.6-checkpoint.ipynb │ ├── 4.8-checkpoint.ipynb │ └── 4.9-checkpoint.ipynb ├── 3.16 & 3.17.ipynb ├── 4.2.ipynb ├── 4.4.ipynb ├── 4.6.ipynb ├── 4.8.ipynb ├── 4.9.ipynb ├── ~$序列分析第三章.docx ├── 时间序列分析第三章.docx └── 时间序列分析第四章.docx ├── 例题 ├── .ipynb_checkpoints │ └── 例题2-5-checkpoint.ipynb ├── A1-6.csv └── 例题2-5.ipynb ├── 教材数据 ├── A1_1.xlsx ├── A1_10.xlsx ├── A1_11.xlsx ├── A1_12.xlsx ├── A1_13.xlsx ├── A1_14.xlsx ├── A1_15.xlsx ├── A1_16.xlsx ├── A1_17.xlsx ├── A1_18.xlsx ├── A1_19.xlsx ├── A1_2.xlsx ├── A1_20.xlsx ├── A1_21.xlsx ├── A1_22.xlsx ├── A1_23.xlsx ├── A1_24.xlsx ├── A1_25.xlsx ├── A1_26.xlsx ├── A1_27.xlsx ├── A1_28.xlsx ├── A1_3.xlsx ├── A1_4.xlsx ├── A1_5.xlsx ├── A1_6.xlsx ├── A1_7.xlsx ├── A1_8.xlsx └── A1_9.xlsx └── 课外1:bilibili video ├── 在线浏览 ├── Video+2.md └── Video+3.md └── 源码 ├── .ipynb_checkpoints ├── Video 2-checkpoint.ipynb └── Video 3-checkpoint.ipynb ├── Video 2.ipynb └── Video 3.ipynb /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Time-Series 2 | 3 | 时间序列分析例题习题Python代码 4 | 5 | 参考书目:《应用时间序列分析》易丹辉、王燕著 6 | 7 | 此文件是桂电应统研究生在《时间序列分析》这门课程当中,使用Python去解决易丹辉书中的部分例题和习题的代码以及相关内容。 8 | 9 | 课外1:是作者在修课程的基础上,自学时间序列分析的相关内容,课外1内容的链接为:https://www.bilibili.com/video/av29443650?from=search&seid=5276582912624394140 10 | 11 | 课外2:自学statsmodel库有关时间序列分析的相关内容,statsmodel的官网为:http://www.statsmodels.org/stable/example_formulas.html 12 | -------------------------------------------------------------------------------- /习题/4.2.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import pandas as pd\n", 11 | "import pylab as plt" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "#写入数据\n", 21 | "dta = np.array([4.101,3.297,3.533,5.687,6.778,4.873,3.592,3.973,2.731,3.557,2.863,4.170,\n", 22 | " 4.225,2.581,1.965,4.257,4.373,3.573,3.320,2.257,3.110,4.574,5.328,2.645,\n", 23 | " 2.859,3.721,3.836,2.417,3.074,3.483,3.847,3.250,3.735,4.842,3.564,3.109,\n", 24 | " 2.463,1.778,1.450,1.956,2.196,4.584,3.715,1.853,2.543,2.123,2.756,3.690])\n", 25 | "data = pd.Series(dta)" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 3, 31 | "metadata": {}, 32 | "outputs": [ 33 | { 34 | "data": { 35 | "text/plain": [ 36 | "" 37 | ] 38 | }, 39 | "execution_count": 3, 40 | "metadata": {}, 41 | "output_type": "execute_result" 42 | }, 43 | { 44 | "data": { 45 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAArkAAAD7CAYAAABuUYz6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd1xb97k/8M/RAiRADIEAMcSyARvwwNuOB3Z2nNFmtUludtImTfrrvr29vU13e9t03KZN0sxmp01a21mN98ATDzxAgNhbbCQEaJ3fH0IEOxgkdI7OkXjer1deTZF0zhcHH57zPc9gWJYFIYQQQgghoUQi9AIIIYQQQgjhGgW5hBBCCCEk5FCQSwghhBBCQg4FuYQQQgghJORQkEsIIYQQQkIOBbmEEEIIISTkzBjkMgwzn2GYM5P+GWIY5uuBWBwhhBBCCCGzwfjSJ5dhGCmANgArWJZt4m1VhBBCCCGE+EHm4/tLAdTNFOBqNBpWr9fPelGEEEIIIYTM5OTJkz0syyZM9ZqvQe4dAN6a6U16vR7l5eU+HpoQQgghhBDvMQxz2Y1XrwvPGIZRANgK4O+Xef1hhmHKGYYp7+7u9n2VhBBCCCGEcMSX7grXADjFsmzXVC+yLPs8y7IlLMuWJCRMuWtMCCGEEEJIQPgS5N4JL1IVCCGEEEIIEZpXQS7DMEoAWwC8z+9yCCGEEEII8Z9XhWcsy1oBxPO8FkIIIYQQQjhBE88IIYQQQkjIoSCXEEIIIYSEHApyfeR0sXjreDNGbE6hl0IIIYQQQi6DglwffXqhE//5/jl8cLZd6KUQQgghhJDLoCDXR9vOuIPbc22DAq+EEEIIIYRcDgW5PhgcsWNPtQkAcLaVglxCCCGEELGiINcH/77QCZvDheX6OFR1DMHudAm9JEIIIYQQMgUKcn2w/Uw7MuKV+PLKdIw5XKjtsgi9JEIIIYQQMgUKcr1kGhrF4boe3FicgqLUGADAubYBgVdFCCGEEEKmQkGul3ac7YCLBbYuSkFGnBJR4TIqPiOEEEIIESmvxvoSYPuZNixIiUZOYhQAYGGKGueo+IwQQgghRJRoJ9cLDT3DqGgdxI2LUia+VpSqRlWHGTYHFZ8RQgghhIgNBble2H6mHQwD3FD8WZC7UKeGzelCTZdZwJURQgghhJCpUJA7A5Zlsa2iDSsy45Csjpj4elGqGgANhSCEEEIIESMKcmdwoX0I9d3DuHGR7qKvp8cpEU3FZ4QQQgghokRB7gy2nWmDXMrgmoVJF32dYRgUplLxGSGEEEKIGFGQOw2ni8X2inasn5eIGKXic68X6mJg6BzCmMMpwOoIIYQQQsjlUJA7jeMNfegaGruoq8JkhTo17E4WNZ00+YwQQgghREwoyJ3G9oo2KBVSbM7XTvm6p/jsLE0+I4QQQggRFQpyL2PM4cSHZztw1YIkRCikU74nNTYCMUo5zlPxGSGEEEKIqFCQexn7q7sxNOrA1sukKgDjxWc6Nc5S8RkhhBBCiKhQkHsZ2yraEa9SYG2OZtr3FerUqO40Y9ROxWeEEEIIIWJBQe4ULGMO7KrswnVFyZBLp/8jKtSp4XCxqO6kyWeEEEIIIWJBQe4UPr3QiTGH67JdFSYrnCg+o5QFQgghhBCxoCB3CtvOtCM1NgJL0mNnfK8uJgJxKgXOU14uIYQQQohoUJB7iR7LGA4Ze7C1OAUMw8z4foZhsFCnpp1cQgghhBARoSD3Eh+d64DTxeLGRTqvP1OkU6Omi4rPCCGEEELEgoLcS2w70468pCjMT4ry+jMLdWo4XSyqOoZ4XBkhhBBCCPGWV0EuwzAxDMP8g2EYA8MwVQzDrOJ7YUJo6bPiZFP/tL1xp+KZfHaOUhYIIYQQQkRB5uX7/gDgE5Zlv8gwjAKAksc1CWZ7RTsAYGuxb0FusjocmkgFDYUghBBCCBGJGYNchmGiAVwB4F4AYFnWBsDG77ICj2VZ/Ot0G5bpY5Ea61sM7yk+o/G+hBBCCCHi4E26QhaAbgAvMwxzmmGYFxiGUfG8roAzdJpRa7Jgqw8FZ5N5is9GbFR8RgghhBAiNG+CXBmAJQD+wrLsYgDDAL536ZsYhnmYYZhyhmHKu7u7OV4m/7adaYdMwuC6wuRZfX6hTg0XC1RS8RkhhBBCiOC8CXJbAbSyLHts/P//A+6g9yIsyz7PsmwJy7IlCQkJXK6Rdy4Xix0V7ViXq0GcSjGrYxSlxgAAzrUOcLk0QgghhBAyCzMGuSzLdgJoYRhm/viXSgFU8rqqADvZ3I+2gRGfeuNeShsdhoSoMBoKQQghhBAiAt52V/gagDfGOyvUA7iPvyUF3rYzbQiXS7ClQDvrYzAMg0IqPiOEEEIIEQWvglyWZc8AKOF5LYKwO1348GwHthQkQRXmbcw/tUKdGvuqTbDaHFAq/DsWIYQQQgiZvTk/8exQbQ/6rXbc6GNv3KkUeorP2qn4jBBCCCFESHM+yP3XmTbEKOW4Yp7/xXKF45PPaCgEIYQQQoiw5nSQa7U58OmFLlxbmAyFzP8/Cm10OLTRYTTelxBCCCFEYHM6yN1Z2YURu5OTVAWPQp2aglxCCCGEEIHN6SB3+5l2JKvDsUwfx9kxC3UxqOu2wDLm4OyYhBBCCCHEN3M2yO0ftmF/TTe2FqdAImE4O25hajRYKj4jhBBCCBHUnA1yd1Z2weFicQOHqQqAe7wvAJylyWeEEEIIIYKZs0Hu2bYBRIXLsCAlmtPjJkaFI1kdTnm5hBBCCCECmrNBrqHDjPykaDAMd6kKHgup+IwQQgghRFBzMshlWRbVnWbMT4ri5fhFOjXqu4dhHrXzcnxCCCGEEDK9ORnktg2MwDzmQF4yP0HuwvGhEOfbqPiMEEIIIUQIczLINXSYAQB5Sdzm43oU6jxBLqUsEEIIIYQIYU4GudVd7iCXr3QFTWQYdDEROEtBLiGEEEKIIOZkkFvVMYS0uAhEhsl4O8dCXTTt5BJCCCGECGROBrmGTjPma/lJVfAoSo1BQ88wBkeo+IwQQgghJNDmXJA7aneioWcY+TwVnXl4hkJcoN1cQgghhJCAm3NBrtFkgdPF8lZ05uEpPqN+uYQQQgghgTfnglxDJ79FZx5xKgVSY6n4jBBCCCFECHMuyK3uHEKYTAJ9vJL3cxXq1FR8RgghhBAigDkX5Bo6zZinjYJMyv+3XpiqRlOvFYNWKj4jJFS8c6IZ751sFXoZhBBCZjDngtyqDv7G+V6K8nIJCS0dgyP4720X8NyBOqGXQgghZAZzKsjtsYyhxzKGPApyCSGz8Oe9dbA5XGjqtcLlYoVeDiGEkGnMqSC3erzoLD+Z384KHjFKBdLjlDjXNhCQ8xFC+NPab8XbJ5oRp1JgzOFC59Co0EsihBAyjTkV5Aaqs8JkhTo17eQSEgKe2WsEAwbfvzYfANDYMyzwigghhExnbgW5HUPQRIZBExkWsHMWpqrR0jeC/mFbwM5JCOFWc68Vfy9vxZ3L07AqOx4A0NhrFXhVhBBCpjO3gtxOc8DycT0oL5eQ4PfHPbWQShh8dWMOkqPDoZBJ0NhLO7mEECJmcybIdbpY1HQFPshdmEJBLiHBrKFnGO+fasVdKzOgjQ6HRMIgI05J6QqEECJycybIbewdxpjDhbwAFZ15qJVyZMQrca6VglxCgtEfdtUgTCbFo+uzJ76m16hoJ5cQQkTOqyCXYZhGhmHOMQxzhmGYcr4XxQdDh7voLNA7uQAVnxESrIwmM7ZVtOOe1RlIiPosl18fr6Q2YoQQInK+7ORuZFl2EcuyJbythkfVnUOQMEBOYmTAz12UqkbbwAh6LWMBPzchZPZ+v6sWSrkUj1yRfdHX9RoVtREjhBCRmzPpClWdZmQlRCJcLg34uRdS8RkhQcfQOYQPznbg3jV6xKkUF72WGa8CQG3ECCFEzLwNclkAnzIMc5JhmIf5XBBfDJ1DAe2PO5knyD1PQS4hQeP3O2sRFSbDQ+uyPvdahsYd5DZQXi4hhIiWt0HuGpZllwC4BsBjDMNccekbGIZ5mGGYcoZhyru7uzldpL8sYw609I0gX6AgNzpcjkyNCmep+IyQoHC+bRCfXOjE/WszEaNUfO51TxuxJuqVSwghouVVkMuybPv4/5oA/BPA8ine8zzLsiUsy5YkJCRwu0o/ecb55iUFtrPCZFR8Rkjw+P2uGkSHy3D/2swpX/e0EWugdAVCCBGtGYNchmFUDMNEef4dwJUAzvO9MC5VCzDO91JFqWp0DI6i20zFZ4SIWUXLAHZVmfDwFVlQR8gv+z69RkU5uYQQImLe7ORqARxiGKYCwHEAH7Is+wm/y+KWoXMIkWEypMZGCLYGysslJDg8vbMGMUo57l0z9S6uR6ZGhaY+aiNGCCFiJZvpDSzL1gMoDsBaeGPoMGN+UhQYhhFsDQtSosEwQEXrADbmJQq2DkLI5Z1s6sP+mm589+o8RIZNf3nMiFfC5nChY2gUuhjhbqAJIYRMLeRbiLEsC0PnkCBDICaLCpejIDkah2p7BF0HIeTynt5Zg3iVAv+xOmPG91IbMRIILMvi158YUNUxJPRSCAk6IR/kdgyOYmjUEfBxvlMpzdfiVHM/+oZtQi+FEHKJo/W9KDP24isbsqFUzPiQC/rxNmI03pfw6VRzP/68rw5/PVAv9FIICTohH+QaOt13v0Lv5AJAaV4iXCyw12ASeimEkElYlsXTO2uQEBWGu1bOvIsLAEnR4QiTSWgnl/Bq+5l2AMDeahOclP9NiE/mQJArfGcFj0KdGglRYdhDQS4honK4rhfHG/rw2IZsr6ciSiQMMuKVaKReuYQnDqcLH57rQIxSjn6rHaeb+4VeEiFBJfSD3A4zdDERiA6/fCugQJFIGJTmJWJ/TTdsDpfQyyGE4LNd3GR1OO5Ynu7TZ/Xx1EaM8OdofR96LDZ8/5p8yCQMdlXRBgkhvgj9IFcERWeTleZrYRlz4HhDn9BLIYQAOFDbg5NN/XhsY47Xu7geemojRni0vaINkWEybF2UguWZcdhd1SX0kggJKiEd5I45nKjvHkZesniC3DU58VDIJNhFFytCBMeyLJ7+tBq6mAjcVpLm8+f18aqJNmKEcGnM4cTH5ztx5QItwuVSlOZrUWuyoJnSYwjxWkgHuXWmYThcrKDjfC+lVMiwJjseuw1dYFna/SFESHsMJlS0DuJrm3KgkPl+OdTHKwFQGzHCvf3V3TCPOrC1OAUAsDnf3V+dNkgI8V5IB7nVXeLprDBZab4WLX0jMJosQi+FkDnLk4ubHqfEF5amzuoYnjZiDRTkEo5tr2hHrFKONTkaAEBGvAo5iZHYbaAglxBvhXSQa+gwQyGVIHP8F5FYlE7ckVMRASFC+feFLlxoH8ITpbmQS2d3KfS0EWuiXrmEQ1abA7urTLi2MPmin83S/EQcq+/D0KhdwNWR2RpzOIVewpwT0kFuVacZOYmRkM3yFxhfktURKEiOpiICQgTCsix+v6sGWRoVblqUMuvjeNqINfRQniThzs7KLozYnROpCh6b87VwuFgcqOkWaGVktqw2B5b9dBdeO9ok9FLmFHFFfxyr7hwSVdHZZJvzE2n6GSECaegZhqHTjHvX6P2+CdbHq2jqGeHUjop2JKvDsUwfd9HXl6THIlYpx256Chh0arssGBp14Nl9dXA4qYVooIRskNs3bEPX0BjyRVR0NllpvhYuFthXTRcrQgKtrK4XALAuN8HvY2VqVGjutdI0KsKJAasN+2u6cX1RMiQS5qLXpBIGG+cnYm+1iQKlIOOpwWkbGMG/L9BT3EAJ2SDXM85XDJPOpuKZfkZ35IQEXlltD1LU4RPdEfyREa+CzelCx+AIBysjc90n5zthd7LYWqyb8vXSfC0GrHacah4I8MqIP4zdFsilDNLjlHjhUL3Qy5kzQjbIrR4f5yvWdAWJhMGm+Yk4QNPPCAkop4vFkfperM7RgGGYmT8wA73G00aM8nKJ/7ZXtEMfr8RC3dRPIa+Yp4FcylBNR5Cp7bJAH6/C/Wv0ON08gFM0ojkgQjbINXSYEa9SICEyTOilXFZpfiLMYw6caKTpZ4QESmX7EAZH7FiTE8/J8TzdWygvl/jLNDSKI/W92FqcctkbsKhwOVZkxlO/3CBT121BTmIkbi1JQ1S4DC8eahB6SXNC6Aa5nUOYnxTFyU4NX9bmamj6GSEBVlbXAwBYk63h5HjaKHcbMRoIQfz14bkOsCywdYaOH6X5iajrHqafuSAx5nCiqXcYOYmRUIXJcOfydHxyvhNtA5TixLeQDHKdLhY1XRZRTTqbysT0syoTTT8jnLPaHKhoGaCfrUuUGXuQmxiJxOhwTo4nkTDjHRYoXYH4Z3tFO/KTo5GTOH2aXWmeFgCw20A1HcGgsccKFwvkJEYCAP5jtR4A8OrhRuEWNUeEZJDb3GfFiN0p2nzcyTbla9HcZ0VdN00/I/7rHBzFG8eacP8rJ7D4xztx4zNleP9Um9DLEo0xhxMnGvsmpkhxRa9RUroC8UtLnxWnmwc+1xt3KunxSuQmRlJebpDwdFbwBLm6mAhcszAJbx1vxvCYQ8ilhbyQDHINHeIc5zuV0jyafkZmj2VZnG8bxO931eCG/zuElb/Yjf/653nUmsz40op05CZG4pl9RmpvNe508wBG7S6szuYmH9dDH09txIh/tle0AwCuL0r26v2l+Vocb6DpZ8HAaLKAYYDshMiJrz2wNhPmUQf+Xt4i4MpCn0zoBfDB0GmGhAFyZ3jkIwYpMZ9NP3t0fbbQyyFBYNTuxJG6Xuyq6sLuKhM6h0bBMO5G8d+5ej4252uRmxgJhmGwo6IdX3vrNP59oRPXFnr3yzOUlRl7IGGAFVkcB7maz9qIpcb635aMzD07KtqxJD0GaXHe/fxszk/Es/vrsL+6Gzd4sftLhFNrMiM1NgLhcunE1xanx2JJegxeKmvE3av0kErEWz8UzEI0yB2CPl6FCIV05jeLwOb8RPxprxH9wzbEqhRCL4eIULd5DHsNJuys6sKh2h6M2J1QKqRYl6vBN/PnYWNeIjRTdBK5tjAZv9tZg2f2GnHNwiRRF2IGQpmxB4WpMVBHyDk9bkb8Z23EKMglvqrtMsPQacaPbijw+jOL02MRp1Jgd1UXBbkiZzRZkDNpF9fjgbVZeOzNU9hV1YWrFiQJsLLQF5LpCtWd5qDIx/XY5Jl+VkMpC+TzdlS0Y/nPd+E7753F+bZBfGGpDq/ctwyn/nsLnru7BLeWpE0Z4ALuCUmPbsjGhfYh7Kue2/PuzaN2VLQOYg3HqQrAZ23EGigvl8zC9op2SBjguiLvg1WphMGG+QnYW91N089EzOliUd8zPJGPO9lVC7TQxURQOzEehdxO7vCYA019VtyyJFXopXitaHz62a4qE25eHDzrDhYsy6LfakdDzzCaet1tdxp6regftuHXXyxCSkyE0EucVpmxB9Hhcrz50AoUJEf7vBt782Id/rCrFn/aa8SG+Qlzdjf3eEMfnC4WazkuOgPcbcTC5RI0UUsn4iOWZbG9oh2rszVIiPKtr/vmfC3eP9WGk039nKfgEG609lthc7imTJ+USSW4d7UeP/uoCufbBrFQpxZghaEt5ILcmi4zWFa843yn4pl+9tG5DtgcLihkIbnBzrv+YRsaet2BbEOPFY09w2gcD2qHRj+rYJUw7lzo1v4R/PtCJ+5bkyngqmdW02VGXlIUFqTM7gIol0rwyPos/HDbBRyt78MqHnYyg0GZsRdhMgmWZMRyfmyJhEFGnIo6LBCfnW0dRFOvFV/d4HtNxrrc8elnBhMFuSLl6ayQPcVOLgDcvjwNv99VgxcPNeB3ty8K5NLmhJALcj3jfPNF3iP3UqX5iXinvAXljX1YzcNOU6g61dyPH++oREPPMAZHPqsyljCALjYC+ngVblykg16jgj5eCb1GhbRYJRQyCdb8cg/KG/tFHeSyLIvaLgtuWjz1HHtv3VaShj/uNuKZvcY5G+QerutBiT72ouIPLuk1yolfaIR4a3tFO+RSBlcv8L0wNCpcjpVZ7uln3782n4fVEX9d2j7sUtHhcty2LA2vHWnCd6/OQ5Kam/7dxC3kglxDpxkqhRSpseJ+BH2pz6afmSjI9cHfDjfCaLLgpsUp0Mer3P9oVEiLi0CYbPpgpkQfi6P1vWBZVrSP8DuHRmEec2CeduoLpLfC5VI8tC4Tv/jYgDMtA1iUFsPRCoNDt3kMhk4zvn3VfN7OodeosNfQDaeLpUpp4hWXi8UHZ9uxfl4i1MrZFUOW5iXiR+M3+p7ccCIetSYLEqLCpi12vW91Jl453Ii/HWnEd67OC9zi5gBenosLOWCpqmMI85KiIAmyXzJKhQyrs+Ox29BFE6q85HSx2FfTjSsLtPjpTYV4cF0WNhdokZMYOWOACwAl+jh0DY2htV+8oxVruty7ALla/9NvvrwyA+oIOZ7Za/T7WMHmsGeUL483kPp4dxuxdhrVSbx0vLEPXUNjM47xnU5p/vj0MxoMIUqX66wwWXq8ElcWaPHm8WaM2JwBWtncwEuQOzBi4+OwM2JZFtVdZtGP872c0nwtmnpp+pm3Tjf3Y8Bqx8bxgRq+WqZ352aeaOzjclmcqu1yp9/M4yDIjQyT4d7Veuys7IKhc8jv4wWTw8ZeRIXLUMhjYYc+3r2LRnm5xFvbK9oRIZdic/7srmEAkBanxHxtFHZRkCs6LMuizmS5bKrCZA+szcKA1Y73TrUGYGVzh9dBLsMwUoZhTjMM88FM7+02jwky+adraAwDVjvyg6h92GSbxoO13TT9zCt7DCZIJQyumJcwq8/PS4xCVLgMJxr7OV4Zd2q6zIhXKRDHUf/k+9booVJI8ee9dZwcL1iU1fVgZVY8r2kEnkfFjb1W3s5BQofd6cLH5zqwpUALpcK/zMHS/EScaOy/qC6BCM9kHoN5zOFVkLtMH4tCnRovlTXARZMTOePLTu6TAKq8eeOYw4VPznfObkV+qBrfnZrPwa6XEHQxEchPjqYg10t7DCaUZMTOurG/RMJgaUYsykW8k1vTZUGun/m4k8UoFbhrZQY+ONuOxjnS7qq514rW/hFeWodNlhgVhnC5ZM78uRL/HKrtQb/Vzskgh9J8LZwuFvtr5nYvbLHxFJ3lehHkMgyDB9Zmor57mP47csirIJdhmFQA1wF4wZv3h8kkeGavMeC5pZ7OCsGargC4p5+VN/Whf1iYlI9g0T4wAkOneWL3e7aW6eNQa7JgwCq+P2+WZWE0WThJVZjsgXWZkEkl+Mu+ubGbWzaRj8tvVwmJhIE+XoUmSlcgXthR0Y7ocBmumOf/zdeitBjEj08/I+IxU2eFS11bmAxtdBgNh+CQtzu5vwfwHQCXHavCMMzDDMOUMwxTHg47KjuGsC/AdyOGjiEkq8NnXaUqBqXj08+4uJPrsYyhzNjDwarEZ4/Bvdvtb5BbMt4z9WST+FIWOgZHYRlzcFJ0NlliVDjuWJaG90+3zokiqTJjDxKjwpA9Q/EHFzLilWignVwyg1G7E/++0IlrFiZ7VSQ7E/f0s0Tso+lnolJrMiMqXOb1kA+FTIJ7VulxyNiDqo65VTfBlxmDXIZhrgdgYln25HTvY1n2eZZlS1iWLUnTxkEXE4E/B7iK29DpbpofzIp0amgiw/wuIugYHMEX/3IYX37hGOpDsJBtr8GE1NgIr++QL6c4LQZyKSPKvNwaT9GZn9/jVB5Znw2WBZ4/UM/5scXE5WJxuK4Xa3I0AWkTp9eo0NI3IkhNAgkeewwmDNucfnVVuNTm/EQMjthRLsIb9rnKOF505su158sr0hEhl+Il2s3lhDc7uWsAbGUYphHA2wA2MQzz+nQfYAA8fEUWTjT241h9r/+r9ILN4UJdtwV5ycGbqgCMTz/LS8D+mm7YZ3lH3j4wgjueP4pu8xgAYGdlaD3CGrU7UVbXg9K8RL8Dl3C5FIU6tSjzcmvH24dxna4AuPO/b16sw1vHm9FjGeP8+GJh6DSjb9iG1QEagJFJbcSIF7afaYcmMgwrOZxStm5eAhRSCaUsiIjRNDxj+7BLxSgV+MJSHbadaZ/4HU5mb8Ygl2XZ/2RZNpVlWT2AOwDsYVn2rpk+d/uyNGgiFXgmQHl/9T0W2J1s0O/kAu6UBfOoAycafA+82sYD3D6LDa89uAIFydEhF+Qeqe/FqN0169ZhlyrRx+Fs6yBG7eLqT1jTZYYmMgyxHHVWuNRXNmTD5nSFdP5XIPrjTpZBbcTIDIZG7dhTbcL1RcmcdvuIDJNhRVYcFS6LxKDVjh7L2KyeNt63JhM2pwuvH23iYWVzCy99cgH3Dtn9azNxoKYb51oH+TrNhFAoOvNYm+Oefrbb4NvFqrXfijueP4L+YRv+9sByLEmPxZYCLU4294fUbt2eKhMi5FLOdkFKMmJhc7pwvo3/n1Nf1Jgsfk86m05WQiSuLUzGa0eaMGgNzdZDZcYeZGpUSIkJzATEiTZilJdLLuPTC12wOVycdFW41OZ8Lep7hkMyRS3YGLvdMclsuuNkJ0RiU14iXj/aJLrNl2DjU5DLsuw+lmWv9/b9d6/MQFS4LCATlqo6zJBLGWQlBP9YQ1WYDKuy4rG7yvvpZy19Vtzx/FEMWO147cEVWJzuLqjaUqAFy7oDw1DAsiz2GExYkxOPcLn/BRsAsDTDMxRCPLlsLMvC2GXmJVVhssc25MAy5sCrRxp5PY8Q7E4Xjjf08d5VYTJt9HgbsSDuletwunCisQ8tfcH7PczE5WLx9KfVeKUs8E8xdlS0IzU2AkvSuR+tXZpPvdbFYqKzQsLsruEPrM1E77AN28+0c7msOYe3nVwAiAqX497VenxyoXNichNfDJ1DyE6IhFzK67cUMJvzE9HYa0Vd98w7Qp4Ad2jEjjceXIFFaZ9dPBekREMXE4FPQyRlodZkQdvACDblaTk7ZnxkGLITVKLKy20bGMGwzclpj9ypFKREozQvES+VNWB4zMHruQKtomUAwzYn1mQHJlUBcPe61Mergm4nd9Bqx7YzbXjirdNY8pOduPXZI3j8zVNCL4sXdqcL33j3DP64x4gff1CJMy0DATt3r2UMh4w9uKE4hZdCyJkiS4gAACAASURBVNRYJfKSaPqZGBhNFoTJJNDFzu4p0urseOQlReHFQw0Bb8caSniPCO9bk4kIuRR/2c9vbm51pxn5QV50Ntmm8XnkewzTX6w8Aa5lzIE3HlyJotSLdwcYhsGWAi0OGbtDYia2p3XYxrzZTTm7nGX6OJQ39Ytm0oyn6Cw3kf8c88c25WDAasebx5p5P1cglRl7wTDAqgAVnXno41VoCIKc3PpuC/56oB63P3cES366E0++fQZlxh5cuSAJ1xUl42zbYMj16x5zOPHVN07hX2fa8cSmHGijw/Hdf5yFzRGYtlsfne+E08ViKw+pCh6l+Ykob+oP2RSkYFFrsiArIXLWedcMw+D+tZmo7jLjUIi2Ag0E3oPcOJUCdy5Px7Yz7bw9/hqw2tAxOIr5IVB05uGZfrZrmsdOzb1W3P7ckfEAdwUKU9VTvm9LgRajdhcO1gb/FJU9BhPyk6ORrOY2x3JpRiwGR+wwiiSXbaJ9GM87uQCwJD0Wq7Pj8fzB+pDK/yoz9mBBSjRilPwU7l2Ou42YVXRtxOxOF47U9eKnH1Ri42/2YdNv9+NnH1VhcMSOR9dn4f2vrsbx/9qM39xajAfWZoJlPxukEQqsNgcefLUcOyu78KMbCvCNK+fjpzctRHWXGc/xvAnjseNMO3ITI3ktkPZMP9tXQykLQvK0D/PH1uIUaCIVIV0czLeAPNt/+IosSBjguQP8XEgME0VnoRPkAkBpXiJONvVPOY2rqXcYtz9/BFa7E288uAILdVMHuACwPDMO0eGyoE9ZGLTacbKpH5s43sUF3Du5AFAukrzcmi4LEqLCAhagPb4xB93mMfzjZGtAzsc3q82B0y39AU1V8NDHK2F3sqJoIzY44k5D+Npbp7H0Jztx51+P4m9HmpAWp8SPb1yAQ9/diE++fgW+fVUelqTHTuw6FenUiAqX4WBNaAS5Q6N23PPicZQZe/C/XyzCvWsyAbgDwhuKU/B/e4wwmvhNqWvtt+J4Yx9vqQoei1JjoIlUTLtBQvg1YnOibWDE5/ZhlwqXS3H3Sj32VXfz/vMZqgIS5Capw/HFpal4t7wVpqFRzo/v6awQSukKgPuxk9PFYl/1xTuwjT3DuP25oxi1O/HmgyunDXABQC6VYGNeIvYYTKLbXfLF/tpuOF0sp/m4HhnxSmgiw0STl2s0mQOyi+uxKjsei9Nj8Oz+uln3ZxaT4w19sDtZrA5Q67DJ9OMdFoSefDY4Ykfpb/fjybfP4EhdD65akIRn71qKUz/cgr/dvxz3rNIjNVY55WdlUgnWZGtwyNgT9PmAfcM2fOmvR1HROoA/fWkJbi1Ju+j1/7mhAMowKb733jne0pXsThe+8U4FwuUS3LxYx8s5PCQSBhvnJ2JftSkk/i4Ho7puC1h2dp0VLvXllelQyCT42xFqJzaVmZ4+BqxK65ErsuHgqSenoXMIMUo5Er0cnRcsilNjoIkMu6iVWEOPewfX5nThzYdWoiDFu8B+S4EWfcM2UY6v9dZegwlxKsVFhXVcYRgGy/SxONEkfJDrcrGoNVkCko/rwTAMHt+Yg9b+kZCo5j1c1wuFVIJl+tiAn1s/3iu3SeC83HdOuAd9vHBPCY5/fzP+99ZiXL0wCZFhMq8+vzZXg7aBEcGDdX90DY3i9ueOoLbLgufvLsG1hcmfe48mMgz/fV0Bypv68cYxfgKJn31YheONffjlLUVIi5v6xoJLnl7rYnkyNdfUjae9+ZuuALh/PtfmaHC4LjCDtYLNTN27Ahbk6jUqXF+UgtePNk35+N0fnnG+gRjbGUie6WeeO/L6bgtuf+4I7E4Wbz60wqed6/XzEiCXMthZ2cnjivnj3tE2Yf28BE4bqE9Woo9DS98IOge5f9rgi7aBEVhtTt7bh11qU14i8pKi8Od9RtEU4M1WmbEHi9NjoFR4F9BxSRsdhgi5FA09wrXgsjtdeKWsESuz4rC5QAvJLP7OrMt174IHa9FLS58Vtz57BO0DI3jlvuXTDo+5ZYkO63I1+OXHBs7TTP55uhWvHG7EfWv0uInnXVyPdbkamn4mIKPJAqmEmbjh9VdRqhp13RZYQqwDjr9sDhfePtEy7XsC2m/rqxuzMWxz4pXDjZwd0+ViUd1pDokhEFPZlOe+I3/nRAvueP4onC4Wbz200ufvNypcjtXZGuys9L73rpicaelHv9XO2ZSzqZSM98stF3g3t9YUuKKzyRiGwWMbc1DXPYxPLgTnzRAA9A/bUNkxFLApZ5diGAYZ8UpBp559fL4T7YOjeGhd1qyPkRGvQlpcBA4EYV6u0WTBrc8eweCIHa8/uGLGDhsMw+DnNxfCxQI/+Nd5zq6RF9oH8Z/vn8OKzDh8/9p8To7pDVWYDKuy430eKES4UdtlQUacEgoZNyFWcWoMWBaiG1gktE8rO2ccfRzQIDcvKRqb87V4uayRszuSln4rrDZnyBWdeXjuyH/wr/NwsSzeenjlrLtIbCnQorHXOtGkOpjsMZgglTBYn8t90ZlHQUo0IuRSwR/x1XjahwV4JxcAri1MRpZGhWf2GoPyZghwj31mWQR0CMSl9PEqwYJclmXxwsF6ZGlU2Djfv5vCdbkJOFrfG1S5nRfaB3H7c0fgcLnw9sMrJwbjzCQtTolvXTUfewwm7Djb4fc6+odteOS1k4iJUOBPX1oS8B7um/MT0dAzPPHonASOsduCbA5SFTyKxjsnnW0NXE/nYPD60SakztCHOOCTEx7bmI3BETve4qgn50RnhRArOvNQhclQmp8ITWQY3npopV+PsLcUuAu2grHLwh5DN5ZmxEKtlPN2DrlUgsXpMYLv5NZ0maGNDoM6gr/v9XKkEgaPbsjGhfYhbAvS3NxDxh6oFNLP9YwOJE8bMYcAwWF5Uz/Otg7i/rWZs0pTmGxdjgaWMQcqAjgwwR8nm/px5/NHESaT4N1HVvlcjHzvaj2K02Lw1PYLfvUIdrpYPPH2aZiGxvCXu5YgQYB6Ec9TL0pZCCy704XGnmFO8nE94iPDoIuJQEUr7eR6GE1mHK3vw5dWpE/7voAHuYvTY7Emh7uenIYOMxgm8I92A+np2xbh0Hc3+r2zp40OR3Gqmrcgd8zhxNW/P8D5GOeOwRFUdQxhE4+pCh4l+jhUtg8JmvtU22UJeD7uZDcv1qEgORpff+cMvvfeWQyNBldT+cPGHqzIihd0+mGmxt1GrEOA/O4XDtYjRinHF5ak+n2s1dkaSBjgQK34UxYOG3tw94vHEKtS4N1HVyFrFu2bpBIGv/pCIQZH7PjJB5WzXstvP63GwdoePHXjAq93krmWGqvEgpRovHq4CT2W6R/pEu409VrhcLHI5TDIBdy7ubST+5nXjzZDLmVw2yXdUi4lyG+BxzZw05Nzb7UJb59oRqZGJUiBSaBEKKQIl0s5OdaWAi0qWgbQxUMrt22n22HoNOOPu2vRMchd8cZeg7uFWiCC3GX6WLhY4HSzMCkLLhfLSRNxf8ilErz/1dX4yoZsvFvegiufPjDj5D2xaBsYQWOvFasDPOXsUhnxwrQRa+odxqeVXbhrRQYiFP5fM9RKOYpSY3BI5INkdld14d5XTiA1NgJ/f2TVZVujeSMvKRpf3ZCN90+3YX+N79/3J+c78Od9dbhzeRruXD79LhPffnFLIXqHx/Dw38pDatCLmHnSAbm+hhelxqClbyTkphDOhtXmwHsnW3FtYTI0kdM/JREkyF2VHY9Fae6enLN5nNcxOIKvvH4S9718AkqFFL+5tZiHVYamLQVJAMD5bHOXi8WzB+qQpVGBBfCbf9dwduw9hi7oYiI4vzOeyuL0WEgY4IRAebmt/SMYsQe+s8KlwuVSfPfqPPzrsTVQR8hx/yvl+MY7ZzjvjMK1svFOAGtzhSk688gc75Ub6Lzcl8saIZMwuGdVBmfHXJerQUXroGh39HdUtOOR104iLykK7zy8ConR4X4f87FNOchOUOH775/DsA9PdYwmM775bgWK02Lwo60L/F6Hv4pSY/C72xbhVPMAvvve2aDNsw8mnhzobD8HQVyq2JOXS8Vn2H6mHeYxB+5aOfN1TpAg11PF3do/gh1nvc/7czhdeOFgPTb/dj/2GEz49lXz8fGTV2CJQI+DgtE8bSTS45TYyXHKws6qLtR3D+PrW+bhvtV6vH+6FRfa/f/LOGp3oszYi9L8xIC0iIsMkyE/ORonBcrLFaqzwuUUpcZg+9fW4InSXGyvaMeW3x3Av0XceeGwsQeaSAXmC3yTkBjlbiPWGMA2YoNWO94tb8HWYh0ngZ7H2hwNnC4WR0TYp/Pjcx148u3TWJIeizceXIFYFTcTAsNkUvzqC0VoHxzBbz6t9uoz5lE7Hn7tJCIUUjx71xKEybh5+uavawqT8e2r5mPbmXb83x5uU8nI59V2mZGiDofKy37U3lroCXKDJD+eLyzL4vVjTZivjZroiDQdwZLWSj09OffWedWT81RzP274Uxl++mEVlmfGYef/W4/HNuZw1qJjrmAYBlsKtDhs7OUs75RlWTy7vw5pcRG4dmESvroxB+oIOX7xkcHvnYOj9b0YsTt5bR12qWX6OJxuHhCkotzTWSEngIMgZhImk+IbW+Zh2+NrkBAZhkdeO4nH3zyFXpHl+bEsi7K6XqzK1gjeM1uINmJvnWiG1ebEA2szOT3u4vRYKBVSHBRZysL+mm488fZpLEqLwSv3L0NUOLeFmiX6ONy9MgOvHG7EqRnSl1wuFt94twJNvVb86UtLkKyevuI70L66IRtfWJKKp3fWYEdFcBaUBguuOyt4RIfLkZWgmvPFZxWtgzjfNoS7VmV4dZ0XLEKUSBh8ZUM2ak2WaQuhBqw2/Of75/CFvxxG/7ANz961BC/duwzp8fxPjQlVVxZoYXO6cGAW+WZTOd7Qh9PNA3h4XRZkUgnUEXI8WZqLQ8aeWeW0TbbXYEK4XIJVWYHLsSzRx8Jqc6KqYyhg5/So7TIjKTpckM4KM1mQosa2x9fgW1fOw78vdGLL7w5gR0W7aB6BGk0WdJvHsEbgfFyPTI0KjQHKyfUMf1iTE+/1FERvKWTuv3+HRFR8dqKxD4+8Vo6cxCi8fN9y3moyvn3VfCRFh+N7752FzXH5m94/7zNiZ2UX/uvafKwM4LXKWwzD4Oe3LMRyfRy+9fcKwWoOQp3LxaLOxG1nhcmKdFR89tqRJqgUUq/HYwu6DXpdYTIy4pX4877P9+RkWRbvnWxF6W/3493yFjywJhO7vrkeVy9MFnyXJtgtzYhFrFKOTzl67Pzs/jrEqxQXzYT/8ooM6OOV+PlHVbNuo8SyLHYbTFiTreGs8M4bJRlxAITJy60xmTmZd84XuVSCxzfl4sMn1iEtNgJfe+s0Hn39JExmYafEAZ9N5hJqCMSlMuJVaOkPTBuxj851oHNoFA+unf3wh+mszdWgsdeKlj7hprh5nG8bxP0vn0CKOgKvPbCc1xvCqHA5fnbzQtR0WfCXfXVTvmdvtQm/3VmDGxel4L41et7W4q8wmRTP3r0U2uhwPPS3crT2C//fMtS0D7prKvgayV6UGgOTeYyXwvFgMGC14YOz7bhpsc7r8eSCBrkyqQSPrs/G2dZBHJy0S2A0mXHH80fxzb9XID1eiR2Pr8UPri/w+psi05NJJdiUp8Ueg8nvR/KGziHsre7Gvav1FwWiCpkE3706DzVdlll30TCaLGjtH8Gm/MClKgBAkjocaXERKG8MbF6up7OC0EVn3pinjcJ7X1mN712Th73V3djy9AG8f6pV0F3dMmMv0uIikBYnjqc8njZi7QP8/kJiWRZ/PViP7AQV1s/jZ1iKZ8TvQYF3c40mC/7jpeOICpfhtQdXzFhZzYVNeVpsLU7Bn/bWorbLfNFrTb3DePKt08hLisYvbykS/QZMnEqBl+4twZjDhQdfLacxsRzjq7OCR3GaOy83WPpWc+0fJ1sx5nB5VXDmIXhC6y1LdEiKDscze40YsTnx608MuOYPB2HoNOMXtxTivUdXc/74jbhbiQ2NOnCiwb9A7rn99VAqpLh7imruqxcmYWlGLJ7eWeNThbLHnvGRlP5ObZqNkow4lDf1BzRoa+m3YtTuEk3R2Uw8N6kfP7kOOYmR+Ma7FXjg1XJ0CtAb1uF04Vh9L9Zki2MXF8DE3PoGnvNyjzf04XzbEB5Ym+X38IfLyU6IRLI6HIeMwuXltvZbcfeLx8AwwOsProAuJnB5rz+8oQCqMBm++97ZiRoSq82BR147CYZh8NxdSzlp2RYIOYlR+POXl6DWZMETb52G04uaGOIdvoPcgmQ1pBIGZ+dgXq7LxeKNY80oyYj1aciL4EFumEyKh67IwrGGPqz/37348746bC3WYc831+PO5em8XbTnuivmaRAmk/g1GKK134rtFe24c3k6YpSfr2pmGAbfvzYfJvMY/nqw3ufj7zGYkJcUhZQA/jLzKNHHots8huYAPp4VcpyvP7ITIvHuI6vw39cX4HBdDx55/WTA13CubRDmMYdoUhUA99QzwL3bx6cXDjUgVinHLUu8y1GbDYZhsDZHgzJjryBBUbd5DHe9cAyWMQf+dv+KWQ168IcmMgw/vL4Ap5oH8NrRJrAsi++9dw7VXWb84Y5FQVcjsi43AU9tXYA9BhN+/lGV0MsJGUaTBXEqBeI46vJxqQiFFPO0UaiYg3m5h+t60dAz7NMuLiCCIBcA7lyehqTocERHyPH2wyvx29uKER+Ax1BzmVIhw9ocDXZWds16t/KFgw1ggGmruZdmxOK6wmQ8t78eJh/yiAZH7Chv6g/IAIipLNMHPi+3ZvxRqJCDIGZLKmHwwNpMfOeqPFS0DHzusS7fDo+3txJ6CMRkiVFhUCqkvA6EaOgZxq6qLty9MoP3vPW1uRoMjthxPsB9Ogetdtz94jF0DY3hlfuWCfZk7+bFOqzL1eDXnxjwy48N2F7Rjm9dOR8bBHjSxIW7VmbgvjV6vHioAW8caxJ6OSHBaLIgh+cbsCKdGufaBkVT8Bsorx1tRJxKgWsKk3z6nCiCXKVChj3fWo9/f/0KUVamhqotBVq0DYygqsP3gKRv2Ia3TzTjxkW6GXdav3P1fDhcLvxul/cDIg7UdMPpYgULcnMSIqGOkAc0L7e2y4xkdTiiOW6FFEg3FKdAKmHwz9NtAT1vmbEHeUlRoro5drcR47fDwkuHGiCXSHAXh8MfLsezSx7IVmLDYw7c+8px1HcP4/l7lmLpeFGoEBiGwc9vLgQL4LkD9bhqgRZf3ZAt2Hq48IPrCrBxfgJ+uO2CqLpnBCOWZXlrHzZZUZoaA1Y7Wvq4myoqdp2Do9hVZcKtJak+958WRZALuANdKaUmBFRpvhYMg1kNhnj1cCNG7S48un7mau6MeBXuXqnHOydaJnYrZ7LXYEKMUi7Y3HeJhEFJRixOBDDIremyBF2qwqUSosKwLleDbWfavep/zYVRuxPlTf2iSlXw0Mcr0dTLT8rLgNWGv59swY2LUpAYxd3wh8vRRIZhQUp0wIrPRu1OPPxaOSpaBvDHOxdjXS4/RXW+SItT4qc3LcSG+Qn4za3Foi80m4lUwuCPdy5GTkIkvvLGyYmcUuK73mEbBqx23idzFqfGAMCcSll463gzXCyLLy/3/WZeNEEuCbyEqDAsSY/Fp5W+tRKz2hx49UgjNucneh2UfW1TDiLDZPiFF/lfTheLfTXd2DAvQdAbn6X6WNR1D6MvALPCnS4Wdd0WzAvCVIVL3bxYh7aBERwP0A1CeWM/bA4X1uSI7ymQXqNCcx8/bcTeONaMUbsLD6zjdvjDdNbmanCquX9WhaS+cDhdeOKt0ygz9uLXXyzG1Qt9e0TJp1uWpOKV+5ZzPnxCKFHhcrzwHyUIk0nwwKsn0B+A610o4rvozGN+UhQUMsmc6Zdrd7rw9olmrJ+XMKvcdwpy57gtBVpcaB9C24D3jz7eOdGCAasdj673/lFdrEqBxzflYG9194yPxSpaB9A3bAvolLOpePJyTzbxn5fb0mfFmMMVFO3DZnJlQRJUCin+FaCUhbK6HsgkDJZnii/IzYxXweHivo2YzeHCq4cbsS5Xg7ykwOWorstJgN3J4lgDfyN+XS4W3/nHWXxa2YUf3VCALy5N5e1cxC0tTonn7i5Bx+AoHnn95LSDL8jUAhXkyqUSFCRHz5nJZ7squ9A1NIa7VswuJYuC3DluS4EWgPsHyRt2pwsvHGxASUYsSvS+5cfds0qP1NgI/PyjqmkfZe+pMkHCgLeen94q1KmhkEoCkpfrSeMQ8yAIb0UopLhqYRI+PNeBUbuT9/MdNvagOC1GlH20M8Z3HrhuI/bB2XaYzGOcj/CdSYk+FmEyCW8pCyzL4qkdF/D+6TZ8c8s83LsmsN/fXLY0Ixb/+8UiHG/ow3/989ycK2zyl9FkgUohRbKa/9SholQ1LrQNzon2b68fa4IuJmLWm14U5M5x2QmRyEpQeZ2X+8HZdrQNjPi0i+sRLpfiO1fnobJjaNrCpD0GE0oy4qZsSxZI4XIpilLVAcnLrTUFZ/uwy7llcSrMo46JXsd8GRyx41zboCjzcQH3aF8AnBafsSyLFw42IDcxMuA3guFyKZZnxvFWpPTbT2vw6pEmPLQuE49vyuHlHOTyblykw5Olufj7yVY8d8D3to9zmdHkLjoLRJ52UWoMhm1O1HeHdg51fbcFZcZefGlF+qxTFynIJdhSoMXR+l4MjtinfR/Lsnhufz1yEyNn3fXghqJkFKeq8ZtPqzFi+/wuX+fgKCo7hgRPVfAo0cfhXNsg7zuSNV1m6GIiRLkbORursuOhjQ7D+6f4TVn46FwHXCywfp44g9yE8TZijRzu5B6p70VlxxAeWJspSOHTulwNak0Wzod+PLe/Dn/aa8Qdy9Lw/Wvzg76oK1h9fXMuri9Kxq8/MaCqY0jo5QSNQLQP8yhOHZ98FuIpC28ca4ZcyuC2krRZH2PGIJdhmHCGYY4zDFPBMMwFhmGemvXZiChdWaCFw8ViX/X0u277qrth6DTjkfXZsx7S4RkQ0TE4ipfKGj73+t7xNQjVOuxSJRmxsDtZ3ifMuDsrBH+qgodUwuDGRTrsqzbxVrjncrF44WA9FqREY4lAXThmwkcbsRcPNiBepcBNi/kb/jCdtTnu3WMuW4ntqzbhFx8bcF1RMn52cyEFuAJiGAY/vWkhYpQK/M+2C5S24AXzqB2dQ6PICdA1PCshEiqFNKSLz0ZsTvy9vAVXLUhCQtTsW0N6s5M7BmATy7LFABYBuJphmJWzPiMRnUVpsdBEKmacfvaX/XVIVodja3GKX+dbkRWPKwu0+Mu+OvRYxi56bY/BBF1MhGhG2y7NcAdPfKYsTHRWCJFUBY+bFungcLH48Gw7L8ffV2NCXfcwHlqXJeqgKFOjRCNHbcTqui3YbTDhrgAMf7icvKQoaCLDcMjITcqCzeHCUzsqkZWgwtO3FVMrSRGIUSrwnavm43hjH7ZX8PP3N5TUdbtvYgO1kyuVMFioU4f0Tu6Os+0YGnX4POHsUjMGuaybJ/FDPv4P3dqFEKmEweZ8LfZXd2PMMfVj+VPN/Tje0IcH1mZCIfM/y+W71+RhxO7EH3bVTnxt1O7EodoebMxLEE3QEqtSIDcxktfis6beYdgcrqCcdDadgpRo5CVF8TYY4q8HGpCsDsd1Rcm8HJ8rGfEqtHDURuylQw1QyCR+X/j9IZEwWJsTjzJjDye9kF8ua0BDzzB+eH2Bz43eCX9uK0lDcaoaP/uwCubR6VPZ5rpAdVaYrChVjaqOoZDthPHG0SbkJkZiRaZ/A2C8ilYYhpEyDHMGgAnATpZlj03xnocZhilnGKa8uztwE3EIN7YUaGEZc+Bo/dTB3LP76qCOkOPO5emcnC87IRJfXpGON483o248ef5YQx9G7E6U5mk5OQdXSvRxKG/q5224QU2X+/sPtZ1cALhpsQ6nmgc4n/p1vm0QR+p7ce9qPeRScZcWeNqI+dKmbyp9wza8d6oVNy/S+fX4jgtrcxPQY7GhqtO/nE3T0Cj+uLsWm/MTg3Y8bqiSSBg8deNCmMxj+L89RqGXI2pGkwUKqQTpcb73cZ2totQY2BwurwcsBZNzrYOoaB3EXSsz/N7w8uq3A8uyTpZlFwFIBbCcYZiFU7zneZZlS1iWLUlIEH4yDfHNmhwNIuRS7JxiMITRZMHOqi7csyoDKg4Lo54szUWEXIpffmwA4J5yFi6XYFW2uPqdLtPHwjzqQI2Jn4tJrad9WIjt5ALAjYtSwDDAv85wu5v714P1iAyT4c4V3Nx08Uk/3mGhwc9A/81jTQEf/nA563LdhX7+dln41SfVsDtZ/OC6Ai6WRTi2KC0Gt5ek4aVDDTDydP0LBUaTGXqNErIA3nCH8uSz1482IUIuxc1L/K878Om/CMuyAwD2Abja7zMTUQmXS3HFPA12VZo+V2jw/IE6KKQS/MdqPafnjI8Mw1c2ZGNnZReO1fdij8GE1dkawXINL6ckw/24pLyRn6EQtSYLdDERnN5AiEWyOgKrsuLxz9NtnBWwtA+M4IOzHbh9WRqig2DqlH68V64/433HHE68eqQJ6+cliGLHXxsdjnnaSL/yck819+O9U614YF3mxI0AEZ/vXD0fSoUUP9peSUVol2E0WQKebpYWF4FYpRxnW0IrL3fQase2ijbctDiFk+u7N90VEhiGiRn/9wgAmwEY/D4zEZ0tBUnoHBrFubbP/tJ0Do7in6fbcFtJGjSR3D8ifWBtJpLV4fjWPyrQ3GcVTeuwydLiIpAYFcZbXm5Nl1k0hXZ8uHmxDk29Vpxu4WbH4ZXDjQCA+9boOTke3xKiwqBSSP3ayd1R0YFu8xgeFMEursfanAQcb+ibVXs9l4vFU9svQBsdhsc3Uj9cMYuPDMO3rpqPQ8YefHLetxHwc8Go3YnmPmvAis48GIZBYWpMISOnIwAAHNZJREFUyO3kvneqFaN2F2d1B97s5CYD2MswzFkAJ+DOyf2Ak7MTUdmUlwgJg4sGQ7xU1gCni8VD67J4OWe4XIpvXTkfLX0jE2sQG4ZhsEwfhxM87OQ6nC7Udw+LYneOL1cvTEKYTMLJmF/zqB1vHWvGNQuTkBobuPw3f0y0EZtlr1z38Id6zNdGYa2Ihl6sy9VgzOGaVeeRf5xqRUXrIL53TV5IPsEINV9ano785Gj85IPKKfubz2WNvcNwsUCOANfwIp0atSZLyPw3YVkWbxxrwuL0GCxIUXNyTG+6K5xlWXYxy7JFLMsuZFn2x5ycmYhOnEqBEn0cPr3gDnIHR+x481gzritKQXo8fwHFzYt1KNSpsVAXDV1MBG/n8UeJPhZtAyNo97N46FJNfVbYnK6QmXQ2lahwObYUaLGjot3vSuB3TrTAPObg7aaLL3qNclbpCs29Vjz25ikYOs2CDX+4nBVZcZBLGZ/zcodG7fj1JwYsSY/BTYuE6fVLfCOTSvDjGxegfXAUz+ylIrTJJjorBHgnF3B3WHC6WFR2hEbKwpH6XtR1D+OuFdx1jxF3WTIJuCsLtKjuMqO514rXjzbBMubAI1fwG1BIJAxef2AFXr1vOa/n8ccy/XhebhO3u7meorNQTlcAgFuW6NBvteNAzew7rzicLrxc1ojlmXEoTovhcHX80/vYRmzQasdPP6hE6dP7sNfQjf+3eR6+sDSV51X6RqmQYWlGLA76GOT+3+5a9A7b8NTWhaIK2sn0lunjcPNiHZ4/UM95t5RgZjRZwDBAVkLg88o918GKEMnLff1oE2KUck7bQlKQSy5yZUESAHcj5pfLGrEuV4OFOm4eG0xHrZQjnoecX67kJUVBpZDiJMd5uZ72YaHWI/dS63ITEK9S+NUz96PznWgbGAm6XVzAHeR600bM5nDhpUMNWP+bvXixrAE3L9Zh37c34MnNuaIckrAuNwGVHUPoNo/N/Ga4A4KXyxpxe0kaClP5v64Qbv3nNXmQSxn8+INKoZciGrUmC9JilYIUTGujw6GNDguJyWemoVF8eqELt5WkcfpnSUEuuUh6vBLztVH44+5a9FjG8JX12UIvSRRkUgkWp8dynpdb02VGWlwElIrQzkuUSyW4oTgFO6u6MDSLxvIsy+KvB+qRpVGhVIR52zOZqY0Yy7L45HwHrvzdfvz4g0oU6tT46Il1+PUXi6GNDg/kUn3iaSV2uG7m3VyWZfHjDyoRoZDiW1fN53tphAeJ0eH4+uZ52GMwYXfV9BMy54o6ATorTFaUGsP72PlAePtECxwuFl/iqBe/BwW55HO2FGgx5nChKFUtup61QirRx8LQOTSrIO1yarssyE0M3XzcyW5arIPN4cLH5zp8/uyxhj6caxvE/WszIRHhjuZM9Bp3TvtUj3nPtAzgtueO4NHXT0EuleDl+5bhb/cvR35ydKCX6bMFKWrEKOVepSzsrjLhQE03vr55Hi+dWkhg3LtGj5zESDy1o3JWnTVCidPFor5nWNggV6dGfc8wp7+XAm1wxI5XDzfiinkJnLcTpCCXfM51RcmQSRh8bVMu5cxNskwfBxcLnG7m5tGQ3elCfY8FuSGej+tRnKpGlkY1q5SFFw7WI06lwBeWiCsv1VsJke42Yo2Tis9a+qx44q3TuOmZMjT0DOPnNxfi4yfXYeP8xKD5eyeVMFiTrcHB2u5pe6iOOZz4yYeVyEmMxD2rhBtJTPwnl0rw1NYFaO6z4q8H6oVejqBa+qyCj2QvGs/LPR/Eu7m//bQa/VYbvns19094KMgln5OfHI3TP9yCLQXiGq8rtEVpMZBKGM765Tb1DsPuZDFvjuzkMgyDmxbrcLS+z6cRt3XdFuyqMuGulRmIUIhrUIi3JrcRGxq14xcfV6H06f34tLITX9uUg33f3ogvrUgP6MQkrqzN1aBraGyiynwqLx5qQFOvFf9zQ4HoxzCTma3J0eC6wmQ8s8+I1v7ZDzkJdhOdFQTeyQWAiiANcs+1DuK1o024Z5Wes7Zhk9HVhkwpKggmSQWaKkyGBSnRnE0+qx0vOgvlHrmX8rSM2ubDmN8XDzVAIZME/Q5gpkaFU0392PC/+/D8gXpcX5SMvd/agG9eOR+RQdwr1tO793IpC52Do/jTHiOuLNBiXS6NfA8V378uHwwY/PSDKqGXIhhjt/BBbqxKgfQ4ZVAWn7lcLH6w7TziVWH4xpXzeDkHBbmE+GBpRixOt/TD7mUrqOnUdLlbz4R6Z4XJ0uOVKMmIxT9PeTfmt9cyhvdOtuKWxbqgz+PM1UZiaNSB+doo7Hh8LZ6+bRGS1eLsC+2LtDglMjWqy474/eXHVXC4WPzguoIAr4zwSRcTgcc35eCTC51+tQYMZrVdFiRGhQk+XrwwVR2UxWdvn2hBRcsAfnBdPm9/hhTkEuKDZfo4jNpduNA+5PexakxmpMUqg/YR/GzdvESHWpPFqz/D1442YczhEtU429l6aF0Wdjy+Fm8+tCIgbfkCaW2OBkfrez837KO8sQ//OtOOR67I4nWgDBHGg+syoY9X4kc7Lvg96CUYGbuF7azgUZyqRtvACHos3rXyE4Neyxh+9YkBK7PicOOiFN7OQ0EuIT4oyYgF4F3LpJnUdplDfgjEVK4rTIZCKpmxAG3U7sRrR5qwKS8ROSGQt6wKk6EwVR00RWW+WJergdXmxKnmz1J5nC4WP9pxAcnqcHxlA7UiDEVhMin+54YFqO8exstlDUIvJ6BYlhW8fZhHUaq7+OxcEO3m/uoTA4bHHPjJ/2/vzqOjrs4/jr/vZCeQhJCEJSGEJZiwo4hsoiAqsgi2tRVckFpRcaPaxVqUulTbUxVbtSqKFa3V8hNQFFoVRBQUkUUUCIQkbIGQECAhCZD1/v6YobIEyDLJLPm8zslh5jvDnQdyz8wz3++9zzOuYZvCKMkVqYW4iFAGdIpm1udZHKjHt+byyiq255f4dTvfM4lqFsywlFgWbth71g5gC9bv4UBJmV+cxfV3Azq3IsBxcovfuWt2s3HPYX43KtXv60A3ZcNS4hiRGsdfl25jX+ExT4fTaHIPl1JcWkGyFyS5PeIjMQY2uGldbnllFSsz8qmqOveSsrpYu/Mgc9dkc8vFHRv8M1BJrkgtPTauByWlFfxxcd03XOzId1VWaIJncgGu6RvP/qJSVmYeqPbxqirLK19k0b1dBAM7qVazt4sIDaJP+yi+2OZcm1l4tJy/fLSV/knRjHVji07xTg+P6U5FleWJerwn+prjlRU6e0GS2zwkkC6xzd22Lve5TzO4/tWveeSDTTXaO1EbFZVV/H7BRtpGhnLP8GS3jl0dJbkitZTcugW3De3M/HV76rxs4Xg736bSCOJUw1LiiAgN5L0zLFlYtjWPrP0lTBnayS8v7/ujIV1i+G5PIQVHynh2SToFR8qYcXU3/f6agMRWzbj9ks4s3LCXVVnVf3H1Nxl5RYD3bBx2bj4rqHdSuq/wGLM+zySmeQhzvtrJ859muClCpze+2smWfUU8PKYb4Y1QVUZJrkgd3DW8Cx1aNWP6go2UVtS+6096bhHGQOdY73iDbGwhgQGM7tWO/27cR0lpxWmPv/JFFm0jQxnVU2cBfcXQrjFYC3O+3MkbX+1kQv/EBql7Kd7pjks6Ex8Vxoz3N511GZK/2JZXTERoILFeUvWld0IU+cVl5NRzycjTH2+lqgrm3TGQH50fz9OfpPPPVTvdEmPe4WM880k6Q7vGMrJHG7eMeS5KckXqIDQogMfH9yArv4QXP8us9d/flldEYnTTq6xwomv6xnO0vJKPN+876fj32YWsyjrI5MFJahzgQ3onRNEiJJCZS9IJDw7g/ivc371IvFdYcAAPjUlla24Rb6/e5elwGlyGa9OZt1yp6JXg/EJZn3q5m/ce5t112Uwa1IEOrcL58497MTwljofe38jiOrRjP9Xji9Ioq6zi0au7N9r/mz5BROro4uRYxvVpx9+XZZK5/8zdnqqTnlvcZJcqHNevQ0sSWoaxYP3ek46/8kUWzUMCua5/oocik7oIDHAwoLNz/fT9V5xHdHiwhyOSxnZl9zZc1DGamUu2cfhYuafDaVCZXlI+7LjUthEEOkydO59Z61xTHRkWxF3DnGtlgwIcvDDxfM5PbMm0d75l5RlqYdfElxn5LNywl9sv6UxSTHidx6ktJbki9TB9dDdCgxz8fsH3NV4LVVZRxY78kia76ew4h8Mwvk88K7btJ++w8xLbnoKjLPo+h59d2N7jBdal9iYNTOLH5ydw/UX6gtIUGWN4aEw3Dh0p44Vl7l3L6U0KjpSRX1zmVScqQoMCSGnbos5ncj9L38+KjHzuGZ5MZLMf3nvDggN4bdKFdIwJZ8oba+pUpqysooqH3t9I++gwpjZyOUEluSL1ENsihAeuSmVV1kHmr6tZq9odB0qoqLJNqp3vmYzvG0+VhYUbnGdzX3fV2pw8OMmDUUldDUmO4emf9iZQy0yarB7xkVzTN55/rNjB7oNHPB1OgzheWcGbzuQC9IyP4rvswlqX/qqorOKJRWkktWrGDQNOb58e2SyIOT/vT1SzYG7+x2qyannl8tUVWWTuL+HRq3sQGtS4S/T0TiRST9dd2J4LOrTkj4vTOFRSds7np+c6d+UmN/EzueD8kOiVEMmC9Xs4fKyct1fvZlTPtiS0VHcsEV/16yvPw+FwFvz3R96a5PZOiKToWAU7a/nlYu6abLblFfPAVSkEB1afFraJDOXNW/pjgRtnryb3cM02uO0pOMpzSzO4oltrhqXE1Soud1CSK1JPDofhiWt6cvhoOU/+59x1ItNzi3E04coKp7qmbzyb9h7m8Q83U1xawa1q/iDi09pGhjHl4k58+F0Oa3ceOvdf8DHb8ooJDXIQHxXm6VBOcrzzWW2WLBSXVvDMJ+lcmNSSK7ufveJBp9jmzJncn4IjZdw0ezWFR8697vrRDzZhsTw8tluNY3InJbkibnBemxbcOrQTc9dkn7NO5LbcIjq0Cm/0yzbeamzvdgQ4DHPXZNO/Y/T/3qhFxHfddklnYluE8PiizW5vKOBpGXnFdIppjsPhHZUVjuvaujmhQQ427K75utmXl2eSX1zKg6NSa1TxoGdCJK/c1I/t+SXcMucbjpaduYTmsi15fLQpl3suS/bY1TkluSJucs/wZNpHh/H7Bd+ftXZuem6RV7SC9BYxzUMYmhwDwJSLO3k4GhFxh/CQQH51RVfW7ypgkRvKT3mT4+XDvE1ggIPu7SJrfCY3p/Aor3yRxdje7eib2LLGrzOoSwzPXteHtbsOcee/1lFeTV3kY+WVzFi4ic6x4fxiiOfe15XkirhJWHAAj47rQeb+EmYtz6r2OaUVlew4cETrcU9x92XJ3DwoieEeWLMlIg3jJxe0J6VNC/70ny0cK6990xxvdKSsgj0FR732REXP+Eg27i2sUUOOpz5Kp6oKfnNl7Wtaj+rZlsfG9eDTLXn8dt53p212e/GzTHYdPMJj43qccZ1vY1CSK+JGw86LY3Svtjy3LIPt+SWnPb49v4RKVVY4zfmJLfnD1d297vKfiNRdgMMwfXQ3sg8dZc6XOzwdjluk5RwGvG/T2XG920dyrLyKjHNUQNi4p5D567OZPDiJ9tF1W0pww4AO3Hd5V+av28OfTthkuCO/hBeXZzK2dzsGdYmp09juoiRXxM1mjOlGSICDh97beNpatPRc5xuPN9VXFBFpKEOSYxieEsfzn2ZwoLjU0+HUWWWV5R8rt3PT7NU0Cw6o1eX9xvS/zWdnWZd7vPFDVFgQU4d1qdfr3T28C5MGdmDW51m8vDwTay0zFm4iOMDB9NGp9RrbHZTkirhZXEQovxl5Hisy8nn/25O7eW3LLcJhoFNs43V8ERHxpAdHpXCkvJK/Lt3m6VDqZOOeQq75+0oe+WAz/ZKi+WjaUNpEhno6rGp1bBVOi5BANpxlXe6yrXl8mXmAey9LJjKsfk13jDHMGNudsb3b8eR/tnD//21gefp+fnl5V1pHeP7/SEmuSAOYeFEH+rSP4rEPN1Nw5Ifaudtyi0lSZQURaUK6xLVgYv9E3vp6Fxl5RZ4Op8ZKSit47MPNXP38CnIKj/H8xL68PvnCOl/ebwwOh6FnQiTfnaEzWUVlFU8s3kLHmHCur6bxQ11f8+lre3Nxcgzz1+0hpU0LJg10z9j1pSRXpAEEuGrnFhwtP6kgenpekTadiUiTM21EMs2CAnhysW80iPhkcy6XP7Oc11ZuZ+JFiSy57xLG9GpXozJbntYzIZIt+w5XW+XnnW92k+Fq/BDkxs6EwYEOXrrhAiYPTmLmz/p4TdfDc0ZhjGlvjFlmjEkzxmwyxtzbGIGJ+Lpu7SK4ZUhH3l69m292HKS0opKdB45o05mINDmtmodw5/AuLN2Sx8qMfE+Hc0Y5hUe57c013PrGGiLCgnj39kE8Pr5nvS/rN6beCVGUV1q25Jx81rzoWDnPLkmnf8dorujW2u2vGx4SyIyx3UltG+H2seuqJql2BXC/tTYVGADcaYzxTOsKER8zbUQy8VHO2rnp+4qprLIkK8kVkSbo5kFJxEeF8fiiNCqrvKtBxPGNZSOeXs7y9P38dmQKH9w9hAs6eOcGs7PplRAJnN757KXlmeQXlzF9dM0aP/iDcya51toca+061+0iIA2Ib+jARPxBs+BAHh3XnfTcYqa/9z3g7EojItLUhAYF8MBVKaTlHGbe2mxPh/M/p24s+3jaJdxxaWe3Xs5vTPFRYbQKD2bDCety9xYc5dUvtjO+T7sm1VWyVr9BY0wS0Bf4uiGCEfFHl6W25qoebdiQXUiAw9AxRpUVRKRpGtOrLX0To3jq462UlFZ4NJYTN5btLTjGcxOcG8sSW3nvxrKaMMbQK+HkzmdPfbQVC/yqDo0ffFmNk1xjTHNgHjDNWnu4msenGGPWGGPW7N+/350xivi8GWO70zwkkA6tmhESqMoKItI0GeNsEJFXVMrLn1ffGbIxrN15kMufWc7sFduZ0D+RpfdfwtjevrGxrCZ6JkSRkVdMSWmFq/HDHn4+uCMJLX07ga+twJo8yRgThDPBfctaO7+651hrZwGzAPr16+ddi21EPKxNZCgv33iB161DExFpbBd0aMnoXm2Z9XkmE/snNnrN2X2Fx5jyxlqahwYy745BPrnu9lx6J0RSZZ1LMWYuSSc6PJipwzp7OqxGV5PqCgaYDaRZa59p+JBE/NPgLjEM7Rrr6TBERDzugZEpVFXBXz7a2qivW1FZxd1vr+NoeSWzJ/XzywQXfuh89rdPt7Eq6yDTRiQTEeo7FSLcpSbLFQYDNwLDjTHfun5GNXBcIiIi4qfaRzdj8uAk5q/PZuOeM7egdbenPk7nmx2HePJHPenix+3VY1uE0C4ylJUZB+gUG86E/omeDskjalJdYYW11lhre1lr+7h+FjdGcCIiIuKfpg7rQstmwTy+aDPWNvxSrqVpuby0PJOJFyUyro//F4k6fjb3d1el+myliPpqmv9qERER8ajIsCCmjUhmVdZBlqTlNehr7T54hPvmbqB7uwgeHtM0Sv3fNKgDdw7rzIjUOE+H4jFKckVERMQjJvRPpHNsOE8uTqO8sqpBXqOsooq7/rWOqirL368/n9CgplHhZlDnGH59ZYrfVIyoCyW5IiIi4hFBAQ4eHJVKVn4Jj3ywqUEq0DyxOI0N2YX85dpedGilOuVNiZJcERER8ZjhKXH8YkhH/rlqF1PeWOPWJhGLvsvh9S938PPBHRnZo63bxhXfoCRXREREPMYYw/Qx3XhsXHeWbc3j2pe+IqfwaL3H3Z5fwm/nfUffxCgeuCrFDZGKr1GSKyIiIh5348AkXrv5QnYdPML4F1bWq7TYsfJKpr61jsAAw/MTzyc4UOlOU6TfuoiIiHiFS8+L4907BhJgDNe+9BWfbM6t0zh/WLiJtJzDzPxpH+KjwtwcpfgKJbkiIiLiNVLaRPDenYNJbt2cKW+uYfaK7bWqoztvbTbvfLObqZd2ZlhK0y2fJUpyRURExMvERYTy7ykDuaJbax77cDMPv7+JihqUGEvPLWL6exu5qGM0913etREiFW+mJFdERES8TlhwAC9efwG3De3Em6t2csucNRQdKz/j80tKK5j61jrCQwJ4bkJfAptoly/5gWaAiIiIeCWHw/C7Uak8+aOerMjI5ycvfkX2oSOnPc9ay4MLvidzfzF/u64vcRGhHohWvI2SXBEREfFqE/onMmdyf/YWHGX8C1+yYXfBSY+/vXo373+7l1+O6MqgLjEeilK8jZJcERER8XpDkmOYP3UQoUEOfjbrK/67MQeAjXsK+cMHmxjaNZa7hnXxcJTiTZTkioiIiE9Ibt2CBVMHk9o2gtv/uY6/LtnG1LfWEd0smJk/7Y3DYTwdongRJbkiIiLiM2JbhPD2rQMY3astM5eks6fgKM9P7Eur5iGeDk28TKCnAxARERGpjdCgAJ67ri9920cRFxFKv6RoT4ckXkhJroiIiPgch8Pwi4s7eToM8WJariAiIiIifkdJroiIiIj4HSW5IiIiIuJ3lOSKiIiIiN9RkisiIiIifkdJroiIiIj4HSW5IiIiIuJ3lOSKiIiIiN8x1lr3D2pMEbDV7QOLv4sB8j0dhPgkzR2pC80bqQvNG+/SwVobW90DDdXxbKu1tl8DjS1+yhizRvNG6kJzR+pC80bqQvPGd2i5goiIiIj4HSW5IiIiIuJ3GirJndVA44p/07yRutLckbrQvJG60LzxEQ2y8UxERERExJO0XEFERERE/I5bk1xjzEhjzFZjTIYx5gF3ji3+xRjzmjEmzxiz8YRj0caYT4wx21x/tvRkjOJ9jDHtjTHLjDFpxphNxph7Xcc1d+SMjDGhxpjVxpgNrnnziOt4R2PM1655829jTLCnYxXvZIwJMMasN8Z86LqvueMD3JbkGmMCgBeAq4BuwARjTDd3jS9+53Vg5CnHHgCWWmuTgaWu+yInqgDut9amAgOAO13vM5o7cjalwHBrbW+gDzDSGDMA+DMw0zVvDgG3eDBG8W73Amkn3Nfc8QHuPJPbH8iw1mZZa8uAd4Bxbhxf/Ii19nPg4CmHxwFzXLfnAOMbNSjxetbaHGvtOtftIpwfOvFo7shZWKdi190g148FhgPvuo5r3ki1jDEJwGjgVdd9g+aOT3BnkhsP7D7hfrbrmEhNtbbW5oAzmQHiPByPeDFjTBLQF/gazR05B9fl5m+BPOATIBMosNZWuJ6izyw5k2eB3wBVrvut0NzxCe5Mck01x1S6QUTczhjTHJgHTLPWHvZ0POL9rLWV1to+QALOK4+p1T2tcaMSb2eMGQPkWWvXnni4mqdq7nghd7b1zQban3A/AdjrxvHF/+UaY9paa3OMMW1xnnEROYkxJghngvuWtXa+67DmjtSItbbAGPMZzjXdUcaYQNcZOX1mSXUGA1cbY0YBoUAEzjO7mjs+wJ1ncr8Bkl07DoOB64CFbhxf/N9CYJLr9iTgfQ/GIl7ItRZuNpBmrX3mhIc0d+SMjDGxxpgo1+0wYATO9dzLgJ+4nqZ5I6ex1v7OWptgrU3Cmdd8aq29Hs0dn+DWZhCubzrPAgHAa9baP7ptcPErxpi3gUuBGCAXmAG8B8wFEoFdwLXW2lM3p0kTZowZAnwBfM8P6+MexLkuV3NHqmWM6YVzc1AAzpM7c621jxpjOuHcJB0NrAdusNaWei5S8WbGmEuBX1lrx2ju+AZ1PBMRERERv6OOZyIiIiLid5TkioiIiIjfUZIrIiIiIn5HSa6IiIiI+B0luSIiIiLid5TkioiIiIjfUZIrIiIiIn5HSa6IiIiI+J3/B3r+3SociqOuAAAAAElFTkSuQmCC\n", 46 | "text/plain": [ 47 | "
" 48 | ] 49 | }, 50 | "metadata": { 51 | "needs_background": "light" 52 | }, 53 | "output_type": "display_data" 54 | } 55 | ], 56 | "source": [ 57 | "# 画时间序列线图\n", 58 | "data.plot(figsize=[12,4])" 59 | ] 60 | }, 61 | { 62 | "cell_type": "code", 63 | "execution_count": 4, 64 | "metadata": {}, 65 | "outputs": [], 66 | "source": [ 67 | "from statsmodels.stats.diagnostic import unitroot_adf # 平稳性检验\n", 68 | "from statsmodels.stats.diagnostic import acorr_ljungbox #白噪声检验" 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": 6, 74 | "metadata": {}, 75 | "outputs": [ 76 | { 77 | "name": "stdout", 78 | "output_type": "stream", 79 | "text": [ 80 | "(-4.491813434877763, 0.00020344718693422064, 1, 46, {'1%': -3.5812576580093696, '5%': -2.9267849124681518, '10%': -2.6015409829867675}, 97.03172861633975)\n", 81 | "-------+-+-+-+这-里-是-分-割-线+-+-+-+-----------\n", 82 | "(array([11.37833004, 11.38260542, 11.40854984, 11.56632748, 11.69076022,\n", 83 | " 11.93849055]), array([0.00074306, 0.00337519, 0.00970991, 0.02088508, 0.03927977,\n", 84 | " 0.06335516]))\n" 85 | ] 86 | } 87 | ], 88 | "source": [ 89 | "print(unitroot_adf(data))\n", 90 | "print(\"-------+-+-+-+这-里-是-分-割-线+-+-+-+-----------\")\n", 91 | "print(acorr_ljungbox(data,lags=6))" 92 | ] 93 | }, 94 | { 95 | "cell_type": "code", 96 | "execution_count": 7, 97 | "metadata": {}, 98 | "outputs": [ 99 | { 100 | "data": { 101 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAssAAAHiCAYAAAAeQ4G4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdf5xddX3v+9dnZpgQCDH8SJBAQqikXKK3Rs5c0FrbtGgP2Ba8PdZCW8UeNPZW7GnrbaXopda21NNea49H2lOOWBHrD+wv0zYWLUprPcIlYLSGNE2MxIlBEiJjCAmZzOzP/WPvgT2TvSaT2Wtmzez9ej4e85i91vqu9f3umf3jvb/7u74rMhNJkiRJx+qpugGSJEnSXGVYliRJkgoYliVJkqQChmVJkiSpgGFZkiRJKmBYliRJkgoYliWpy0XEIxHx8mnu+7KI2FZ2myRprjAsS9JxRMS9EfFERCw4gX0yIi6cyXZVYeL9yswvZOZFVbZJkmaSYVmSJhERq4CXAQlcVWljjiMi+qayTpI0dYZlSZrc64D7gA8B142tbPQ2v6Fp+fUR8S+N2//cWP2ViDgYET/dWP/GiNgREd+JiA0Rsbxp/+dHxGcb2x6LiJsa6xdExB9FxJ7Gzx+N9XBHxLqI2B0Rb4uIbwN/1mpdo+yPR8TmiBiKiP8VEd/X6s5GxKUR8aVGuUcj4v0R0V90v8bqa9r/4sbfZigitkTEVU3bPhQRt0bE30fEkxFxf0Q8b3r/FkmaHYZlSZrc64A/b/z8x4g4+3g7ZOYPNm6+MDMXZeYnIuJHgN8DXgOcA+wCPg4QEacB/wj8A7AcuBC4p3GMtwMvBtYCLwQuBd7RVN1zgTOA84H1rdZFxCXAB4E3AWcCfwpsKBhWMgr8CnAW8BLgcuAXi+5X844RcRLwt8BngGXAW4A/j4jmYRrXAr8FnA7sAH635R9RkuYIw7IkFYiIH6AeOO/KzAeBrwM/M83D/Szwwcx8KDOPAL8BvKQxzOPHgW9n5nsy8+nMfDIz72/a712ZuTcz91EPmq9tOm4N+M3MPJKZhwvWvRH408y8PzNHM/MO4Aj1ED5OZj6Ymfdl5khmPkI9WP/QFO/ji4FFwLszczgzPwf8HfWAPOavMvP/y8wR6h9A1k7x2JJUCcOyJBW7DvhMZj7eWP4oTUMxTtBy6r3JAGTmQWA/cC6wgnoQP+5+jdvLm5b3ZebTE/aZuO584K2NoRFDETHUqHP5hP2IiO+NiL+LiG9HxAHgFuq9zFOxHBjMzNqE9p7btPztptuHqIdrSZqzPPFDklqIiIXUh0z0Nsb+AiwAlkTEC4GngFOadnnucQ65h3poHTv+qdSHRHwLGGR872ur/bY0llc21o3JFvtMXDcI/G5mTmXIw58AXwauzcwnI+KXgVdPYb+xtq6IiJ6mwLwS+Pcp7i9Jc449y5LU2quoj99dQ32owFrgYuAL1McxbwZ+MiJOaUyldv2E/R8Dvqdp+aPAz0fE2sZY4VuA+xtDHf4OeG5E/HLjhL7TIuKyxn4fA94REUsj4izgZuAjJ3hf/ifwCxFxWdSdGhE/1hgrPdFpwAHgYET8b8D/dZz71ex+6h8ifj0iToqIdcBP0BibLUnzkWFZklq7DvizzPxmZn577Ad4P/VxxO8FhqmHxzuoj79t9k7gjsawh9dk5j3A/wP8JfAo8DzgGoDMfBJ4BfVg+W1gO/DDjeP8DrAJ+Crwr8BDjXVTlpmbqI9bfj/wBPUT615fUPz/pj4u+0nqIfsTE7aPu18T6hmmPr3elcDjwB8Dr8vMfzuR9krSXBKZrb7BkyRJkmTPsiRJklTAsCxJkiQVMCxLkiRJBQzLkiRJUgHDsiRJklRgzl6U5KyzzspVq1ZV3QxJkiR1uAcffPDxzFzaatucDcurVq1i06ZNVTdDkiRJHS4idhVtcxiGJEmSVMCwLEmSJBUwLEuSJEkFSgnLEfHBiNgbEV8r2B4R8b6I2BERX42IS8qoV5IkSZpJZfUsfwi4YpLtVwKrGz/rgT8pqd5SjdaSe7Y+xvvu2c49Wx9jtJZVN0mSJEkVKmU2jMz854hYNUmRq4EPZ2YC90XEkog4JzMfLaP+MozWktfefj+bB4c4PDzKwv5e1q5Ywp3XX0ZvT1TdPEmSJFVgtsYsnwsMNi3vbqybM+7dtpfNg0McGh4lgUPDo2weHOLebXurbpokSZIqMlthuVXX7DFjHCJifURsiohN+/btm4VmPWvLngMcHh4dt+7w8CgP7zkwq+2QJEnS3DFbYXk3sKJp+Txgz8RCmXlbZg5k5sDSpS0vojJjnr98MQv7e8etW9jfy5rli2e1HZIkSZo7ZissbwBe15gV48XAd+fSeGWAdRctY+2KJcToMGSNUxpjltddtKzqpkmSJKkipZzgFxEfA9YBZ0XEbuA3gZMAMvN/ABuBVwI7gEPAz5dRb5l6e4I7r7+Ml/zk9Qyfuoz3vONXWHfRMk/ukyRJ6mJlzYZx7XG2J/DmMuqaSb09wSlDOzllaCeXX3x21c2RJElSxbyCnyRJklTAsCxJkiQVMCxLkiRJBQzLkiRJUgHDsiRJklTAsCxJkiQVMCxLkiRJBQzLkiRJUgHDsiRJklTAsCxJkiQVMCxLkiRJBQzLkiRJUgHDsiRJklTAsCxJkiQVMCxLkiRJBQzLkiRJUgHDsiRJklTAsCxJkiQVKCUsR8QVEbEtInZExI0ttq+MiM9HxJcj4qsR8coy6pUkSZJmUtthOSJ6gVuBK4E1wLURsWZCsXcAd2Xmi4BrgD9ut15JkiRpppXRs3wpsCMzd2bmMPBx4OoJZRJY3Lj9HGBPCfVKkiRJM6qMsHwuMNi0vLuxrtk7gZ+LiN3ARuAtrQ4UEesjYlNEbNq3b18JTZMkSZKmr4ywHC3W5YTla4EPZeZ5wCuBOyPimLoz87bMHMjMgaVLl5bQNEmSJGn6ygjLu4EVTcvncewwi+uBuwAy80vAycBZJdQtSZIkzZgywvIDwOqIuCAi+qmfwLdhQplvApcDRMTF1MOy4ywkSZI0p7UdljNzBLgBuBvYSn3Wiy0R8a6IuKpR7K3AGyPiK8DHgNdn5sShGpIkSdKc0lfGQTJzI/UT95rX3dx0+2HgpWXUJUmSJM0Wr+AnSZIkFTAsS5IkSQUMy5IkSVIBw7IkSZJUwLAsSZIkFTAsS5IkSQUMy5IkSVIBw7IkSZJUwLAsSZIkFTAsS5IkSQUMy5IkSVIBw7IkSZJUwLAsSZIkFTAsS5IkSQUMy5IkSVIBw7IkSZJUwLAsSZIkFSglLEfEFRGxLSJ2RMSNBWVeExEPR8SWiPhoGfVKkiRJM6mv3QNERC9wK/AKYDfwQERsyMyHm8qsBn4DeGlmPhERy9qtV5IkSZppZfQsXwrsyMydmTkMfBy4ekKZNwK3ZuYTAJm5t4R6JUmSpBlVRlg+FxhsWt7dWNfse4HvjYgvRsR9EXFFCfVKkiRJM6rtYRhAtFiXLepZDawDzgO+EBEvyMyhcQeKWA+sB1i5cmUJTZMkSZKmr4ye5d3Aiqbl84A9Lcp8KjOPZuY3gG3Uw/M4mXlbZg5k5sDSpUtLaJokSZI0fWWE5QeA1RFxQUT0A9cAGyaU+RvghwEi4izqwzJ2llC3JEmSNGPaDsuZOQLcANwNbAXuyswtEfGuiLiqUexuYH9EPAx8Hvi1zNzfbt2SJEnSTCpjzDKZuRHYOGHdzU23E/jVxo8kSZI0L3gFP0mSJKmAYVmSJEkqYFiWJEmSChiWJUmSpAKGZUmSJKmAYVmSJEkqYFiWJEmSChiWJUmSpAKGZUmSJKlAKVfwU3tGa8m92/ayZc8Bnr98MesuWkZvT1TdLEmSpK5nWK7YaC157e33s3lwiMPDoyzs72XtiiXcef1lBmZJkqSKOQyjYvdu28vmwSEODY+SwKHhUTYPDnHvtr1VN02SJKnrGZYrtmXPAQ4Pj45bd3h4lIf3HKioRZIkSRpjWK7Y85cvZmF/77h1C/t7WbN8cUUtkiRJ0hjDcsXWXbSMtSuWEKPDkDVOaYxZXnfRsqqbJkmS1PUMyxXr7QnuvP4ylm7/W5bs/iL//doXeXKfJEnSHOFsGHNAb09wytBOThnayeUXn111cyRJktRgz7IkSZJUoJSwHBFXRMS2iNgRETdOUu7VEZERMVBGvZIkSdJMajssR0QvcCtwJbAGuDYi1rQodxrwS8D97dYpSZIkzYYyepYvBXZk5s7MHAY+DlzdotxvA78PPF1CnZIkSdKMKyMsnwsMNi3vbqx7RkS8CFiRmX832YEiYn1EbIqITfv27SuhaZIkSdL0lRGWW81xls9sjOgB3gu89XgHyszbMnMgMweWLl1aQtMkSZKk6SsjLO8GVjQtnwfsaVo+DXgBcG9EPAK8GNjgSX6SJEma68oIyw8AqyPigojoB64BNoxtzMzvZuZZmbkqM1cB9wFXZeamEuqWJEmSZkzbYTkzR4AbgLuBrcBdmbklIt4VEVe1e3xJkiSpKqVcwS8zNwIbJ6y7uaDsujLqlCRJ6la1WpJA5thvSLL+u3GbxvrJHGdz4xjHLzW140y+vb+3h4X9vVM40uzycteSJHWhsQA0FmBy4vpnlse2tw5fRduPd7xxK5v2n1hmXPGmDePXtz5Owc1J2zzx7zKVfZrbduz9fLZ8rUWgPeY2EwJwwe1OtGzxAp63dFHVzTiGYVnqAhN7BYreiCaWPXZb836t39iK2zBhmeI2tap7YtsmlnlmU4s2TnxTaz5WUSBo3jhpmWPaWLhpyk7kEEU9PifSjqKyk/2PTjTAMOF/MVnZ4z22Wq4r+KtN9e9QZviY7PExpf0LQtj4dePXHLvP+H2L/y+Sjsew3EUyk8NHRzk0PMrh4frvIyOjFbWlkmqnFMCKytXLTu2oxeHjRI47tq0gBBTv4puhJEklMSx3oMzk6aM1Dg2P1IPx0Xo4Pnx01BAlSZJ0AgzL89zTYz3FR0c5PBaOh0epGYolSZLaZlieJ46MPDt0YiwQHz46yqipWJIkacYYlueY4ZFaPRQfHRkXikdGDcWSJEmzzbBckaOjtXFh+KnhEWo1eHDXE1U3TZIkSQ2G5Rk2Mlp75gS7Z4ZQHB1heGR8T/GoPceSJElzjmG5REdHazxxaHhcMB4eqVXdLEmSJE2TYblEh46M8vW9T1XdDEmSJJWkp+oGSJIkSXOVYVmSJEkqYFiWJEmSChiWJUmSpAKGZUmSJKmAYVmSJEkqUEpYjogrImJbROyIiBtbbP/ViHg4Ir4aEfdExPll1CtJkiTNpLbDckT0ArcCVwJrgGsjYs2EYl8GBjLz+4C/AH6/3XolSZKkmVZGz/KlwI7M3JmZw8DHgaubC2Tm5zPzUGPxPuC8EuqVJEmSZlQZYflcYLBpeXdjXZHrgU+XUK8kSZI0o8q43HW0WJctC0b8HDAA/FDB9vXAeoCVK1eW0DRJkiRp+sroWd4NrGhaPg/YM7FQRLwceDtwVWYeaXWgzLwtMwcyc2Dp0qUlNE2SJEmavjLC8gPA6oi4ICL6gWuADc0FIuJFwJ9SD8p7S6hTkiRJmnFth+XMHAFuAO4GtgJ3ZeaWiHhXRFzVKPYHwCLgkxGxOSI2FBxOkiRJmjPKGLNMZm4ENk5Yd3PT7ZeXUY8kSZI0m0oJy5IkSRqvVks2Dw7xyP6nWHXmqaxdsYSenlbzImguMyxLkiSVrFZLbvn0VnbsPcjwSI3+vh4uXLaIm6682MA8z5RyuWtJkiQ9a/PgEDv2HuTISI0EjozU2LH3IJsHh6pumk6QYVmSJKlkj+x/iuGR2rh1wyM1Htn/VEUt0nQZliVJkkq26sxT6e8bH7P6+3pYdeapFbVI02VYliRJKtnaFUu4cNkiGBmGrLGgMWZ57YolVTdNJ8iwLEmSOl6tljy06wn+6qHdPLTrCWq1nNH6enqCm668mEUP/w0Lv/EFfulHVnty3zzlbBiS5i2nZZI0FVXNTNHTE/Tv3wH7d3DJ+W+bsXo0swzLkuYlp2WaPX4o0XzXPDMFjJ+Z4pLzT6+4dZrrDMtSh+mWYOOb3+zwQ4k6wWQzU/h6oeMxLEsdpMpgM9sh3Te/2eGHEnWCsZkpjjS9ZjgzhabKsKyuYG/rzAabKkK6b36zo6oPJd3ynNXsGJuZYss3H4fePhac1NfRM1P4/CmXYVkdr6re1iperKoKNlWE9G5786tKFR9KHPqhso3NTPGm//JWRhedzQ2/sL5jA6TPn/I5dZw6XhWXHB17sXrf57bzFw/u5n2f284tn94641MVVTUJfhVXqnJaptlRxVyxXiZYM2FsZoqFu77IJeef3rGvFT5/ymdYVserIshV9WJV1ST4VYX0qt78Znu+1ipV8aHEywRL0+fzp3wOw1DHq+Jr5KqGQ1T1VWM3DYnoxq84Z3uuWMejS9Pn86d89iyr41XR21pVTytU09vaTUMi/Ipz5lV5meBu+tZAncnLbJevlLAcEVdExLaI2BERN7bYviAiPtHYfn9ErCqjXk1fN70hVBHkuvHFqlvGA/oV58yr6sNXVecaSGXqps6L2dJ2WI6IXuBW4EpgDXBtRKyZUOx64InMvBB4L/Bf261X09eNbwizHeR8sepcVX5r0E2q+PDltwbqFN3SeTFbyuhZvhTYkZk7M3MY+Dhw9YQyVwN3NG7/BXB5RPifq4hvCLPDF6vO1I3fGnQLvzWQ1EpkttebGBGvBq7IzDc0ll8LXJaZNzSV+VqjzO7G8tcbZR4vOu4Z51+cr7jpg221bTo2f2UzAGtfuPaE9x2tJU8Nj0yr3u0Pfw2A1WteMK39T8S+J4/w+MHhY9YvXdTPWactmPH6qzKbf+Mq6+y2equoMzP59x07obef5cvPYdGCXjr98383/G+ffHqEbw0dpvltMQLOXbKQ0072fPhO0A2P46rrbUd/bw8nn9RbSd13/cL3P5iZA622lfHsb/UOMTGBT6UMEbEeWA+w6Jzntd+yaZhOSC7DbD6YTz6plwiOeUNYMAsP0CpDRhUvGFW9SHVTvVXUGRFctLqa16iq3gC74X+7aEEvC0/q5fDRUTLrr4sLT+pl0YLZefM2yM28bngcV13vfAzpx1NGWN4NrGhaPg/YU1Bmd0T0Ac8BvjPxQJl5G3AbwMDAQH7iTS8poXmz57uHjvLwoweqbsZxVXlFu1s+vZXayUugt499Tx7hOQs7e8otqWxv/uhvAHDzr2+ouCWdqcrLBFfxv63q8eTjuDPVasmb7r6d0UVn8+P/+4+e8PNn2eIFPG/pohlsYbG7fqF4Wxlh+QFgdURcAHwLuAb4mQllNgDXAV8CXg18Ltsd/6FpGzv5bLbfEMbGStPXD8zOJZEl6UT09ASXnH+6r0nSCRrrEDu45lXQ28f7Pre9Y+agb/sEv8wcAW4A7ga2Andl5paIeFdEXNUodjtwZkTsAH4VOGZ6Oc2usTeEn7zkvFk7+cyTZyRJ6kzjOsSip6MmDyjljIXM3AhsnLDu5qbbTwM/VUZdmr+8qpDUnlotGT7zQkYXnc1Du56Y1SECkjSZqq5cOxu8gp9mzdiUWwv6eghwyi3pBDR/xXn4gpd1xfzokuaPTp6D3rlwNGuqGistdQLH/KtT+A1JZxrrEJs4eUAndIgZljWrPHlGmp5O/opT3aOTTwLrdp3cIWZYlqR5wDH/na1belv9hqSzdWqHmGOWJWkecMx/56pqPPpYQD98/kt5aNcTszL+3VmRNB/ZsyxJ80Anf8XZ7aroba1qOITfkGg+smdZkuaJKuZH18yrore1qjlx/YZE85E9y5IkVaiK3taqThj1GxLNR4ZlSZIqVMWUW1UOh+jUk8DUuQzLkiRVqIre1k6eE1cqm2FZkqSKzXZvq8MhpKkzLEuS1IUcDiFNjbNhSJIkSQUMy5IkSVIBw7IkSZJUwLAsSZIkFTAsS5IkSQUMy5IkSVKBtsJyRJwREZ+NiO2N38fMPxMRayPiSxGxJSK+GhE/3U6dkiRJ0mxpt2f5RuCezFwN3NNYnugQ8LrMfD5wBfBHEeElgiRJkjTntRuWrwbuaNy+A3jVxAKZ+e+Zub1xew+wF1jaZr2SJEnSjGs3LJ+dmY8CNH4vm6xwRFwK9ANfb7NeSZIkacYd93LXEfGPwHNbbHr7iVQUEecAdwLXZWatoMx6YD3AypUrT+TwkiRJUumOG5Yz8+VF2yLisYg4JzMfbYThvQXlFgN/D7wjM++bpK7bgNsABgYG8nhtkyRJkmZSu8MwNgDXNW5fB3xqYoGI6Af+GvhwZn6yzfokSZKkWdNuWH438IqI2A68orFMRAxExAcaZV4D/CDw+ojY3PhZ22a9kiRJ0ow77jCMyWTmfuDyFus3AW9o3P4I8JF26pEkSZKq4BX8JEmSpAKGZUmSJKmAYVmSJEkqYFiWJEmSChiWJUmSpAKG5RKd1Bc8Z+FJ9Pf5Z5UkSeoEbU0dp/FO6e9jzfLFAIyM1jh0dJTDw6McGh7l0PAIh4dHOTrqhQklSZLmC8PyDOnr7WFxbw+LTz5p3PrhkRqHnwnRIxwaHuXw0VFGDNGSJElzjmF5lvX39dDf18NzFo4P0UdGnu2FPtzUIz1aM0RLkiRVxbA8Ryzo62VBXy9LThm//umx4Hx0lMNjPdHDo5ihJUmSZp5heY47+aReTj6pl9Ob1mUmR0Zq48ZCj/VIpyFakiSpNIbleSgingnRZ5za/8z6zOTw0dFnep/Hbj9tiJYkSZoWw3IHiQhO6e/jlP7x/9ZabXyIPnS03hv99NFaRS2VJEmaHwzLXaCnJzh1QR+nLhj/7x6tJcMjNZL53+083Z7zVrtli4MVHb5lvS3WFf2NJ2v3ZHepVRuL9mkuekw7suXNSfebWHXz4sR2TeX/cuzxjn+MY9uaLdoyvvTYcqsyObFMi/vesh1tPHXKeN5N5W/zbNnpPWZalc6Cx8249U0L2WK7JM0XhuUu1tsTLOzvrboZkrrQuDDdInwf88Gr5TEKjt2i9IkE9apD/TEf3sbWT/hQ+Ew7iz70NR+zYN9kfOGi7YVtmfhhd6r70Xq/iS2f0gezovIFH8TbbXN9sajsZPtovjIsS5JmXUQ03W5ZYtbaIs2GzCSzHqAzk1rWA3rzN1pjy7XMRjmgaX3S2NZYxzPHqy/X8tl6xo5Z2J7jfLs1pW8Gp3CfT+QYp508N2Pp3GyVJElSB4mIpg+GfhicT3ra2TkizoiIz0bE9sbv0ycpuzgivhUR72+nTkmSJGm2tBWWgRuBezJzNXBPY7nIbwP/1GZ9kiRJ0qxpNyxfDdzRuH0H8KpWhSLiPwBnA59psz5JkiRp1rQbls/OzEcBGr+XTSwQET3Ae4Bfa7MuSZIkaVYd9wS/iPhH4LktNr19inX8IrAxMwej9SnPzXWtB9YDrFy5coqHlyRJkmbGccNyZr68aFtEPBYR52TmoxFxDrC3RbGXAC+LiF8EFgH9EXEwM48Z35yZtwG3AQwMDDgroSRJkirV7tRxG4DrgHc3fn9qYoHM/Nmx2xHxemCgVVCWJEmS5pp2xyy/G3hFRGwHXtFYJiIGIuID7TZOkiRJqlJM5eoqVYiIfcCuiqo/C3i8orrVeXw8qWw+plQmH08q23x8TJ2fmUtbbZizYblKEbEpMweqboc6g48nlc3HlMrk40ll67THVLvDMCRJkqSOZViWJEmSChiWW7ut6gaoo/h4Utl8TKlMPp5Uto56TDlmWZIkSSpgz7IkSZJUwLDcJCKuiIhtEbEjIrxwitoWEY9ExL9GxOaI2FR1ezT/RMQHI2JvRHytad0ZEfHZiNje+H16lW3U/FHweHpnRHyr8Tq1OSJeWWUbNX9ExIqI+HxEbI2ILRHxXxrrO+o1yrDcEBG9wK3AlcAa4NqIWFNtq9Qhfjgz13bSNDqaVR8Crpiw7kbgnsxcDdzTWJam4kMc+3gCeG/jdWptZm6c5TZp/hoB3pqZFwMvBt7cyE4d9RplWH7WpcCOzNyZmcPAx4GrK26TpC6Xmf8MfGfC6quBOxq37wBeNauN0rxV8HiSpiUzH83Mhxq3nwS2AufSYa9RhuVnnQsMNi3vbqyT2pHAZyLiwYhYX3Vj1DHOzsxHof5mBSyruD2a/26IiK82hmnM66/MVY2IWAW8CLifDnuNMiw/K1qsc6oQteulmXkJ9eE9b46IH6y6QZI0wZ8AzwPWAo8C76m2OZpvImIR8JfAL2fmgarbUzbD8rN2Ayuals8D9lTUFnWIzNzT+L0X+Gvqw32kdj0WEecANH7vrbg9mscy87HMHM3MGvA/8XVKJyAiTqIelP88M/+qsbqjXqMMy896AFgdERdERD9wDbCh4jZpHouIUyPitLHbwI8CX5t8L2lKNgDXNW5fB3yqwrZonhsLNQ3/J75OaYoiIoDbga2Z+YdNmzrqNcqLkjRpTJfzR0Av8MHM/N2Km6R5LCK+h3pvMkAf8FEfUzpREfExYB1wFvAY8JvA3wB3ASuBbwI/lZmetKXjKng8raM+BCOBR4A3jY03lSYTET8AfAH4V6DWWH0T9XHLHfMaZViWJEmSCjgMQ5IkSSpgWJYkSZIKGJYlSZKkAoZlSZIkqYBhWZIkSSpgWJYkSZIKGJYlSZKkAoZlSZqCiLgpIj4wxbIfiojfmek2zXUR8fqI+Jc29v90RFx3/JKSNHMMy5I6QkQ8EhGHI+JgRDwWEX8WEYumeax1EbG7eV1m3pKZbyintc/UkRHx6ye43zsj4iNltWOuaHW/MvPKzLyjqjZJEhiWJXWWn8jMRcAlwP8BvONEDxARfaW3qrXrgO80fs9pUddzvHWS1Il8oZPUcTLzW8CngRcARMTPR8TWiHgyInZGxJvGyo71IkfE2yLi28DHGvsub/RSH4yI5RN7PiPikxHx7Yj4bkT8c0Q8f6rti4hTgFcDbwZWR8TAxPZMKP9IRLw8Iq4AbgJ+utGurzS2L4+IDRHxnYjYERFvbNq3tzGE5OuN+/9gRKxobPv+iHigcR8eiIjvb9rv3oj43Yj4InAI+J6Cdc+JiNsj4tGI+FZE/E5E9Bbc7/8WEYMRcaDRjpc11hfdr3sj4g2N2z0R8boayzgAAB1VSURBVI6I2BUReyPiwxHxnMa2VY1e+usi4psR8XhEvH2q/w9JmoxhWVLHaYTBVwJfbqzaC/w4sBj4eeC9EXFJ0y7PBc4AzgdeB1wJ7MnMRY2fPS2q+TSwGlgGPAT8+Qk08T8BB4FPAnc36jyuzPwH4BbgE412vbCx6WPAbmA59RB+S0Rc3tj2q8C11P8ei4H/DByKiDOAvwfeB5wJ/CHw9xFxZlOVrwXWA6cBuwrW3QGMABcCLwJ+FCgarvIAsJb63/qjwCcj4uRJ7lez1zd+fhj4HmAR8P4JZX4AuAi4HLg5Ii4uaIckTZlhWVIn+ZuIGAL+Bfgn6gGMzPz7zPx61v0T8BngZU371YDfzMwjmXl4KhVl5gcz88nMPAK8E3jhWE/nFFxHPRiOUg+N10bESVPcd5zGB4MfAN6WmU9n5mbgA9RDLdSD6zsyc1vj/n8lM/cDPwZsz8w7M3MkMz8G/BvwE02H/1BmbmlsPzpxHfXQeyXwy5n5VGbuBd4LXNOqrZn5kczc3zjee4AF1MPtVPws8IeZuTMzDwK/AVwzYdjMb2Xm4cz8CvAVoFXolqQTYliW1ElelZlLMvP8zPzFseAbEVdGxH2NYQpD1HtZz2rab19mPj3VShpDG97dGNpwAHiksemsSXYb23cF9d7RsZ7oTwEnUw+v07Ec+E5mPtm0bhdwbuP2CuDrBfvtmrCueT+AwRb7Na87HzgJeDQihhp/2z+l3tt+jIh4a2M4zHcbZZ/DFP5mBe3dBfQBZzet+3bT7UPUe58lqS2GZUkdLSIWAH8J/L/A2Zm5BNgIRFOxnLDbxOWJfga4Gng59cC3aqy6KTTptdRfe/+2MUZ6J/WwPDYU4ynglKb29wJLJ2nbHuCMiDitad1K4FuN24PA81q0Yw/1sNuseb9WdU1cNwgcAc5qfEhZkpmLM/OY8duN8clvA14DnN74P3yXZ/9mx/ubT2zvSurDPx47zn6S1BbDsqRO10/96/59wEhEXEl9XO1kHgPOnGRYxWnUQ+J+6sH2lhNoz+uA36I+dnfs5z8BP9YYL/zvwMkR8WONoRnvaLS/uW2rxmaiyMxB4H8BvxcRJ0fE9wHX82zP9QeA346I1Y0ZLL6vUc9G4Hsj4mcioi8ifhpYA/zdVO9IZj5KfUjLeyJiceMkvOdFxA+1KH4a9XC7D+iLiJupj6Fueb9a+BjwKxFxQdSnBBwb4zwy1fZK0nQYliV1tMbwhF8C7gKeoN4rvOE4+/wb9XC2szG8YPmEIh+mPgzgW8DDwH1TaUtEvJh6L/Stmfntpp8NwA7g2sz8LvCL1EPut6j3NDfPjvHJxu/9EfFQ4/a1jePuAf6a+vjrzza2/WHjvn8GOADcDixsjFv+ceCt1EP/rwM/npmPT+W+NHkd9Q8kD1P/+/4FcE6LcndTPyny36n/7Z5m/JCOVver2QeBO4F/Br7R2P8tJ9hWSTphkXm8b74kSZKk7mTPsiRJklTAsCxJkiQVMCxLkiRJBQzLkiRJUgHDsiRJklSg7/hFqnHWWWflqlWrqm6GJEmSOtyDDz74eGYubbVtzoblVatWsWnTpqqbIUmSpA4XEbuKtjkMQ5IkSSpgWJYkSZIKGJYlSZKkAqWE5Yj4YETsjYivFWyPiHhfROyIiK9GxCVl1CtJkiTNpLJ6lj8EXDHJ9iuB1Y2f9cCflFRvqUZryT1bH+N992znnq2PMVrLqpskSZKkCpUyG0Zm/nNErJqkyNXAhzMzgfsiYklEnJOZj5ZRfxlGa8lrb7+fzYNDHB4eZWF/L2tXLOHO6y+jtyeqbp4kSZIqMFtjls8FBpuWdzfWzRn3btvL5sEhDg2PksCh4VE2Dw5x77a9VTdNkiRJFZmtsNyqa/aYMQ4RsT4iNkXEpn379s1Cs561Zc8BDg+Pjlt3eHiUh/ccmNV2SJIkae6YrbC8G1jRtHwesGdiocy8LTMHMnNg6dKWF1GZMc9fvpiF/b3j1i3s72XN8sWz2g5JkiTNHbMVljcAr2vMivFi4LtzabwywLqLlrF2xRJidBiyximNMcvrLlpWddMkSZJUkVJO8IuIjwHrgLMiYjfwm8BJAJn5P4CNwCuBHcAh4OfLqLdMvT3Bnddfxkt+8nqGT13Ge97xK6y7aJkn90mSJHWxsmbDuPY42xN4cxl1zaTenuCUoZ2cMrSTyy8+u+rmSJIkqWJewU+SJEkqYFiWJEmSChiWJUmSpAKGZUmSJKmAYVmSJEkqYFiWJEmSChiWJUmSpAKGZUmSJKmAYVmSJEkqYFiWJEmSChiWJUmSpAKGZUmSJKmAYVmSJEkqYFiWJEmSChiWJUmSpAKGZUmSJKmAYVmSJEkqYFiWJEmSCpQSliPiiojYFhE7IuLGFttXRsTnI+LLEfHViHhlGfVKkiRJM6ntsBwRvcCtwJXAGuDaiFgzodg7gLsy80XANcAft1uvJEmSNNPK6Fm+FNiRmTszcxj4OHD1hDIJLG7cfg6wp4R6JUmSpBnVV8IxzgUGm5Z3A5dNKPNO4DMR8RbgVODlJdQrSZIkzagyepajxbqcsHwt8KHMPA94JXBnRBxTd0Ssj4hNEbFp3759JTRNkiRJmr4ywvJuYEXT8nkcO8zieuAugMz8EnAycNbEA2XmbZk5kJkDS5cuLaFpkiRJ0vSVEZYfAFZHxAUR0U/9BL4NE8p8E7gcICIuph6W7TqWJEnSnNZ2WM7MEeAG4G5gK/VZL7ZExLsi4qpGsbcCb4yIrwAfA16fmROHakiSJElzShkn+JGZG4GNE9bd3HT7YeClZdQlSZIkzRav4CdJkiQVMCxLkiRJBQzLkiRJUgHDsiRJklTAsCxJkiQVMCxLkiRJBQzLkiRJUgHDsiRJklTAsCxJkiQVMCxLkiRJBQzLkiRJUgHDsiRJklTAsCxJkiQVMCxLkiRJBQzLkiRJUgHDsiRJklTAsCxJkiQVKCUsR8QVEbEtInZExI0FZV4TEQ9HxJaI+GgZ9UqSJEkzqa/dA0REL3Ar8ApgN/BARGzIzIebyqwGfgN4aWY+ERHL2q1XkiRJmmll9CxfCuzIzJ2ZOQx8HLh6Qpk3Ardm5hMAmbm3hHolSZKkGVVGWD4XGGxa3t1Y1+x7ge+NiC9GxH0RcUUJ9UqSJEkzqu1hGEC0WJct6lkNrAPOA74QES/IzKFxB4pYD6wHWLlyZQlNkyRJkqavjJ7l3cCKpuXzgD0tynwqM49m5jeAbdTD8ziZeVtmDmTmwNKlS0tomiRJkjR9ZYTlB4DVEXFBRPQD1wAbJpT5G+CHASLiLOrDMnaWULckSZI0Y9oOy5k5AtwA3A1sBe7KzC0R8a6IuKpR7G5gf0Q8DHwe+LXM3N9u3ZIkSdJMKmPMMpm5Edg4Yd3NTbcT+NXGjyRJkjQveAU/SZIkqYBhWZIkSSpgWJYkSZIKGJYlSZKkAoZlSZIkqYBhWZIkSSpgWJYkSZIKGJYlSZKkAqVclETtGa0l927by5Y9B3j+8sWsu2gZvT1RdbMkSeoYvtdqugzLFRutJa+9/X42Dw5xeHiUhf29rF2xhDuvv8wnsSRJJfC9Vu1wGEbF7t22l82DQxwaHiWBQ8OjbB4c4t5te6tumiRJHcH3WrXDsFyxLXsOcHh4dNy6w8OjPLznQEUtkiSps/heq3YYliv2/OWLWdjfO27dwv5e1ixfXFGLJEnqLL7Xqh2G5Yqtu2gZa1csIUaHIWuc0hhHte6iZVU3TZKkjuB7rdphWK5Yb09w5/WXsXT737Jk9xf579e+yBMOJEkqke+1aoezYcwBvT3BKUM7OWVoJ5dffHbVzZEkqeP4XqvpsmdZkiRJKmBYliRJkgqUEpYj4oqI2BYROyLixknKvToiMiIGyqhXkiRJmklth+WI6AVuBa4E1gDXRsSaFuVOA34JuL/dOiVJkqTZUEbP8qXAjszcmZnDwMeBq1uU+23g94GnS6hTkiRJmnFlhOVzgcGm5d2Ndc+IiBcBKzLz70qoT5IkSZoVZYTlVpMU5jMbI3qA9wJvPe6BItZHxKaI2LRv374SmiZJkiRNXxlheTewomn5PGBP0/JpwAuAeyPiEeDFwIZWJ/ll5m2ZOZCZA0uXLi2haZIkSdL0lRGWHwBWR8QFEdEPXANsGNuYmd/NzLMyc1VmrgLuA67KzE0l1C1JkiTNmLbDcmaOADcAdwNbgbsyc0tEvCsirmr3+JIkSVJVSrncdWZuBDZOWHdzQdl1ZdQpSZIkzTSv4CdJkiQVMCxLkiRJBQzLkiRJUgHDsiRJklTAsCxJkiQVMCxLkiRJBUqZOk6SJElzw2gtuXfbXrbsOcDzly9m3UXL6O2Jqps1bxmWJUmSOsRoLXnt7fezeXCIw8OjLOzvZe2KJdx5/WUG5mlyGIYkSVKHuHfbXjYPDnFoeJQEDg2PsnlwiHu37a26afOWYVmSJKlDbNlzgMPDo+PWHR4e5eE9Bypq0fznMIySfenr+6e134HDR9vaX5IkTa4b3mt7I+jv6+HISO2Zdf19PfREzIv7/ZLnnVl1E45hz7IkaVK1WvLQrif4q4d289CuJ6jVsuomSSqwdsUSLly2CEaGIWss6OvhwmWLWLtiSdVNm7fsWZYkFarVkls+vZUdew8yPFKjv/HGe9OVF9PjyULSnNPTE9x05cW86b+8ldFFZ3PDL6xn7YolPl/bYM+yJKnQ5sEhduw9yJGRGgkcGamxY+9BNg8OVd00SQV6eoL+/TtYuOuLXHL+6QblNhmWJUmFHtn/FMNNYx8BhkdqPLL/qYpaJEmzy7AsSSq06sxT6e8b/1bR39fDqjNPrahFkjS7DMuSpELddrKQJzNKmqiUE/wi4grgvwG9wAcy890Ttv8q8AZgBNgH/OfM3FVG3ZKkmdNNJwt5MqOkVtruWY6IXuBW4EpgDXBtRKyZUOzLwEBmfh/wF8Dvt1uvJGl2dMvJQp7MKKmVMoZhXArsyMydmTkMfBy4urlAZn4+Mw81Fu8DziuhXkmSStNtJzM65ESamjKGYZwLDDYt7wYum6T89cCnS6hXkqTSjJ3MOPHKZ514MqNDTqSpK6NnudWzquXH04j4OWAA+IOC7esjYlNEbNq3b18JTZMkaWq66WRGh5xIU1dGWN4NrGhaPg/YM7FQRLwceDtwVWYeaXWgzLwtMwcyc2Dp0qUlNE2SpKkZO5lx0cN/w8JvfIFf+pHVHdvT2m1DTqR2lBGWHwBWR8QFEdEPXANsaC4QES8C/pR6UN5bQp2SJJWuW05mdP5saeraDsuZOQLcANwNbAXuyswtEfGuiLiqUewPgEXAJyNic0RsKDicOpwnlEhS9bppyInUrlLmWc7MjcDGCetubrr98jLq0fzmCSWSNDd00/zZUru8gp9mjSeUSNLc0S1DTqR2GZY1azyhRJIkzTeGZc0aTyiRJEnzjWFZs8YTSiRJ0nxjWNas6aY5TDU7nF1FkjTTSpkNQ5qqsRNK2L+DS85/W9XN0Tzm7CqSpNlgz7LUYbqlt9XZVSRJs8GeZamDdFNv62Szq1xy/ukVtUqS1GnsWZY6SDf1tjq7iiRpNhiWpQ7STXNZO7uKJGk2GJalDtJNva3OriJJmg2GZamDdFtvq5frlSTNNMOy1EHsbZUkqVyGZanD2NsqSVJ5DMuSJElSAcOyJEmSVMCwLEmSJBUwLEuSJEkFSgnLEXFFRGyLiB0RcWOL7Qsi4hON7fdHxKoy6pWmqlZLHtr1BH/10G4e2vUEtVp2ZJ2SJKlcfe0eICJ6gVuBVwC7gQciYkNmPtxU7Hrgicy8MCKuAf4r8NPt1i1NRa2W3PLprezYe5DhkRr9jbmHZ3JKtSrqlCRJ5SujZ/lSYEdm7szMYeDjwNUTylwN3NG4/RfA5RFhYtCs2Dw4xI69BzkyUiOBIyM1duw9yObBoY6qU5IklS8y2/tqOCJeDVyRmW9oLL8WuCwzb2gq87VGmd2N5a83yjxedNwzzr84X3HTB9tq23Rs/spmANa+cO209j/w9NFp7bf94a8BsHrNC6a1/3wy2/d135NHePzg8DHrly7q56zTFnRMnc2qeDxlJgePjPL00VFOPqmXRQt6mY3PxN303KlSN/2dva+dq5vu73y9r4tPPqmSeu/6he9/MDMHWm1rexgG0OrdcGICn0oZImI9sB5g0TnPa79l0zDdkNyuKh7MVT2RZru+k0/qJQKaPxdGwIKTejuqzmaz/TfOTL75ncMcOnIUCKInWHhSLyvPWDjjgbmqN4Kqnj/d8ryF7rqvUM397ab7WkV90F33FeZvSJ9MGT3LLwHemZn/sbH8GwCZ+XtNZe5ulPlSRPQB3waW5iSVDwwM5KZNm9pqWxW+9PX9VTdhyt78M1cBcOtHN1TckpnlmOWZ99CuJ3jf57ZzZKT2zLoFfT380o+s5pLzT6+wZTOnqudPtzxvobvuK3TX/fW+dq527+9Lnndmmc2ZsoiY0Z7lB4DVEXEB8C3gGuBnJpTZAFwHfAl4NfC5yYKyVKaenuCmKy9m8+AQj+x/ilVnnsraFUtmNLRWUWeVHtn/FMNNQRlgeKTGI/uf6tiwLEnqDm2H5cwciYgbgLuBXuCDmbklIt4FbMrMDcDtwJ0RsQP4DvVALc2anp7gkvNPn9XgVkWdVVl15qn09/WM61nu7+th1ZmnVtiqzlOrJcNnXsjoorN5aNcTHf0BTJLmijJ6lsnMjcDGCetubrr9NPBTZdQlae5Zu2IJFy5bdMywk7UrllTdtI4xNrTn4JpXQW8f7/vc9o4e2iNJc0UpYVlSd+u2YSdVGJuOkL5+YPx0hN3w7YUkVcWwLKkU3TTspAqOC5ekapRyuWtJ0swaGxfezHHhkjTzDMuSdILGTrQ7fP5LeWjXE9RqMz+5z9i48AV9PQT1qfkcFy5JM89hGJJ0Aqo60c5x4ZJUDcOyJJ2AKk+0c1y4JM0+h2FI0gmY7EQ7SVLnMSxL0gnwRDtJ6i6GZUk6AZ5oJ0ndxTHLknQCPNFOkrqLYVmSTpAn2klS93AYhiRJklTAsCxJkiQVMCxLkiRJBQzLkiRJUgHDsiRJklTAsCxJkiQVaCssR8QZEfHZiNje+H3MPEoRsTYivhQRWyLiqxHx0+3UKUmSJM2WdnuWbwTuyczVwD2N5YkOAa/LzOcDVwB/FBFe6kqSJElzXrth+WrgjsbtO4BXTSyQmf+emdsbt/cAe4GlbdYrSZIkzbh2w/LZmfkoQOP3sskKR8SlQD/w9TbrlSRJkmbccS93HRH/CDy3xaa3n0hFEXEOcCdwXWbWCsqsB9YDrFy58kQOL0mS5oFaLRk+80JGF53NQ7ueYO2KJfT0RNXNkgodNyxn5suLtkXEYxFxTmY+2gjDewvKLQb+HnhHZt43SV23AbcBDAwM5PHaJkmS5o9aLbnl01s5uOZV0NvH+z63nQuXLeKmKy82MGvOancYxgbgusbt64BPTSwQEf3AXwMfzsxPtlmfJEmapzYPDrFj70Ho64fo4chIjR17D7J5cKjqpkmF2g3L7wZeERHbgVc0lomIgYj4QKPMa4AfBF4fEZsbP2vbrFeSJM0zj+x/iuGR8SMxh0dqPLL/qYpaJB3fcYdhTCYz9wOXt1i/CXhD4/ZHgI+0U48kqbs4rrUzrTrzVPr76j3KY/r7elh15qkVtkqanFfwkyTNKc3jWg9f8DLe97nt3PLprdRqnsoy361dsYQLly1iQV8PASzo6+HCZYtYu8LLL2juaqtnWZKkso0b1wrjxrVecv4xF4rVPNLTE9x05cVsHhzikf1PserMU/3WQHOeYVmSNKdMNq7VsDz/9fQEl5x/uv9LzRsOw5AkzSlj41qbOa5VUlUMy11q7OSZw+e/lId2PeFYQElzhuNaJc0lDsPoQk4KL2kuc1yrpLnEsFyylzzvzKqbcFz3bH2Mbzz+1LiTZ77x+FM8PTLK5RefXXHrJKnupavPqroJs2rxwpOA+fE+oqnrtv9rJ95fh2F0oS17DnB4eHTcusPDozy850BFLZIkSZqbDMtd6PnLF7Owv3fcuoX9vaxZvriiFkmSJM1NhuUutO6iZaxdsYRT+nsJ4JT+XtauWMK6i5ZV3TRJkqQ5xTHLXai3J7jz+su4d9teHt5zgDXLF7PuomX0evKMJEmaptFacmjJ9zB86tncs/WxjskWhuUu1dsTXH7x2Z7QJ0nSDOnU8NjKaC157e33s2/1T5A9fbzlY19m7Yol3Hn9ZfP+PjsMQ5IkqWTN4XHovO/nLR/7Mq+9/X5GO/S6Bvdu28vmwSGytx+ih0PDo2weHOLebXurblrbDMuSJFVsrAdy6NyXcM/Wxzo2UHWTTg6PrXTyTFuGZUmSKtRtPZDdopPDYyudPNOWYVmSpAp1Ww9kt+jk8NhKJ8+05Ql+kiRVaLIeSE/Cnr/GwuPmwSEOD4+ysIPCYyudPNOWYVmSpAqN9UAeagrMndwD2S06OTwW6dSZttoahhERZ0TEZyNie+P36ZOUXRwR34qI97dTpyRJnaSTv77udmPh8S2Xr+byi8/u6KDcydrtWb4RuCcz3x0RNzaW31ZQ9reBf2qzPkmSOko39kBK80m7YflqYF3j9h3AvbQIyxHxH4CzgX8ABtqsU5KkjtKpX19LnaDd2TDOzsxHARq/j/nOKCJ6gPcAv9ZmXZIkSdKsOm7PckT8I/DcFpvePsU6fhHYmJmDEZN/pRQR64H1/P/t3U2IVWUcx/HvD8tNtqisEHN6w0WuLIYoesEgwtpYC6FooYuoSKGgjbSpTdCml00ERqKLXhB60UWLQoJaRRaShkQSZuYwFi6qVZT/FvfIDNMcHb03T/f0/WzOOc+5c+9/8eeZH+c+8wwwMTGxwLeXJEmS/h1nDMtVdXfbvSTTSZZV1VSSZcB8m0LeCtyR5AlgCbA4ye9VtWWez9oKbAWYnJx0N3ZJkiR1atg1y7uBDcALzXHX3BdU1cOnzpNsBCbnC8qSJEnSf02qzv0BbpLLgJ3ABHAEWF9VJ5JMAo9X1SNzXr+RQVjevID3/hn44ZyLG85S4JeOPlv9Yz9p1OwpjZL9pFEbx566uqoun+/GUGG5r5LsrSp37dBI2E8aNXtKo2Q/adT61lPD7oYhSZIk9ZZhWZIkSWphWJ7f1q4LUK/YTxo1e0qjZD9p1HrVU65ZliRJklr4ZFmSJElqYVieJcnaJN8mOZTEvaA1tCSHk+xPsi/J3q7r0fhJsi3J8SQHZo1dmuTjJN81x0u6rFHjo6WfnkvyUzNP7UtyX5c1anwkWZHkkyQHk3yT5MlmvFdzlGG5kWQR8CpwL7AKeCjJqm6rUk/cVVWr+7SNjs6r7cDaOWNbgD1VtRLY01xLC7Gdf/YTwMvNPLW6qj48zzVpfP0JPF1VNwC3AJua7NSrOcqwPONm4FBVfV9VfwDvAOs6rknS/1xVfQqcmDO8DtjRnO8A7j+vRWlstfSTdE6qaqqqvmrOfwMOAsvp2RxlWJ6xHPhx1vXRZkwaRgEfJfkyyaNdF6PeuLKqpmDwywq4ouN6NP42J/m6WaYx1l+ZqxtJrgFuBD6nZ3OUYXlG5hlzqxAN67aquonB8p5NSe7suiBJmuM14HpgNTAFvNhtORo3SZYA7wJPVdWvXdczaoblGUeBFbOurwKOdVSLeqKqjjXH48D7DJb7SMOaTrIMoDke77gejbGqmq6qv6rqJPA6zlM6C0kuZBCU36yq95rhXs1RhuUZXwArk1ybZDHwILC745o0xpJclOTiU+fAPcCB0/+UtCC7gQ3N+QZgV4e1aMydCjWNB3Ce0gIlCfAGcLCqXpp1q1dzlP+UZJZmu5xXgEXAtqp6vuOSNMaSXMfgaTLABcBb9pTOVpK3gTXAUmAaeBb4ANgJTABHgPVV5R9t6Yxa+mkNgyUYBRwGHju13lQ6nSS3A58B+4GTzfAzDNYt92aOMixLkiRJLVyGIUmSJLUwLEuSJEktDMuSJElSC8OyJEmS1MKwLEmSJLUwLEuSJEktDMuSJElSC8OyJEmS1OJvAr8tkoYHAt8AAAAASUVORK5CYII=\n", 102 | "text/plain": [ 103 | "
" 104 | ] 105 | }, 106 | "metadata": { 107 | "needs_background": "light" 108 | }, 109 | "output_type": "display_data" 110 | } 111 | ], 112 | "source": [ 113 | "# 画自相关图和偏自相关图\n", 114 | "import statsmodels.api as sm\n", 115 | "fig = plt.figure(figsize=(12,8))\n", 116 | "ax1 = fig.add_subplot(211)\n", 117 | "ax2 = fig.add_subplot(212)\n", 118 | "fig = sm.graphics.tsa.plot_acf(data.values.squeeze(),lags=20,ax=ax1)\n", 119 | "fig = sm.graphics.tsa.plot_pacf(data,lags=20,ax=ax2)" 120 | ] 121 | }, 122 | { 123 | "cell_type": "code", 124 | "execution_count": 10, 125 | "metadata": {}, 126 | "outputs": [ 127 | { 128 | "name": "stdout", 129 | "output_type": "stream", 130 | "text": [ 131 | "const 3.431266\n", 132 | "ma.L1.y 0.568281\n", 133 | "dtype: float64\n" 134 | ] 135 | } 136 | ], 137 | "source": [ 138 | "# 建模,并输出模型的参数\n", 139 | "arma_mod = sm.tsa.ARMA(data,(0,1)).fit()\n", 140 | "print(arma_mod.params)" 141 | ] 142 | }, 143 | { 144 | "cell_type": "code", 145 | "execution_count": 9, 146 | "metadata": {}, 147 | "outputs": [ 148 | { 149 | "name": "stdout", 150 | "output_type": "stream", 151 | "text": [ 152 | "当p和q为,相应的bic值为: 0 0 150.50142110845002\n", 153 | "当p和q为,相应的bic值为: 0 1 138.58343295859865\n", 154 | "当p和q为,相应的bic值为: 1 0 142.3842854535385\n", 155 | "当p和q为,相应的bic值为: 1 1 142.02474655851884\n", 156 | "根据bic准则,选出最优的模型为: Results: ARMA\n", 157 | "==================================================================\n", 158 | "Model: ARMA BIC: 138.5834\n", 159 | "Dependent Variable: y Log-Likelihood: -63.485 \n", 160 | "Date: 2019-11-12 21:28 Scale: 1.0000 \n", 161 | "No. Observations: 48 Method: css-mle \n", 162 | "Df Model: 2 Sample: 0 \n", 163 | "Df Residuals: 46 8 \n", 164 | "Converged: 1.0000 S.D. of innovations: 0.904 \n", 165 | "No. Iterations: 5.0000 HQIC: 135.091 \n", 166 | "AIC: 132.9698 \n", 167 | "--------------------------------------------------------------------\n", 168 | " Coef. Std.Err. t P>|t| [0.025 0.975]\n", 169 | "--------------------------------------------------------------------\n", 170 | "const 3.4313 0.2032 16.8852 0.0000 3.0330 3.8296\n", 171 | "ma.L1.y 0.5683 0.1036 5.4848 0.0000 0.3652 0.7714\n", 172 | "--------------------------------------------------------------------------\n", 173 | " Real Imaginary Modulus Frequency\n", 174 | "--------------------------------------------------------------------------\n", 175 | "MA.1 -1.7597 0.0000 1.7597 0.5000\n", 176 | "==================================================================\n", 177 | "\n" 178 | ] 179 | } 180 | ], 181 | "source": [ 182 | "# 根据bic准则编写函数来推荐最优的模型:\n", 183 | "def SelectModel(data):\n", 184 | " best_model = sm.tsa.ARMA(data,(0,0)).fit()\n", 185 | " for i in range(2):\n", 186 | " for j in range(2):\n", 187 | " arma_mod = sm.tsa.ARMA(data,(i,j)).fit()\n", 188 | " print('当p和q为,相应的bic值为:',i,j,arma_mod.bic)\n", 189 | " if best_model.bic > arma_mod.bic :\n", 190 | " best_model = arma_mod\n", 191 | " print('根据bic准则,选出最优的模型为:',best_model.summary2())\n", 192 | " \n", 193 | "SelectModel(data)" 194 | ] 195 | }, 196 | { 197 | "cell_type": "code", 198 | "execution_count": 11, 199 | "metadata": {}, 200 | "outputs": [ 201 | { 202 | "data": { 203 | "text/plain": [ 204 | "NormaltestResult(statistic=1.7025872917313132, pvalue=0.4268623658785582)" 205 | ] 206 | }, 207 | "execution_count": 11, 208 | "metadata": {}, 209 | "output_type": "execute_result" 210 | } 211 | ], 212 | "source": [ 213 | "# 模型的检验\n", 214 | "# 原假设是,序列剩下的没被用来预测的部分的信息为白噪声\n", 215 | "# 若不拒绝原假设,则通过检验,模型显著\n", 216 | "from scipy import stats\n", 217 | "resid = arma_mod.resid\n", 218 | "stats.normaltest(resid)" 219 | ] 220 | }, 221 | { 222 | "cell_type": "code", 223 | "execution_count": 12, 224 | "metadata": {}, 225 | "outputs": [ 226 | { 227 | "name": "stdout", 228 | "output_type": "stream", 229 | "text": [ 230 | "48 3.576928\n", 231 | "49 3.431266\n", 232 | "50 3.431266\n", 233 | "51 3.431266\n", 234 | "52 3.431266\n", 235 | "53 3.431266\n", 236 | "dtype: float64\n" 237 | ] 238 | } 239 | ], 240 | "source": [ 241 | "predict_number = arma_mod.predict(len(data),len(data)+5)\n", 242 | "print(predict_number)" 243 | ] 244 | }, 245 | { 246 | "cell_type": "code", 247 | "execution_count": null, 248 | "metadata": {}, 249 | "outputs": [], 250 | "source": [] 251 | } 252 | ], 253 | "metadata": { 254 | "kernelspec": { 255 | "display_name": "Python 3", 256 | "language": "python", 257 | "name": "python3" 258 | }, 259 | "language_info": { 260 | "codemirror_mode": { 261 | "name": "ipython", 262 | "version": 3 263 | }, 264 | "file_extension": ".py", 265 | "mimetype": "text/x-python", 266 | "name": "python", 267 | "nbconvert_exporter": "python", 268 | "pygments_lexer": "ipython3", 269 | "version": "3.7.4" 270 | } 271 | }, 272 | "nbformat": 4, 273 | "nbformat_minor": 4 274 | } 275 | -------------------------------------------------------------------------------- /习题/~$序列分析第三章.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/习题/~$序列分析第三章.docx -------------------------------------------------------------------------------- /习题/时间序列分析第三章.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/习题/时间序列分析第三章.docx -------------------------------------------------------------------------------- /习题/时间序列分析第四章.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/习题/时间序列分析第四章.docx -------------------------------------------------------------------------------- /例题/.ipynb_checkpoints/例题2-5-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "##### 模型参数\n", 8 | "statsmodels.tsa.stattools.adfuller(x, maxlag=None, regression='c', autolag='AIC', store=False, regresults=False)[source]¶\n", 9 | " x: 序列,一维数组\n", 10 | " maxlag:差分次数\n", 11 | " regresion:{c:只有常量,\n", 12 | " ct:有常量项和趋势项,\n", 13 | " ctt:有常量项、线性和二次趋势项,\n", 14 | " nc:无任何选项}\n", 15 | " autolag:{aic or bic: default, then the number of lags is chosen to minimize the corresponding information criterium,\n", 16 | " None:use the maxlag,\n", 17 | " t-stat:based choice of maxlag. Starts with maxlag and drops a lag until the t-statistic on the last lag length is significant at the 95 % level.}" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 1, 23 | "metadata": {}, 24 | "outputs": [], 25 | "source": [ 26 | "import numpy as np\n", 27 | "import pandas as pd\n", 28 | "import pylab as plt\n", 29 | "import statsmodels.tsa.stattools as ts" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 2, 35 | "metadata": {}, 36 | "outputs": [], 37 | "source": [ 38 | "data = pd.read_csv('A1-6.csv',index_col=0)" 39 | ] 40 | }, 41 | { 42 | "cell_type": "code", 43 | "execution_count": 3, 44 | "metadata": {}, 45 | "outputs": [ 46 | { 47 | "data": { 48 | "image/png": "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\n", 49 | "text/plain": [ 50 | "
" 51 | ] 52 | }, 53 | "metadata": { 54 | "needs_background": "light" 55 | }, 56 | "output_type": "display_data" 57 | } 58 | ], 59 | "source": [ 60 | "data.plot()\n", 61 | "plt.show()" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": 4, 67 | "metadata": {}, 68 | "outputs": [ 69 | { 70 | "data": { 71 | "text/plain": [ 72 | "(-1.9780831094463414,\n", 73 | " 0.29626479074708634,\n", 74 | " 0,\n", 75 | " 89,\n", 76 | " {'1%': -3.506057133647011,\n", 77 | " '5%': -2.8946066061911946,\n", 78 | " '10%': -2.5844100201994697},\n", 79 | " 64.0325289732983)" 80 | ] 81 | }, 82 | "execution_count": 4, 83 | "metadata": {}, 84 | "output_type": "execute_result" 85 | } 86 | ], 87 | "source": [ 88 | "ts.adfuller(data['Suicide'],maxlag=1,regression='c')" 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "execution_count": null, 94 | "metadata": { 95 | "collapsed": true, 96 | "jupyter": { 97 | "outputs_hidden": true 98 | } 99 | }, 100 | "outputs": [], 101 | "source": [] 102 | }, 103 | { 104 | "cell_type": "code", 105 | "execution_count": null, 106 | "metadata": {}, 107 | "outputs": [], 108 | "source": [] 109 | } 110 | ], 111 | "metadata": { 112 | "kernelspec": { 113 | "display_name": "Python 3", 114 | "language": "python", 115 | "name": "python3" 116 | }, 117 | "language_info": { 118 | "codemirror_mode": { 119 | "name": "ipython", 120 | "version": 3 121 | }, 122 | "file_extension": ".py", 123 | "mimetype": "text/x-python", 124 | "name": "python", 125 | "nbconvert_exporter": "python", 126 | "pygments_lexer": "ipython3", 127 | "version": "3.7.4" 128 | } 129 | }, 130 | "nbformat": 4, 131 | "nbformat_minor": 4 132 | } 133 | -------------------------------------------------------------------------------- /例题/A1-6.csv: -------------------------------------------------------------------------------- 1 | Year,Suicide 2 | 1915,4.031636 3 | 1916,3.702076 4 | 1917,3.056176 5 | 1918,3.280707 6 | 1919,2.984728 7 | 1920,3.693712 8 | 1921,3.226317 9 | 1922,2.190349 10 | 1923,2.599515 11 | 1924,3.080288 12 | 1925,2.929672 13 | 1926,2.922548 14 | 1927,3.234943 15 | 1928,2.983081 16 | 1929,3.284389 17 | 1930,3.806511 18 | 1931,3.784579 19 | 1932,2.645654 20 | 1933,3.092081 21 | 1934,3.204859 22 | 1935,3.107225 23 | 1936,3.466909 24 | 1937,2.984404 25 | 1938,3.218072 26 | 1939,2.82731 27 | 1940,3.182049 28 | 1941,2.236319 29 | 1942,2.033218 30 | 1943,1.644804 31 | 1944,1.627971 32 | 1945,1.677559 33 | 1946,2.330828 34 | 1947,2.493615 35 | 1948,2.257172 36 | 1949,2.655517 37 | 1950,2.298655 38 | 1951,2.600402 39 | 1952,3.04523 40 | 1953,2.790583 41 | 1954,3.227052 42 | 1955,2.967479 43 | 1956,2.938817 44 | 1957,3.277961 45 | 1958,3.423985 46 | 1959,3.072646 47 | 1960,2.754253 48 | 1961,2.910431 49 | 1962,3.174369 50 | 1963,3.068387 51 | 1964,3.089543 52 | 1965,2.906654 53 | 1966,2.931161 54 | 1967,3.02566 55 | 1968,2.939551 56 | 1969,2.691019 57 | 1970,3.19812 58 | 1971,3.07639 59 | 1972,2.863873 60 | 1973,3.013802 61 | 1974,3.053364 62 | 1975,2.864753 63 | 1976,3.057062 64 | 1977,2.959365 65 | 1978,3.252258 66 | 1979,3.602988 67 | 1980,3.497704 68 | 1981,3.296867 69 | 1982,3.602417 70 | 1983,3.3001 71 | 1984,3.40193 72 | 1985,3.502591 73 | 1986,3.402348 74 | 1987,3.498551 75 | 1988,3.199823 76 | 1989,2.700064 77 | 1990,2.801034 78 | 1991,2.898628 79 | 1992,2.800854 80 | 1993,2.399942 81 | 1994,2.402724 82 | 1995,2.202331 83 | 1996,2.102594 84 | 1997,1.798293 85 | 1998,1.202484 86 | 1999,1.400201 87 | 2000,1.200832 88 | 2001,1.298083 89 | 2002,1.099742 90 | 2003,1.001377 91 | 2004,0.8361743 92 | -------------------------------------------------------------------------------- /例题/例题2-5.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "##### 模型参数\n", 8 | "statsmodels.tsa.stattools.adfuller(x, maxlag=None, regression='c', autolag='AIC', store=False, regresults=False)[source]¶\n", 9 | " x: 序列,一维数组\n", 10 | " maxlag:差分次数\n", 11 | " regresion:{c:只有常量,\n", 12 | " ct:有常量项和趋势项,\n", 13 | " ctt:有常量项、线性和二次趋势项,\n", 14 | " nc:无任何选项}\n", 15 | " autolag:{aic or bic: default, then the number of lags is chosen to minimize the corresponding information criterium,\n", 16 | " None:use the maxlag,\n", 17 | " t-stat:based choice of maxlag. Starts with maxlag and drops a lag until the t-statistic on the last lag length is significant at the 95 % level.}" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 1, 23 | "metadata": {}, 24 | "outputs": [], 25 | "source": [ 26 | "import numpy as np\n", 27 | "import pandas as pd\n", 28 | "import pylab as plt\n", 29 | "import statsmodels.tsa.stattools as ts" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 2, 35 | "metadata": {}, 36 | "outputs": [], 37 | "source": [ 38 | "data = pd.read_csv('A1-6.csv',index_col=0)" 39 | ] 40 | }, 41 | { 42 | "cell_type": "code", 43 | "execution_count": 3, 44 | "metadata": {}, 45 | "outputs": [ 46 | { 47 | "data": { 48 | "image/png": "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\n", 49 | "text/plain": [ 50 | "
" 51 | ] 52 | }, 53 | "metadata": { 54 | "needs_background": "light" 55 | }, 56 | "output_type": "display_data" 57 | } 58 | ], 59 | "source": [ 60 | "data.plot()\n", 61 | "plt.show()" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": 4, 67 | "metadata": {}, 68 | "outputs": [ 69 | { 70 | "data": { 71 | "text/plain": [ 72 | "(-1.9780831094463414,\n", 73 | " 0.29626479074708634,\n", 74 | " 0,\n", 75 | " 89,\n", 76 | " {'1%': -3.506057133647011,\n", 77 | " '5%': -2.8946066061911946,\n", 78 | " '10%': -2.5844100201994697},\n", 79 | " 64.0325289732983)" 80 | ] 81 | }, 82 | "execution_count": 4, 83 | "metadata": {}, 84 | "output_type": "execute_result" 85 | } 86 | ], 87 | "source": [ 88 | "ts.adfuller(data['Suicide'],maxlag=1,regression='c')" 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "execution_count": null, 94 | "metadata": { 95 | "collapsed": true, 96 | "jupyter": { 97 | "outputs_hidden": true 98 | } 99 | }, 100 | "outputs": [], 101 | "source": [] 102 | }, 103 | { 104 | "cell_type": "code", 105 | "execution_count": null, 106 | "metadata": {}, 107 | "outputs": [], 108 | "source": [] 109 | } 110 | ], 111 | "metadata": { 112 | "kernelspec": { 113 | "display_name": "Python 3", 114 | "language": "python", 115 | "name": "python3" 116 | }, 117 | "language_info": { 118 | "codemirror_mode": { 119 | "name": "ipython", 120 | "version": 3 121 | }, 122 | "file_extension": ".py", 123 | "mimetype": "text/x-python", 124 | "name": "python", 125 | "nbconvert_exporter": "python", 126 | "pygments_lexer": "ipython3", 127 | "version": "3.7.4" 128 | } 129 | }, 130 | "nbformat": 4, 131 | "nbformat_minor": 4 132 | } 133 | -------------------------------------------------------------------------------- /教材数据/A1_1.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_1.xlsx -------------------------------------------------------------------------------- /教材数据/A1_10.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_10.xlsx -------------------------------------------------------------------------------- /教材数据/A1_11.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_11.xlsx -------------------------------------------------------------------------------- /教材数据/A1_12.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_12.xlsx -------------------------------------------------------------------------------- /教材数据/A1_13.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_13.xlsx -------------------------------------------------------------------------------- /教材数据/A1_14.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_14.xlsx -------------------------------------------------------------------------------- /教材数据/A1_15.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_15.xlsx -------------------------------------------------------------------------------- /教材数据/A1_16.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_16.xlsx -------------------------------------------------------------------------------- /教材数据/A1_17.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_17.xlsx -------------------------------------------------------------------------------- /教材数据/A1_18.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_18.xlsx -------------------------------------------------------------------------------- /教材数据/A1_19.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_19.xlsx -------------------------------------------------------------------------------- /教材数据/A1_2.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_2.xlsx -------------------------------------------------------------------------------- /教材数据/A1_20.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_20.xlsx -------------------------------------------------------------------------------- /教材数据/A1_21.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_21.xlsx -------------------------------------------------------------------------------- /教材数据/A1_22.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_22.xlsx -------------------------------------------------------------------------------- /教材数据/A1_23.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_23.xlsx -------------------------------------------------------------------------------- /教材数据/A1_24.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_24.xlsx -------------------------------------------------------------------------------- /教材数据/A1_25.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_25.xlsx -------------------------------------------------------------------------------- /教材数据/A1_26.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_26.xlsx -------------------------------------------------------------------------------- /教材数据/A1_27.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_27.xlsx -------------------------------------------------------------------------------- /教材数据/A1_28.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_28.xlsx -------------------------------------------------------------------------------- /教材数据/A1_3.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_3.xlsx -------------------------------------------------------------------------------- /教材数据/A1_4.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_4.xlsx -------------------------------------------------------------------------------- /教材数据/A1_5.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_5.xlsx -------------------------------------------------------------------------------- /教材数据/A1_6.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_6.xlsx -------------------------------------------------------------------------------- /教材数据/A1_7.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_7.xlsx -------------------------------------------------------------------------------- /教材数据/A1_8.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_8.xlsx -------------------------------------------------------------------------------- /教材数据/A1_9.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huidudaozou/Time-Series/8f2004ed9b1532fcc573a96cbc224f1d631a06e0/教材数据/A1_9.xlsx -------------------------------------------------------------------------------- /课外1:bilibili video/在线浏览/Video+2.md: -------------------------------------------------------------------------------- 1 | 时间序列 2 | 时间戳 Timestamp 3 | 固定周期 period 4 | 时间间隔 interval 5 | 6 | ```python 7 | # pa.data_range() 可以指定开始时间与周期 8 | # H小时,D天,M月 9 | 10 | import pandas as pd 11 | rng = pd.date_range('2016/07/01',periods=10,freq='D') 12 | rng 13 | ``` 14 | 15 | 16 | 17 | 18 | DatetimeIndex(['2016-07-01', '2016-07-02', '2016-07-03', '2016-07-04', 19 | '2016-07-05', '2016-07-06', '2016-07-07', '2016-07-08', 20 | '2016-07-09', '2016-07-10'], 21 | dtype='datetime64[ns]', freq='D') 22 | 23 | 24 | 25 | 26 | ```python 27 | import numpy as np 28 | time = pd.Series(np.random.randn(20), 29 | index = pd.date_range('2016/01/01',periods = 20)) 30 | time 31 | ``` 32 | 33 | 34 | 35 | 36 | 2016-01-01 -0.834570 37 | 2016-01-02 -1.163830 38 | 2016-01-03 0.930881 39 | 2016-01-04 1.069605 40 | 2016-01-05 -0.168983 41 | 2016-01-06 -1.233419 42 | 2016-01-07 0.176762 43 | 2016-01-08 -0.862094 44 | 2016-01-09 0.665800 45 | 2016-01-10 0.826120 46 | 2016-01-11 -0.859111 47 | 2016-01-12 0.475664 48 | 2016-01-13 -0.599046 49 | 2016-01-14 1.936862 50 | 2016-01-15 -0.230649 51 | 2016-01-16 0.817754 52 | 2016-01-17 -1.103082 53 | 2016-01-18 1.120207 54 | 2016-01-19 0.702375 55 | 2016-01-20 1.039519 56 | Freq: D, dtype: float64 57 | 58 | 59 | 60 | 61 | ```python 62 | # 索引 63 | # 可以通过时间进行索引数据 64 | time['2016/01/01'] 65 | ``` 66 | 67 | 68 | 69 | 70 | -0.8345696469288153 71 | 72 | 73 | 74 | 75 | ```python 76 | # truncate 过滤 77 | time.truncate(before='2016/1/10') 78 | ``` 79 | 80 | 81 | 82 | 83 | 2016-01-10 0.826120 84 | 2016-01-11 -0.859111 85 | 2016-01-12 0.475664 86 | 2016-01-13 -0.599046 87 | 2016-01-14 1.936862 88 | 2016-01-15 -0.230649 89 | 2016-01-16 0.817754 90 | 2016-01-17 -1.103082 91 | 2016-01-18 1.120207 92 | 2016-01-19 0.702375 93 | 2016-01-20 1.039519 94 | Freq: D, dtype: float64 95 | 96 | 97 | 98 | 99 | ```python 100 | time.truncate(after='2016/1/10') 101 | ``` 102 | 103 | 104 | 105 | 106 | 2016-01-01 -0.834570 107 | 2016-01-02 -1.163830 108 | 2016-01-03 0.930881 109 | 2016-01-04 1.069605 110 | 2016-01-05 -0.168983 111 | 2016-01-06 -1.233419 112 | 2016-01-07 0.176762 113 | 2016-01-08 -0.862094 114 | 2016-01-09 0.665800 115 | 2016-01-10 0.826120 116 | Freq: D, dtype: float64 117 | 118 | 119 | 120 | 121 | ```python 122 | # 时间戳 123 | pd.Timestamp('2016/01/07') 124 | ``` 125 | 126 | 127 | 128 | 129 | Timestamp('2016-01-07 00:00:00') 130 | 131 | 132 | 133 | 134 | ```python 135 | # 时间戳可以指定更多的细节 136 | pd.Timestamp('2016/01/07 10:15') 137 | ``` 138 | 139 | 140 | 141 | 142 | Timestamp('2016-01-07 10:15:00') 143 | 144 | 145 | 146 | 147 | ```python 148 | # 时间区间 149 | pd.Period('2016/01') 150 | ``` 151 | 152 | 153 | 154 | 155 | Period('2016-01', 'M') 156 | 157 | 158 | 159 | 160 | ```python 161 | pd.Period('2016/01/01') 162 | ``` 163 | 164 | 165 | 166 | 167 | Period('2016-01-01', 'D') 168 | 169 | 170 | 171 | 172 | ```python 173 | # Time Offsets 174 | pd.Period('2016/01/01 10:10') + pd.Timedelta('1 day') 175 | ``` 176 | 177 | 178 | 179 | 180 | Period('2016-01-02 10:10', 'T') 181 | 182 | 183 | 184 | 185 | ```python 186 | pd.Period('2016/01/01 10:10:00') + pd.Timedelta('15s') 187 | ``` 188 | 189 | 190 | 191 | 192 | Period('2016-01-01 10:10:15', 'S') 193 | 194 | 195 | -------------------------------------------------------------------------------- /课外1:bilibili video/在线浏览/Video+3.md: -------------------------------------------------------------------------------- 1 | 数据重采样 2 | 时间数据由一个频率转换另一个频率 3 | 降采样 4 | 升采样 5 | 6 | ```python 7 | # 生成数据 8 | import pandas as pd 9 | import numpy as np 10 | 11 | rng = pd.date_range('2010/1/1',periods=90,freq='D') 12 | ts = pd.Series(np.random.randn(len(rng)),index = rng) 13 | ts.head() 14 | ``` 15 | 16 | 17 | 18 | 19 | 2010-01-01 -0.315557 20 | 2010-01-02 -0.292671 21 | 2010-01-03 -1.454163 22 | 2010-01-04 -0.699438 23 | 2010-01-05 -0.327882 24 | Freq: D, dtype: float64 25 | 26 | 27 | 28 | 29 | ```python 30 | # 降采样 31 | ts.resample('M').sum() 32 | ``` 33 | 34 | 35 | 36 | 37 | 2010-01-31 -0.706872 38 | 2010-02-28 -2.623465 39 | 2010-03-31 7.850712 40 | Freq: M, dtype: float64 41 | 42 | 43 | 44 | 45 | ```python 46 | ts.resample('3D').sum() 47 | ``` 48 | 49 | 50 | 51 | 52 | 2010-01-01 -2.062391 53 | 2010-01-04 -1.418866 54 | 2010-01-07 -1.355634 55 | 2010-01-10 1.984274 56 | 2010-01-13 -0.242152 57 | 2010-01-16 -0.998342 58 | 2010-01-19 -1.212635 59 | 2010-01-22 4.278305 60 | 2010-01-25 -0.617897 61 | 2010-01-28 1.518855 62 | 2010-01-31 -1.455297 63 | 2010-02-03 -0.830209 64 | 2010-02-06 -0.284017 65 | 2010-02-09 2.616404 66 | 2010-02-12 -0.611245 67 | 2010-02-15 -2.194572 68 | 2010-02-18 -2.519439 69 | 2010-02-21 -1.137647 70 | 2010-02-24 1.414765 71 | 2010-02-27 2.838949 72 | 2010-03-02 3.757437 73 | 2010-03-05 1.809160 74 | 2010-03-08 -0.409576 75 | 2010-03-11 1.416232 76 | 2010-03-14 1.826642 77 | 2010-03-17 -0.878111 78 | 2010-03-20 -1.070910 79 | 2010-03-23 -0.262653 80 | 2010-03-26 0.953572 81 | 2010-03-29 -0.332626 82 | Freq: 3D, dtype: float64 83 | 84 | 85 | 86 | 87 | ```python 88 | day3Ts = ts.resample('3D').mean() 89 | ``` 90 | 91 | 92 | ```python 93 | # 升采样 94 | print(day3Ts.resample('D').asfreq()) 95 | ``` 96 | 97 | 2010-01-01 -0.687464 98 | 2010-01-02 NaN 99 | 2010-01-03 NaN 100 | 2010-01-04 -0.472955 101 | 2010-01-05 NaN 102 | 2010-01-06 NaN 103 | 2010-01-07 -0.451878 104 | 2010-01-08 NaN 105 | 2010-01-09 NaN 106 | 2010-01-10 0.661425 107 | 2010-01-11 NaN 108 | 2010-01-12 NaN 109 | 2010-01-13 -0.080717 110 | 2010-01-14 NaN 111 | 2010-01-15 NaN 112 | 2010-01-16 -0.332781 113 | 2010-01-17 NaN 114 | 2010-01-18 NaN 115 | 2010-01-19 -0.404212 116 | 2010-01-20 NaN 117 | 2010-01-21 NaN 118 | 2010-01-22 1.426102 119 | 2010-01-23 NaN 120 | 2010-01-24 NaN 121 | 2010-01-25 -0.205966 122 | 2010-01-26 NaN 123 | 2010-01-27 NaN 124 | 2010-01-28 0.506285 125 | 2010-01-29 NaN 126 | 2010-01-30 NaN 127 | ... 128 | 2010-02-28 NaN 129 | 2010-03-01 NaN 130 | 2010-03-02 1.252479 131 | 2010-03-03 NaN 132 | 2010-03-04 NaN 133 | 2010-03-05 0.603053 134 | 2010-03-06 NaN 135 | 2010-03-07 NaN 136 | 2010-03-08 -0.136525 137 | 2010-03-09 NaN 138 | 2010-03-10 NaN 139 | 2010-03-11 0.472077 140 | 2010-03-12 NaN 141 | 2010-03-13 NaN 142 | 2010-03-14 0.608881 143 | 2010-03-15 NaN 144 | 2010-03-16 NaN 145 | 2010-03-17 -0.292704 146 | 2010-03-18 NaN 147 | 2010-03-19 NaN 148 | 2010-03-20 -0.356970 149 | 2010-03-21 NaN 150 | 2010-03-22 NaN 151 | 2010-03-23 -0.087551 152 | 2010-03-24 NaN 153 | 2010-03-25 NaN 154 | 2010-03-26 0.317857 155 | 2010-03-27 NaN 156 | 2010-03-28 NaN 157 | 2010-03-29 -0.110875 158 | Freq: D, Length: 88, dtype: float64 159 | 160 | 插值方式 161 | ffill 空值取前面的值 162 | bfill 空值取后面的值 163 | interpolate 线性取值 164 | 165 | ```python 166 | day3Ts.resample('D').ffill(1) #只对前面的一个空值填充 167 | ``` 168 | 169 | 170 | 171 | 172 | 2010-01-01 -0.687464 173 | 2010-01-02 -0.687464 174 | 2010-01-03 NaN 175 | 2010-01-04 -0.472955 176 | 2010-01-05 -0.472955 177 | 2010-01-06 NaN 178 | 2010-01-07 -0.451878 179 | 2010-01-08 -0.451878 180 | 2010-01-09 NaN 181 | 2010-01-10 0.661425 182 | 2010-01-11 0.661425 183 | 2010-01-12 NaN 184 | 2010-01-13 -0.080717 185 | 2010-01-14 -0.080717 186 | 2010-01-15 NaN 187 | 2010-01-16 -0.332781 188 | 2010-01-17 -0.332781 189 | 2010-01-18 NaN 190 | 2010-01-19 -0.404212 191 | 2010-01-20 -0.404212 192 | 2010-01-21 NaN 193 | 2010-01-22 1.426102 194 | 2010-01-23 1.426102 195 | 2010-01-24 NaN 196 | 2010-01-25 -0.205966 197 | 2010-01-26 -0.205966 198 | 2010-01-27 NaN 199 | 2010-01-28 0.506285 200 | 2010-01-29 0.506285 201 | 2010-01-30 NaN 202 | ... 203 | 2010-02-28 0.946316 204 | 2010-03-01 NaN 205 | 2010-03-02 1.252479 206 | 2010-03-03 1.252479 207 | 2010-03-04 NaN 208 | 2010-03-05 0.603053 209 | 2010-03-06 0.603053 210 | 2010-03-07 NaN 211 | 2010-03-08 -0.136525 212 | 2010-03-09 -0.136525 213 | 2010-03-10 NaN 214 | 2010-03-11 0.472077 215 | 2010-03-12 0.472077 216 | 2010-03-13 NaN 217 | 2010-03-14 0.608881 218 | 2010-03-15 0.608881 219 | 2010-03-16 NaN 220 | 2010-03-17 -0.292704 221 | 2010-03-18 -0.292704 222 | 2010-03-19 NaN 223 | 2010-03-20 -0.356970 224 | 2010-03-21 -0.356970 225 | 2010-03-22 NaN 226 | 2010-03-23 -0.087551 227 | 2010-03-24 -0.087551 228 | 2010-03-25 NaN 229 | 2010-03-26 0.317857 230 | 2010-03-27 0.317857 231 | 2010-03-28 NaN 232 | 2010-03-29 -0.110875 233 | Freq: D, Length: 88, dtype: float64 234 | 235 | 236 | 237 | 238 | ```python 239 | day3Ts.resample('D').ffill(2) #只对前面两个空值进行填充,这里都填完了 240 | ``` 241 | 242 | 243 | 244 | 245 | 2010-01-01 -0.687464 246 | 2010-01-02 -0.687464 247 | 2010-01-03 -0.687464 248 | 2010-01-04 -0.472955 249 | 2010-01-05 -0.472955 250 | 2010-01-06 -0.472955 251 | 2010-01-07 -0.451878 252 | 2010-01-08 -0.451878 253 | 2010-01-09 -0.451878 254 | 2010-01-10 0.661425 255 | 2010-01-11 0.661425 256 | 2010-01-12 0.661425 257 | 2010-01-13 -0.080717 258 | 2010-01-14 -0.080717 259 | 2010-01-15 -0.080717 260 | 2010-01-16 -0.332781 261 | 2010-01-17 -0.332781 262 | 2010-01-18 -0.332781 263 | 2010-01-19 -0.404212 264 | 2010-01-20 -0.404212 265 | 2010-01-21 -0.404212 266 | 2010-01-22 1.426102 267 | 2010-01-23 1.426102 268 | 2010-01-24 1.426102 269 | 2010-01-25 -0.205966 270 | 2010-01-26 -0.205966 271 | 2010-01-27 -0.205966 272 | 2010-01-28 0.506285 273 | 2010-01-29 0.506285 274 | 2010-01-30 0.506285 275 | ... 276 | 2010-02-28 0.946316 277 | 2010-03-01 0.946316 278 | 2010-03-02 1.252479 279 | 2010-03-03 1.252479 280 | 2010-03-04 1.252479 281 | 2010-03-05 0.603053 282 | 2010-03-06 0.603053 283 | 2010-03-07 0.603053 284 | 2010-03-08 -0.136525 285 | 2010-03-09 -0.136525 286 | 2010-03-10 -0.136525 287 | 2010-03-11 0.472077 288 | 2010-03-12 0.472077 289 | 2010-03-13 0.472077 290 | 2010-03-14 0.608881 291 | 2010-03-15 0.608881 292 | 2010-03-16 0.608881 293 | 2010-03-17 -0.292704 294 | 2010-03-18 -0.292704 295 | 2010-03-19 -0.292704 296 | 2010-03-20 -0.356970 297 | 2010-03-21 -0.356970 298 | 2010-03-22 -0.356970 299 | 2010-03-23 -0.087551 300 | 2010-03-24 -0.087551 301 | 2010-03-25 -0.087551 302 | 2010-03-26 0.317857 303 | 2010-03-27 0.317857 304 | 2010-03-28 0.317857 305 | 2010-03-29 -0.110875 306 | Freq: D, Length: 88, dtype: float64 307 | 308 | 309 | 310 | 311 | ```python 312 | day3Ts.resample('D').interpolate('linear') 313 | ``` 314 | 315 | 316 | 317 | 318 | 2010-01-01 -0.687464 319 | 2010-01-02 -0.615961 320 | 2010-01-03 -0.544458 321 | 2010-01-04 -0.472955 322 | 2010-01-05 -0.465930 323 | 2010-01-06 -0.458904 324 | 2010-01-07 -0.451878 325 | 2010-01-08 -0.080777 326 | 2010-01-09 0.290324 327 | 2010-01-10 0.661425 328 | 2010-01-11 0.414044 329 | 2010-01-12 0.166663 330 | 2010-01-13 -0.080717 331 | 2010-01-14 -0.164738 332 | 2010-01-15 -0.248760 333 | 2010-01-16 -0.332781 334 | 2010-01-17 -0.356591 335 | 2010-01-18 -0.380401 336 | 2010-01-19 -0.404212 337 | 2010-01-20 0.205893 338 | 2010-01-21 0.815997 339 | 2010-01-22 1.426102 340 | 2010-01-23 0.882079 341 | 2010-01-24 0.338057 342 | 2010-01-25 -0.205966 343 | 2010-01-26 0.031451 344 | 2010-01-27 0.268868 345 | 2010-01-28 0.506285 346 | 2010-01-29 0.175824 347 | 2010-01-30 -0.154638 348 | ... 349 | 2010-02-28 1.048371 350 | 2010-03-01 1.150425 351 | 2010-03-02 1.252479 352 | 2010-03-03 1.036004 353 | 2010-03-04 0.819528 354 | 2010-03-05 0.603053 355 | 2010-03-06 0.356527 356 | 2010-03-07 0.110001 357 | 2010-03-08 -0.136525 358 | 2010-03-09 0.066342 359 | 2010-03-10 0.269210 360 | 2010-03-11 0.472077 361 | 2010-03-12 0.517679 362 | 2010-03-13 0.563280 363 | 2010-03-14 0.608881 364 | 2010-03-15 0.308353 365 | 2010-03-16 0.007824 366 | 2010-03-17 -0.292704 367 | 2010-03-18 -0.314126 368 | 2010-03-19 -0.335548 369 | 2010-03-20 -0.356970 370 | 2010-03-21 -0.267164 371 | 2010-03-22 -0.177357 372 | 2010-03-23 -0.087551 373 | 2010-03-24 0.047585 374 | 2010-03-25 0.182721 375 | 2010-03-26 0.317857 376 | 2010-03-27 0.174946 377 | 2010-03-28 0.032036 378 | 2010-03-29 -0.110875 379 | Freq: D, Length: 88, dtype: float64 380 | 381 | 382 | -------------------------------------------------------------------------------- /课外1:bilibili video/源码/.ipynb_checkpoints/Video 2-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "raw", 5 | "metadata": {}, 6 | "source": [ 7 | "时间序列\n", 8 | "时间戳 Timestamp\n", 9 | "固定周期 period\n", 10 | "时间间隔 interval" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 3, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "data": { 20 | "text/plain": [ 21 | "DatetimeIndex(['2016-07-01', '2016-07-02', '2016-07-03', '2016-07-04',\n", 22 | " '2016-07-05', '2016-07-06', '2016-07-07', '2016-07-08',\n", 23 | " '2016-07-09', '2016-07-10'],\n", 24 | " dtype='datetime64[ns]', freq='D')" 25 | ] 26 | }, 27 | "execution_count": 3, 28 | "metadata": {}, 29 | "output_type": "execute_result" 30 | } 31 | ], 32 | "source": [ 33 | "# pa.data_range() 可以指定开始时间与周期\n", 34 | "# H小时,D天,M月\n", 35 | "\n", 36 | "import pandas as pd\n", 37 | "rng = pd.date_range('2016/07/01',periods=10,freq='D')\n", 38 | "rng" 39 | ] 40 | }, 41 | { 42 | "cell_type": "code", 43 | "execution_count": 7, 44 | "metadata": {}, 45 | "outputs": [ 46 | { 47 | "data": { 48 | "text/plain": [ 49 | "2016-01-01 -0.834570\n", 50 | "2016-01-02 -1.163830\n", 51 | "2016-01-03 0.930881\n", 52 | "2016-01-04 1.069605\n", 53 | "2016-01-05 -0.168983\n", 54 | "2016-01-06 -1.233419\n", 55 | "2016-01-07 0.176762\n", 56 | "2016-01-08 -0.862094\n", 57 | "2016-01-09 0.665800\n", 58 | "2016-01-10 0.826120\n", 59 | "2016-01-11 -0.859111\n", 60 | "2016-01-12 0.475664\n", 61 | "2016-01-13 -0.599046\n", 62 | "2016-01-14 1.936862\n", 63 | "2016-01-15 -0.230649\n", 64 | "2016-01-16 0.817754\n", 65 | "2016-01-17 -1.103082\n", 66 | "2016-01-18 1.120207\n", 67 | "2016-01-19 0.702375\n", 68 | "2016-01-20 1.039519\n", 69 | "Freq: D, dtype: float64" 70 | ] 71 | }, 72 | "execution_count": 7, 73 | "metadata": {}, 74 | "output_type": "execute_result" 75 | } 76 | ], 77 | "source": [ 78 | "import numpy as np\n", 79 | "time = pd.Series(np.random.randn(20),\n", 80 | " index = pd.date_range('2016/01/01',periods = 20))\n", 81 | "time" 82 | ] 83 | }, 84 | { 85 | "cell_type": "code", 86 | "execution_count": 18, 87 | "metadata": {}, 88 | "outputs": [ 89 | { 90 | "data": { 91 | "text/plain": [ 92 | "-0.8345696469288153" 93 | ] 94 | }, 95 | "execution_count": 18, 96 | "metadata": {}, 97 | "output_type": "execute_result" 98 | } 99 | ], 100 | "source": [ 101 | "# 索引\n", 102 | "# 可以通过时间进行索引数据\n", 103 | "time['2016/01/01']" 104 | ] 105 | }, 106 | { 107 | "cell_type": "code", 108 | "execution_count": 19, 109 | "metadata": {}, 110 | "outputs": [ 111 | { 112 | "data": { 113 | "text/plain": [ 114 | "2016-01-10 0.826120\n", 115 | "2016-01-11 -0.859111\n", 116 | "2016-01-12 0.475664\n", 117 | "2016-01-13 -0.599046\n", 118 | "2016-01-14 1.936862\n", 119 | "2016-01-15 -0.230649\n", 120 | "2016-01-16 0.817754\n", 121 | "2016-01-17 -1.103082\n", 122 | "2016-01-18 1.120207\n", 123 | "2016-01-19 0.702375\n", 124 | "2016-01-20 1.039519\n", 125 | "Freq: D, dtype: float64" 126 | ] 127 | }, 128 | "execution_count": 19, 129 | "metadata": {}, 130 | "output_type": "execute_result" 131 | } 132 | ], 133 | "source": [ 134 | "# truncate 过滤\n", 135 | "time.truncate(before='2016/1/10')" 136 | ] 137 | }, 138 | { 139 | "cell_type": "code", 140 | "execution_count": 20, 141 | "metadata": {}, 142 | "outputs": [ 143 | { 144 | "data": { 145 | "text/plain": [ 146 | "2016-01-01 -0.834570\n", 147 | "2016-01-02 -1.163830\n", 148 | "2016-01-03 0.930881\n", 149 | "2016-01-04 1.069605\n", 150 | "2016-01-05 -0.168983\n", 151 | "2016-01-06 -1.233419\n", 152 | "2016-01-07 0.176762\n", 153 | "2016-01-08 -0.862094\n", 154 | "2016-01-09 0.665800\n", 155 | "2016-01-10 0.826120\n", 156 | "Freq: D, dtype: float64" 157 | ] 158 | }, 159 | "execution_count": 20, 160 | "metadata": {}, 161 | "output_type": "execute_result" 162 | } 163 | ], 164 | "source": [ 165 | "time.truncate(after='2016/1/10')" 166 | ] 167 | }, 168 | { 169 | "cell_type": "code", 170 | "execution_count": 21, 171 | "metadata": {}, 172 | "outputs": [ 173 | { 174 | "data": { 175 | "text/plain": [ 176 | "Timestamp('2016-01-07 00:00:00')" 177 | ] 178 | }, 179 | "execution_count": 21, 180 | "metadata": {}, 181 | "output_type": "execute_result" 182 | } 183 | ], 184 | "source": [ 185 | "# 时间戳\n", 186 | "pd.Timestamp('2016/01/07')" 187 | ] 188 | }, 189 | { 190 | "cell_type": "code", 191 | "execution_count": 22, 192 | "metadata": {}, 193 | "outputs": [ 194 | { 195 | "data": { 196 | "text/plain": [ 197 | "Timestamp('2016-01-07 10:15:00')" 198 | ] 199 | }, 200 | "execution_count": 22, 201 | "metadata": {}, 202 | "output_type": "execute_result" 203 | } 204 | ], 205 | "source": [ 206 | "# 时间戳可以指定更多的细节\n", 207 | "pd.Timestamp('2016/01/07 10:15')" 208 | ] 209 | }, 210 | { 211 | "cell_type": "code", 212 | "execution_count": 23, 213 | "metadata": {}, 214 | "outputs": [ 215 | { 216 | "data": { 217 | "text/plain": [ 218 | "Period('2016-01', 'M')" 219 | ] 220 | }, 221 | "execution_count": 23, 222 | "metadata": {}, 223 | "output_type": "execute_result" 224 | } 225 | ], 226 | "source": [ 227 | "# 时间区间\n", 228 | "pd.Period('2016/01')" 229 | ] 230 | }, 231 | { 232 | "cell_type": "code", 233 | "execution_count": 24, 234 | "metadata": {}, 235 | "outputs": [ 236 | { 237 | "data": { 238 | "text/plain": [ 239 | "Period('2016-01-01', 'D')" 240 | ] 241 | }, 242 | "execution_count": 24, 243 | "metadata": {}, 244 | "output_type": "execute_result" 245 | } 246 | ], 247 | "source": [ 248 | "pd.Period('2016/01/01')" 249 | ] 250 | }, 251 | { 252 | "cell_type": "code", 253 | "execution_count": 25, 254 | "metadata": {}, 255 | "outputs": [ 256 | { 257 | "data": { 258 | "text/plain": [ 259 | "Period('2016-01-02 10:10', 'T')" 260 | ] 261 | }, 262 | "execution_count": 25, 263 | "metadata": {}, 264 | "output_type": "execute_result" 265 | } 266 | ], 267 | "source": [ 268 | "# Time Offsets\n", 269 | "pd.Period('2016/01/01 10:10') + pd.Timedelta('1 day')" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": 29, 275 | "metadata": {}, 276 | "outputs": [ 277 | { 278 | "data": { 279 | "text/plain": [ 280 | "Period('2016-01-01 10:10:15', 'S')" 281 | ] 282 | }, 283 | "execution_count": 29, 284 | "metadata": {}, 285 | "output_type": "execute_result" 286 | } 287 | ], 288 | "source": [ 289 | "pd.Period('2016/01/01 10:10:00') + pd.Timedelta('15s')" 290 | ] 291 | }, 292 | { 293 | "cell_type": "code", 294 | "execution_count": null, 295 | "metadata": { 296 | "collapsed": true 297 | }, 298 | "outputs": [], 299 | "source": [] 300 | } 301 | ], 302 | "metadata": { 303 | "kernelspec": { 304 | "display_name": "Python 3", 305 | "language": "python", 306 | "name": "python3" 307 | }, 308 | "language_info": { 309 | "codemirror_mode": { 310 | "name": "ipython", 311 | "version": 3 312 | }, 313 | "file_extension": ".py", 314 | "mimetype": "text/x-python", 315 | "name": "python", 316 | "nbconvert_exporter": "python", 317 | "pygments_lexer": "ipython3", 318 | "version": "3.6.3" 319 | } 320 | }, 321 | "nbformat": 4, 322 | "nbformat_minor": 2 323 | } 324 | -------------------------------------------------------------------------------- /课外1:bilibili video/源码/.ipynb_checkpoints/Video 3-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "raw", 5 | "metadata": {}, 6 | "source": [ 7 | "数据重采样\n", 8 | " 时间数据由一个频率转换另一个频率\n", 9 | " 降采样\n", 10 | " 升采样" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 1, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "data": { 20 | "text/plain": [ 21 | "2010-01-01 -0.315557\n", 22 | "2010-01-02 -0.292671\n", 23 | "2010-01-03 -1.454163\n", 24 | "2010-01-04 -0.699438\n", 25 | "2010-01-05 -0.327882\n", 26 | "Freq: D, dtype: float64" 27 | ] 28 | }, 29 | "execution_count": 1, 30 | "metadata": {}, 31 | "output_type": "execute_result" 32 | } 33 | ], 34 | "source": [ 35 | "# 生成数据\n", 36 | "import pandas as pd\n", 37 | "import numpy as np\n", 38 | "\n", 39 | "rng = pd.date_range('2010/1/1',periods=90,freq='D')\n", 40 | "ts = pd.Series(np.random.randn(len(rng)),index = rng)\n", 41 | "ts.head()" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 2, 47 | "metadata": {}, 48 | "outputs": [ 49 | { 50 | "data": { 51 | "text/plain": [ 52 | "2010-01-31 -0.706872\n", 53 | "2010-02-28 -2.623465\n", 54 | "2010-03-31 7.850712\n", 55 | "Freq: M, dtype: float64" 56 | ] 57 | }, 58 | "execution_count": 2, 59 | "metadata": {}, 60 | "output_type": "execute_result" 61 | } 62 | ], 63 | "source": [ 64 | "# 降采样\n", 65 | "ts.resample('M').sum()" 66 | ] 67 | }, 68 | { 69 | "cell_type": "code", 70 | "execution_count": 4, 71 | "metadata": {}, 72 | "outputs": [ 73 | { 74 | "data": { 75 | "text/plain": [ 76 | "2010-01-01 -2.062391\n", 77 | "2010-01-04 -1.418866\n", 78 | "2010-01-07 -1.355634\n", 79 | "2010-01-10 1.984274\n", 80 | "2010-01-13 -0.242152\n", 81 | "2010-01-16 -0.998342\n", 82 | "2010-01-19 -1.212635\n", 83 | "2010-01-22 4.278305\n", 84 | "2010-01-25 -0.617897\n", 85 | "2010-01-28 1.518855\n", 86 | "2010-01-31 -1.455297\n", 87 | "2010-02-03 -0.830209\n", 88 | "2010-02-06 -0.284017\n", 89 | "2010-02-09 2.616404\n", 90 | "2010-02-12 -0.611245\n", 91 | "2010-02-15 -2.194572\n", 92 | "2010-02-18 -2.519439\n", 93 | "2010-02-21 -1.137647\n", 94 | "2010-02-24 1.414765\n", 95 | "2010-02-27 2.838949\n", 96 | "2010-03-02 3.757437\n", 97 | "2010-03-05 1.809160\n", 98 | "2010-03-08 -0.409576\n", 99 | "2010-03-11 1.416232\n", 100 | "2010-03-14 1.826642\n", 101 | "2010-03-17 -0.878111\n", 102 | "2010-03-20 -1.070910\n", 103 | "2010-03-23 -0.262653\n", 104 | "2010-03-26 0.953572\n", 105 | "2010-03-29 -0.332626\n", 106 | "Freq: 3D, dtype: float64" 107 | ] 108 | }, 109 | "execution_count": 4, 110 | "metadata": {}, 111 | "output_type": "execute_result" 112 | } 113 | ], 114 | "source": [ 115 | "ts.resample('3D').sum()" 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 5, 121 | "metadata": { 122 | "collapsed": true 123 | }, 124 | "outputs": [], 125 | "source": [ 126 | "day3Ts = ts.resample('3D').mean()" 127 | ] 128 | }, 129 | { 130 | "cell_type": "code", 131 | "execution_count": 6, 132 | "metadata": {}, 133 | "outputs": [ 134 | { 135 | "name": "stdout", 136 | "output_type": "stream", 137 | "text": [ 138 | "2010-01-01 -0.687464\n", 139 | "2010-01-02 NaN\n", 140 | "2010-01-03 NaN\n", 141 | "2010-01-04 -0.472955\n", 142 | "2010-01-05 NaN\n", 143 | "2010-01-06 NaN\n", 144 | "2010-01-07 -0.451878\n", 145 | "2010-01-08 NaN\n", 146 | "2010-01-09 NaN\n", 147 | "2010-01-10 0.661425\n", 148 | "2010-01-11 NaN\n", 149 | "2010-01-12 NaN\n", 150 | "2010-01-13 -0.080717\n", 151 | "2010-01-14 NaN\n", 152 | "2010-01-15 NaN\n", 153 | "2010-01-16 -0.332781\n", 154 | "2010-01-17 NaN\n", 155 | "2010-01-18 NaN\n", 156 | "2010-01-19 -0.404212\n", 157 | "2010-01-20 NaN\n", 158 | "2010-01-21 NaN\n", 159 | "2010-01-22 1.426102\n", 160 | "2010-01-23 NaN\n", 161 | "2010-01-24 NaN\n", 162 | "2010-01-25 -0.205966\n", 163 | "2010-01-26 NaN\n", 164 | "2010-01-27 NaN\n", 165 | "2010-01-28 0.506285\n", 166 | "2010-01-29 NaN\n", 167 | "2010-01-30 NaN\n", 168 | " ... \n", 169 | "2010-02-28 NaN\n", 170 | "2010-03-01 NaN\n", 171 | "2010-03-02 1.252479\n", 172 | "2010-03-03 NaN\n", 173 | "2010-03-04 NaN\n", 174 | "2010-03-05 0.603053\n", 175 | "2010-03-06 NaN\n", 176 | "2010-03-07 NaN\n", 177 | "2010-03-08 -0.136525\n", 178 | "2010-03-09 NaN\n", 179 | "2010-03-10 NaN\n", 180 | "2010-03-11 0.472077\n", 181 | "2010-03-12 NaN\n", 182 | "2010-03-13 NaN\n", 183 | "2010-03-14 0.608881\n", 184 | "2010-03-15 NaN\n", 185 | "2010-03-16 NaN\n", 186 | "2010-03-17 -0.292704\n", 187 | "2010-03-18 NaN\n", 188 | "2010-03-19 NaN\n", 189 | "2010-03-20 -0.356970\n", 190 | "2010-03-21 NaN\n", 191 | "2010-03-22 NaN\n", 192 | "2010-03-23 -0.087551\n", 193 | "2010-03-24 NaN\n", 194 | "2010-03-25 NaN\n", 195 | "2010-03-26 0.317857\n", 196 | "2010-03-27 NaN\n", 197 | "2010-03-28 NaN\n", 198 | "2010-03-29 -0.110875\n", 199 | "Freq: D, Length: 88, dtype: float64\n" 200 | ] 201 | } 202 | ], 203 | "source": [ 204 | "# 升采样\n", 205 | "print(day3Ts.resample('D').asfreq())" 206 | ] 207 | }, 208 | { 209 | "cell_type": "raw", 210 | "metadata": {}, 211 | "source": [ 212 | "插值方式\n", 213 | " ffill 空值取前面的值\n", 214 | " bfill 空值取后面的值\n", 215 | " interpolate 线性取值" 216 | ] 217 | }, 218 | { 219 | "cell_type": "code", 220 | "execution_count": 7, 221 | "metadata": {}, 222 | "outputs": [ 223 | { 224 | "data": { 225 | "text/plain": [ 226 | "2010-01-01 -0.687464\n", 227 | "2010-01-02 -0.687464\n", 228 | "2010-01-03 NaN\n", 229 | "2010-01-04 -0.472955\n", 230 | "2010-01-05 -0.472955\n", 231 | "2010-01-06 NaN\n", 232 | "2010-01-07 -0.451878\n", 233 | "2010-01-08 -0.451878\n", 234 | "2010-01-09 NaN\n", 235 | "2010-01-10 0.661425\n", 236 | "2010-01-11 0.661425\n", 237 | "2010-01-12 NaN\n", 238 | "2010-01-13 -0.080717\n", 239 | "2010-01-14 -0.080717\n", 240 | "2010-01-15 NaN\n", 241 | "2010-01-16 -0.332781\n", 242 | "2010-01-17 -0.332781\n", 243 | "2010-01-18 NaN\n", 244 | "2010-01-19 -0.404212\n", 245 | "2010-01-20 -0.404212\n", 246 | "2010-01-21 NaN\n", 247 | "2010-01-22 1.426102\n", 248 | "2010-01-23 1.426102\n", 249 | "2010-01-24 NaN\n", 250 | "2010-01-25 -0.205966\n", 251 | "2010-01-26 -0.205966\n", 252 | "2010-01-27 NaN\n", 253 | "2010-01-28 0.506285\n", 254 | "2010-01-29 0.506285\n", 255 | "2010-01-30 NaN\n", 256 | " ... \n", 257 | "2010-02-28 0.946316\n", 258 | "2010-03-01 NaN\n", 259 | "2010-03-02 1.252479\n", 260 | "2010-03-03 1.252479\n", 261 | "2010-03-04 NaN\n", 262 | "2010-03-05 0.603053\n", 263 | "2010-03-06 0.603053\n", 264 | "2010-03-07 NaN\n", 265 | "2010-03-08 -0.136525\n", 266 | "2010-03-09 -0.136525\n", 267 | "2010-03-10 NaN\n", 268 | "2010-03-11 0.472077\n", 269 | "2010-03-12 0.472077\n", 270 | "2010-03-13 NaN\n", 271 | "2010-03-14 0.608881\n", 272 | "2010-03-15 0.608881\n", 273 | "2010-03-16 NaN\n", 274 | "2010-03-17 -0.292704\n", 275 | "2010-03-18 -0.292704\n", 276 | "2010-03-19 NaN\n", 277 | "2010-03-20 -0.356970\n", 278 | "2010-03-21 -0.356970\n", 279 | "2010-03-22 NaN\n", 280 | "2010-03-23 -0.087551\n", 281 | "2010-03-24 -0.087551\n", 282 | "2010-03-25 NaN\n", 283 | "2010-03-26 0.317857\n", 284 | "2010-03-27 0.317857\n", 285 | "2010-03-28 NaN\n", 286 | "2010-03-29 -0.110875\n", 287 | "Freq: D, Length: 88, dtype: float64" 288 | ] 289 | }, 290 | "execution_count": 7, 291 | "metadata": {}, 292 | "output_type": "execute_result" 293 | } 294 | ], 295 | "source": [ 296 | "day3Ts.resample('D').ffill(1) #只对前面的一个空值填充" 297 | ] 298 | }, 299 | { 300 | "cell_type": "code", 301 | "execution_count": 8, 302 | "metadata": {}, 303 | "outputs": [ 304 | { 305 | "data": { 306 | "text/plain": [ 307 | "2010-01-01 -0.687464\n", 308 | "2010-01-02 -0.687464\n", 309 | "2010-01-03 -0.687464\n", 310 | "2010-01-04 -0.472955\n", 311 | "2010-01-05 -0.472955\n", 312 | "2010-01-06 -0.472955\n", 313 | "2010-01-07 -0.451878\n", 314 | "2010-01-08 -0.451878\n", 315 | "2010-01-09 -0.451878\n", 316 | "2010-01-10 0.661425\n", 317 | "2010-01-11 0.661425\n", 318 | "2010-01-12 0.661425\n", 319 | "2010-01-13 -0.080717\n", 320 | "2010-01-14 -0.080717\n", 321 | "2010-01-15 -0.080717\n", 322 | "2010-01-16 -0.332781\n", 323 | "2010-01-17 -0.332781\n", 324 | "2010-01-18 -0.332781\n", 325 | "2010-01-19 -0.404212\n", 326 | "2010-01-20 -0.404212\n", 327 | "2010-01-21 -0.404212\n", 328 | "2010-01-22 1.426102\n", 329 | "2010-01-23 1.426102\n", 330 | "2010-01-24 1.426102\n", 331 | "2010-01-25 -0.205966\n", 332 | "2010-01-26 -0.205966\n", 333 | "2010-01-27 -0.205966\n", 334 | "2010-01-28 0.506285\n", 335 | "2010-01-29 0.506285\n", 336 | "2010-01-30 0.506285\n", 337 | " ... \n", 338 | "2010-02-28 0.946316\n", 339 | "2010-03-01 0.946316\n", 340 | "2010-03-02 1.252479\n", 341 | "2010-03-03 1.252479\n", 342 | "2010-03-04 1.252479\n", 343 | "2010-03-05 0.603053\n", 344 | "2010-03-06 0.603053\n", 345 | "2010-03-07 0.603053\n", 346 | "2010-03-08 -0.136525\n", 347 | "2010-03-09 -0.136525\n", 348 | "2010-03-10 -0.136525\n", 349 | "2010-03-11 0.472077\n", 350 | "2010-03-12 0.472077\n", 351 | "2010-03-13 0.472077\n", 352 | "2010-03-14 0.608881\n", 353 | "2010-03-15 0.608881\n", 354 | "2010-03-16 0.608881\n", 355 | "2010-03-17 -0.292704\n", 356 | "2010-03-18 -0.292704\n", 357 | "2010-03-19 -0.292704\n", 358 | "2010-03-20 -0.356970\n", 359 | "2010-03-21 -0.356970\n", 360 | "2010-03-22 -0.356970\n", 361 | "2010-03-23 -0.087551\n", 362 | "2010-03-24 -0.087551\n", 363 | "2010-03-25 -0.087551\n", 364 | "2010-03-26 0.317857\n", 365 | "2010-03-27 0.317857\n", 366 | "2010-03-28 0.317857\n", 367 | "2010-03-29 -0.110875\n", 368 | "Freq: D, Length: 88, dtype: float64" 369 | ] 370 | }, 371 | "execution_count": 8, 372 | "metadata": {}, 373 | "output_type": "execute_result" 374 | } 375 | ], 376 | "source": [ 377 | "day3Ts.resample('D').ffill(2) #只对前面两个空值进行填充,这里都填完了" 378 | ] 379 | }, 380 | { 381 | "cell_type": "code", 382 | "execution_count": 9, 383 | "metadata": {}, 384 | "outputs": [ 385 | { 386 | "data": { 387 | "text/plain": [ 388 | "2010-01-01 -0.687464\n", 389 | "2010-01-02 -0.615961\n", 390 | "2010-01-03 -0.544458\n", 391 | "2010-01-04 -0.472955\n", 392 | "2010-01-05 -0.465930\n", 393 | "2010-01-06 -0.458904\n", 394 | "2010-01-07 -0.451878\n", 395 | "2010-01-08 -0.080777\n", 396 | "2010-01-09 0.290324\n", 397 | "2010-01-10 0.661425\n", 398 | "2010-01-11 0.414044\n", 399 | "2010-01-12 0.166663\n", 400 | "2010-01-13 -0.080717\n", 401 | "2010-01-14 -0.164738\n", 402 | "2010-01-15 -0.248760\n", 403 | "2010-01-16 -0.332781\n", 404 | "2010-01-17 -0.356591\n", 405 | "2010-01-18 -0.380401\n", 406 | "2010-01-19 -0.404212\n", 407 | "2010-01-20 0.205893\n", 408 | "2010-01-21 0.815997\n", 409 | "2010-01-22 1.426102\n", 410 | "2010-01-23 0.882079\n", 411 | "2010-01-24 0.338057\n", 412 | "2010-01-25 -0.205966\n", 413 | "2010-01-26 0.031451\n", 414 | "2010-01-27 0.268868\n", 415 | "2010-01-28 0.506285\n", 416 | "2010-01-29 0.175824\n", 417 | "2010-01-30 -0.154638\n", 418 | " ... \n", 419 | "2010-02-28 1.048371\n", 420 | "2010-03-01 1.150425\n", 421 | "2010-03-02 1.252479\n", 422 | "2010-03-03 1.036004\n", 423 | "2010-03-04 0.819528\n", 424 | "2010-03-05 0.603053\n", 425 | "2010-03-06 0.356527\n", 426 | "2010-03-07 0.110001\n", 427 | "2010-03-08 -0.136525\n", 428 | "2010-03-09 0.066342\n", 429 | "2010-03-10 0.269210\n", 430 | "2010-03-11 0.472077\n", 431 | "2010-03-12 0.517679\n", 432 | "2010-03-13 0.563280\n", 433 | "2010-03-14 0.608881\n", 434 | "2010-03-15 0.308353\n", 435 | "2010-03-16 0.007824\n", 436 | "2010-03-17 -0.292704\n", 437 | "2010-03-18 -0.314126\n", 438 | "2010-03-19 -0.335548\n", 439 | "2010-03-20 -0.356970\n", 440 | "2010-03-21 -0.267164\n", 441 | "2010-03-22 -0.177357\n", 442 | "2010-03-23 -0.087551\n", 443 | "2010-03-24 0.047585\n", 444 | "2010-03-25 0.182721\n", 445 | "2010-03-26 0.317857\n", 446 | "2010-03-27 0.174946\n", 447 | "2010-03-28 0.032036\n", 448 | "2010-03-29 -0.110875\n", 449 | "Freq: D, Length: 88, dtype: float64" 450 | ] 451 | }, 452 | "execution_count": 9, 453 | "metadata": {}, 454 | "output_type": "execute_result" 455 | } 456 | ], 457 | "source": [ 458 | "day3Ts.resample('D').interpolate('linear')" 459 | ] 460 | }, 461 | { 462 | "cell_type": "code", 463 | "execution_count": null, 464 | "metadata": { 465 | "collapsed": true 466 | }, 467 | "outputs": [], 468 | "source": [] 469 | } 470 | ], 471 | "metadata": { 472 | "kernelspec": { 473 | "display_name": "Python 3", 474 | "language": "python", 475 | "name": "python3" 476 | }, 477 | "language_info": { 478 | "codemirror_mode": { 479 | "name": "ipython", 480 | "version": 3 481 | }, 482 | "file_extension": ".py", 483 | "mimetype": "text/x-python", 484 | "name": "python", 485 | "nbconvert_exporter": "python", 486 | "pygments_lexer": "ipython3", 487 | "version": "3.6.3" 488 | } 489 | }, 490 | "nbformat": 4, 491 | "nbformat_minor": 2 492 | } 493 | -------------------------------------------------------------------------------- /课外1:bilibili video/源码/Video 2.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "raw", 5 | "metadata": {}, 6 | "source": [ 7 | "时间序列\n", 8 | "时间戳 Timestamp\n", 9 | "固定周期 period\n", 10 | "时间间隔 interval" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 3, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "data": { 20 | "text/plain": [ 21 | "DatetimeIndex(['2016-07-01', '2016-07-02', '2016-07-03', '2016-07-04',\n", 22 | " '2016-07-05', '2016-07-06', '2016-07-07', '2016-07-08',\n", 23 | " '2016-07-09', '2016-07-10'],\n", 24 | " dtype='datetime64[ns]', freq='D')" 25 | ] 26 | }, 27 | "execution_count": 3, 28 | "metadata": {}, 29 | "output_type": "execute_result" 30 | } 31 | ], 32 | "source": [ 33 | "# pa.data_range() 可以指定开始时间与周期\n", 34 | "# H小时,D天,M月\n", 35 | "\n", 36 | "import pandas as pd\n", 37 | "rng = pd.date_range('2016/07/01',periods=10,freq='D')\n", 38 | "rng" 39 | ] 40 | }, 41 | { 42 | "cell_type": "code", 43 | "execution_count": 7, 44 | "metadata": {}, 45 | "outputs": [ 46 | { 47 | "data": { 48 | "text/plain": [ 49 | "2016-01-01 -0.834570\n", 50 | "2016-01-02 -1.163830\n", 51 | "2016-01-03 0.930881\n", 52 | "2016-01-04 1.069605\n", 53 | "2016-01-05 -0.168983\n", 54 | "2016-01-06 -1.233419\n", 55 | "2016-01-07 0.176762\n", 56 | "2016-01-08 -0.862094\n", 57 | "2016-01-09 0.665800\n", 58 | "2016-01-10 0.826120\n", 59 | "2016-01-11 -0.859111\n", 60 | "2016-01-12 0.475664\n", 61 | "2016-01-13 -0.599046\n", 62 | "2016-01-14 1.936862\n", 63 | "2016-01-15 -0.230649\n", 64 | "2016-01-16 0.817754\n", 65 | "2016-01-17 -1.103082\n", 66 | "2016-01-18 1.120207\n", 67 | "2016-01-19 0.702375\n", 68 | "2016-01-20 1.039519\n", 69 | "Freq: D, dtype: float64" 70 | ] 71 | }, 72 | "execution_count": 7, 73 | "metadata": {}, 74 | "output_type": "execute_result" 75 | } 76 | ], 77 | "source": [ 78 | "import numpy as np\n", 79 | "time = pd.Series(np.random.randn(20),\n", 80 | " index = pd.date_range('2016/01/01',periods = 20))\n", 81 | "time" 82 | ] 83 | }, 84 | { 85 | "cell_type": "code", 86 | "execution_count": 18, 87 | "metadata": {}, 88 | "outputs": [ 89 | { 90 | "data": { 91 | "text/plain": [ 92 | "-0.8345696469288153" 93 | ] 94 | }, 95 | "execution_count": 18, 96 | "metadata": {}, 97 | "output_type": "execute_result" 98 | } 99 | ], 100 | "source": [ 101 | "# 索引\n", 102 | "# 可以通过时间进行索引数据\n", 103 | "time['2016/01/01']" 104 | ] 105 | }, 106 | { 107 | "cell_type": "code", 108 | "execution_count": 19, 109 | "metadata": {}, 110 | "outputs": [ 111 | { 112 | "data": { 113 | "text/plain": [ 114 | "2016-01-10 0.826120\n", 115 | "2016-01-11 -0.859111\n", 116 | "2016-01-12 0.475664\n", 117 | "2016-01-13 -0.599046\n", 118 | "2016-01-14 1.936862\n", 119 | "2016-01-15 -0.230649\n", 120 | "2016-01-16 0.817754\n", 121 | "2016-01-17 -1.103082\n", 122 | "2016-01-18 1.120207\n", 123 | "2016-01-19 0.702375\n", 124 | "2016-01-20 1.039519\n", 125 | "Freq: D, dtype: float64" 126 | ] 127 | }, 128 | "execution_count": 19, 129 | "metadata": {}, 130 | "output_type": "execute_result" 131 | } 132 | ], 133 | "source": [ 134 | "# truncate 过滤\n", 135 | "time.truncate(before='2016/1/10')" 136 | ] 137 | }, 138 | { 139 | "cell_type": "code", 140 | "execution_count": 20, 141 | "metadata": {}, 142 | "outputs": [ 143 | { 144 | "data": { 145 | "text/plain": [ 146 | "2016-01-01 -0.834570\n", 147 | "2016-01-02 -1.163830\n", 148 | "2016-01-03 0.930881\n", 149 | "2016-01-04 1.069605\n", 150 | "2016-01-05 -0.168983\n", 151 | "2016-01-06 -1.233419\n", 152 | "2016-01-07 0.176762\n", 153 | "2016-01-08 -0.862094\n", 154 | "2016-01-09 0.665800\n", 155 | "2016-01-10 0.826120\n", 156 | "Freq: D, dtype: float64" 157 | ] 158 | }, 159 | "execution_count": 20, 160 | "metadata": {}, 161 | "output_type": "execute_result" 162 | } 163 | ], 164 | "source": [ 165 | "time.truncate(after='2016/1/10')" 166 | ] 167 | }, 168 | { 169 | "cell_type": "code", 170 | "execution_count": 21, 171 | "metadata": {}, 172 | "outputs": [ 173 | { 174 | "data": { 175 | "text/plain": [ 176 | "Timestamp('2016-01-07 00:00:00')" 177 | ] 178 | }, 179 | "execution_count": 21, 180 | "metadata": {}, 181 | "output_type": "execute_result" 182 | } 183 | ], 184 | "source": [ 185 | "# 时间戳\n", 186 | "pd.Timestamp('2016/01/07')" 187 | ] 188 | }, 189 | { 190 | "cell_type": "code", 191 | "execution_count": 22, 192 | "metadata": {}, 193 | "outputs": [ 194 | { 195 | "data": { 196 | "text/plain": [ 197 | "Timestamp('2016-01-07 10:15:00')" 198 | ] 199 | }, 200 | "execution_count": 22, 201 | "metadata": {}, 202 | "output_type": "execute_result" 203 | } 204 | ], 205 | "source": [ 206 | "# 时间戳可以指定更多的细节\n", 207 | "pd.Timestamp('2016/01/07 10:15')" 208 | ] 209 | }, 210 | { 211 | "cell_type": "code", 212 | "execution_count": 23, 213 | "metadata": {}, 214 | "outputs": [ 215 | { 216 | "data": { 217 | "text/plain": [ 218 | "Period('2016-01', 'M')" 219 | ] 220 | }, 221 | "execution_count": 23, 222 | "metadata": {}, 223 | "output_type": "execute_result" 224 | } 225 | ], 226 | "source": [ 227 | "# 时间区间\n", 228 | "pd.Period('2016/01')" 229 | ] 230 | }, 231 | { 232 | "cell_type": "code", 233 | "execution_count": 24, 234 | "metadata": {}, 235 | "outputs": [ 236 | { 237 | "data": { 238 | "text/plain": [ 239 | "Period('2016-01-01', 'D')" 240 | ] 241 | }, 242 | "execution_count": 24, 243 | "metadata": {}, 244 | "output_type": "execute_result" 245 | } 246 | ], 247 | "source": [ 248 | "pd.Period('2016/01/01')" 249 | ] 250 | }, 251 | { 252 | "cell_type": "code", 253 | "execution_count": 25, 254 | "metadata": {}, 255 | "outputs": [ 256 | { 257 | "data": { 258 | "text/plain": [ 259 | "Period('2016-01-02 10:10', 'T')" 260 | ] 261 | }, 262 | "execution_count": 25, 263 | "metadata": {}, 264 | "output_type": "execute_result" 265 | } 266 | ], 267 | "source": [ 268 | "# Time Offsets\n", 269 | "pd.Period('2016/01/01 10:10') + pd.Timedelta('1 day')" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": 29, 275 | "metadata": {}, 276 | "outputs": [ 277 | { 278 | "data": { 279 | "text/plain": [ 280 | "Period('2016-01-01 10:10:15', 'S')" 281 | ] 282 | }, 283 | "execution_count": 29, 284 | "metadata": {}, 285 | "output_type": "execute_result" 286 | } 287 | ], 288 | "source": [ 289 | "pd.Period('2016/01/01 10:10:00') + pd.Timedelta('15s')" 290 | ] 291 | }, 292 | { 293 | "cell_type": "code", 294 | "execution_count": null, 295 | "metadata": { 296 | "collapsed": true 297 | }, 298 | "outputs": [], 299 | "source": [] 300 | } 301 | ], 302 | "metadata": { 303 | "kernelspec": { 304 | "display_name": "Python 3", 305 | "language": "python", 306 | "name": "python3" 307 | }, 308 | "language_info": { 309 | "codemirror_mode": { 310 | "name": "ipython", 311 | "version": 3 312 | }, 313 | "file_extension": ".py", 314 | "mimetype": "text/x-python", 315 | "name": "python", 316 | "nbconvert_exporter": "python", 317 | "pygments_lexer": "ipython3", 318 | "version": "3.6.3" 319 | } 320 | }, 321 | "nbformat": 4, 322 | "nbformat_minor": 2 323 | } 324 | -------------------------------------------------------------------------------- /课外1:bilibili video/源码/Video 3.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "raw", 5 | "metadata": {}, 6 | "source": [ 7 | "数据重采样\n", 8 | " 时间数据由一个频率转换另一个频率\n", 9 | " 降采样\n", 10 | " 升采样" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 1, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "data": { 20 | "text/plain": [ 21 | "2010-01-01 -0.315557\n", 22 | "2010-01-02 -0.292671\n", 23 | "2010-01-03 -1.454163\n", 24 | "2010-01-04 -0.699438\n", 25 | "2010-01-05 -0.327882\n", 26 | "Freq: D, dtype: float64" 27 | ] 28 | }, 29 | "execution_count": 1, 30 | "metadata": {}, 31 | "output_type": "execute_result" 32 | } 33 | ], 34 | "source": [ 35 | "# 生成数据\n", 36 | "import pandas as pd\n", 37 | "import numpy as np\n", 38 | "\n", 39 | "rng = pd.date_range('2010/1/1',periods=90,freq='D')\n", 40 | "ts = pd.Series(np.random.randn(len(rng)),index = rng)\n", 41 | "ts.head()" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 2, 47 | "metadata": {}, 48 | "outputs": [ 49 | { 50 | "data": { 51 | "text/plain": [ 52 | "2010-01-31 -0.706872\n", 53 | "2010-02-28 -2.623465\n", 54 | "2010-03-31 7.850712\n", 55 | "Freq: M, dtype: float64" 56 | ] 57 | }, 58 | "execution_count": 2, 59 | "metadata": {}, 60 | "output_type": "execute_result" 61 | } 62 | ], 63 | "source": [ 64 | "# 降采样\n", 65 | "ts.resample('M').sum()" 66 | ] 67 | }, 68 | { 69 | "cell_type": "code", 70 | "execution_count": 4, 71 | "metadata": {}, 72 | "outputs": [ 73 | { 74 | "data": { 75 | "text/plain": [ 76 | "2010-01-01 -2.062391\n", 77 | "2010-01-04 -1.418866\n", 78 | "2010-01-07 -1.355634\n", 79 | "2010-01-10 1.984274\n", 80 | "2010-01-13 -0.242152\n", 81 | "2010-01-16 -0.998342\n", 82 | "2010-01-19 -1.212635\n", 83 | "2010-01-22 4.278305\n", 84 | "2010-01-25 -0.617897\n", 85 | "2010-01-28 1.518855\n", 86 | "2010-01-31 -1.455297\n", 87 | "2010-02-03 -0.830209\n", 88 | "2010-02-06 -0.284017\n", 89 | "2010-02-09 2.616404\n", 90 | "2010-02-12 -0.611245\n", 91 | "2010-02-15 -2.194572\n", 92 | "2010-02-18 -2.519439\n", 93 | "2010-02-21 -1.137647\n", 94 | "2010-02-24 1.414765\n", 95 | "2010-02-27 2.838949\n", 96 | "2010-03-02 3.757437\n", 97 | "2010-03-05 1.809160\n", 98 | "2010-03-08 -0.409576\n", 99 | "2010-03-11 1.416232\n", 100 | "2010-03-14 1.826642\n", 101 | "2010-03-17 -0.878111\n", 102 | "2010-03-20 -1.070910\n", 103 | "2010-03-23 -0.262653\n", 104 | "2010-03-26 0.953572\n", 105 | "2010-03-29 -0.332626\n", 106 | "Freq: 3D, dtype: float64" 107 | ] 108 | }, 109 | "execution_count": 4, 110 | "metadata": {}, 111 | "output_type": "execute_result" 112 | } 113 | ], 114 | "source": [ 115 | "ts.resample('3D').sum()" 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 5, 121 | "metadata": { 122 | "collapsed": true 123 | }, 124 | "outputs": [], 125 | "source": [ 126 | "day3Ts = ts.resample('3D').mean()" 127 | ] 128 | }, 129 | { 130 | "cell_type": "code", 131 | "execution_count": 6, 132 | "metadata": {}, 133 | "outputs": [ 134 | { 135 | "name": "stdout", 136 | "output_type": "stream", 137 | "text": [ 138 | "2010-01-01 -0.687464\n", 139 | "2010-01-02 NaN\n", 140 | "2010-01-03 NaN\n", 141 | "2010-01-04 -0.472955\n", 142 | "2010-01-05 NaN\n", 143 | "2010-01-06 NaN\n", 144 | "2010-01-07 -0.451878\n", 145 | "2010-01-08 NaN\n", 146 | "2010-01-09 NaN\n", 147 | "2010-01-10 0.661425\n", 148 | "2010-01-11 NaN\n", 149 | "2010-01-12 NaN\n", 150 | "2010-01-13 -0.080717\n", 151 | "2010-01-14 NaN\n", 152 | "2010-01-15 NaN\n", 153 | "2010-01-16 -0.332781\n", 154 | "2010-01-17 NaN\n", 155 | "2010-01-18 NaN\n", 156 | "2010-01-19 -0.404212\n", 157 | "2010-01-20 NaN\n", 158 | "2010-01-21 NaN\n", 159 | "2010-01-22 1.426102\n", 160 | "2010-01-23 NaN\n", 161 | "2010-01-24 NaN\n", 162 | "2010-01-25 -0.205966\n", 163 | "2010-01-26 NaN\n", 164 | "2010-01-27 NaN\n", 165 | "2010-01-28 0.506285\n", 166 | "2010-01-29 NaN\n", 167 | "2010-01-30 NaN\n", 168 | " ... \n", 169 | "2010-02-28 NaN\n", 170 | "2010-03-01 NaN\n", 171 | "2010-03-02 1.252479\n", 172 | "2010-03-03 NaN\n", 173 | "2010-03-04 NaN\n", 174 | "2010-03-05 0.603053\n", 175 | "2010-03-06 NaN\n", 176 | "2010-03-07 NaN\n", 177 | "2010-03-08 -0.136525\n", 178 | "2010-03-09 NaN\n", 179 | "2010-03-10 NaN\n", 180 | "2010-03-11 0.472077\n", 181 | "2010-03-12 NaN\n", 182 | "2010-03-13 NaN\n", 183 | "2010-03-14 0.608881\n", 184 | "2010-03-15 NaN\n", 185 | "2010-03-16 NaN\n", 186 | "2010-03-17 -0.292704\n", 187 | "2010-03-18 NaN\n", 188 | "2010-03-19 NaN\n", 189 | "2010-03-20 -0.356970\n", 190 | "2010-03-21 NaN\n", 191 | "2010-03-22 NaN\n", 192 | "2010-03-23 -0.087551\n", 193 | "2010-03-24 NaN\n", 194 | "2010-03-25 NaN\n", 195 | "2010-03-26 0.317857\n", 196 | "2010-03-27 NaN\n", 197 | "2010-03-28 NaN\n", 198 | "2010-03-29 -0.110875\n", 199 | "Freq: D, Length: 88, dtype: float64\n" 200 | ] 201 | } 202 | ], 203 | "source": [ 204 | "# 升采样\n", 205 | "print(day3Ts.resample('D').asfreq())" 206 | ] 207 | }, 208 | { 209 | "cell_type": "raw", 210 | "metadata": {}, 211 | "source": [ 212 | "插值方式\n", 213 | " ffill 空值取前面的值\n", 214 | " bfill 空值取后面的值\n", 215 | " interpolate 线性取值" 216 | ] 217 | }, 218 | { 219 | "cell_type": "code", 220 | "execution_count": 7, 221 | "metadata": {}, 222 | "outputs": [ 223 | { 224 | "data": { 225 | "text/plain": [ 226 | "2010-01-01 -0.687464\n", 227 | "2010-01-02 -0.687464\n", 228 | "2010-01-03 NaN\n", 229 | "2010-01-04 -0.472955\n", 230 | "2010-01-05 -0.472955\n", 231 | "2010-01-06 NaN\n", 232 | "2010-01-07 -0.451878\n", 233 | "2010-01-08 -0.451878\n", 234 | "2010-01-09 NaN\n", 235 | "2010-01-10 0.661425\n", 236 | "2010-01-11 0.661425\n", 237 | "2010-01-12 NaN\n", 238 | "2010-01-13 -0.080717\n", 239 | "2010-01-14 -0.080717\n", 240 | "2010-01-15 NaN\n", 241 | "2010-01-16 -0.332781\n", 242 | "2010-01-17 -0.332781\n", 243 | "2010-01-18 NaN\n", 244 | "2010-01-19 -0.404212\n", 245 | "2010-01-20 -0.404212\n", 246 | "2010-01-21 NaN\n", 247 | "2010-01-22 1.426102\n", 248 | "2010-01-23 1.426102\n", 249 | "2010-01-24 NaN\n", 250 | "2010-01-25 -0.205966\n", 251 | "2010-01-26 -0.205966\n", 252 | "2010-01-27 NaN\n", 253 | "2010-01-28 0.506285\n", 254 | "2010-01-29 0.506285\n", 255 | "2010-01-30 NaN\n", 256 | " ... \n", 257 | "2010-02-28 0.946316\n", 258 | "2010-03-01 NaN\n", 259 | "2010-03-02 1.252479\n", 260 | "2010-03-03 1.252479\n", 261 | "2010-03-04 NaN\n", 262 | "2010-03-05 0.603053\n", 263 | "2010-03-06 0.603053\n", 264 | "2010-03-07 NaN\n", 265 | "2010-03-08 -0.136525\n", 266 | "2010-03-09 -0.136525\n", 267 | "2010-03-10 NaN\n", 268 | "2010-03-11 0.472077\n", 269 | "2010-03-12 0.472077\n", 270 | "2010-03-13 NaN\n", 271 | "2010-03-14 0.608881\n", 272 | "2010-03-15 0.608881\n", 273 | "2010-03-16 NaN\n", 274 | "2010-03-17 -0.292704\n", 275 | "2010-03-18 -0.292704\n", 276 | "2010-03-19 NaN\n", 277 | "2010-03-20 -0.356970\n", 278 | "2010-03-21 -0.356970\n", 279 | "2010-03-22 NaN\n", 280 | "2010-03-23 -0.087551\n", 281 | "2010-03-24 -0.087551\n", 282 | "2010-03-25 NaN\n", 283 | "2010-03-26 0.317857\n", 284 | "2010-03-27 0.317857\n", 285 | "2010-03-28 NaN\n", 286 | "2010-03-29 -0.110875\n", 287 | "Freq: D, Length: 88, dtype: float64" 288 | ] 289 | }, 290 | "execution_count": 7, 291 | "metadata": {}, 292 | "output_type": "execute_result" 293 | } 294 | ], 295 | "source": [ 296 | "day3Ts.resample('D').ffill(1) #只对前面的一个空值填充" 297 | ] 298 | }, 299 | { 300 | "cell_type": "code", 301 | "execution_count": 8, 302 | "metadata": {}, 303 | "outputs": [ 304 | { 305 | "data": { 306 | "text/plain": [ 307 | "2010-01-01 -0.687464\n", 308 | "2010-01-02 -0.687464\n", 309 | "2010-01-03 -0.687464\n", 310 | "2010-01-04 -0.472955\n", 311 | "2010-01-05 -0.472955\n", 312 | "2010-01-06 -0.472955\n", 313 | "2010-01-07 -0.451878\n", 314 | "2010-01-08 -0.451878\n", 315 | "2010-01-09 -0.451878\n", 316 | "2010-01-10 0.661425\n", 317 | "2010-01-11 0.661425\n", 318 | "2010-01-12 0.661425\n", 319 | "2010-01-13 -0.080717\n", 320 | "2010-01-14 -0.080717\n", 321 | "2010-01-15 -0.080717\n", 322 | "2010-01-16 -0.332781\n", 323 | "2010-01-17 -0.332781\n", 324 | "2010-01-18 -0.332781\n", 325 | "2010-01-19 -0.404212\n", 326 | "2010-01-20 -0.404212\n", 327 | "2010-01-21 -0.404212\n", 328 | "2010-01-22 1.426102\n", 329 | "2010-01-23 1.426102\n", 330 | "2010-01-24 1.426102\n", 331 | "2010-01-25 -0.205966\n", 332 | "2010-01-26 -0.205966\n", 333 | "2010-01-27 -0.205966\n", 334 | "2010-01-28 0.506285\n", 335 | "2010-01-29 0.506285\n", 336 | "2010-01-30 0.506285\n", 337 | " ... \n", 338 | "2010-02-28 0.946316\n", 339 | "2010-03-01 0.946316\n", 340 | "2010-03-02 1.252479\n", 341 | "2010-03-03 1.252479\n", 342 | "2010-03-04 1.252479\n", 343 | "2010-03-05 0.603053\n", 344 | "2010-03-06 0.603053\n", 345 | "2010-03-07 0.603053\n", 346 | "2010-03-08 -0.136525\n", 347 | "2010-03-09 -0.136525\n", 348 | "2010-03-10 -0.136525\n", 349 | "2010-03-11 0.472077\n", 350 | "2010-03-12 0.472077\n", 351 | "2010-03-13 0.472077\n", 352 | "2010-03-14 0.608881\n", 353 | "2010-03-15 0.608881\n", 354 | "2010-03-16 0.608881\n", 355 | "2010-03-17 -0.292704\n", 356 | "2010-03-18 -0.292704\n", 357 | "2010-03-19 -0.292704\n", 358 | "2010-03-20 -0.356970\n", 359 | "2010-03-21 -0.356970\n", 360 | "2010-03-22 -0.356970\n", 361 | "2010-03-23 -0.087551\n", 362 | "2010-03-24 -0.087551\n", 363 | "2010-03-25 -0.087551\n", 364 | "2010-03-26 0.317857\n", 365 | "2010-03-27 0.317857\n", 366 | "2010-03-28 0.317857\n", 367 | "2010-03-29 -0.110875\n", 368 | "Freq: D, Length: 88, dtype: float64" 369 | ] 370 | }, 371 | "execution_count": 8, 372 | "metadata": {}, 373 | "output_type": "execute_result" 374 | } 375 | ], 376 | "source": [ 377 | "day3Ts.resample('D').ffill(2) #只对前面两个空值进行填充,这里都填完了" 378 | ] 379 | }, 380 | { 381 | "cell_type": "code", 382 | "execution_count": 9, 383 | "metadata": {}, 384 | "outputs": [ 385 | { 386 | "data": { 387 | "text/plain": [ 388 | "2010-01-01 -0.687464\n", 389 | "2010-01-02 -0.615961\n", 390 | "2010-01-03 -0.544458\n", 391 | "2010-01-04 -0.472955\n", 392 | "2010-01-05 -0.465930\n", 393 | "2010-01-06 -0.458904\n", 394 | "2010-01-07 -0.451878\n", 395 | "2010-01-08 -0.080777\n", 396 | "2010-01-09 0.290324\n", 397 | "2010-01-10 0.661425\n", 398 | "2010-01-11 0.414044\n", 399 | "2010-01-12 0.166663\n", 400 | "2010-01-13 -0.080717\n", 401 | "2010-01-14 -0.164738\n", 402 | "2010-01-15 -0.248760\n", 403 | "2010-01-16 -0.332781\n", 404 | "2010-01-17 -0.356591\n", 405 | "2010-01-18 -0.380401\n", 406 | "2010-01-19 -0.404212\n", 407 | "2010-01-20 0.205893\n", 408 | "2010-01-21 0.815997\n", 409 | "2010-01-22 1.426102\n", 410 | "2010-01-23 0.882079\n", 411 | "2010-01-24 0.338057\n", 412 | "2010-01-25 -0.205966\n", 413 | "2010-01-26 0.031451\n", 414 | "2010-01-27 0.268868\n", 415 | "2010-01-28 0.506285\n", 416 | "2010-01-29 0.175824\n", 417 | "2010-01-30 -0.154638\n", 418 | " ... \n", 419 | "2010-02-28 1.048371\n", 420 | "2010-03-01 1.150425\n", 421 | "2010-03-02 1.252479\n", 422 | "2010-03-03 1.036004\n", 423 | "2010-03-04 0.819528\n", 424 | "2010-03-05 0.603053\n", 425 | "2010-03-06 0.356527\n", 426 | "2010-03-07 0.110001\n", 427 | "2010-03-08 -0.136525\n", 428 | "2010-03-09 0.066342\n", 429 | "2010-03-10 0.269210\n", 430 | "2010-03-11 0.472077\n", 431 | "2010-03-12 0.517679\n", 432 | "2010-03-13 0.563280\n", 433 | "2010-03-14 0.608881\n", 434 | "2010-03-15 0.308353\n", 435 | "2010-03-16 0.007824\n", 436 | "2010-03-17 -0.292704\n", 437 | "2010-03-18 -0.314126\n", 438 | "2010-03-19 -0.335548\n", 439 | "2010-03-20 -0.356970\n", 440 | "2010-03-21 -0.267164\n", 441 | "2010-03-22 -0.177357\n", 442 | "2010-03-23 -0.087551\n", 443 | "2010-03-24 0.047585\n", 444 | "2010-03-25 0.182721\n", 445 | "2010-03-26 0.317857\n", 446 | "2010-03-27 0.174946\n", 447 | "2010-03-28 0.032036\n", 448 | "2010-03-29 -0.110875\n", 449 | "Freq: D, Length: 88, dtype: float64" 450 | ] 451 | }, 452 | "execution_count": 9, 453 | "metadata": {}, 454 | "output_type": "execute_result" 455 | } 456 | ], 457 | "source": [ 458 | "day3Ts.resample('D').interpolate('linear')" 459 | ] 460 | }, 461 | { 462 | "cell_type": "code", 463 | "execution_count": null, 464 | "metadata": { 465 | "collapsed": true 466 | }, 467 | "outputs": [], 468 | "source": [] 469 | } 470 | ], 471 | "metadata": { 472 | "kernelspec": { 473 | "display_name": "Python 3", 474 | "language": "python", 475 | "name": "python3" 476 | }, 477 | "language_info": { 478 | "codemirror_mode": { 479 | "name": "ipython", 480 | "version": 3 481 | }, 482 | "file_extension": ".py", 483 | "mimetype": "text/x-python", 484 | "name": "python", 485 | "nbconvert_exporter": "python", 486 | "pygments_lexer": "ipython3", 487 | "version": "3.6.3" 488 | } 489 | }, 490 | "nbformat": 4, 491 | "nbformat_minor": 2 492 | } 493 | --------------------------------------------------------------------------------