├── __init__.py ├── hkjournalist ├── __init__.py ├── configuration │ └── code_block.tex └── journalist.py ├── requirements.txt ├── .gitattributes ├── demo ├── big_news.pdf ├── big_news.png ├── zh_demo.png ├── auto_report.pdf ├── auto_report.png ├── zh_big_news.pdf ├── template.md ├── auto_generate_template.md ├── auto_template_example.py └── quick_start_example.py ├── slides ├── slides.pdf ├── figures │ └── big_news.pdf ├── makefile ├── configuration │ └── code_block.tex └── main.md ├── docs ├── source │ ├── pic │ │ ├── zh_demo.png │ │ ├── big_news.png │ │ ├── auto_report.png │ │ ├── toturial_1_output.png │ │ └── toturial_2_output.png │ ├── modules.rst │ ├── hkjournalist.rst │ ├── template-generate.md │ ├── tutorial_2.md │ ├── quick-start.md │ ├── tutorial_1.md │ └── tutorial_3.md ├── Makefile ├── make.bat ├── index.rst └── conf.py ├── examples ├── reports │ ├── 3_zh_report.pdf │ ├── 2_feature_select.pdf │ ├── 1_prophet_report_2023-03-29_02:33:40.pdf │ ├── 3_zh_cn_template.md │ ├── 1_prophet_report_template.md │ └── 2_feature_select_template.md ├── 3_zh_CN_support.py ├── 2_feature_selection.py ├── 1_prophet_model_evaluate.py └── data │ └── example_wp_log_peyton_manning.csv ├── setup.py ├── LICENSE ├── README-zh_CN.md ├── .gitignore └── README.md /__init__.py: -------------------------------------------------------------------------------- 1 | name = 'hkjournalist' -------------------------------------------------------------------------------- /hkjournalist/__init__.py: -------------------------------------------------------------------------------- 1 | from hkjournalist.journalist import Journalist -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | pandas 2 | numpy 3 | matplotlib 4 | tabulate 5 | pandoc -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /demo/big_news.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/demo/big_news.pdf -------------------------------------------------------------------------------- /demo/big_news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/demo/big_news.png -------------------------------------------------------------------------------- /demo/zh_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/demo/zh_demo.png -------------------------------------------------------------------------------- /slides/slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/slides/slides.pdf -------------------------------------------------------------------------------- /demo/auto_report.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/demo/auto_report.pdf -------------------------------------------------------------------------------- /demo/auto_report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/demo/auto_report.png -------------------------------------------------------------------------------- /demo/zh_big_news.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/demo/zh_big_news.pdf -------------------------------------------------------------------------------- /docs/source/pic/zh_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/docs/source/pic/zh_demo.png -------------------------------------------------------------------------------- /slides/figures/big_news.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/slides/figures/big_news.pdf -------------------------------------------------------------------------------- /docs/source/pic/big_news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/docs/source/pic/big_news.png -------------------------------------------------------------------------------- /docs/source/pic/auto_report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/docs/source/pic/auto_report.png -------------------------------------------------------------------------------- /examples/reports/3_zh_report.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/examples/reports/3_zh_report.pdf -------------------------------------------------------------------------------- /docs/source/modules.rst: -------------------------------------------------------------------------------- 1 | hkjournalist 2 | ============ 3 | 4 | .. toctree:: 5 | :maxdepth: 4 6 | 7 | hkjournalist 8 | -------------------------------------------------------------------------------- /docs/source/pic/toturial_1_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/docs/source/pic/toturial_1_output.png -------------------------------------------------------------------------------- /docs/source/pic/toturial_2_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/docs/source/pic/toturial_2_output.png -------------------------------------------------------------------------------- /examples/reports/2_feature_select.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/examples/reports/2_feature_select.pdf -------------------------------------------------------------------------------- /examples/reports/1_prophet_report_2023-03-29_02:33:40.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/li-xin-yi/HK-journalist/HEAD/examples/reports/1_prophet_report_2023-03-29_02:33:40.pdf -------------------------------------------------------------------------------- /demo/template.md: -------------------------------------------------------------------------------- 1 | % Hello World 2 | % Xinyi Li 3 | % 2019-12-19 4 | --- 5 | 6 | ### Sine Plot 7 | 8 | ![]({sin_plot}) 9 | 10 | ### Sine Table 11 | 12 | {sin_table} 13 | 14 | ### Sine Function 15 | 16 | ```{{.python}} 17 | {sin_func} 18 | ``` 19 | -------------------------------------------------------------------------------- /demo/auto_generate_template.md: -------------------------------------------------------------------------------- 1 | % Report template 2 | % Author 3 | % {today} 4 | 5 | ### Plot_1 6 | 7 | ![]({Plot_1}){{ height=80%% }} 8 | 9 | ### Plot_2 10 | 11 | ![]({Plot_2}){{ height=80%% }} 12 | 13 | ### Plot_3 14 | 15 | ![]({Plot_3}){{ height=80%% }} 16 | 17 | -------------------------------------------------------------------------------- /examples/reports/3_zh_cn_template.md: -------------------------------------------------------------------------------- 1 | --- 2 | documentclass: ctexbeamer 3 | title: 中文报告 4 | author: 香港记者 5 | date: \today{{}} 6 | --- 7 | 8 | ### 正弦曲线 9 | 10 | ![]({sin_plot}) 11 | 12 | ### 正弦取值 13 | 14 | {sin_table} 15 | 16 | ### 正弦函数 17 | 18 | ```{{.python}} 19 | {sin_func} 20 | ``` 21 | 22 | 23 | -------------------------------------------------------------------------------- /slides/makefile: -------------------------------------------------------------------------------- 1 | all : 2 | pandoc -t beamer main.md --listings -H configuration/code_block.tex \ 3 | -o output.pdf 4 | 5 | slides : 6 | pandoc -t beamer main.md --listings -H configuration/code_block.tex \ 7 | -o slides.pdf 8 | 9 | tex : 10 | pandoc -t beamer main.md --listings -H configuration/code_block.tex \ 11 | -o source_code.tex 12 | 13 | ppt : 14 | pandoc -t main.md -o slides.pptx 15 | 16 | report : 17 | pandoc main.md -o report.pdf 18 | -------------------------------------------------------------------------------- /docs/source/hkjournalist.rst: -------------------------------------------------------------------------------- 1 | hkjournalist package 2 | ==================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | hkjournalist.journalist module 8 | ------------------------------ 9 | 10 | .. automodule:: hkjournalist.journalist 11 | :members: 12 | :undoc-members: 13 | :show-inheritance: 14 | 15 | 16 | Module contents 17 | --------------- 18 | 19 | .. automodule:: hkjournalist 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | -------------------------------------------------------------------------------- /examples/reports/1_prophet_report_template.md: -------------------------------------------------------------------------------- 1 | % Simple Model Test 2 | % Author 3 | % \today{{}} 4 | 5 | --- 6 | 7 | ### Data Plot 8 | 9 | ![]({data_plot}){{ width=100% }} 10 | 11 | ### Train set 12 | 13 | - **train end date** {train_end_date} 14 | - **seasonality** 15 | 16 | {seasonality} 17 | 18 | ### Prediction Result 19 | 20 | ![]({pred_plot}){{ width=100% }} 21 | 22 | ### Error analysis 23 | 24 | ```{{.python}} 25 | {metric_func} 26 | ``` 27 | 28 | ### Error analysis (plot) 29 | 30 | ![]({error_plot}){{ height=90% }} 31 | 32 | ### Note 33 | 34 | {note} 35 | -------------------------------------------------------------------------------- /demo/auto_template_example.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import matplotlib.pyplot as plt 3 | import seaborn as sns 4 | from hkjournalist import Journalist 5 | 6 | config = {} 7 | 8 | for i in range(1, 4): 9 | uniform_data = np.random.rand(10, 12) 10 | plt.figure(figsize=(10, 8)) 11 | ax = sns.heatmap(uniform_data, cmap='Blues', annot=True, linewidth=.5) 12 | plt.tight_layout() 13 | config[f'Plot_{i}'] = ax 14 | 15 | reporter = Journalist(fig_height='80%') 16 | reporter.hear(config) 17 | reporter.generate_template('auto_generate_template.md') 18 | reporter.report(output_file='auto_report.pdf', beamer=True, overwrite=True) 19 | -------------------------------------------------------------------------------- /examples/reports/2_feature_select_template.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: template 3 | author: Author 4 | date: \today{{}} 5 | --- 6 | ### Cover_type{{.allowframebreaks}} 7 | 8 | {Cover_type} 9 | 10 | ### shape 11 | 12 | {shape} 13 | 14 | ### dtypes{{.allowframebreaks}} 15 | 16 | {dtypes} 17 | 18 | ### skew{{.allowframebreaks}} 19 | 20 | {skew} 21 | 22 | ### description{{.allowframebreaks}} 23 | 24 | {description} 25 | 26 | ### Corr 27 | 28 | ![]({Corr}) 29 | 30 | ### select_method{{.fragile}} 31 | 32 | ```{{.python}} 33 | {select_method} 34 | ``` 35 | 36 | ### features_remain_with_thres_as_70{{.allowframebreaks}} 37 | 38 | {features_remain_with_thres_as_70} 39 | 40 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | SOURCEDIR = . 8 | BUILDDIR = _build 9 | 10 | # Put it first so that "make" without argument is like "make help". 11 | help: 12 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 13 | 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -------------------------------------------------------------------------------- /slides/configuration/code_block.tex: -------------------------------------------------------------------------------- 1 | % Contents of listings-setup.tex 2 | \usepackage{xcolor} 3 | 4 | \lstset{ 5 | basicstyle=\ttfamily, 6 | numbers=left, 7 | keywordstyle=\color[rgb]{0.13,0.29,0.53}\bfseries, 8 | stringstyle=\color[rgb]{0.31,0.60,0.02}, 9 | commentstyle=\color[rgb]{0.56,0.35,0.01}\itshape, 10 | numberstyle=\footnotesize, 11 | stepnumber=1, 12 | numbersep=5pt, 13 | backgroundcolor=\color[RGB]{248,248,248}, 14 | showspaces=false, 15 | showstringspaces=false, 16 | showtabs=false, 17 | tabsize=2, 18 | captionpos=b, 19 | breaklines=true, 20 | breakatwhitespace=true, 21 | breakautoindent=true, 22 | escapeinside={\%*}{*)}, 23 | linewidth=\textwidth, 24 | basewidth=0.5em, 25 | } 26 | -------------------------------------------------------------------------------- /hkjournalist/configuration/code_block.tex: -------------------------------------------------------------------------------- 1 | % Contents of listings-setup.tex 2 | \usepackage{xcolor} 3 | 4 | \lstset{ 5 | basicstyle=\ttfamily, 6 | numbers=left, 7 | keywordstyle=\color[rgb]{0.13,0.29,0.53}\bfseries, 8 | stringstyle=\color[rgb]{0.31,0.60,0.02}, 9 | commentstyle=\color[rgb]{0.56,0.35,0.01}\itshape, 10 | numberstyle=\footnotesize, 11 | stepnumber=1, 12 | numbersep=5pt, 13 | backgroundcolor=\color[RGB]{248,248,248}, 14 | showspaces=false, 15 | showstringspaces=false, 16 | showtabs=false, 17 | tabsize=2, 18 | captionpos=b, 19 | breaklines=true, 20 | breakatwhitespace=true, 21 | breakautoindent=true, 22 | escapeinside={\%*}{*)}, 23 | linewidth=\textwidth, 24 | basewidth=0.5em, 25 | } 26 | -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | 13 | if "%1" == "" goto help 14 | 15 | %SPHINXBUILD% >NUL 2>NUL 16 | if errorlevel 9009 ( 17 | echo. 18 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 19 | echo.installed, then set the SPHINXBUILD environment variable to point 20 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 21 | echo.may add the Sphinx directory to PATH. 22 | echo. 23 | echo.If you don't have Sphinx installed, grab it from 24 | echo.http://sphinx-doc.org/ 25 | exit /b 1 26 | ) 27 | 28 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 29 | goto end 30 | 31 | :help 32 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 33 | 34 | :end 35 | popd 36 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | import setuptools 2 | 3 | with open("README.md", "r") as fh: 4 | long_description = fh.read() 5 | 6 | setuptools.setup( 7 | name="hkjournalist", 8 | version="0.0.8", 9 | author="Xinyi Li", 10 | author_email="wolixinyi@gmail.com", 11 | description="Custom Auto Report Generator for Python Program", 12 | long_description=long_description, 13 | long_description_content_type="text/markdown", 14 | url="https://github.com/li-xin-yi/HK-journalist", 15 | packages=setuptools.find_packages(), 16 | package_data={'configuration':['hkjournalist/configuration/*']}, 17 | include_package_data=True, 18 | classifiers=[ 19 | "Programming Language :: Python :: 3", 20 | "License :: OSI Approved :: MIT License" 21 | ], 22 | install_requires = ['tabulate', 23 | 'pandas', 24 | 'pandoc', 25 | 'matplotlib', 26 | ] 27 | ) 28 | -------------------------------------------------------------------------------- /demo/quick_start_example.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import numpy as np 3 | import pandas as pd 4 | from hkjournalist import Journalist 5 | 6 | config = {} 7 | 8 | def sin_2x_and_cos_2x(x): 9 | y = np.sin(x) * np.sin(x) + np.cos(x) * np.cos(x) 10 | return y 11 | 12 | x = np.arange(0, 4 * np.pi, 0.1) 13 | y1 = np.sin(x) 14 | y2 = np.cos(x) 15 | 16 | df = pd.DataFrame({'x': x, 'sin(x)': y1, 'cos(x)': y2}) 17 | df['sin^2^(x)+cos^2^(x)'] = sin_2x_and_cos_2x(df['x']).values 18 | df = df.set_index('x') 19 | 20 | # plot sine curve as sin_plot 21 | ax = df.plot() 22 | plt.tight_layout() 23 | config['sin_plot'] = ax 24 | 25 | # random select 5 point (x,y) as sin_table 26 | config['sin_table'] = df.sample(5) 27 | 28 | # sin_2x_and_cons_2x as sin_func 29 | config['sin_func'] = sin_2x_and_cos_2x 30 | 31 | # HK journalist runs faster than everyone! hear variable and make a report 32 | reporter = Journalist(template_file='template.md') 33 | reporter.hear(config) 34 | reporter.report(output_file='big_news.pdf', beamer=True, overwrite=True) 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Xinyi Li 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /examples/3_zh_CN_support.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import numpy as np 4 | import pandas as pd 5 | import matplotlib.pyplot as plt 6 | 7 | SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) 8 | sys.path.append(os.path.dirname(SCRIPT_DIR)) 9 | 10 | from hkjournalist import Journalist 11 | 12 | 13 | config = {} 14 | 15 | 16 | def sin_2x_and_cos_2x(x): 17 | y = np.sin(x) * np.sin(x) + np.cos(x) * np.cos(x) 18 | return y 19 | 20 | 21 | x = np.arange(0, 4 * np.pi, 0.1) 22 | y1 = np.sin(x) 23 | y2 = np.cos(x) 24 | 25 | df = pd.DataFrame({'x': x, 'sin(x)': y1, 'cos(x)': y2}) 26 | df['sin^2^(x)+cos^2^(x)'] = sin_2x_and_cos_2x(df['x']).values 27 | df = df.set_index('x') 28 | 29 | # plot sine curve as sin_plot 30 | ax = df.plot() 31 | plt.tight_layout() 32 | config['sin_plot'] = ax 33 | 34 | # random select 5 point (x,y) as sin_table 35 | config['sin_table'] = df.sample(5) 36 | 37 | config['sin_func'] = sin_2x_and_cos_2x 38 | 39 | reporter = Journalist(template_file='./reports/3_zh_cn_template.md', zh=True) 40 | reporter.hear(config) 41 | reporter.report(output_file='./reports/3_zh_report.pdf', beamer=True, overwrite=True) 42 | -------------------------------------------------------------------------------- /docs/source/template-generate.md: -------------------------------------------------------------------------------- 1 | # Auto Generate `md` Template 2 | 3 | ## I am too lazy to write a `md` template 4 | 5 | If you have too many variables to report, which make write a template a big project, or simply don't want to write a `md` template, **No problem!** `hkjournalist` can generate a report template with each variable on one slide page automatically. With slight modification or directly using it as a template, you can get your real report. 6 | 7 | ## Example 8 | 9 | ```py 10 | import numpy as np 11 | import matplotlib.pyplot as plt 12 | import seaborn as sns 13 | from hkjournalist import Journalist 14 | 15 | config = {} 16 | 17 | for i in range(1, 4): 18 | uniform_data = np.random.rand(10, 12) 19 | plt.figure(figsize=(10, 8)) 20 | ax = sns.heatmap(uniform_data, cmap='Blues', annot=True, linewidth=.5) 21 | plt.tight_layout() 22 | config[f'Plot_{i}'] = ax 23 | 24 | reporter = Journalist(fig_height='80%') 25 | reporter.hear(config) 26 | reporter.generate_template('auto_generate_template.md') 27 | reporter.report(output_file='auto_report.pdf', beamer=True, overwrite=True) 28 | ``` 29 | Output ([raw file](https://github.com/li-xin-yi/HK-journalist/blob/master/demo/auto_report.pdf) ): 30 | 31 | ![](./pic/auto_report.png) 32 | -------------------------------------------------------------------------------- /examples/2_feature_selection.py: -------------------------------------------------------------------------------- 1 | from hkjournalist import Journalist 2 | import os 3 | import sys 4 | import numpy as np 5 | import pandas as pd 6 | import matplotlib.pyplot as plt 7 | import seaborn as sns 8 | 9 | SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) 10 | sys.path.append(os.path.dirname(SCRIPT_DIR)) 11 | 12 | 13 | # data from https://www.kaggle.com/c/forest-cover-type-prediction/data 14 | 15 | 16 | config = {} 17 | 18 | df = pd.read_csv('./data/train.csv') 19 | df = df.iloc[:, 1:] 20 | feature_df = df.loc[:, :'Horizontal_Distance_To_Fire_Points'] 21 | 22 | # basic statistics feature 23 | config['Cover_type'] = df.groupby('Cover_Type').size() 24 | config['shape'] = df.shape 25 | config['dtypes'] = feature_df.dtypes 26 | config['skew'] = feature_df.skew() 27 | config['description'] = feature_df.describe() 28 | 29 | # filter features with high correlation coefficient 30 | data_corr = feature_df.corr() 31 | plt.figure(figsize=(8, 6)) 32 | grid = sns.heatmap(data_corr, annot=True, fmt='.2f', 33 | cmap='RdBu', center=0, linewidth=.5) 34 | plt.tight_layout() 35 | config['Corr'] = grid 36 | 37 | 38 | def drop_by_cor(feature_df, threshold=0.9): 39 | corr_matrix = feature_df.corr().abs() 40 | upper = corr_matrix.where( 41 | np.triu(np.ones(corr_matrix.shape), k=1).astype(np.bool)) 42 | to_drop = [column for column in upper.columns if any( 43 | upper[column] > threshold)] 44 | return to_drop 45 | 46 | 47 | config['select_method'] = drop_by_cor 48 | threshold = 0.7 49 | 50 | valid_features = list(set(feature_df.columns) - 51 | set(drop_by_cor(feature_df, threshold))) 52 | config[f'features_remain_with_thres_as_{int(threshold * 100)}'] = valid_features 53 | 54 | # report generate without any pre-defined markdown template 55 | report_journalist = Journalist() 56 | report_journalist.hear(config) 57 | report_journalist.generate_template('./reports/2_feature_select_template.md') 58 | report_journalist.report('./reports/2_feature_select.pdf', 59 | overwrite=True, beamer=True, aspectratio=169) 60 | -------------------------------------------------------------------------------- /README-zh_CN.md: -------------------------------------------------------------------------------- 1 | 做了一个可以自己定制md模板,并在每次运行程序化自动生成相应报告的库。现已发布到pypi,欢迎试用。 2 | 3 | - 实现原理初步构想: https://zhuanlan.zhihu.com/p/96675335 4 | - GitHub项目主页:https://github.com/li-xin-yi/HK-journalist 5 | - 完整文档地址:https://hk-journalist.readthedocs.io/en/latest/ 6 | 7 | ``` 8 | pip install hkjournalist 9 | ``` 10 | ## Features 11 | - 可以自己用Markdown写报告的生成模板,这对于熟悉md写作的人比较友好 12 | - 生成的pdf报告为slide形式,可以直接投影讲解给其他合作者,自己阅读也方便。同时保证了图片的矢量性和高品质,文件大小也十分轻量。 13 | - 可以自动在输出文件名上加上时间戳,形成多次改动的snapshot效果,这对于频繁调参的使用者来说非常有用。 14 | - 支持plot,dataframe,函数,字符串列表这四种特殊类型在报告中以更加优雅容易阅读的形式呈现 15 | - **可以自动根据需要report的变量类型生成模板**。再也不用担心懒得写markdown模板的问题了。 16 | - 除了维护存储变量名-值映射关系的dict,用以生成报告的Python代码只需要3-4行 17 | 18 | ## Demo 19 | 一个非常简单的例子,自己写一个类似这样的报告模板,遵循一般的markdown语法,除了用{}包裹了变量名,让它在程序运行时由运行环境来决定。 20 | ```` 21 | % Hello World 22 | % Xinyi Li 23 | % 2019-12-19 24 | 25 | --- 26 | 27 | ### sine plot 28 | 29 | ![]({sin_plot}) 30 | 31 | ### sine table 32 | 33 | {sin_table} 34 | 35 | ### sine function 36 | 37 | ```{{.python}} 38 | {sin_func} 39 | ``` 40 | ```` 41 | 42 | 也就是说变量`sin_plot`, `sin_table`, `sin_func`都需要在你的python程序中获取。获取的方法是定义一个dict来保存它们的名字和真实值之间的映射关系: 43 | 44 | ```py 45 | from hkjournalist import Journalist 46 | 47 | config = {} 48 | ``` 49 | 50 | 接下来开始你的表演,及时的把它们的值绑定对应的变量名: 51 | ```py 52 | def sin_2x_and_cos_2x(x): 53 | y = np.sin(x) * np.sin(x) + np.cos(x) * np.cos(x) 54 | return y 55 | 56 | x = np.arange(0, 4 * np.pi, 0.1) 57 | y1 = np.sin(x) 58 | y2 = np.cos(x) 59 | 60 | df = pd.DataFrame({'x': x, 'sin(x)': y1, 'cos(x)': y2}) 61 | df['sin^2^(x)+cos^2^(x)'] = sin_2x_and_cos_2x(df['x']).values 62 | df = df.set_index('x') 63 | 64 | # plot sine curve as sin_plot 65 | ax = df.plot() 66 | plt.tight_layout() 67 | config['sin_plot'] = ax 68 | 69 | # random select 5 point (x,y) as sin_table 70 | config['sin_table'] = df.sample(5) 71 | 72 | # sin_2x_and_cons_2x as sin_func 73 | config['sin_func'] = sin_2x_and_cos_2x 74 | ``` 75 | 76 | 最后添加3行关键代码 77 | 78 | ```py 79 | reporter = Journalist(template_file='template.md') 80 | reporter.hear(config) 81 | reporter.report(output_file='big_news.pdf', beamer=True, overwrite=True) 82 | ``` 83 | 然后你就可以看见最终的pdf报告 84 | ![](./demo/big_news.png) 85 | 原始的pdf文件可以去github对应目录下查看,上面已经把4页打印在一起了。 86 | 最后祝您使用愉快,程序跑的比谁都快。 87 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | .. HKJournalist documentation master file, created by 2 | sphinx-quickstart on Fri Dec 20 16:29:31 2019. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to HKJournalist's documentation! 7 | ======================================== 8 | 9 | |Python_Versions|_ |PyPI_Version|_ |GitHub|_ |TexLive|_ 10 | 11 | .. |Python_Versions| image:: https://img.shields.io/pypi/pyversions/hkjournalist.svg 12 | .. _Python_Versions: https://pypi.org/project/hkjournalist 13 | 14 | .. |PyPI_Version| image:: https://img.shields.io/pypi/v/hkjournalist.svg 15 | .. _PyPI_Version: https://pypi.org/project/hkjournalist 16 | 17 | .. |GitHub| image:: https://img.shields.io/github/forks/li-xin-yi/hk-journalist?style=social.svg 18 | .. _GitHub: https://github.com/li-xin-yi/hk-journalist/fork 19 | 20 | .. |TexLive| image:: https://img.shields.io/badge/TeXLive-2018/2019-important.svg 21 | .. _TexLive: https://www.tug.org/texlive/ 22 | 23 | * Slides for sharing: `Download Link `_ 24 | 25 | It is a light and useful Python module, helping you generate a small size, pretty report as PDF slides (or any other format documents which human can directly read and hand out) each time after your programs finish. All you need to do is to customize a report template using ``MarkDown`` with variables name which used in your Python program, and maintain a ``dict`` to store those variables. Then, A few lines of code added before end of programs can automatically fetch and display them in final report file. Also, code deal with frequent structure/arguments changes or data source changes can benefit from the package if the report can play a role of 'snapshot' (with timestamp) of each code version. 26 | 27 | .. toctree:: 28 | :maxdepth: 2 29 | :caption: Home: 30 | 31 | Quick Start 32 | Auto Generate Template 33 | Tutorial 1: Run a prophet model on time series 34 | Tutorial 2: EDA and select feature 35 | Tutorial 3: Write templates with Chinese characters 36 | API 37 | 38 | 39 | 40 | Indices and tables 41 | ================== 42 | 43 | * :ref:`genindex` 44 | * :ref:`modindex` 45 | * :ref:`search` 46 | -------------------------------------------------------------------------------- /docs/source/tutorial_2.md: -------------------------------------------------------------------------------- 1 | # Tutorial 2: EDA and select feature 2 | 3 | - Code and output: [example/2\_feature\_selection.py](https://github.com/li-xin-yi/HK-journalist/blob/master/examples/2_feature_selection.py) 4 | - Data from [Kaggle Contest](https://www.kaggle.com/c/forest-cover-type-prediction/data) 5 | 6 | 7 | ## Load Data and pass basic statistics data to `config` 8 | 9 | ```py 10 | import numpy as np 11 | import pandas as pd 12 | import matplotlib.pyplot as plt 13 | import seaborn as sns 14 | from hkjournalist import Journalist 15 | 16 | config = {} 17 | 18 | df = pd.read_csv('./data/train.csv') 19 | df = df.iloc[:, 1:] 20 | feature_df = df.loc[:, :'Horizontal_Distance_To_Fire_Points'] 21 | 22 | # basic statistics feature 23 | config['Cover_type'] = df.groupby('Cover_Type').size() 24 | config['shape'] = df.shape 25 | config['dtypes'] = feature_df.dtypes 26 | config['skew'] = feature_df.skew() 27 | config['description'] = feature_df.describe() 28 | ``` 29 | 30 | ## Plot the correlation matrix 31 | 32 | ```py 33 | data_corr = feature_df.corr() 34 | plt.figure(figsize=(8, 6)) 35 | grid = sns.heatmap(data_corr, annot=True, fmt='.2f', cmap='RdBu', center=0, linewidth=.5) 36 | plt.tight_layout() 37 | config['Corr'] = grid 38 | ``` 39 | 40 | ## Filter features with high correlation coefficient 41 | 42 | ```py 43 | def drop_by_cor(feature_df, threshold=0.9): 44 | corr_matrix = feature_df.corr().abs() 45 | upper = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(np.bool)) 46 | to_drop = [column for column in upper.columns if any(upper[column] > threshold)] 47 | return to_drop 48 | 49 | 50 | config['select_method'] = drop_by_cor 51 | threshold = 0.7 52 | 53 | valid_features = list(set(feature_df.columns) - set(drop_by_cor(feature_df, threshold))) 54 | config[f'features_remain_with_thres_as_{int(threshold * 100)}'] = valid_features 55 | ``` 56 | 57 | Too many variables to write a template by hand? don't worry, just call `generate_template` method! 58 | 59 | ## HKJournalist can use auto-generated template before making a big report! 60 | 61 | ```py 62 | report_journalist = Journalist() 63 | report_journalist.hear(config) 64 | report_journalist.generate_template('./reports/2_feature_select_template.md') 65 | report_journalist.report('./reports/2_feature_select.pdf', overwrite=True, beamer=True, aspectratio=169) 66 | ``` 67 | 68 | ## Output 69 | 70 | raw file: [./reports/2_feature_select.pdf](https://github.com/li-xin-yi/HK-journalist/blob/master/examples/reports/2_feature_select.pdf) 71 | 72 | ![](./pic/toturial_2_output.png) 73 | -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- 1 | # Configuration file for the Sphinx documentation builder. 2 | # 3 | # This file only contains a selection of the most common options. For a full 4 | # list see the documentation: 5 | # http://www.sphinx-doc.org/en/master/config 6 | 7 | # -- Path setup -------------------------------------------------------------- 8 | 9 | # If extensions (or modules to document with autodoc) are in another directory, 10 | # add these directories to sys.path here. If the directory is relative to the 11 | # documentation root, use os.path.abspath to make it absolute, like shown here. 12 | # 13 | import os 14 | import sys 15 | #sys.path.insert(0, os.path.abspath('.')) 16 | sys.path.insert(0, os.path.abspath('..')) 17 | 18 | import sphinx_rtd_theme 19 | 20 | 21 | # -- Project information ----------------------------------------------------- 22 | 23 | project = 'HKJournalist' 24 | copyright = '2019, Xinyi Li' 25 | author = 'Xinyi Li' 26 | 27 | 28 | # -- General configuration --------------------------------------------------- 29 | 30 | # Add any Sphinx extension module names here, as strings. They can be 31 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom 32 | # ones. 33 | extensions = [ 34 | 'sphinx.ext.autodoc', 35 | 'sphinx.ext.napoleon', 36 | 'sphinx.ext.viewcode', 37 | 'sphinx.ext.autosummary' 38 | ] 39 | 40 | source_suffix = ['.rst', '.md'] 41 | master_doc = 'index' 42 | 43 | pygments_style = 'sphinx' 44 | 45 | 46 | # Add any paths that contain templates here, relative to this directory. 47 | templates_path = ['_templates'] 48 | 49 | # List of patterns, relative to source directory, that match files and 50 | # directories to ignore when looking for source files. 51 | # This pattern also affects html_static_path and html_extra_path. 52 | exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] 53 | 54 | autoclass_content = 'both' 55 | 56 | 57 | # -- Options for HTML output ------------------------------------------------- 58 | 59 | # The theme to use for HTML and HTML Help pages. See the documentation for 60 | # a list of builtin themes. 61 | # 62 | # html_theme = 'alabaster' 63 | html_theme = 'sphinx_rtd_theme' 64 | html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] 65 | # Add any paths that contain custom static files (such as style sheets) here, 66 | # relative to this directory. They are copied after the builtin static files, 67 | # so a file named "default.css" will overwrite the builtin "default.css". 68 | html_static_path = ['_static'] 69 | 70 | source_parsers = { 71 | '.md': 'recommonmark.parser.CommonMarkParser', 72 | } 73 | -------------------------------------------------------------------------------- /examples/1_prophet_model_evaluate.py: -------------------------------------------------------------------------------- 1 | from prophet import Prophet 2 | from hkjournalist import Journalist 3 | import os 4 | import sys 5 | import pandas as pd 6 | import matplotlib.pyplot as plt 7 | import seaborn as sns 8 | 9 | SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) 10 | sys.path.append(os.path.dirname(SCRIPT_DIR)) 11 | 12 | 13 | # data and models from fbprophet tutorials https://facebook.github.io/prophet/docs/quick_start.html#python-api 14 | # markdown report template './reports/simple_model_report_template.md' 15 | 16 | sns.set(style="darkgrid") 17 | 18 | # maintain a dict to record all variables used in reports 19 | config = {} 20 | 21 | # load data 22 | df = pd.read_csv('./data/example_wp_log_peyton_manning.csv') 23 | df['ds'] = pd.to_datetime(df['ds']) 24 | 25 | # plot full data set (time series) 26 | ax = df.set_index('ds').plot(figsize=(20, 10)) 27 | plt.tight_layout() 28 | config['data_plot'] = ax 29 | 30 | # train/test split 31 | train_end_date = '20131231' 32 | config['train_end_date'] = train_end_date 33 | train_df = df[df['ds'] <= train_end_date] 34 | test_df = df[df['ds'] > train_end_date] 35 | 36 | test_df['year'] = test_df['ds'].dt.year 37 | test_df['month'] = test_df['ds'].dt.month 38 | 39 | # model build 40 | model = Prophet(weekly_seasonality=True, yearly_seasonality=True) 41 | model.add_seasonality('monthly', period=30.5, fourier_order=12, prior_scale=10) 42 | model.add_seasonality('quarter', period=364.5 / 4, 43 | fourier_order=10, prior_scale=5) 44 | 45 | # model train & test 46 | model.fit(train_df) 47 | config['seasonality'] = pd.DataFrame(model.seasonalities) 48 | test_df['y_pred'] = model.predict(test_df[['ds']])['yhat'].values 49 | ax = test_df[['ds', 'y', 'y_pred']].set_index( 50 | 'ds').plot(figsize=(20, 10)) # plot predict result 51 | plt.tight_layout() 52 | config['pred_plot'] = ax 53 | 54 | 55 | # define a new kpi metric according to rules 56 | def kpi_mape(df, y_true, y_pred): 57 | # mape group by yearmonth 58 | df[y_pred].clip(0, None, inplace=True) 59 | df['diff'] = abs(df[y_true] - df[y_pred]) 60 | mape_df = df.groupby(['year', 'month']).agg( 61 | {'diff': 'sum', y_true: 'sum'}).reset_index() 62 | mape_df['mape'] = mape_df['diff'] / mape_df[y_true] 63 | res_df = mape_df.pivot(index='month', columns='year', values='mape') 64 | return res_df 65 | 66 | 67 | config['metric_func'] = kpi_mape 68 | 69 | # evaluate prediction on test set 70 | kpi_df = kpi_mape(test_df, 'y', 'y_pred') 71 | plt.figure(figsize=(4, 6)) 72 | ax = sns.heatmap(kpi_df, annot=True, cmap='YlGn', linewidth=.5, fmt='.2f') 73 | plt.tight_layout() 74 | config['error_plot'] = ax 75 | 76 | # record extra info about model 77 | config['note'] = "Prophet with no holidays info" 78 | 79 | # Besides maintaining config dict, all code you need to generate reports is simply 3 lines below: 80 | report_journalist = Journalist( 81 | template_file='./reports/1_prophet_report_template.md') 82 | report_journalist.hear(config) 83 | report_journalist.report( 84 | output_file='./reports/1_prophet_report.pdf', beamer=True, overwrite=False) 85 | -------------------------------------------------------------------------------- /docs/source/quick-start.md: -------------------------------------------------------------------------------- 1 | # Quick Start 2 | 3 | ## Pre-requirements 4 | 5 | Before installing `hkjournalist`, please make sure `pandoc` and `pdflatex` are already properly installed in the environment. 6 | 7 | - `pandoc`: [pandoc.org/installing.html](https://pandoc.org/installing.html) 8 | - `texlive`/`mactex`(for MacOS): [www.tug.org/texlive/ http://www.tug.org/mactex/](https://www.tug.org/texlive/ http://www.tug.org/mactex/) 9 | 10 | ## Install 11 | 12 | ``` 13 | pip install hkjournalist 14 | ``` 15 | 16 | ## Customize your report template 17 | 18 | Write such a `md` file, use a pair of `{}` to wrap every variable which will be assigned specified value in your code. save it to `template.md` 19 | 20 | ````md 21 | % Hello World 22 | % Xinyi Li 23 | % 2019-12-19 24 | 25 | --- 26 | 27 | ### sine plot 28 | 29 | ![]({sin_plot}) 30 | 31 | ### sine table 32 | 33 | {sin_table} 34 | 35 | ### sine function 36 | 37 | ```{{.python}} 38 | {sin_func} 39 | ``` 40 | 41 | ```` 42 | 43 | ## Run a `Journalist()` in your code to fetch variables 44 | 45 | First, you should define a `dict` to record mapping with variable names and their value 46 | 47 | ```py 48 | from hkjournalist import Journalist 49 | 50 | config = {} 51 | ``` 52 | 53 | 54 | Then, start your programming, and do not forget to assign value to corresponding variable names in `config`: 55 | ```py 56 | def sin_2x_and_cos_2x(x): 57 | y = np.sin(x) * np.sin(x) + np.cos(x) * np.cos(x) 58 | return y 59 | 60 | x = np.arange(0, 4 * np.pi, 0.1) 61 | y1 = np.sin(x) 62 | y2 = np.cos(x) 63 | 64 | df = pd.DataFrame({'x': x, 'sin(x)': y1, 'cos(x)': y2}) 65 | df['sin^2^(x)+cos^2^(x)'] = sin_2x_and_cos_2x(df['x']).values 66 | df = df.set_index('x') 67 | 68 | # plot sine curve as sin_plot 69 | ax = df.plot() 70 | plt.tight_layout() 71 | config['sin_plot'] = ax 72 | 73 | # random select 5 point (x,y) as sin_table 74 | config['sin_table'] = df.sample(5) 75 | 76 | # sin_2x_and_cons_2x as sin_func 77 | config['sin_func'] = sin_2x_and_cos_2x 78 | ``` 79 | 80 | ## Invite a journalist to make a big news report 81 | 82 | Last but not least, attach 3 lines **critical** code below to have your `Journalist` make a report and save it to `big_news.pdf` (you can get all code above in [demo](https://github.com/li-xin-yi/HK-journalist/tree/master/demo) and the output file [big_news.pdf](https://github.com/li-xin-yi/HK-journalist/blob/master/demo/big_news.pdf)) 83 | 84 | ```py 85 | # HK journalist runs faster than everyone! hear variable and make a report 86 | reporter = Journalist(template_file='template.md') 87 | reporter.hear(config) 88 | reporter.report(output_file='big_news.pdf', beamer=True, overwrite=True) 89 | ``` 90 | 91 | Report slides display as below: 92 | ![](./pic/big_news.png) 93 | 94 | ## Final question: What will my variables on slides look like? 95 | 96 | All variables pass to `Journalist` via `hear` will display as strings just like what their `__str__` method do. 97 | 98 | Except for 4 types with special support: 99 | 100 | - `pandas.DataFrame`: -> a 3-line table (`TeX` default style) 101 | - `matplotlib.axes.SubplotBase` (known as base figure object `ax` in `matplotlib`): -> a figure print on report (with high quality and small size as `pdf`) 102 | - `function`: -> its full definition 103 | - `list(str)`: -> `len(list)` followed by a sentance with all words concatenated. 104 | -------------------------------------------------------------------------------- /docs/source/tutorial_1.md: -------------------------------------------------------------------------------- 1 | # Tutorial 1: Run a prophet model on time series 2 | 3 | - Code and output: [example/1\_prophet\_model\_evalute.py](https://github.com/li-xin-yi/HK-journalist/blob/master/examples/1_prophet_model_evaluate.py) 4 | - Data and model usage from [`fbprophet` tutorials](https://facebook.github.io/prophet/docs/quick_start.html#python-api) 5 | 6 | 7 | ## Prepare a `dict` to store variables 8 | 9 | ```py 10 | import pandas as pd 11 | import matplotlib.pyplot as plt 12 | import seaborn as sns 13 | from hkjournalist import Journalist 14 | from fbprophet import Prophet 15 | 16 | sns.set(style="darkgrid") 17 | 18 | # maintain a dict to record all variables used in reports 19 | config = {} 20 | ``` 21 | 22 | ## Load data 23 | 24 | ```py 25 | df = pd.read_csv('./data/example_wp_log_peyton_manning.csv') 26 | df['ds'] = pd.to_datetime(df['ds']) 27 | ``` 28 | 29 | ## Plot data 30 | 31 | ```py 32 | ax = df.set_index('ds').plot(figsize=(20, 10)) 33 | plt.tight_layout() 34 | config['data_plot'] = ax 35 | ``` 36 | 37 | ## Split train and test set 38 | 39 | ```py 40 | train_end_date = '20131231' 41 | config['train_end_date'] = train_end_date 42 | train_df = df[df['ds'] <= train_end_date] 43 | test_df = df[df['ds'] > train_end_date] 44 | 45 | test_df['year'] = test_df['ds'].dt.year 46 | test_df['month'] = test_df['ds'].dt.month 47 | ``` 48 | 49 | ## Build a model 50 | 51 | ```py 52 | model = Prophet(weekly_seasonality=True, yearly_seasonality=True) 53 | model.add_seasonality('monthly', period=30.5, fourier_order=12, prior_scale=10) 54 | model.add_seasonality('quarter', period=364.5 / 4, fourier_order=10, prior_scale=5) 55 | ``` 56 | Seasonalities are import hyper-parameters of a `Prophet` model, which should be recorded every time. 57 | 58 | ## Fit this model and plot the prediction 59 | 60 | The final plot should also be reported. 61 | 62 | ```py 63 | model.fit(train_df) 64 | config['seasonality'] = pd.DataFrame(model.seasonalities) 65 | test_df['y_pred'] = model.predict(test_df[['ds']])['yhat'].values 66 | ax = test_df[['ds', 'y', 'y_pred']].set_index('ds').plot(figsize=(20, 10)) # plot predict result 67 | plt.tight_layout() 68 | config['pred_plot'] = ax 69 | ``` 70 | 71 | ## Define a custom metric to evaluate model 72 | 73 | And the metric definition should be exposed to others 74 | 75 | ```py 76 | def kpi_mape(df, y_true, y_pred): 77 | # mape group by yearmonth 78 | df[y_pred] = df[y_pred].clip(0, None) 79 | df['diff'] = abs(df[y_true] - df[y_pred]) 80 | mape_df = df.groupby(['year', 'month']).agg({'diff': 'sum', y_true: 'sum'}).reset_index() 81 | mape_df['mape'] = mape_df['diff'] / mape_df[y_true] 82 | res_df = mape_df.pivot(index='month', columns='year', values='mape') 83 | return res_df 84 | 85 | config['metric_func'] = kpi_mape 86 | ``` 87 | 88 | ## Detail data for error analysis 89 | 90 | ```py 91 | kpi_df = kpi_mape(test_df, 'y', 'y_pred') 92 | plt.figure(figsize=(4, 6)) 93 | ax = sns.heatmap(kpi_df, annot=True, cmap='YlGn', linewidth=.5, fmt='.2f') 94 | plt.tight_layout() 95 | config['error_plot'] = ax 96 | ``` 97 | 98 | ## Add some personal note to describe your model 99 | 100 | ```py 101 | config['note'] = "Prophet with no holidays info" 102 | ``` 103 | 104 | 105 | ## Finally, here comes the `Journalist`! 106 | 107 | ```py 108 | report_journalist = Journalist(template_file='./reports/1_prophet_report_template.md') 109 | report_journalist.hear(config) 110 | report_journalist.report(output_file='./reports/1_prophet_report.pdf', beamer=True, overwrite=False) 111 | ``` 112 | 113 | ## Output slides 114 | 115 | raw file: [examples/reports/1_prophet_report_2019-12-18_22:06:18.pdf](https://github.com/li-xin-yi/HK-journalist/blob/master/examples/reports/1_prophet_report_2019-12-18_22:06:18.pdf) 116 | 117 | ![](./pic/toturial_1_output.png) 118 | -------------------------------------------------------------------------------- /docs/source/tutorial_3.md: -------------------------------------------------------------------------------- 1 | # Write templates with Chinese characters 2 | 3 | *(new feature from 0.0.5)* 4 | 5 | Now, `HKJournalist` can generate reports from templates that contain Chinese Characters. In other words, we can write reports using `zh_CN`. 6 | 7 | ## Pre-requirements 8 | 9 | First of all, you should check if [XeLaTeX](https://www.tug.org/xetex/) is installed properly in your environment. It is always integrated in [TeXLive](https://www.tug.org/texlive/) /[MacTeX](https://tug.org/mactex/). 10 | 11 | Then, make sure you have already installed target Chinese fonts. 12 | 13 | ## Specify the header in `md` template 14 | 15 | In the YAML metadata block, you should specify the CJK font used by the report. To simplify, For slides, we just specify `documnetclass` in which the font is already defined: *(it is what exactly `HKJournalist` do when asked to automatically give a chinese report template)* 16 | 17 | 18 | ```yaml 19 | --- 20 | documentclass: ctexbeamer 21 | title: 中文报告 22 | author: 香港记者 23 | date: \today{{}} 24 | --- 25 | ``` 26 | 27 | Or you can replace the first line with a font declaration, such as: 28 | 29 | ```yaml 30 | # for windows 31 | CJKmainfont: KaiTi 32 | # Or for Linux 33 | mainfont: WenQuanYi Micro Hei Mono 34 | ``` 35 | 36 | **Note**: the line about font or `documentclass` should be placed at first in the block. 37 | 38 | **Note**: `\today{}` is a command that will be replaced by the actual date in proper format in the final report. To escape `{}`, it should be as `\today{{}}` in a template. 39 | 40 | ## Write main part of your program 41 | 42 | In general, there is nothing noteworthy in this part. Codes used in this example is exactly the same as the one in [Quick Start](./quick-start.md). 43 | 44 | ```python 45 | import numpy as np 46 | import pandas as pd 47 | import matplotlib.pyplot as plt 48 | from hkjournalist import Journalist 49 | 50 | config = {} 51 | 52 | 53 | def sin_2x_and_cos_2x(x): 54 | y = np.sin(x) * np.sin(x) + np.cos(x) * np.cos(x) 55 | return y 56 | 57 | 58 | x = np.arange(0, 4 * np.pi, 0.1) 59 | y1 = np.sin(x) 60 | y2 = np.cos(x) 61 | 62 | df = pd.DataFrame({'x': x, 'sin(x)': y1, 'cos(x)': y2}) 63 | df['sin^2^(x)+cos^2^(x)'] = sin_2x_and_cos_2x(df['x']).values 64 | df = df.set_index('x') 65 | 66 | # plot sine curve as sin_plot 67 | ax = df.plot() 68 | plt.tight_layout() 69 | config['sin_plot'] = ax 70 | 71 | # random select 5 point (x,y) as sin_table 72 | config['sin_table'] = df.sample(5) 73 | 74 | config['sin_func'] = sin_2x_and_cos_2x 75 | ``` 76 | 77 | However, you should always be careful on the encoding of your code/text files, especially when chinese characters probably occur in strings. Please ensure your files are always read and written under `UTF-8` encoding. 78 | 79 | And the rest part of [`md` template](https://github.com/li-xin-yi/HK-journalist/blob/master/examples/reports/3_zh_cn_template.md) is: 80 | 81 | ```markdown 82 | ### 正弦曲线 83 | 84 | ![]({sin_plot}) 85 | 86 | ### 正弦取值 87 | 88 | {sin_table} 89 | 90 | ### 正弦函数 91 | 92 | ```{{.python}} 93 | {sin_func} 94 | ``` 95 | 96 | 97 | ## Turn on `zh` 98 | 99 | When constructing a `HKJournalist` instance, Turn on its `zh-CN` support by using `zh=True` argument. 100 | 101 | ```python 102 | reporter = Journalist(template_file='./reports/3_zh_cn_template.md', zh=True) 103 | ``` 104 | 105 | It is not too late to set `reporter.zh=True` by hand before call its `report()` method, of course, if you rely on automatically generated template with `generate_template()`, its `zh` property must be determined more early. 106 | 107 | ## Final report 108 | 109 | The following steps are as usual: 110 | 111 | ```python 112 | reporter.hear(config) 113 | reporter.report(output_file='./reports/3_zh_report.pdf', beamer=True, overwrite=True) 114 | ``` 115 | 116 | The output file [3_zh_report.pdf](https://github.com/li-xin-yi/HK-journalist/blob/master/examples/reports/3_zh_report.pdf) looks like: 117 | 118 | ![](./pic/zh_demo.png) 119 | -------------------------------------------------------------------------------- /slides/main.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: HKJournalist Module 3 | subtitle: A Custom Automatic Report Generator for Python Programs 4 | author: Xinyi Li 5 | date: \today{} 6 | aspectratio: 169 7 | --- 8 | 9 | ## Basic Idea 10 | 11 | **Template** 12 | 13 | - Write a `.md` report with `{var_name}` placeholders instead of real values in some critical places 14 | 15 | **Python Runtime** 16 | 17 | - Maintain a global `dict` variable `config` to fetch mappings in time 18 | 19 | ```{.python} 20 | config = {'var_name': value} 21 | ``` 22 | 23 | - Read `.md` template and fill in real value bound with `var_name` 24 | 25 | ```{.python} 26 | report_template_text = open('template.md','r').read() 27 | Path('raw_report.md').write_text(report_template_text.format(**config)) 28 | ``` 29 | 30 | - Call `pandoc` to convert `md` report to `pdf` slides 31 | 32 | ``` 33 | pandoc -t beamer raw_report.md -o report.pdf 34 | ``` 35 | 36 | ## Wrap Python runtime tasks into a module {.fragile} 37 | 38 | ```{.python} 39 | from hkjournalist import Journalist 40 | 41 | config = dict(...) 42 | 43 | reporter = Journalist(template_file='template.md') 44 | reporter.hear(config) 45 | reporter.report(output_file='output.pdf',beamer=True) 46 | ``` 47 | 48 | ## Display support for special types 49 | 50 | `pandas.DataFrame` 51 | 52 | : $\to$ 3-line table (if numeric, round to `{.2f}`) 53 | 54 | `matplotlib.axes.SubplotBase` 55 | 56 | : $\to$ 57 | 58 | 1. save into a `pdf` standalone file in temp directory 59 | 2. use `![]({var_name})` in template for referring 60 | 3. runtime change as `![](../tmp/xxx.pdf)` 61 | 4. **Note:** before assigning it to `dict`, use 62 | ```{.python} 63 | plt.tight_layout() 64 | ``` 65 | for better performance. 66 | 67 | `function` 68 | 69 | : print its definition 70 | 71 | `list(str)` 72 | 73 | : concatenate into a sentance, following its length (e.g. show features list) 74 | 75 | ## Install 76 | 77 | **Pre-requirements** 78 | 79 | Pandoc 80 | 81 | : https://pandoc.org/installing.html 82 | 83 | pdfLaTeX 84 | 85 | : integrated in [TeXLive](https://www.tug.org/texlive/) (and [MacTeX](http://www.tug.org/mactex/) for MacOS users). 86 | 87 | **Make sure your environment variables set properly.** 88 | 89 | - Install from [PyPI](https://pypi.org/project/hkjournalist/): 90 | ``` 91 | pip install hkjournalist 92 | ``` 93 | **For `Jupyter Notebook` users with Chrome** 94 | 95 | - cannot open `.pdf` on file browser. Download [Firefox](https://www.mozilla.org/en-US/firefox/new/). 96 | 97 | ## Example 98 | \framesubtitle{template.md} 99 | 100 | :::::::::::::: {.columns} 101 | ::: {.column width="50%"} 102 | 103 | ````{.markdown} 104 | % Hello World 105 | % Xinyi Li 106 | % 2019-12-19 107 | 108 | --- 109 | 110 | ### sine plot 111 | 112 | ![]({sin_plot}) 113 | 114 | ### sine table 115 | 116 | {sin_table} 117 | ```` 118 | ::: 119 | 120 | ::: {.column width="50%"} 121 | 122 | ````{.markdown .numberLines startFrom="14"} 123 | 124 | ### sine function 125 | 126 | ```{{.python}} 127 | {sin_func} 128 | ``` 129 | ```` 130 | **Note** 131 | 132 | : use `{{}}` to escape `{}` 133 | ::: 134 | :::::::::::::: 135 | 136 | ## Example {.allowframebreaks} 137 | \framesubtitle{demo.py (leave out headers)} 138 | 139 | ```{.python} 140 | config = {} 141 | def sin_2x_and_cos_2x(x): 142 | y = np.sin(x) * np.sin(x) + np.cos(x) * np.cos(x) 143 | return y 144 | 145 | x = np.arange(0, 4 * np.pi, 0.1) 146 | y1 = np.sin(x) 147 | y2 = np.cos(x) 148 | 149 | df = pd.DataFrame({'x': x, 'sin(x)': y1, 'cos(x)': y2}) 150 | df['sin^2^(x)+cos^2^(x)'] = sin_2x_and_cos_2x(df['x']).values 151 | df = df.set_index('x') 152 | 153 | # plot sine curve as sin_plot 154 | ax = df.plot() 155 | plt.tight_layout() 156 | config['sin_plot'] = ax 157 | 158 | # random select 5 point (x,y) as sin_table 159 | config['sin_table'] = df.sample(5) 160 | # sin_2x_and_cos_2x as sin_func 161 | config['sin_func'] = sin_2x_and_cos_2x 162 | 163 | # HK journalist runs faster than everyone! hear variables and make a big report 164 | reporter = Journalist(template_file='template.md') 165 | reporter.hear(config) 166 | reporter.report(output_file='big_news.pdf', beamer=True, overwrite=True) 167 | ``` 168 | 169 | ## Example 170 | \framesubtitle{big\_news.pdf} 171 | ![](figures/big_news.pdf){ height=100% } 172 | 173 | ## Features 174 | 175 | ### Snapshot 176 | 177 | ```{.python} 178 | Journalist.report(overwrite=False) 179 | ``` 180 | 181 | - it is why use `.pdf` instead of `.html` or raw `.md` 182 | - add a timestamp at the end of output filename, such as `1_prophet_report_2019-12-18_22:06:18.pdf` 183 | 184 | ### Generate Template 185 | 186 | ```{.python} 187 | Journalist.generate_template() 188 | ``` 189 | 190 | - after `hear` method 191 | - generate template with **each** variable on subsection/slide page according its type: 192 | - `var_name` as *title*, `value` as *page content* 193 | - slight modification for usage 194 | 195 | ## References 196 | 197 | GitHub 198 | 199 | : https://github.com/li-xin-yi/HK-journalist 200 | 201 | Documents 202 | 203 | : https://hk-journalist.readthedocs.io/en/latest/ 204 | 205 | Introduction 206 | 207 | : https://zhuanlan.zhihu.com/p/98708920 (Chinese) 208 | 209 | Write Guide 210 | 211 | : https://pandoc.org/MANUAL.html 212 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | MANIFEST 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .nox/ 42 | .coverage 43 | .coverage.* 44 | .cache 45 | nosetests.xml 46 | coverage.xml 47 | *.cover 48 | .hypothesis/ 49 | .pytest_cache/ 50 | 51 | # Translations 52 | *.mo 53 | *.pot 54 | 55 | # Django stuff: 56 | *.log 57 | local_settings.py 58 | db.sqlite3 59 | 60 | # Flask stuff: 61 | instance/ 62 | .webassets-cache 63 | 64 | # Scrapy stuff: 65 | .scrapy 66 | 67 | # Sphinx documentation 68 | docs/_build/ 69 | 70 | # PyBuilder 71 | target/ 72 | 73 | # Jupyter Notebook 74 | .ipynb_checkpoints 75 | 76 | # IPython 77 | profile_default/ 78 | ipython_config.py 79 | 80 | # pyenv 81 | .python-version 82 | 83 | # celery beat schedule file 84 | celerybeat-schedule 85 | 86 | # SageMath parsed files 87 | *.sage.py 88 | 89 | # Environments 90 | .env 91 | .venv 92 | env/ 93 | venv/ 94 | ENV/ 95 | env.bak/ 96 | venv.bak/ 97 | 98 | # Spyder project settings 99 | .spyderproject 100 | .spyproject 101 | 102 | # Rope project settings 103 | .ropeproject 104 | 105 | # mkdocs documentation 106 | /site 107 | 108 | # mypy 109 | .mypy_cache/ 110 | .dmypy.json 111 | dmypy.json 112 | 113 | # Pyre type checker 114 | .pyre/ 115 | 116 | 117 | # Created by https://www.toptal.com/developers/gitignore/api/tex 118 | # Edit at https://www.toptal.com/developers/gitignore?templates=tex 119 | 120 | ### TeX ### 121 | ## Core latex/pdflatex auxiliary files: 122 | *.aux 123 | *.lof 124 | *.log 125 | *.lot 126 | *.fls 127 | *.out 128 | *.toc 129 | *.fmt 130 | *.fot 131 | *.cb 132 | *.cb2 133 | .*.lb 134 | 135 | ## Intermediate documents: 136 | *.dvi 137 | *.xdv 138 | *-converted-to.* 139 | # these rules might exclude image files for figures etc. 140 | # *.ps 141 | # *.eps 142 | # *.pdf 143 | 144 | ## Generated if empty string is given at "Please type another file name for output:" 145 | .pdf 146 | 147 | ## Bibliography auxiliary files (bibtex/biblatex/biber): 148 | *.bbl 149 | *.bcf 150 | *.blg 151 | *-blx.aux 152 | *-blx.bib 153 | *.run.xml 154 | 155 | ## Build tool auxiliary files: 156 | *.fdb_latexmk 157 | *.synctex 158 | *.synctex(busy) 159 | *.synctex.gz 160 | *.synctex.gz(busy) 161 | *.pdfsync 162 | 163 | ## Build tool directories for auxiliary files 164 | # latexrun 165 | latex.out/ 166 | 167 | ## Auxiliary and intermediate files from other packages: 168 | # algorithms 169 | *.alg 170 | *.loa 171 | 172 | # achemso 173 | acs-*.bib 174 | 175 | # amsthm 176 | *.thm 177 | 178 | # beamer 179 | *.nav 180 | *.pre 181 | *.snm 182 | *.vrb 183 | 184 | # changes 185 | *.soc 186 | 187 | # comment 188 | *.cut 189 | 190 | # cprotect 191 | *.cpt 192 | 193 | # elsarticle (documentclass of Elsevier journals) 194 | *.spl 195 | 196 | # endnotes 197 | *.ent 198 | 199 | # fixme 200 | *.lox 201 | 202 | # feynmf/feynmp 203 | *.mf 204 | *.mp 205 | *.t[1-9] 206 | *.t[1-9][0-9] 207 | *.tfm 208 | 209 | #(r)(e)ledmac/(r)(e)ledpar 210 | *.end 211 | *.?end 212 | *.[1-9] 213 | *.[1-9][0-9] 214 | *.[1-9][0-9][0-9] 215 | *.[1-9]R 216 | *.[1-9][0-9]R 217 | *.[1-9][0-9][0-9]R 218 | *.eledsec[1-9] 219 | *.eledsec[1-9]R 220 | *.eledsec[1-9][0-9] 221 | *.eledsec[1-9][0-9]R 222 | *.eledsec[1-9][0-9][0-9] 223 | *.eledsec[1-9][0-9][0-9]R 224 | 225 | # glossaries 226 | *.acn 227 | *.acr 228 | *.glg 229 | *.glo 230 | *.gls 231 | *.*-glg 232 | *.*-glo 233 | *.*-gls 234 | *.glsdefs 235 | *.lzo 236 | *.lzs 237 | 238 | # uncomment this for glossaries-extra (will ignore makeindex's style files!) 239 | # *.ist 240 | 241 | # gnuplottex 242 | *-gnuplottex-* 243 | 244 | # gregoriotex 245 | *.gaux 246 | *.gtex 247 | 248 | # htlatex 249 | *.4ct 250 | *.4tc 251 | *.idv 252 | *.lg 253 | *.trc 254 | *.xref 255 | 256 | # hyperref 257 | *.brf 258 | 259 | # knitr 260 | *-concordance.tex 261 | # TODO Comment the next line if you want to keep your tikz graphics files 262 | *.tikz 263 | *-tikzDictionary 264 | 265 | # listings 266 | *.lol 267 | 268 | # luatexja-ruby 269 | *.ltjruby 270 | 271 | # makeidx 272 | *.idx 273 | *.ilg 274 | *.ind 275 | 276 | # minitoc 277 | *.maf 278 | *.mlf 279 | *.mlt 280 | *.mtc 281 | *.mtc[0-9]* 282 | *.slf[0-9]* 283 | *.slt[0-9]* 284 | *.stc[0-9]* 285 | 286 | # minted 287 | _minted* 288 | *.pyg 289 | 290 | # morewrites 291 | *.mw 292 | 293 | # nomencl 294 | *.nlg 295 | *.nlo 296 | *.nls 297 | 298 | # pax 299 | *.pax 300 | 301 | # pdfpcnotes 302 | *.pdfpc 303 | 304 | # sagetex 305 | *.sagetex.sage 306 | *.sagetex.py 307 | *.sagetex.scmd 308 | 309 | # scrwfile 310 | *.wrt 311 | 312 | # sympy 313 | *.sout 314 | *.sympy 315 | sympy-plots-for-*.tex/ 316 | 317 | # pdfcomment 318 | *.upa 319 | *.upb 320 | 321 | # pythontex 322 | *.pytxcode 323 | pythontex-files-*/ 324 | 325 | # tcolorbox 326 | *.listing 327 | 328 | # thmtools 329 | *.loe 330 | 331 | # TikZ & PGF 332 | *.dpth 333 | *.md5 334 | *.auxlock 335 | 336 | # todonotes 337 | *.tdo 338 | 339 | # vhistory 340 | *.hst 341 | *.ver 342 | 343 | # easy-todo 344 | *.lod 345 | 346 | # xcolor 347 | *.xcp 348 | 349 | # xmpincl 350 | *.xmpi 351 | 352 | # xindy 353 | *.xdy 354 | 355 | # xypic precompiled matrices and outlines 356 | *.xyc 357 | *.xyd 358 | 359 | # endfloat 360 | *.ttt 361 | *.fff 362 | 363 | # Latexian 364 | TSWLatexianTemp* 365 | 366 | ## Editors: 367 | # WinEdt 368 | *.bak 369 | *.sav 370 | 371 | # Texpad 372 | .texpadtmp 373 | 374 | # LyX 375 | *.lyx~ 376 | 377 | # Kile 378 | *.backup 379 | 380 | # gummi 381 | .*.swp 382 | 383 | # KBibTeX 384 | *~[0-9]* 385 | 386 | # TeXnicCenter 387 | *.tps 388 | 389 | # auto folder when using emacs and auctex 390 | ./auto/* 391 | *.el 392 | 393 | # expex forward references with \gathertags 394 | *-tags.tex 395 | 396 | # standalone packages 397 | *.sta 398 | 399 | # Makeindex log files 400 | *.lpz 401 | 402 | # REVTeX puts footnotes in the bibliography by default, unless the nofootinbib 403 | # option is specified. Footnotes are the stored in a file with suffix Notes.bib. 404 | # Uncomment the next line to have this generated file ignored. 405 | #*Notes.bib 406 | 407 | ### TeX Patch ### 408 | # LIPIcs / OASIcs 409 | *.vtc 410 | 411 | # glossaries 412 | *.glstex 413 | 414 | # End of https://www.toptal.com/developers/gitignore/api/tex 415 | 416 | .idea/ 417 | *.DS_Store 418 | */temp/* 419 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HK-journalist: Custom Automatic Report Generator for Python program! 2 | 3 | [![Python Versions](https://img.shields.io/pypi/pyversions/hkjournalist.svg)](https://pypi.org/project/hkjournalist) 4 | [![PyPI Version](https://img.shields.io/pypi/v/hkjournalist.svg)](https://pypi.org/project/hkjournalist) 5 | [![License](https://img.shields.io/github/license/li-xin-yi/hk-journalist.svg)](https://github.com/shenweichen/li-xin-yi/blob/master/LICENSE) 6 | [![PyPI - Downloads](https://img.shields.io/pypi/dm/hkjournalist)](https://pypi.org/project/hkjournalist) 7 | [![code size](https://img.shields.io/github/languages/code-size/li-xin-yi/hk-journalist)]() 8 | [![panodc](https://img.shields.io/badge/pandoc-v2.2.3-yellow.svg)](https://pandoc.org/) 9 | [![TeXLive](https://img.shields.io/badge/TeXLive-2018/2019-important.svg)](https://www.tug.org/texlive/) 10 | [![documents status](https://img.shields.io/readthedocs/hk-journalist)](https://hk-journalist.readthedocs.io/) 11 | 12 | 13 | 14 | It is a light and useful Python module, helping you generate a small size, pretty report as PDF slides (or any other format documents which humans can directly read and hand out) each time after your programs finish. All you need to do is to customize a report template using `MarkDown` with variables names used in your Python program and maintain a `dict` to store those variables. Then, A few lines of code added before the end of programs can automatically fetch and display them in the final report file. Also, the codes intended to deal with frequent structures/arguments changes or data source changes can benefit from the package if the report can play a role of 'snapshot' (with timestamp) of each code version. 15 | 16 | - Documentation: https://hk-journalist.readthedocs.io/en/latest/index.html 17 | - Slides for sharing: [slides](./slides/slides.pdf) 18 | 19 | ## Table of Contents 20 | - [Quick Start](#quick-start) 21 | * [Install](#install) 22 | * [Customize your report template](#customize-your-report-template) 23 | * [Run a `Journalist()` in your code to fetch variables](#run-a--journalist----in-your-code-to-fetch-variables) 24 | * [Invite a journalist to make a big news report](#invite-a-journalist-to-make-a-big-news-report) 25 | - [I am too lazy to write a `md` template](#i-am-too-lazy-to-write-an--md--template) 26 | - [Support For zh_CN *(New feature :tada:)*](#support-for-zh_cn) 27 | - [What will my variables on slides look like?](#what-will-my-variables-on-slides-look-like-) 28 | - [More examples and instructions](#more-examples-and-instructions) 29 | - [Tips](#tips) 30 | - [Prerequirements](#prerequirements) 31 | 32 | ## Quick Start 33 | 34 | Before installing `hkjournalist`, please make sure `pandoc` and `pdflatex` are already properly installed in the environment. ([install instruction](#prerequirements)) 35 | 36 | ### Install 37 | 38 | ``` 39 | pip install hkjournalist 40 | ``` 41 | 42 | ### Customize your report template 43 | 44 | Write such an `md` file, use a pair of `{}` to wrap every variable which will be assigned a specified value in your code. save it to `template.md` 45 | 46 | ````md 47 | % Hello World 48 | % Xinyi Li 49 | % 2019-12-19 50 | 51 | --- 52 | 53 | ### sine plot 54 | 55 | ![]({sin_plot}) 56 | 57 | ### sine table 58 | 59 | {sin_table} 60 | 61 | ### sine function 62 | 63 | ```{{.python}} 64 | {sin_func} 65 | ``` 66 | 67 | ```` 68 | 69 | ### Run a `Journalist()` in your code to fetch variables 70 | 71 | First, you should define a `dict` to record mapping with variable names and their value 72 | 73 | ```py 74 | from hkjournalist import Journalist 75 | 76 | config = {} 77 | ``` 78 | 79 | 80 | Then, start your programming, and do not forget to assign value to corresponding variable names in `config`: 81 | ```py 82 | def sin_2x_and_cos_2x(x): 83 | y = np.sin(x) * np.sin(x) + np.cos(x) * np.cos(x) 84 | return y 85 | 86 | x = np.arange(0, 4 * np.pi, 0.1) 87 | y1 = np.sin(x) 88 | y2 = np.cos(x) 89 | 90 | df = pd.DataFrame({'x': x, 'sin(x)': y1, 'cos(x)': y2}) 91 | df['sin^2^(x)+cos^2^(x)'] = sin_2x_and_cos_2x(df['x']).values 92 | df = df.set_index('x') 93 | 94 | # plot sine curve as sin_plot 95 | ax = df.plot() 96 | plt.tight_layout() 97 | config['sin_plot'] = ax 98 | 99 | # random select 5 point (x,y) as sin_table 100 | config['sin_table'] = df.sample(5) 101 | 102 | # sin_2x_and_cos_2x as sin_func 103 | config['sin_func'] = sin_2x_and_cos_2x 104 | ``` 105 | 106 | ### Invite a journalist to make a big news report 107 | 108 | Last but not least, attach 3 lines **critical** code below to have your `Journalist` make a report and save it to `big_news.pdf` (you can get all code above in [demo](./demo) and the output file [big_news.pdf](./demo/big_news.pdf)) 109 | 110 | ```py 111 | # HK journalist runs faster than everyone! hear variable and make a report 112 | reporter = Journalist(template_file='template.md') 113 | reporter.hear(config) 114 | reporter.report(output_file='big_news.pdf', beamer=True, overwrite=True) 115 | ``` 116 | 117 | Report slides display as below: 118 | ![](./demo/big_news.png) 119 | 120 | ## I am too lazy to write an `md` template 121 | 122 | If you have too many variables to report, which make write a template a big project, or simply don't want to write an `md` template, **No problem!** `hkjournalist` can generate a report template with each variable on one slide page automatically. With slight modification or directly using it as a template, you can get your real report. 123 | 124 | **Example** 125 | 126 | ```py 127 | import numpy as np 128 | import matplotlib.pyplot as plt 129 | import seaborn as sns 130 | from hkjournalist import Journalist 131 | 132 | config = {} 133 | 134 | for i in range(1, 4): 135 | uniform_data = np.random.rand(10, 12) 136 | plt.figure(figsize=(10, 8)) 137 | ax = sns.heatmap(uniform_data, cmap='Blues', annot=True, linewidth=.5) 138 | plt.tight_layout() 139 | config[f'Plot_{i}'] = ax 140 | 141 | reporter = Journalist(fig_height='80%') 142 | reporter.hear(config) 143 | reporter.generate_template('auto_generate_template.md') 144 | reporter.report(output_file='auto_report.pdf', beamer=True, overwrite=True) 145 | ``` 146 | Output ([raw file](./demo/auto_report.pdf) ): 147 | 148 | ![](./demo/auto_report.png) 149 | 150 | ## Support For zh_CN 151 | 152 | Yes, now, from version 0.0.5, it can use template contains chinese characters :tada:. 153 | 154 | Just pass argument `zh=True` when creating a Journalist(), or set its `zh` property at any time before generating reports. 155 | 156 | ```py 157 | reporter = Journalist(template_file='./reports/template.md', zh=True) 158 | ``` 159 | 160 | If you want to use your customized template with chinese characters, don't forget to add one line at first of the YAML metadata block in your `Markdown` template: 161 | 162 | ```markdown 163 | --- 164 | documentclass: ctexbeamer 165 | ... 166 | --- 167 | ``` 168 | 169 | Here is a [simple example](./examples/3_zh_CN_support.py) similar to [Quick start](#quick-start), Except for [its template](./examples/reports/3_zh_cn_template.md) containing chinese characters. A perfect chinese [slides](./examples/reports/3_zh_report.pdf) file can be generated by the program as: 170 | 171 | ![](./demo/zh_demo.png) 172 | 173 | **Note**: make sure `xelatex` is installed properly. 174 | 175 | More details can be found in [API Documentation](https://hk-journalist.readthedocs.io/en/latest/source/hkjournalist.html) and [this tutorial](https://hk-journalist.readthedocs.io/en/latest/source/tutorial_3.html). 176 | 177 | ## What will my variables on slides look like? 178 | 179 | All variables pass to `Journalist` via `hear` will display as strings just like what their `__str__` method does. 180 | 181 | Except for 4 types with special support: 182 | 183 | - `pandas.DataFrame`: -> a 3-line table (`TeX` default style) 184 | - `matplotlib.axes.SubplotBase` (known as base figure object `ax` in `matplotlib`): -> a figure print on report (with high quality and small size as `pdf`) 185 | - `function`: -> its full definition 186 | - `list(str)`: -> `len(list)` followed by a sentance with all words concatenated. 187 | 188 | Besides, `list(str)` and `pandas.DataFrame` may be too long to display, which are allowed to span multiple pages in final slides. 189 | 190 | ## More examples and instructions 191 | 192 | - [Documentation(https://hk-journalist.readthedocs.io/) 193 | - More complex usages available in [examples](./examples) 194 | - How to write a sophisticated slides template using `md`? See [pandoc tutorials](https://pandoc.org/MANUAL.html#producing-slide-shows-with-pandoc) 195 | 196 | ## Tips 197 | 198 | - Before pass `plt.Axes` object (figure object used in `matplotlib`) to `dict`, use `plt.tight_layout()`statement to adjust its size. 199 | - Use double curly braces `{{}}` to escape `{}` in the template. 200 | - Turn off parameter `overwrite` in `Journalist.report()`, you will get a file name with a timestamp in it. All these reports generated by such a method serve as snapshots. 201 | - To produce plain PDF article document instead of beamer slides, turn off `beamer` in `report()`. 202 | 203 | ## Prerequirements 204 | 205 | - `pandoc`: https://pandoc.org/installing.html 206 | - `texlive`/`mactex`(for MacOS): https://www.tug.org/texlive/ http://www.tug.org/mactex/ 207 | 208 | And if you use some IDEs like PyCharm, you need to add their path (use `which tex` and `which pandoc` in bash environment to find them) to environment variables `$PATH` in IDE run options. (e.g. in Pycharm,`run`-> `edit configuration` -> `environment variables`) 209 | 210 | For [Jupyter Notebook](https://jupyter.org/) users, the final output file may not be opened on Chrome (see [this question](https://stackoverflow.com/questions/55251691/how-to-open-pdf-file-in-jupyter-file-browser)). So, for convenience, you can download [Firefox](https://www.mozilla.org/en-US/firefox/new/) to write notebooks and view pdf reports right after generating. 211 | -------------------------------------------------------------------------------- /hkjournalist/journalist.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import os 3 | import matplotlib 4 | import inspect 5 | import matplotlib.pyplot as plt 6 | import subprocess 7 | import datetime 8 | import collections 9 | from tabulate import tabulate 10 | from pathlib import Path 11 | from shutil import rmtree 12 | import pkg_resources 13 | 14 | resource_package = __name__ 15 | code_config_path = '/'.join(('configuration', 'code_block.tex')) 16 | tex_config_path = pkg_resources.resource_filename( 17 | resource_package, code_config_path) 18 | 19 | try: 20 | collectionsAbc = collections.abc 21 | except AttributeError: 22 | collectionsAbc = collections 23 | 24 | 25 | class Journalist(): 26 | """ 27 | Class to record and generate reports 28 | """ 29 | 30 | def __init__(self, template_file=None, fig_width=None, fig_height=None, tmp_path='./temp', zh=False): 31 | """ 32 | :param template_file: file path of md template 33 | :type template_file: str 34 | :param fig_width: figure width (percentage of whole page width), prior to `fig_height` settings 35 | :type fig_width: None, int 36 | :param fig_height: figure height (percentage of whole page width)` 37 | :type fig_height: None, int 38 | :param tmp_path: temporary directory path to store temporary files (such as figures) 39 | :type tmp_path: str 40 | :param zh: if it supports chinese (zh_CN) usage 41 | :type zh: bool 42 | """ 43 | self.template_file = template_file 44 | self._width = fig_width 45 | self._height = fig_height 46 | self.var_type = {} 47 | self.fig_counters = 0 48 | self.tmp_path = tmp_path 49 | self.report_config = {} 50 | self.zh = zh 51 | if not os.path.exists(tmp_path): 52 | os.mkdir(tmp_path) 53 | if fig_width: 54 | self.fig_config = '{{ ' + f'width={fig_width}%' + ' }}' 55 | elif fig_height: 56 | self.fig_config = '{{ ' + f'height={fig_height}%' + ' }}' 57 | else: 58 | self.fig_config = '' 59 | 60 | def __preprocess(self, config_dict: dict): 61 | """ 62 | :param config_dict: 63 | :type config_dict: dict 64 | :return: config dict after pre-processing 65 | :rtype: dict 66 | """ 67 | applied_config_dict = config_dict.copy() 68 | for k, report_content in config_dict.items(): 69 | if isinstance(report_content, pd.DataFrame): 70 | # transform into a string with markdown table format, 71 | applied_config_dict[k] = tabulate( 72 | report_content.round(2), tablefmt='github', headers='keys') 73 | self.var_type[k] = 'table' 74 | 75 | elif isinstance(report_content, matplotlib.axes.SubplotBase): 76 | # save plot generated by matplotlib to a pdf format in temp directory 77 | fig_file = os.path.join( 78 | self.tmp_path, f'figure_{self.fig_counters}.pdf') 79 | self.fig_counters += 1 80 | ax = report_content.get_figure() 81 | ax.savefig(fig_file) 82 | applied_config_dict[k] = fig_file 83 | self.var_type[k] = 'figure' 84 | 85 | elif callable(report_content): 86 | # print function definition on final report 87 | applied_config_dict[k] = inspect.getsource(report_content) 88 | self.var_type[k] = 'function' 89 | 90 | elif isinstance(report_content, list) and all(isinstance(s, str) for s in report_content): 91 | # concatenate all words into a sentence 92 | applied_config_dict[k] = str( 93 | len(report_content)) + ' ' + ', '.join(report_content) 94 | self.var_type[k] = 'list(str)' 95 | 96 | elif isinstance(report_content, collectionsAbc.Iterable) and all( 97 | isinstance(s, matplotlib.axes.SubplotBase) for s in report_content): 98 | # plot last ax 99 | fig_file = os.path.join( 100 | self.tmp_path, f'figure_{self.fig_counters}.pdf') 101 | self.fig_counters += 1 102 | ax = report_content[-1].get_figure() 103 | ax.savefig(fig_file) 104 | applied_config_dict[k] = fig_file 105 | self.var_type[k] = 'figure' 106 | 107 | elif isinstance(report_content, pd.Series): 108 | applied_config_dict[k] = str( 109 | report_content).replace('\n', '\n\n') 110 | self.var_type[k] = 'series' 111 | 112 | else: 113 | # otherwise: leave it as origin format (use its own str method) 114 | applied_config_dict[k] = report_content 115 | self.var_type[k] = 'other' 116 | 117 | return applied_config_dict 118 | 119 | def hear(self, config_dict: dict): 120 | """ 121 | Pass your variables mappings to the reporter 122 | 123 | :param config_dict: variable mappings such as {'var_name':value} 124 | :type config_dict: dict 125 | :return: None 126 | :rtype: None 127 | """ 128 | newest_config = self.__preprocess(config_dict) 129 | self.report_config.update(newest_config) 130 | 131 | def generate_template(self, template_file='./template.md', title='template', author='Author', append=False): 132 | """Generate a `md` template according to mappings which previously passed to. 133 | 134 | The output template will be structed as each variable on a single slide with variable name as its title 135 | 136 | **Note**:it may overwrite the file with the address 137 | 138 | :param template_file: output template file path 139 | :type template_file: str 140 | :return: None 141 | :rtype: None 142 | :param title: report title 143 | :type title: str 144 | :param author: author name 145 | :type author: str 146 | :param append: If use append mode to add new contents of report 147 | :type append: bool 148 | :return: 149 | """ 150 | if self.template_file and not append: 151 | print('warning: template file was specified before and will be overwritten') 152 | 153 | self.template_file = template_file 154 | if append: 155 | report_text = open(self.template_file).read() + '\n' 156 | else: 157 | report_text = '---\n' 158 | if self.zh: 159 | report_text += 'documentclass: ctexbeamer\n' 160 | report_text += f'title: {title}\n' 161 | report_text += f'author: {author}\n' 162 | report_text += 'date: \\today{{}}\n' 163 | report_text += '---\n' 164 | 165 | for k, v in self.var_type.items(): 166 | k_name = '{' + k + '}' 167 | title = f"### {k}\n\n" 168 | if v == 'figure': 169 | content = f'![]({k_name}){self.fig_config}\n\n' 170 | elif v == 'function': 171 | title = f"### {k}" + '{{.fragile}}\n\n' 172 | content = '```{{.python}}\n' + k_name + '\n```\n\n' 173 | else: 174 | # In case the content is too long, allow multiple frames to display 175 | if v == 'list(str)' or v == 'table' or v == 'series': 176 | title = f"### {k}" + '{{.allowframebreaks}}\n\n' 177 | content = k_name + '\n\n' 178 | report_text = report_text + title + content 179 | 180 | Path(template_file).write_text(report_text) 181 | print(f'New template file is generated in {template_file}') 182 | 183 | def report(self, output_file='./final_report.pdf', beamer=True, theme='default', color_theme='seagull', 184 | use_template_config=False, overwrite=True, aspectratio=43,): 185 | """ 186 | Generate final pdf (or other format) report using previously heard config dict 187 | 188 | :param output_file: final output file path 189 | :type output_file: str 190 | :param beamer: whether the output pdf will be a beamer slides ? 191 | :type beamer: bool 192 | :param theme: the theme used to create beamer (see https://hartwork.org/beamer-theme-matrix/)) 193 | :type theme: str 194 | :param color_theme: the color theme used to create beamer (see https://hartwork.org/beamer-theme-matrix/) 195 | :type color_theme: str 196 | :param use_template_config: whether use metadata params of format in your custom template, if false, just use params in this function to produce a report. otherwise, please ref to https://pandoc.org/MANUAL.html to write a fine ``md`` template 197 | :type use_template_config: bool 198 | :param overwrite: whether use a timestamp of current time as a postfix for the final output filename. if false, a new file will occur every time the method call without overwriting previouly ones. 199 | :type overwrite: bool 200 | :param aspectratio: aspect ratio of slide page. only valid when `beamer` is turn on and output format is `pdf` 201 | :type aspectratio: int 202 | :return: execution return code (0 if succeed) 203 | :rtype: int 204 | """ 205 | raw_file = os.path.join(self.tmp_path, 'raw_report.md') 206 | output_file = output_file.replace(' ', '-') 207 | report_name, ext = os.path.splitext(output_file) 208 | args_list = ['pandoc', '-s', raw_file, 209 | '--listings', '-H', tex_config_path] 210 | 211 | if overwrite: 212 | final_file = output_file 213 | else: 214 | timestamp = datetime.datetime.now().strftime("%Y-%m-%d_%H:%M:%S") 215 | final_file = f"{report_name}_{timestamp}{ext}" 216 | 217 | report_template_text = open( 218 | self.template_file, 'r', encoding='utf8').read() 219 | Path(raw_file).write_text(report_template_text.format( 220 | **self.report_config), encoding='utf8') 221 | 222 | if beamer and ext == '.pdf': 223 | args_list += ['-t', 'beamer'] 224 | else: 225 | args_list += ['-t', 'latex'] 226 | 227 | if beamer and not use_template_config: 228 | args_list += ['-V', 'theme:' + theme, '-V', 'colortheme:' + color_theme, '-V', 229 | 'aspectratio:' + str(aspectratio)] 230 | 231 | if self.zh: 232 | args_list.append('--pdf-engine=xelatex') 233 | 234 | args_list += ['-o', final_file] 235 | 236 | # command = f'pandoc {beamer_command} {raw_file} {tex_command} {args_list} -s -o {final_file}' 237 | 238 | # shell=True sometimes leads to invalid output 239 | proc = subprocess.run(args_list, shell=False, capture_output=True) 240 | 241 | if proc.returncode == 0: 242 | print(f'Make a big news! The newest report is now in {final_file}') 243 | else: 244 | # for debug 245 | print(f'Report failed with code {proc.returncode} \n', f'stderr: {proc.stderr.decode("utf8")} \n ', 246 | f'stdout: {proc.stdout.decode("utf8")}') 247 | 248 | if os.path.exists(self.tmp_path): 249 | rmtree(self.tmp_path) 250 | return proc.returncode 251 | -------------------------------------------------------------------------------- /examples/data/example_wp_log_peyton_manning.csv: -------------------------------------------------------------------------------- 1 | "ds","y" 2 | "2007-12-10",9.59076113897809 3 | "2007-12-11",8.51959031601596 4 | "2007-12-12",8.18367658262066 5 | "2007-12-13",8.07246736935477 6 | "2007-12-14",7.8935720735049 7 | "2007-12-15",7.78364059622125 8 | "2007-12-16",8.41405243249672 9 | "2007-12-17",8.82922635473185 10 | "2007-12-18",8.38251828808963 11 | "2007-12-19",8.06965530688617 12 | "2007-12-20",7.87929148508227 13 | "2007-12-21",7.76174498465891 14 | "2007-12-22",7.52940645783701 15 | "2007-12-23",8.38526052015541 16 | "2007-12-24",8.62011072542292 17 | "2007-12-25",7.85243908535751 18 | "2007-12-26",7.85399308722424 19 | "2007-12-27",8.0519780789023 20 | "2007-12-28",7.92660259918138 21 | "2007-12-29",7.83834331555712 22 | "2007-12-30",9.70314458114435 23 | "2007-12-31",9.38597294061934 24 | "2008-01-01",8.29379960884682 25 | "2008-01-02",8.43468076984177 26 | "2008-01-03",8.26204284396694 27 | "2008-01-04",8.10681603894705 28 | "2008-01-05",7.95014988765202 29 | "2008-01-06",9.50925907635395 30 | "2008-01-07",8.84678466694523 31 | "2008-01-08",8.43054538469057 32 | "2008-01-09",8.2482674474469 33 | "2008-01-10",8.28172399041139 34 | "2008-01-11",8.29279885820037 35 | "2008-01-12",8.19918935907807 36 | "2008-01-13",9.99652241850332 37 | "2008-01-14",10.1270710070787 38 | "2008-01-15",8.93379604393486 39 | "2008-01-16",8.56617381363786 40 | "2008-01-17",8.54772239645106 41 | "2008-01-18",8.39976009452414 42 | "2008-01-19",8.22309055116153 43 | "2008-01-20",8.83898679349679 44 | "2008-01-21",10.8972021813751 45 | "2008-01-22",9.44493807333551 46 | "2008-01-23",8.92332474406756 47 | "2008-01-24",8.5434455625603 48 | "2008-01-25",8.49556089128912 49 | "2008-01-26",8.41737285613403 50 | "2008-01-27",8.57262789830434 51 | "2008-01-28",8.73648935100155 52 | "2008-01-29",8.63408694288774 53 | "2008-01-30",8.67351294567119 54 | "2008-02-01",8.82423661734664 55 | "2008-02-02",8.53797573059877 56 | "2008-02-03",9.69806112202708 57 | "2008-02-04",12.0974568371517 58 | "2008-02-05",10.6352783566883 59 | "2008-02-06",9.69171658751689 60 | "2008-02-07",9.31560088263368 61 | "2008-02-08",8.97081334141145 62 | "2008-02-09",8.58914169072882 63 | "2008-02-10",8.61740045183326 64 | "2008-02-11",8.61631428228404 65 | "2008-02-12",8.21554741194707 66 | "2008-02-13",8.06495089174914 67 | "2008-02-14",8.11342663994365 68 | "2008-02-15",7.79934339821592 69 | "2008-02-16",7.6275443904885 70 | "2008-02-17",7.55590509361135 71 | "2008-02-18",7.71154897962915 72 | "2008-02-19",7.78862606562503 73 | "2008-02-20",7.70841066725737 74 | "2008-02-21",7.76853330092603 75 | "2008-02-22",7.69530313496357 76 | "2008-02-23",7.37838371299671 77 | "2008-02-24",7.91059061225648 78 | "2008-02-25",7.62657020629066 79 | "2008-02-26",7.57353126274595 80 | "2008-02-27",7.56786260546388 81 | "2008-02-29",7.5522372875608 82 | "2008-03-02",7.33693691370762 83 | "2008-03-05",8.12474302038557 84 | "2008-03-06",7.88758403166028 85 | "2008-03-07",7.81963630236759 86 | "2008-03-08",7.38398945797851 87 | "2008-03-09",7.81439963380449 88 | "2008-03-10",7.5422134631934 89 | "2008-03-11",7.54855597916987 90 | "2008-03-12",7.6889133368648 91 | "2008-03-13",7.4770384723197 92 | "2008-03-14",7.35883089834235 93 | "2008-03-15",7.03262426102801 94 | "2008-03-16",7.11801620446533 95 | "2008-03-17",7.34987370473834 96 | "2008-03-18",7.32646561384032 97 | "2008-03-19",7.36391350140582 98 | "2008-03-20",7.27793857294566 99 | "2008-03-21",7.25134498337221 100 | "2008-03-22",7.00215595440362 101 | "2008-03-23",7.16394668434255 102 | "2008-03-24",7.7591874385078 103 | "2008-03-25",7.51860721681525 104 | "2008-03-26",7.41397029019044 105 | "2008-03-27",7.44249272279444 106 | "2008-03-28",7.2283884515736 107 | "2008-03-29",6.99117688712121 108 | "2008-03-30",7.2115567333138 109 | "2008-03-31",7.31121838441963 110 | "2008-04-01",7.34923082461333 111 | "2008-04-02",7.51425465281641 112 | "2008-04-03",7.39326309476384 113 | "2008-04-04",7.28619171470238 114 | "2008-04-05",7.27309259599952 115 | "2008-04-06",7.16857989726403 116 | "2008-04-07",7.61134771740362 117 | "2008-04-08",7.61775957660851 118 | "2008-04-09",7.42595365707754 119 | "2008-04-10",8.18200013629341 120 | "2008-04-11",7.39939808333135 121 | "2008-04-12",7.1066061377273 122 | "2008-04-13",7.08086789669078 123 | "2008-04-14",7.42117752859539 124 | "2008-04-15",7.49164547360513 125 | "2008-04-16",7.38585107812521 126 | "2008-04-17",7.68294316987829 127 | "2008-04-18",7.6889133368648 128 | "2008-04-19",7.2591161280971 129 | "2008-04-20",8.14496941708788 130 | "2008-04-21",8.71391062849392 131 | "2008-04-22",8.09101504171053 132 | "2008-04-23",7.84031298332016 133 | "2008-04-24",7.64873978895624 134 | "2008-04-25",8.02092771898158 135 | "2008-04-26",7.83002808253384 136 | "2008-04-27",7.72753511047545 137 | "2008-04-28",7.83597458172157 138 | "2008-04-29",7.62657020629066 139 | "2008-04-30",7.64444076155657 140 | "2008-05-01",7.54855597916987 141 | "2008-05-02",7.44073370738926 142 | "2008-05-03",7.07326971745971 143 | "2008-05-04",7.02642680869964 144 | "2008-05-05",7.39203156751459 145 | "2008-05-06",7.29301767977278 146 | "2008-05-07",7.36137542897735 147 | "2008-05-08",7.51261754467451 148 | "2008-05-09",7.46049030582534 149 | "2008-05-10",7.11476944836646 150 | "2008-05-11",7.12528309151071 151 | "2008-05-12",7.45587668749182 152 | "2008-05-13",7.31721240835984 153 | "2008-05-14",7.41034709782102 154 | "2008-05-15",7.40245152081824 155 | "2008-05-16",7.29437729928882 156 | "2008-05-17",6.98933526597456 157 | "2008-05-18",6.99301512293296 158 | "2008-05-19",7.4312996751559 159 | "2008-05-20",7.36201055125973 160 | "2008-05-21",7.454719949364 161 | "2008-05-22",7.36833968631138 162 | "2008-05-23",7.14361760270412 163 | "2008-05-24",6.8351845861473 164 | "2008-05-25",6.89060912014717 165 | "2008-05-26",6.97447891102505 166 | "2008-05-27",7.26612877955645 167 | "2008-05-28",7.27031288607902 168 | "2008-05-29",7.26542972325395 169 | "2008-05-30",7.15773548424991 170 | "2008-05-31",6.86589107488344 171 | "2008-06-03",7.15383380157884 172 | "2008-06-04",7.21670948670946 173 | "2008-06-05",7.20191631753163 174 | "2008-06-06",7.21229446850034 175 | "2008-06-07",7.18614430452233 176 | "2008-06-08",6.82001636467413 177 | "2008-06-09",6.88243747099785 178 | "2008-06-10",7.18311170174328 179 | "2008-06-11",7.24279792279376 180 | "2008-06-12",7.1929342212158 181 | "2008-06-13",7.18387071506245 182 | "2008-06-14",6.97073007814353 183 | "2008-06-15",6.9177056098353 184 | "2008-06-16",7.22256601882217 185 | "2008-06-17",7.35691824235602 186 | "2008-06-18",7.24279792279376 187 | "2008-06-19",7.22329567956231 188 | "2008-06-20",7.16317239084664 189 | "2008-06-21",7.24136628332232 190 | "2008-06-22",6.98656645940643 191 | "2008-06-23",6.96318998587024 192 | "2008-06-24",7.25063551189868 193 | "2008-06-25",7.1608459066643 194 | "2008-06-26",7.13249755166004 195 | "2008-06-27",7.09174211509515 196 | "2008-06-28",7.01211529430638 197 | "2008-06-29",6.85751406254539 198 | "2008-06-30",6.82762923450285 199 | "2008-07-02",7.13009851012558 200 | "2008-07-03",7.27724772663148 201 | "2008-07-04",7.03878354138854 202 | "2008-07-05",6.89060912014717 203 | "2008-07-06",6.95749737087695 204 | "2008-07-07",7.29573507274928 205 | "2008-07-08",7.49720722320332 206 | "2008-07-09",7.31055015853442 207 | "2008-07-10",7.20489251020467 208 | "2008-07-11",7.22256601882217 209 | "2008-07-12",7.25770767716004 210 | "2008-08-01",7.42595365707754 211 | "2008-08-02",7.11720550316434 212 | "2008-08-03",7.24992553671799 213 | "2008-08-04",8.27690348126706 214 | "2008-08-05",7.60638738977265 215 | "2008-08-06",7.64396194900253 216 | "2008-08-07",8.01234963932779 217 | "2008-08-08",7.93020620668468 218 | "2008-08-09",7.50878717063428 219 | "2008-08-10",7.52131798019924 220 | "2008-08-11",7.58984151218266 221 | "2008-08-12",7.50052948539529 222 | "2008-08-13",7.37023064180708 223 | "2008-08-14",7.38523092306657 224 | "2008-08-15",7.30249642372733 225 | "2008-08-16",7.27517231945277 226 | "2008-08-17",7.39203156751459 227 | "2008-08-18",7.51697722460432 228 | "2008-08-19",7.90912218321141 229 | "2008-08-20",7.72312009226633 230 | "2008-08-21",7.67042852219069 231 | "2008-08-22",7.62900388965296 232 | "2008-08-23",7.43070708254597 233 | "2008-08-24",7.57967882309046 234 | "2008-08-25",7.9483852851119 235 | "2008-08-26",7.79564653633459 236 | "2008-08-27",8.00736706798333 237 | "2008-08-28",7.79069603117474 238 | "2008-08-29",7.83280751652486 239 | "2008-08-30",7.51479976048867 240 | "2008-08-31",7.6275443904885 241 | "2008-09-01",7.85515700588134 242 | "2008-09-02",7.96485088744731 243 | "2008-09-03",7.74586822979227 244 | "2008-09-04",8.08085641964099 245 | "2008-09-05",8.25997565976828 246 | "2008-09-06",7.7698009960039 247 | "2008-09-07",8.17751582384608 248 | "2008-09-08",9.28173036806286 249 | "2008-09-09",8.33854487998858 250 | "2008-09-10",7.83042561782033 251 | "2008-09-11",7.8087293067444 252 | "2008-09-12",7.81681996576455 253 | "2008-09-13",7.55485852104068 254 | "2008-09-14",8.55506684384432 255 | "2008-09-15",8.20794694104862 256 | "2008-09-16",8.08363720314155 257 | "2008-09-17",7.79110951061003 258 | "2008-09-18",7.67089483136212 259 | "2008-09-19",7.64012317269536 260 | "2008-09-20",7.55013534248843 261 | "2008-09-21",8.24931374626064 262 | "2008-09-22",8.3039999709552 263 | "2008-09-23",8.12681372072611 264 | "2008-09-24",7.70616297019958 265 | "2008-09-25",7.66387725870347 266 | "2008-09-26",7.52671756135271 267 | "2008-09-27",7.92588031673756 268 | "2008-09-28",7.92153563213355 269 | "2008-09-29",8.03398273468322 270 | "2008-09-30",7.72577144158795 271 | "2008-10-01",7.69439280262942 272 | "2008-10-02",7.44949800538285 273 | "2008-10-03",7.39141523467536 274 | "2008-10-04",7.34601020991329 275 | "2008-10-05",8.10137467122858 276 | "2008-10-06",8.15651022607997 277 | "2008-10-07",7.97108575350561 278 | "2008-10-08",7.87283617502572 279 | "2008-10-09",7.63530388625941 280 | "2008-10-10",7.58781721999343 281 | "2008-10-11",7.34213173058472 282 | "2008-10-12",8.17751582384608 283 | "2008-10-13",8.34093322600088 284 | "2008-10-14",8.47657950853094 285 | "2008-10-15",7.87359778968554 286 | "2008-10-16",7.71735127218533 287 | "2008-10-17",7.49052940206071 288 | "2008-10-18",7.37588214821501 289 | "2008-10-19",8.07558263667172 290 | "2008-10-20",8.16536363247398 291 | "2008-10-23",7.58528107863913 292 | "2008-10-24",7.60738142563979 293 | "2008-10-25",7.26752542782817 294 | "2008-10-26",8.04012466444838 295 | "2008-10-27",8.10922495308995 296 | "2008-10-28",8.80687326653069 297 | "2008-10-29",7.74716496652033 298 | "2008-10-30",7.48099216286952 299 | "2008-10-31",7.34665516317654 300 | "2008-11-01",7.24708058458576 301 | "2008-11-02",7.93808872689695 302 | "2008-11-03",9.03562977818356 303 | "2008-11-04",8.04109100370863 304 | "2008-11-05",7.40610338123702 305 | "2008-11-06",7.97384437594469 306 | "2008-11-07",7.76811037852599 307 | "2008-11-08",7.4713630881871 308 | "2008-11-09",8.03008409426756 309 | "2008-11-10",8.72939712269206 310 | "2008-11-11",7.93701748951545 311 | "2008-11-12",7.66528471847135 312 | "2008-11-13",7.58018941794454 313 | "2008-11-14",7.7106533235012 314 | "2008-11-15",7.26122509197192 315 | "2008-11-16",8.04654935728308 316 | "2008-11-17",8.09346227450118 317 | "2008-11-18",7.76726399675731 318 | "2008-11-19",7.49665243816828 319 | "2008-11-20",7.5522372875608 320 | "2008-11-21",7.49720722320332 321 | "2008-11-22",7.3125534981026 322 | "2008-11-23",7.93880224815448 323 | "2008-11-24",9.05870319731322 324 | "2008-11-25",8.19422930481982 325 | "2008-11-26",7.51914995766982 326 | "2008-11-27",7.55118686729615 327 | "2008-11-28",7.71378461659875 328 | "2008-11-29",7.60589000105312 329 | "2008-11-30",8.49902922078857 330 | "2008-12-01",8.29179710504873 331 | "2008-12-02",7.89469085042562 332 | "2008-12-03",7.79028238070348 333 | "2008-12-04",7.65539064482615 334 | "2008-12-05",7.61035761831284 335 | "2008-12-06",7.53101633207792 336 | "2008-12-07",8.23137604557397 337 | "2008-12-08",8.00670084544037 338 | "2008-12-09",7.85864065562079 339 | "2008-12-10",7.69712131728263 340 | "2008-12-11",7.59588991771854 341 | "2008-12-12",7.73587031995257 342 | "2008-12-13",7.35115822643069 343 | "2008-12-14",8.03138533062553 344 | "2008-12-15",8.39434736141739 345 | "2008-12-16",7.82364593083495 346 | "2008-12-17",8.08671792030391 347 | "2008-12-18",7.77148876011762 348 | "2008-12-19",8.68895923427068 349 | "2008-12-20",7.74716496652033 350 | "2008-12-21",7.96067260838812 351 | "2008-12-22",8.62461158818351 352 | "2008-12-23",7.99665387546261 353 | "2008-12-24",7.62070508683826 354 | "2008-12-25",7.4318919168078 355 | "2008-12-26",7.46278915741245 356 | "2008-12-27",7.4489161025442 357 | "2008-12-28",8.25140306538056 358 | "2008-12-29",8.55525939222269 359 | "2008-12-30",8.31581113188354 360 | "2008-12-31",8.30992298925832 361 | "2009-01-01",7.75876054415766 362 | "2009-01-02",8.80821966511841 363 | "2009-01-03",9.12194622121359 364 | "2009-01-04",10.1538181636943 365 | "2009-01-05",9.26785427817679 366 | "2009-01-06",8.43424627059531 367 | "2009-01-07",8.13768818497761 368 | "2009-01-08",8.04494704961772 369 | "2009-01-09",8.22897764335831 370 | "2009-01-10",8.14118979345769 371 | "2009-01-11",9.21562637640542 372 | "2009-01-12",8.73278832497312 373 | "2009-01-13",8.51016857647927 374 | "2009-01-14",8.10409905614358 375 | "2009-01-15",7.95014988765202 376 | "2009-01-16",7.85205020726589 377 | "2009-01-17",7.65633716643018 378 | "2009-01-18",8.04430540699064 379 | "2009-01-19",8.80101783354071 380 | "2009-01-20",7.82963038915019 381 | "2009-01-21",7.77737360265786 382 | "2009-01-22",7.93522953981691 383 | "2009-01-23",7.67229245562876 384 | "2009-01-24",7.38832785957711 385 | "2009-01-25",7.51152464839087 386 | "2009-01-26",7.66340766489348 387 | "2009-01-27",7.78945456608667 388 | "2009-01-28",7.80791662892641 389 | "2009-01-29",7.82484569102686 390 | "2009-01-30",7.90654723236804 391 | "2009-01-31",7.70210434005105 392 | "2009-02-01",8.47762041629641 393 | "2009-02-02",9.14952823257943 394 | "2009-02-03",8.06211758275474 395 | "2009-02-04",8.06652149046999 396 | "2009-02-05",8.05959232888755 397 | "2009-02-06",8.04942705711069 398 | "2009-02-07",7.7621706071382 399 | "2009-02-08",8.09773057366422 400 | "2009-02-09",8.01829613851552 401 | "2009-02-10",7.61677580869837 402 | "2009-02-11",7.84267147497946 403 | "2009-02-12",7.76853330092603 404 | "2009-02-13",7.53047999524554 405 | "2009-02-14",7.33236920592906 406 | "2009-02-15",7.22402480828583 407 | "2009-02-16",7.41637847919293 408 | "2009-02-17",7.42714413340862 409 | "2009-02-18",7.39756153552405 410 | "2009-02-19",7.49554194388426 411 | "2009-02-20",7.39939808333135 412 | "2009-02-21",7.00850518208228 413 | "2009-02-22",7.11801620446533 414 | "2009-02-23",7.48380668766583 415 | "2009-02-24",7.57147364885127 416 | "2009-02-25",7.64826303090192 417 | "2009-02-26",7.47420480649612 418 | "2009-02-27",7.47250074473756 419 | "2009-02-28",7.2115567333138 420 | "2009-03-01",7.34342622914737 421 | "2009-03-02",7.48211892355212 422 | "2009-03-03",7.41095187558364 423 | "2009-03-04",7.40306109109009 424 | "2009-03-05",7.45298232946546 425 | "2009-03-06",7.42356844425917 426 | "2009-03-07",7.08506429395255 427 | "2009-03-08",7.21081845347222 428 | "2009-03-09",7.35627987655075 429 | "2009-03-10",7.30451594646016 430 | "2009-03-11",7.46565531013406 431 | "2009-03-12",7.86901937649902 432 | "2009-03-13",7.24850407237061 433 | "2009-03-14",7.07834157955767 434 | "2009-03-15",7.2211050981825 435 | "2009-03-16",7.33432935030054 436 | "2009-03-17",7.29233717617388 437 | "2009-03-18",7.2991214627108 438 | "2009-03-19",7.28344822875663 439 | "2009-03-20",7.30182234213793 440 | "2009-03-21",7.06219163228656 441 | "2009-03-22",7.18159194461187 442 | "2009-03-23",7.50549227473742 443 | "2009-03-24",7.87473912517181 444 | "2009-03-25",7.57865685059476 445 | "2009-03-26",7.36707705988101 446 | "2009-03-27",7.25700270709207 447 | "2009-03-28",7.05617528410041 448 | "2009-03-29",7.50273821075485 449 | "2009-03-30",7.44307837434852 450 | "2009-03-31",7.48155570190952 451 | "2009-04-01",7.48211892355212 452 | "2009-04-02",7.51914995766982 453 | "2009-04-03",7.65964295456468 454 | "2009-04-04",7.24422751560335 455 | "2009-04-05",7.23273313617761 456 | "2009-04-06",7.34213173058472 457 | "2009-04-07",7.42117752859539 458 | "2009-04-08",7.49220304261874 459 | "2009-04-09",7.31521838975297 460 | "2009-04-10",7.14124512235049 461 | "2009-04-11",7.00940893270864 462 | "2009-04-12",7.08757370555797 463 | "2009-04-13",7.30451594646016 464 | "2009-04-14",7.37462901521894 465 | "2009-04-15",7.51261754467451 466 | "2009-04-16",7.51752085060303 467 | "2009-04-17",7.37400185935016 468 | "2009-04-18",7.14124512235049 469 | "2009-04-19",7.16162200293919 470 | "2009-04-20",7.48493028328966 471 | "2009-04-21",7.51261754467451 472 | "2009-04-22",7.44483327389219 473 | "2009-04-23",7.47420480649612 474 | "2009-04-24",7.67182679787878 475 | "2009-04-25",7.84227877911735 476 | "2009-04-26",7.92407232492342 477 | "2009-04-27",7.82843635915759 478 | "2009-04-28",7.58680353516258 479 | "2009-04-29",7.62997570702779 480 | "2009-04-30",7.70975686445416 481 | "2009-05-01",7.52671756135271 482 | "2009-05-02",7.19368581839511 483 | "2009-05-03",7.25770767716004 484 | "2009-05-04",7.45414107814668 485 | "2009-05-05",7.48155570190952 486 | "2009-05-06",7.55903825544338 487 | "2009-05-07",7.44483327389219 488 | "2009-05-08",7.3375877435386 489 | "2009-05-09",7.13568734702814 490 | "2009-05-10",7.08506429395255 491 | "2009-05-11",7.27239839257005 492 | "2009-05-12",7.5109777520141 493 | "2009-05-13",7.49886973397693 494 | "2009-05-14",7.44424864949671 495 | "2009-05-15",7.40306109109009 496 | "2009-05-16",6.91671502035361 497 | "2009-05-17",6.97728134163075 498 | "2009-05-18",7.48268182815465 499 | "2009-05-19",7.41397029019044 500 | "2009-05-20",7.37211802833779 501 | "2009-05-21",7.33367639565768 502 | "2009-05-22",7.39510754656249 503 | "2009-05-23",7.03614849375054 504 | "2009-05-24",6.87419849545329 505 | "2009-05-25",6.98471632011827 506 | "2009-05-26",7.45587668749182 507 | "2009-05-27",7.49498623395053 508 | "2009-05-28",7.33106030521863 509 | "2009-05-29",7.10496544826984 510 | "2009-05-30",6.99393297522319 511 | "2009-05-31",6.93049476595163 512 | "2009-06-01",7.21817683840341 513 | "2009-06-02",7.4759059693674 514 | "2009-06-03",7.36454701425564 515 | "2009-06-04",7.23993259132047 516 | "2009-06-05",7.30921236569276 517 | "2009-06-06",7.13886699994552 518 | "2009-06-07",6.97260625130175 519 | "2009-06-08",7.18841273649695 520 | "2009-06-09",7.33498187887181 521 | "2009-06-10",7.33432935030054 522 | "2009-06-11",7.43248380791712 523 | "2009-06-12",7.39141523467536 524 | "2009-06-13",6.96129604591017 525 | "2009-06-14",7.02197642307216 526 | "2009-06-15",7.21376830811864 527 | "2009-06-16",7.50988306115491 528 | "2009-06-17",7.32843735289516 529 | "2009-06-18",7.49665243816828 530 | "2009-06-19",7.20042489294496 531 | "2009-06-20",7.08422642209792 532 | "2009-06-21",7.14913159855741 533 | "2009-06-22",7.25629723969068 534 | "2009-06-23",7.19818357710194 535 | "2009-06-24",7.28892769452126 536 | "2009-06-25",7.12849594568004 537 | "2009-06-26",7.0825485693553 538 | "2009-06-27",6.82219739062049 539 | "2009-06-28",6.94793706861497 540 | "2009-06-29",7.11232744471091 541 | "2009-06-30",7.19967834569117 542 | "2009-07-01",7.31721240835984 543 | "2009-07-02",7.09837563859079 544 | "2009-07-03",7.04490511712937 545 | "2009-07-04",7.30451594646016 546 | "2009-07-05",7.79358680337158 547 | "2009-07-06",7.80547462527086 548 | "2009-07-07",7.48324441607385 549 | "2009-07-08",7.35691824235602 550 | "2009-07-09",7.50714107972761 551 | "2009-07-10",7.37525577800975 552 | "2009-07-11",7.19668657083435 553 | "2009-07-12",7.22329567956231 554 | "2009-07-13",7.35244110024358 555 | "2009-07-14",7.31721240835984 556 | "2009-07-15",7.44424864949671 557 | "2009-07-16",7.35564110297425 558 | "2009-07-17",7.32448997934853 559 | "2009-07-18",7.21450441415114 560 | "2009-07-19",7.2841348061952 561 | "2009-07-20",7.54009032014532 562 | "2009-07-21",7.47477218239787 563 | "2009-07-22",7.82923253754359 564 | "2009-07-23",7.68109900153636 565 | "2009-07-24",7.72973533138505 566 | "2009-07-25",7.3031700512368 567 | "2009-07-26",7.28207365809346 568 | "2009-07-27",7.48549160803075 569 | "2009-07-28",7.61874237767041 570 | "2009-07-29",7.69393732550927 571 | "2009-07-30",7.53955882930103 572 | "2009-07-31",7.43838353004431 573 | "2009-08-01",7.27378631784489 574 | "2009-08-02",7.35564110297425 575 | "2009-08-03",7.65822752616135 576 | "2009-08-04",7.84345640437612 577 | "2009-08-05",8.36846113761584 578 | "2009-08-06",8.1721644521119 579 | "2009-08-07",7.81156848934518 580 | "2009-08-08",7.57507169950756 581 | "2009-08-09",7.6586995582683 582 | "2009-08-10",7.86633892304654 583 | "2009-08-11",7.78113850984502 584 | "2009-08-12",7.75491027202143 585 | "2009-08-13",7.70885960104718 586 | "2009-08-14",8.20712916807133 587 | "2009-08-15",7.71154897962915 588 | "2009-08-16",7.73455884435476 589 | "2009-08-17",7.96762673933382 590 | "2009-08-18",8.40380050406115 591 | "2009-08-19",8.29279885820037 592 | "2009-08-20",7.98548435673382 593 | "2009-08-21",8.67180090964268 594 | "2009-08-22",7.78239033558746 595 | "2009-08-23",7.78696700261487 596 | "2009-08-24",7.94661756324447 597 | "2009-08-25",8.17357548663415 598 | "2009-08-26",7.80954132465341 599 | "2009-08-27",7.80302664363222 600 | "2009-08-28",8.05134093329298 601 | "2009-08-29",7.97315543344413 602 | "2009-08-30",7.86901937649902 603 | "2009-08-31",8.16251625014018 604 | "2009-09-01",8.04012466444838 605 | "2009-09-02",7.96346006663897 606 | "2009-09-03",7.83834331555712 607 | "2009-09-04",7.91315518592807 608 | "2009-09-05",7.95331834656043 609 | "2009-09-06",8.07620452723903 610 | "2009-09-07",7.98241634682773 611 | "2009-09-08",8.1285852003745 612 | "2009-09-09",7.95472333449791 613 | "2009-09-10",8.1101268019411 614 | "2009-09-11",8.21365270303 615 | "2009-09-12",8.04686951095958 616 | "2009-09-13",8.9242570208881 617 | "2009-09-14",8.61721950548336 618 | "2009-09-15",8.51959031601596 619 | "2009-09-16",8.01433573729942 620 | "2009-09-17",8.05769419481559 621 | "2009-09-18",8.10440130792161 622 | "2009-09-19",7.99395754757357 623 | "2009-09-20",8.43185314424922 624 | "2009-09-21",9.73820008829795 625 | "2009-09-22",10.1799822793473 626 | "2009-09-24",8.36194190614495 627 | "2009-09-28",9.94884325425692 628 | "2009-09-29",8.75904072752422 629 | "2009-09-30",8.25166392360559 630 | "2009-10-01",8.07868822922987 631 | "2009-10-02",8.17357548663415 632 | "2009-10-03",7.88908440703551 633 | "2009-10-04",9.09985563880091 634 | "2009-10-05",9.40656483393913 635 | "2009-10-06",9.16440114003474 636 | "2009-10-07",8.48735234940522 637 | "2009-10-08",8.43141741439483 638 | "2009-10-09",8.2776661608515 639 | "2009-10-10",8.31213510764841 640 | "2009-10-11",8.79011689289247 641 | "2009-10-12",10.2800386504796 642 | "2009-10-13",9.07577987858049 643 | "2009-10-17",8.69918135930895 644 | "2009-10-18",9.08658956454001 645 | "2009-10-19",8.86149186428691 646 | "2009-10-20",8.54441917766983 647 | "2009-10-21",8.44762872803033 648 | "2009-10-22",8.25270667656764 649 | "2009-10-23",8.10982627601848 650 | "2009-10-24",8.13681086367554 651 | "2009-10-25",8.7268056084461 652 | "2009-10-26",9.38269576445829 653 | "2009-10-27",8.57828829077605 654 | "2009-10-28",8.23880116587155 655 | "2009-10-29",8.12237124340655 656 | "2009-10-30",8.05515773181968 657 | "2009-10-31",7.83241092718792 658 | "2009-11-01",8.89754559870933 659 | "2009-11-02",8.72566970568704 660 | "2009-11-03",8.56407677731509 661 | "2009-11-04",8.2190566610606 662 | "2009-11-05",8.14757773620177 663 | "2009-11-06",8.0013550258267 664 | "2009-11-07",7.78945456608667 665 | "2009-11-08",8.81195017753998 666 | "2009-11-09",9.00220857828241 667 | "2009-11-10",8.59304250369967 668 | "2009-11-11",8.28197705886776 669 | "2009-11-12",8.46505743699571 670 | "2009-11-13",8.49474306257865 671 | "2009-11-14",8.40514368760761 672 | "2009-11-16",10.558699193753 673 | "2009-11-17",9.12456459495478 674 | "2009-11-18",8.73182058296211 675 | "2009-11-19",8.52892411429194 676 | "2009-11-20",8.50512061018197 677 | "2009-11-21",8.27639470486331 678 | "2009-11-23",9.1239106439778 679 | "2009-11-24",8.58597270681106 680 | "2009-11-25",8.31556648356428 681 | "2009-11-26",8.66112036022288 682 | "2009-11-27",8.92572027356022 683 | "2009-11-28",8.44139147799996 684 | "2009-11-29",9.2277872855799 685 | "2009-11-30",9.26473385580652 686 | "2009-12-01",9.27491014262548 687 | "2009-12-02",8.39298958795693 688 | "2009-12-03",8.58522560180806 689 | "2009-12-04",8.42376124662369 690 | "2009-12-05",8.33782726244791 691 | "2009-12-06",9.05975001334368 692 | "2009-12-07",9.29825967001407 693 | "2009-12-08",8.76186337327473 694 | "2009-12-09",8.50754681436443 695 | "2009-12-10",8.39931015075952 696 | "2009-12-11",8.52357279838028 697 | "2009-12-12",8.37953902611744 698 | "2009-12-13",9.09110628405248 699 | "2009-12-14",9.76198159024195 700 | "2009-12-15",8.92956770782534 701 | "2009-12-16",8.53070154144103 702 | "2009-12-17",8.58709231879591 703 | "2009-12-18",9.79784922051313 704 | "2009-12-19",8.66475075577385 705 | "2009-12-20",9.17232692977797 706 | "2009-12-21",9.20140053040671 707 | "2009-12-22",9.33052053223229 708 | "2009-12-23",8.68457030082437 709 | "2009-12-24",8.50248556254396 710 | "2009-12-25",8.28878581042693 711 | "2009-12-26",8.29804166137157 712 | "2009-12-27",9.16293424957891 713 | "2009-12-28",9.54795481317617 714 | "2009-12-29",9.01724094201035 715 | "2009-12-30",8.78492762605832 716 | "2009-12-31",8.38662882139512 717 | "2010-01-01",8.33447155460094 718 | "2010-01-02",8.53601494565683 719 | "2010-01-03",8.70863965598719 720 | "2010-01-04",8.73004395324502 721 | "2010-01-05",8.37562962709445 722 | "2010-01-06",8.31898612539206 723 | "2010-01-07",8.46442512587758 724 | "2010-01-08",8.5972974356579 725 | "2010-01-09",8.92279162396964 726 | "2010-01-10",9.49167735686812 727 | "2010-01-11",9.21014035197352 728 | "2010-01-12",8.67795057029435 729 | "2010-01-13",8.60226936377136 730 | "2010-01-14",8.61450137388324 731 | "2010-01-15",8.65886634973238 732 | "2010-01-16",8.77940359789435 733 | "2010-01-17",11.0079327963967 734 | "2010-01-18",9.75324588920559 735 | "2010-01-19",9.22513045744882 736 | "2010-01-20",9.0177260256968 737 | "2010-01-21",8.93695560422523 738 | "2010-01-22",9.00932517273497 739 | "2010-01-25",11.4840629202851 740 | "2010-01-26",10.2642341958449 741 | "2010-01-27",9.69443180053954 742 | "2010-01-28",9.44041981429151 743 | "2010-01-29",9.35374783527091 744 | "2010-01-30",9.22847494217167 745 | "2010-01-31",9.30392178559771 746 | "2010-02-01",10.2401740519157 747 | "2010-02-02",9.91595945403145 748 | "2010-02-03",10.1115174660403 749 | "2010-02-04",9.85859478364539 750 | "2010-02-05",10.1190020766858 751 | "2010-02-06",10.0005688901867 752 | "2010-02-07",11.1914521795828 753 | "2010-02-09",10.4633318857817 754 | "2010-02-10",9.65406419220144 755 | "2010-02-11",9.11975899374495 756 | "2010-02-12",8.79573360595074 757 | "2010-02-13",8.44848599340645 758 | "2010-02-14",8.2666784433059 759 | "2010-02-15",8.21851757748959 760 | "2010-02-16",8.24249315318763 761 | "2010-02-17",8.00803284696931 762 | "2010-02-18",8.0452677166078 763 | "2010-02-19",7.9287663216267 764 | "2010-02-20",7.74500280351584 765 | "2010-02-21",7.86633892304654 766 | "2010-02-22",7.94165125293056 767 | "2010-02-24",8.31041499418829 768 | "2010-02-25",7.82803803212583 769 | "2010-02-26",7.87359778968554 770 | "2010-02-27",7.75705114203201 771 | "2010-02-28",7.72621265050753 772 | "2010-03-01",7.77527584648686 773 | "2010-03-02",7.79523492900217 774 | "2010-03-03",7.74975340627444 775 | "2010-03-04",8.06808962627824 776 | "2010-03-05",8.72583205652757 777 | "2010-03-06",7.65444322647011 778 | "2010-03-07",7.60339933974067 779 | "2010-03-08",7.75319426988434 780 | "2010-03-09",7.77022320415879 781 | "2010-03-10",7.63143166457691 782 | "2010-03-11",7.54380286750151 783 | "2010-03-12",7.60439634879634 784 | "2010-03-13",7.58426481838906 785 | "2010-03-14",7.5109777520141 786 | "2010-03-15",7.67461749736436 787 | "2010-03-16",7.71289096149013 788 | "2010-03-17",7.70165236264223 789 | "2010-03-18",7.63819824428578 790 | "2010-03-19",7.56268124672188 791 | "2010-03-20",7.40367029001237 792 | "2010-03-21",7.46622755621548 793 | "2010-03-22",7.61233683716775 794 | "2010-03-23",7.80180040190897 795 | "2010-03-24",8.02878116248715 796 | "2010-03-25",7.73017479524622 797 | "2010-03-26",7.63964228785801 798 | "2010-03-27",7.56320059235807 799 | "2010-03-28",7.48661331313996 800 | "2010-03-29",7.5076900778199 801 | "2010-03-30",7.65396918047877 802 | "2010-03-31",7.61283103040736 803 | "2010-04-01",7.45414107814668 804 | "2010-04-02",7.36707705988101 805 | "2010-04-03",7.45298232946546 806 | "2010-04-04",7.47873482556787 807 | "2010-04-05",7.98514393119862 808 | "2010-04-06",7.82164312623998 809 | "2010-04-07",7.66058546170326 810 | "2010-04-08",7.5595594960077 811 | "2010-04-09",7.57660976697304 812 | "2010-04-10",7.4500795698075 813 | "2010-04-11",7.49886973397693 814 | "2010-04-12",7.51588908521513 815 | "2010-04-13",7.60837447438078 816 | "2010-04-14",7.58629630715272 817 | "2010-04-15",7.68063742756094 818 | "2010-04-16",7.7848892956551 819 | "2010-04-17",7.5522372875608 820 | "2010-04-18",7.59890045687141 821 | "2010-04-19",7.64826303090192 822 | "2010-04-20",7.66996199547358 823 | "2010-04-21",7.85554467791566 824 | "2010-04-22",8.09651291750159 825 | "2010-04-23",8.92105701815743 826 | "2010-04-24",8.3986348552921 827 | "2010-04-25",7.98820359702258 828 | "2010-04-26",8.00269416228394 829 | "2010-04-27",8.07309119969315 830 | "2010-04-28",7.98309894071089 831 | "2010-04-29",7.84619881549743 832 | "2010-04-30",7.78655180642871 833 | "2010-05-01",7.44483327389219 834 | "2010-05-02",7.5422134631934 835 | "2010-05-03",7.6425241342329 836 | "2010-05-04",7.6511201757027 837 | "2010-05-05",7.51152464839087 838 | "2010-05-06",7.67693714581808 839 | "2010-05-07",7.9912539298402 840 | "2010-05-08",7.44190672805162 841 | "2010-05-09",7.38398945797851 842 | "2010-05-10",7.60589000105312 843 | "2010-05-11",7.58680353516258 844 | "2010-05-12",7.62119516280984 845 | "2010-05-13",7.29573507274928 846 | "2010-05-14",7.48885295573346 847 | "2010-05-15",7.27309259599952 848 | "2010-05-16",7.34665516317654 849 | "2010-05-17",7.47363710849621 850 | "2010-05-18",7.35564110297425 851 | "2010-05-19",7.2283884515736 852 | "2010-05-20",7.39694860262101 853 | "2010-05-21",7.47533923656674 854 | "2010-05-22",7.40974195408092 855 | "2010-05-23",7.34601020991329 856 | "2010-05-24",7.4079243225596 857 | "2010-05-25",7.38398945797851 858 | "2010-05-26",7.38087903556412 859 | "2010-05-27",7.20637729147225 860 | "2010-05-28",7.09340462586877 861 | "2010-05-29",7.10987946307227 862 | "2010-05-30",7.05531284333975 863 | "2010-05-31",7.11639414409346 864 | "2010-06-01",7.19218205871325 865 | "2010-06-02",7.24921505711439 866 | "2010-06-03",7.41938058291869 867 | "2010-06-04",7.56216163122565 868 | "2010-06-05",7.43307534889858 869 | "2010-06-06",7.28550654852279 870 | "2010-06-07",7.9355873855892 871 | "2010-06-08",9.01954299670119 872 | "2010-06-09",7.22548147278229 873 | "2010-06-10",7.02731451403978 874 | "2010-06-11",6.7990558620588 875 | "2010-06-12",5.44673737166631 876 | "2010-06-13",5.32300997913841 877 | "2010-06-14",5.26269018890489 878 | "2010-06-15",6.30627528694802 879 | "2010-06-16",6.65286302935335 880 | "2010-06-17",7.21964204013074 881 | "2010-06-18",7.38832785957711 882 | "2010-06-19",7.13886699994552 883 | "2010-06-20",7.04315991598834 884 | "2010-06-21",7.20637729147225 885 | "2010-06-22",7.02997291170639 886 | "2010-06-23",7.00760061395185 887 | "2010-06-24",6.91869521902047 888 | "2010-06-25",6.88448665204278 889 | "2010-06-27",6.13772705408623 890 | "2010-06-29",7.20637729147225 891 | "2010-06-30",7.13727843726039 892 | "2010-07-01",7.05444965813294 893 | "2010-07-02",7.11232744471091 894 | "2010-07-03",6.92657703322272 895 | "2010-07-04",6.81454289725996 896 | "2010-07-06",7.35500192110526 897 | "2010-07-11",7.13169851046691 898 | "2010-07-12",7.07749805356923 899 | "2010-07-13",7.24208235925696 900 | "2010-07-14",7.24708058458576 901 | "2010-07-15",7.646353722446 902 | "2010-07-16",7.45645455517621 903 | "2010-07-17",7.30988148582479 904 | "2010-07-18",7.23777819192344 905 | "2010-07-19",7.27517231945277 906 | "2010-07-20",7.46908388492123 907 | "2010-07-21",7.45066079621154 908 | "2010-07-22",8.12740456269308 909 | "2010-07-23",7.77485576666552 910 | "2010-07-24",7.52131798019924 911 | "2010-07-25",7.54960916515453 912 | "2010-07-26",7.94979721616185 913 | "2010-07-27",7.79770203551669 914 | "2010-07-28",7.79975331828725 915 | "2010-07-29",7.9002660367677 916 | "2010-07-30",7.85825418218603 917 | "2010-07-31",7.94165125293056 918 | "2010-08-01",7.67136092319064 919 | "2010-08-02",8.13534694890671 920 | "2010-08-03",8.68777949199177 921 | "2010-08-04",8.45318786144033 922 | "2010-08-05",8.06463647577422 923 | "2010-08-06",8.00936307663004 924 | "2010-08-07",7.87739718635329 925 | "2010-08-08",7.85515700588134 926 | "2010-08-09",8.14089846060785 927 | "2010-08-10",7.92117272158701 928 | "2010-08-11",7.9707403900071 929 | "2010-08-12",7.96519829061218 930 | "2010-08-13",8.13476078241865 931 | "2010-08-14",7.79852305362521 932 | "2010-08-15",8.30770596654951 933 | "2010-08-16",8.28071107566285 934 | "2010-08-17",8.74448811385292 935 | "2010-08-18",8.59137258959049 936 | "2010-08-19",8.44052810648075 937 | "2010-08-20",8.50976567558744 938 | "2010-08-21",8.35514473946184 939 | "2010-08-22",8.28096440055337 940 | "2010-08-23",8.44052810648075 941 | "2010-08-24",8.31385226739821 942 | "2010-08-25",8.08085641964099 943 | "2010-08-26",8.18590748148232 944 | "2010-08-27",8.85680335672838 945 | "2010-08-28",8.07309119969315 946 | "2010-08-29",8.14148104145742 947 | "2010-08-30",8.18785544369562 948 | "2010-08-31",8.11522197256233 949 | "2010-09-01",8.15908865466791 950 | "2010-09-02",8.20439841814938 951 | "2010-09-03",8.28500889544988 952 | "2010-09-04",8.08271113423758 953 | "2010-09-05",8.24564690087386 954 | "2010-09-06",8.2220164372022 955 | "2010-09-07",8.45126704130007 956 | "2010-09-08",8.5519810169019 957 | "2010-09-09",8.62515033292133 958 | "2010-09-10",9.13194630454817 959 | "2010-09-11",8.33997857199043 960 | "2010-09-12",9.86620096775011 961 | "2010-09-13",9.27077674078001 962 | "2010-09-14",8.77183540978982 963 | "2010-09-15",8.49474306257865 964 | "2010-09-16",8.61631428228404 965 | "2010-09-17",8.94780609305705 966 | "2010-09-18",9.07577987858049 967 | "2010-09-19",9.50046944807102 968 | "2010-09-20",11.4261031610143 969 | "2010-09-21",9.29550838434606 970 | "2010-09-22",8.61721950548336 971 | "2010-09-23",8.47699600166482 972 | "2010-09-24",8.32772616646141 973 | "2010-09-25",8.30375241556341 974 | "2010-09-26",9.330431852234 975 | "2010-09-27",9.41613428495528 976 | "2010-09-28",8.92292493064183 977 | "2010-09-29",8.44591198941127 978 | "2010-09-30",8.31115254800169 979 | "2010-10-01",8.27052509505507 980 | "2010-10-02",8.20166019080868 981 | "2010-10-03",9.00981411052738 982 | "2010-10-04",9.30909914399945 983 | "2010-10-05",9.12847934549586 984 | "2010-10-06",8.44741429680832 985 | "2010-10-07",8.25426877009018 986 | "2010-10-08",8.32482129876878 987 | "2010-10-09",8.10288913464087 988 | "2010-10-10",9.15957325492253 989 | "2010-10-11",8.85109068766498 990 | "2010-10-12",9.54057893384188 991 | "2010-10-13",8.49043845410742 992 | "2010-10-14",8.56464913257253 993 | "2010-10-15",8.352318548226 994 | "2010-10-16",8.10440130792161 995 | "2010-10-17",9.15334665045606 996 | "2010-10-18",10.0752957033132 997 | "2010-10-19",8.71800933084636 998 | "2010-10-20",8.34474275441755 999 | "2010-10-21",8.2630748358026 1000 | "2010-10-22",8.25608813381491 1001 | "2010-10-23",8.00869818298853 1002 | "2010-10-24",8.52971447196991 1003 | "2010-10-25",8.861350110796 1004 | "2010-10-26",9.78914235075127 1005 | "2010-10-27",8.50025047068593 1006 | "2010-10-28",8.40559101483493 1007 | "2010-10-29",8.9441588309704 1008 | "2010-10-30",8.866581653304 1009 | "2010-10-31",9.01456876745782 1010 | "2010-11-01",9.13010597926558 1011 | "2010-11-02",10.2465097200211 1012 | "2010-11-03",8.58969988220299 1013 | "2010-11-04",8.65067458279072 1014 | "2010-11-05",8.78124833323686 1015 | "2010-11-06",8.33302993974291 1016 | "2010-11-07",9.06762406977459 1017 | "2010-11-08",9.52332462729018 1018 | "2010-11-09",8.70996000607173 1019 | "2010-11-10",8.37101068123816 1020 | "2010-11-11",8.37770121259764 1021 | "2010-11-12",8.40043463080604 1022 | "2010-11-13",8.18283871076603 1023 | "2010-11-14",8.8750074860484 1024 | "2010-11-15",9.21034037197618 1025 | "2010-11-16",8.71456755083648 1026 | "2010-11-17",8.31752199628717 1027 | "2010-11-18",8.55929436743487 1028 | "2010-11-19",8.60465446718623 1029 | "2010-11-20",8.73375513136489 1030 | "2010-11-21",9.54057893384188 1031 | "2010-11-22",10.1616893196654 1032 | "2010-11-23",8.8167050156216 1033 | "2010-11-24",8.31409733540581 1034 | "2010-11-25",8.7106195279423 1035 | "2010-11-26",8.74369111054302 1036 | "2010-11-27",8.39231000926955 1037 | "2010-11-28",9.23073106162392 1038 | "2010-11-29",10.2561143136283 1039 | "2010-11-30",8.9138193508572 1040 | "2010-12-01",8.65032450401942 1041 | "2010-12-02",8.39004140575575 1042 | "2010-12-03",8.3091845276863 1043 | "2010-12-04",8.22228507387272 1044 | "2010-12-05",9.28238192484115 1045 | "2010-12-06",9.92260366972836 1046 | "2010-12-07",9.16889318206201 1047 | "2010-12-08",8.74830491237962 1048 | "2010-12-09",8.81507308884446 1049 | "2010-12-10",9.76330552193627 1050 | "2010-12-11",8.56883642456808 1051 | "2010-12-12",8.92611897115338 1052 | "2010-12-13",9.12891337328045 1053 | "2010-12-14",9.7195647143752 1054 | "2010-12-15",8.78124833323686 1055 | "2010-12-16",8.48838210956212 1056 | "2010-12-17",8.53640741034004 1057 | "2010-12-18",8.14409846333852 1058 | "2010-12-19",9.10664513563742 1059 | "2010-12-20",9.11569996782206 1060 | "2010-12-21",9.68421151274841 1061 | "2010-12-22",8.80011394676631 1062 | "2010-12-23",8.54752839121231 1063 | "2010-12-24",8.3221510702129 1064 | "2010-12-25",8.09529377684465 1065 | "2010-12-26",8.92345797969497 1066 | "2010-12-27",9.37974553683691 1067 | "2010-12-28",8.90327158572421 1068 | "2010-12-29",8.87556669199055 1069 | "2010-12-30",8.44139147799996 1070 | "2010-12-31",8.59674347017425 1071 | "2011-01-01",9.00969189848934 1072 | "2011-01-02",9.39897529082673 1073 | "2011-01-03",9.99392223000734 1074 | "2011-01-04",9.06149227523977 1075 | "2011-01-05",8.97119446318447 1076 | "2011-01-06",8.94689552388845 1077 | "2011-01-07",9.18696938565294 1078 | "2011-01-08",9.0980671294934 1079 | "2011-01-09",10.8781037947059 1080 | "2011-01-10",9.38269576445829 1081 | "2011-01-11",9.19897604189713 1082 | "2011-01-12",8.62119278143472 1083 | "2011-01-13",8.61323037961318 1084 | "2011-01-14",8.69517199877606 1085 | "2011-01-15",8.72029728739272 1086 | "2011-01-16",9.50031980347665 1087 | "2011-01-17",9.34757739028127 1088 | "2011-01-18",8.78370269863522 1089 | "2011-01-19",8.70217786562968 1090 | "2011-01-20",8.6821990260005 1091 | "2011-01-21",8.48363640788739 1092 | "2011-01-22",8.40916244720253 1093 | "2011-01-23",8.97309789628247 1094 | "2011-01-24",9.55030649785165 1095 | "2011-01-25",8.78630387828258 1096 | "2011-01-26",8.60813018640834 1097 | "2011-01-27",8.49494758246892 1098 | "2011-01-28",8.44870019497094 1099 | "2011-01-29",8.19174002127746 1100 | "2011-01-30",8.38091517312361 1101 | "2011-01-31",9.07394774707063 1102 | "2011-02-01",8.35608503102148 1103 | "2011-02-02",8.3485378253861 1104 | "2011-02-03",8.53503310954457 1105 | "2011-02-04",8.43489794868941 1106 | "2011-02-05",8.5354259596773 1107 | "2011-02-06",8.99168672593482 1108 | "2011-02-07",9.77713036365961 1109 | "2011-02-08",8.63887970967284 1110 | "2011-02-09",8.28324144138542 1111 | "2011-02-10",8.27333659850449 1112 | "2011-02-11",8.15908865466791 1113 | "2011-02-12",7.91352101728389 1114 | "2011-02-13",7.8407064517494 1115 | "2011-02-14",8.02486215028641 1116 | "2011-02-15",7.97143099776935 1117 | "2011-02-16",8.47782846789396 1118 | "2011-02-17",7.95787735848981 1119 | "2011-02-18",8.02355239240435 1120 | "2011-02-19",7.54908271081229 1121 | "2011-02-20",7.51969240411654 1122 | "2011-02-21",7.87169266432365 1123 | "2011-02-22",7.68156036255954 1124 | "2011-02-23",7.73236922228439 1125 | "2011-02-24",7.78239033558746 1126 | "2011-02-25",7.65633716643018 1127 | "2011-02-26",7.48324441607385 1128 | "2011-02-27",7.59890045687141 1129 | "2011-02-28",7.78613643778307 1130 | "2011-03-01",7.75061473277041 1131 | "2011-03-02",7.76472054477148 1132 | "2011-03-03",7.70481192293259 1133 | "2011-03-04",7.6586995582683 1134 | "2011-03-05",7.34729970074316 1135 | "2011-03-06",7.54433210805369 1136 | "2011-03-07",7.74716496652033 1137 | "2011-03-08",7.6889133368648 1138 | "2011-03-09",7.77064523412918 1139 | "2011-03-10",7.61184239958042 1140 | "2011-03-11",7.48773376143644 1141 | "2011-03-12",7.55747290161475 1142 | "2011-03-13",7.56837926783652 1143 | "2011-03-14",7.52563997504154 1144 | "2011-03-15",7.66199755890189 1145 | "2011-03-16",7.41637847919293 1146 | "2011-03-17",7.44366368311559 1147 | "2011-03-18",7.31654817718298 1148 | "2011-03-19",7.17472430983638 1149 | "2011-03-20",7.24779258176785 1150 | "2011-03-21",7.41397029019044 1151 | "2011-03-22",7.52940645783701 1152 | "2011-03-23",7.63964228785801 1153 | "2011-03-24",8.26975694753298 1154 | "2011-03-25",8.33134542484572 1155 | "2011-03-26",7.78447323573647 1156 | "2011-03-27",7.48099216286952 1157 | "2011-03-28",7.58781721999343 1158 | "2011-03-29",7.67182679787878 1159 | "2011-03-30",7.59739632021279 1160 | "2011-03-31",7.67740043051481 1161 | "2011-04-01",7.48436864328613 1162 | "2011-04-02",7.26122509197192 1163 | "2011-04-03",7.39203156751459 1164 | "2011-04-04",7.42833319419081 1165 | "2011-04-05",7.55747290161475 1166 | "2011-04-06",7.48885295573346 1167 | "2011-04-07",7.42714413340862 1168 | "2011-04-08",8.21527695893663 1169 | "2011-04-09",8.49371983523059 1170 | "2011-04-10",8.14322675036744 1171 | "2011-04-11",8.12177741916107 1172 | "2011-04-12",8.20794694104862 1173 | "2011-04-13",8.5197898172635 1174 | "2011-04-14",8.57470709761684 1175 | "2011-04-15",8.04782935745784 1176 | "2011-04-16",7.48773376143644 1177 | "2011-04-17",7.56631101477246 1178 | "2011-04-18",7.9976631270201 1179 | "2011-04-19",8.00836557031292 1180 | "2011-04-20",7.91498300584839 1181 | "2011-04-21",7.8804263442924 1182 | "2011-04-22",7.84893372636407 1183 | "2011-04-23",7.50823877467866 1184 | "2011-04-24",7.66058546170326 1185 | "2011-04-25",8.02747653086048 1186 | "2011-04-26",8.10046489102936 1187 | "2011-04-27",8.18088094199639 1188 | "2011-04-28",8.33351070898294 1189 | "2011-04-29",8.64100247714252 1190 | "2011-04-30",8.46315930292375 1191 | "2011-05-01",8.01201823915906 1192 | "2011-05-02",7.79564653633459 1193 | "2011-05-03",7.70571282389443 1194 | "2011-05-04",7.77863014732581 1195 | "2011-05-05",7.81237820598861 1196 | "2011-05-06",7.56164174558878 1197 | "2011-05-07",7.26332961747684 1198 | "2011-05-08",7.35564110297425 1199 | "2011-05-09",7.47477218239787 1200 | "2011-05-10",7.53422832627409 1201 | "2011-05-11",7.62997570702779 1202 | "2011-05-12",7.62608275807238 1203 | "2011-05-13",7.44483327389219 1204 | "2011-05-14",7.11963563801764 1205 | "2011-05-15",7.37023064180708 1206 | "2011-05-16",7.54115245513631 1207 | "2011-05-17",7.5137092478397 1208 | "2011-05-18",7.59034694560257 1209 | "2011-05-19",7.54802896993501 1210 | "2011-05-20",7.36833968631138 1211 | "2011-05-21",7.11314210870709 1212 | "2011-05-22",7.23705902612474 1213 | "2011-05-23",7.48717369421374 1214 | "2011-05-24",7.61233683716775 1215 | "2011-05-25",8.21716859576607 1216 | "2011-05-26",7.66669020008009 1217 | "2011-05-27",7.32646561384032 1218 | "2011-05-28",7.09340462586877 1219 | "2011-05-29",7.13966033596492 1220 | "2011-05-30",7.40367029001237 1221 | "2011-05-31",7.42595365707754 1222 | "2011-06-01",7.43779512167193 1223 | "2011-06-02",7.55328660560042 1224 | "2011-06-03",7.32184971378836 1225 | "2011-06-04",7.10332206252611 1226 | "2011-06-05",7.11069612297883 1227 | "2011-06-06",7.48211892355212 1228 | "2011-06-07",7.54591815120932 1229 | "2011-06-08",7.32778053842163 1230 | "2011-06-09",7.21964204013074 1231 | "2011-06-10",7.36327958696304 1232 | "2011-06-11",7.18841273649695 1233 | "2011-06-12",7.25063551189868 1234 | "2011-06-13",7.4500795698075 1235 | "2011-06-14",7.19743535409659 1236 | "2011-06-15",7.41938058291869 1237 | "2011-06-16",7.37963215260955 1238 | "2011-06-17",7.40306109109009 1239 | "2011-06-18",7.51588908521513 1240 | "2011-06-19",7.63723438878947 1241 | "2011-06-20",7.52617891334615 1242 | "2011-06-21",7.3185395485679 1243 | "2011-06-22",7.38212436573751 1244 | "2011-06-23",7.74975340627444 1245 | "2011-06-24",7.67600993202889 1246 | "2011-06-25",7.26612877955645 1247 | "2011-06-26",7.58324752430336 1248 | "2011-06-27",7.56682847920833 1249 | "2011-06-28",7.56008046502183 1250 | "2011-06-29",7.63288550539513 1251 | "2011-06-30",7.50052948539529 1252 | "2011-07-01",7.42356844425917 1253 | "2011-07-02",7.39018142822643 1254 | "2011-07-03",7.21007962817079 1255 | "2011-07-04",7.94555542825349 1256 | "2011-07-05",7.5999019592085 1257 | "2011-07-06",7.56268124672188 1258 | "2011-07-07",7.61184239958042 1259 | "2011-07-08",8.99998964246073 1260 | "2011-07-09",8.73793385811414 1261 | "2011-07-10",8.26796230533871 1262 | "2011-07-11",7.77904864492556 1263 | "2011-07-12",7.57865685059476 1264 | "2011-07-13",7.60539236481493 1265 | "2011-07-14",8.29179710504873 1266 | "2011-07-15",7.61775957660851 1267 | "2011-07-16",7.35883089834235 1268 | "2011-07-17",7.68662133494462 1269 | "2011-07-18",7.75362354655975 1270 | "2011-07-19",7.77904864492556 1271 | "2011-07-20",8.05706068196577 1272 | "2011-07-21",7.8984110928116 1273 | "2011-07-22",7.79729127354747 1274 | "2011-07-23",7.51534457118044 1275 | "2011-07-24",7.48268182815465 1276 | "2011-07-25",7.88683299895506 1277 | "2011-07-26",8.39728289474368 1278 | "2011-07-27",8.26770566476243 1279 | "2011-07-28",8.23615566168312 1280 | "2011-07-29",8.38890517111471 1281 | "2011-07-30",9.0788640091878 1282 | "2011-07-31",9.63299030483845 1283 | "2011-08-01",8.94780609305705 1284 | "2011-08-02",8.53934599605737 1285 | "2011-08-03",8.3478273457825 1286 | "2011-08-04",8.32530602975258 1287 | "2011-08-05",8.25556865328375 1288 | "2011-08-06",8.09712193091871 1289 | "2011-08-07",8.13593277200489 1290 | "2011-08-08",8.01895468315572 1291 | "2011-08-09",8.0861025356691 1292 | "2011-08-10",8.13329386122263 1293 | "2011-08-11",8.04974629095219 1294 | "2011-08-12",8.19063168090354 1295 | "2011-08-13",8.04334217044161 1296 | "2011-08-14",8.43814998407578 1297 | "2011-08-15",8.10741881171997 1298 | "2011-08-16",8.16876982367527 1299 | "2011-08-17",8.17470288246946 1300 | "2011-08-18",8.29129585190541 1301 | "2011-08-19",8.3059782109673 1302 | "2011-08-20",8.42310226801664 1303 | "2011-08-21",8.75621009188674 1304 | "2011-08-22",8.72583205652757 1305 | "2011-08-23",8.70748291785937 1306 | "2011-08-24",8.51077262361331 1307 | "2011-08-25",8.70217786562968 1308 | "2011-08-26",8.580543506917 1309 | "2011-08-27",9.22542600939422 1310 | "2011-08-28",8.41116578677071 1311 | "2011-08-29",8.45190772471761 1312 | "2011-08-30",8.77183540978982 1313 | "2011-08-31",8.23880116587155 1314 | "2011-09-01",8.15708378502887 1315 | "2011-09-03",8.03915739047324 1316 | "2011-09-04",8.1185050675871 1317 | "2011-09-05",9.18563775933581 1318 | "2011-09-06",9.15239341202133 1319 | "2011-09-07",9.02617712030286 1320 | "2011-09-08",9.74226190403691 1321 | "2011-09-09",10.0828463914793 1322 | "2011-09-10",9.11107237031751 1323 | "2011-09-11",9.73878978049572 1324 | "2011-09-12",9.614938437645 1325 | "2011-09-13",9.34801317710126 1326 | "2011-09-14",8.55429627936774 1327 | "2011-09-15",8.44955654270043 1328 | "2011-09-16",8.43054538469057 1329 | "2011-09-17",8.60538720215215 1330 | "2011-09-18",9.219894584781 1331 | "2011-09-19",9.50076867009599 1332 | "2011-09-20",9.52230033688749 1333 | "2011-09-21",8.47886807709457 1334 | "2011-09-22",8.28349412616251 1335 | "2011-09-23",8.26898820950666 1336 | "2011-09-24",8.28324144138542 1337 | "2011-09-25",9.03013657115323 1338 | "2011-09-26",10.2525586604481 1339 | "2011-09-27",9.16659744902826 1340 | "2011-09-28",8.27537637483641 1341 | "2011-09-29",8.3466420902212 1342 | "2011-09-30",8.42156296040099 1343 | "2011-10-01",8.19450550976564 1344 | "2011-10-02",8.87766093359367 1345 | "2011-10-03",8.9941724343984 1346 | "2011-10-04",9.55676293945056 1347 | "2011-10-05",8.4144957931779 1348 | "2011-10-06",8.31139827843664 1349 | "2011-10-07",8.365672383775 1350 | "2011-10-08",8.14902386805177 1351 | "2011-10-09",8.96826881077645 1352 | "2011-10-10",8.88322423027899 1353 | "2011-10-11",8.70450228972123 1354 | "2011-10-12",8.23297179059344 1355 | "2011-10-13",8.17301131172497 1356 | "2011-10-14",8.13446757027756 1357 | "2011-10-15",8.83433697401764 1358 | "2011-10-16",9.08975340898706 1359 | "2011-10-17",9.0107912695156 1360 | "2011-10-18",8.71751837264977 1361 | "2011-10-19",8.42200300441249 1362 | "2011-10-21",8.20712916807133 1363 | "2011-10-22",8.05484022110102 1364 | "2011-10-23",8.83156587912106 1365 | "2011-10-24",10.1827467519768 1366 | "2011-10-25",8.80986280537906 1367 | "2011-10-26",8.76013937002663 1368 | "2011-10-27",8.88502565805085 1369 | "2011-10-28",8.56159277871292 1370 | "2011-10-29",8.2495751500002 1371 | "2011-10-30",9.35660287895444 1372 | "2011-10-31",9.12750209366718 1373 | "2011-11-01",8.79102985704596 1374 | "2011-11-02",8.65347080970879 1375 | "2011-11-03",8.74337213127397 1376 | "2011-11-04",8.86742743852498 1377 | "2011-11-05",8.44009614103127 1378 | "2011-11-06",9.37568530456302 1379 | "2011-11-07",9.74102744483773 1380 | "2011-11-08",8.83622857152601 1381 | "2011-11-09",8.46104603079324 1382 | "2011-11-10",8.21635833238616 1383 | "2011-11-11",8.22844388300403 1384 | "2011-11-12",8.0471895621705 1385 | "2011-11-13",9.07234187381889 1386 | "2011-11-14",9.46761478200654 1387 | "2011-11-15",8.98669669562029 1388 | "2011-11-16",8.43923164994653 1389 | "2011-11-17",8.42398080969406 1390 | "2011-11-18",8.58802437217683 1391 | "2011-11-19",8.25400859056484 1392 | "2011-11-20",8.74512525946224 1393 | "2011-11-21",9.49514330367712 1394 | "2011-11-22",8.72469504674049 1395 | "2011-11-23",8.35960327084147 1396 | "2011-11-24",8.76374072050946 1397 | "2011-11-25",8.7279402223939 1398 | "2011-11-26",8.38548870041881 1399 | "2011-11-27",9.3130774494273 1400 | "2011-11-28",9.3061958576197 1401 | "2011-11-29",9.84675845829004 1402 | "2011-11-30",8.79679268767466 1403 | "2011-12-01",8.64611397148308 1404 | "2011-12-02",8.9398431242785 1405 | "2011-12-03",8.84375938191798 1406 | "2011-12-04",9.7005142080113 1407 | "2011-12-05",9.53914039514886 1408 | "2011-12-06",8.9082888855571 1409 | "2011-12-07",9.02183976410551 1410 | "2011-12-08",9.10963566785455 1411 | "2011-12-09",8.87164566750187 1412 | "2011-12-10",8.38228942895144 1413 | "2011-12-11",9.23229753932823 1414 | "2011-12-12",9.85287823470959 1415 | "2011-12-13",8.84707231256781 1416 | "2011-12-14",8.53346016388011 1417 | "2011-12-15",8.58802437217683 1418 | "2011-12-16",8.48549610467298 1419 | "2011-12-17",8.18979961872823 1420 | "2011-12-18",9.49687178267057 1421 | "2011-12-19",9.46280968867222 1422 | "2011-12-20",8.84347078162738 1423 | "2011-12-21",8.36310917603352 1424 | "2011-12-22",8.60575336839572 1425 | "2011-12-23",6.58617165485467 1426 | "2011-12-26",7.63578686139558 1427 | "2011-12-27",9.24879155835043 1428 | "2011-12-28",8.88072457615146 1429 | "2011-12-29",8.69617584694468 1430 | "2011-12-30",8.45382731579442 1431 | "2011-12-31",8.14467918344776 1432 | "2012-01-01",9.07635173197287 1433 | "2012-01-02",10.2446985435045 1434 | "2012-01-03",9.85828095969805 1435 | "2012-01-04",9.18758338485357 1436 | "2012-01-05",8.76248954737158 1437 | "2012-01-06",8.5016733797582 1438 | "2012-01-07",8.65521448931361 1439 | "2012-01-08",10.0388921895423 1440 | "2012-01-09",9.46436224293533 1441 | "2012-01-10",8.97309789628247 1442 | "2012-01-11",8.95557714628151 1443 | "2012-01-12",8.91945316857545 1444 | "2012-01-13",8.72631895096224 1445 | "2012-01-14",8.73921611506174 1446 | "2012-01-15",10.26196586942 1447 | "2012-01-16",10.5694947531438 1448 | "2012-01-17",9.56120848888113 1449 | "2012-01-18",9.60400276796519 1450 | "2012-01-19",10.0861007334703 1451 | "2012-01-20",9.72841962445348 1452 | "2012-01-21",9.41205597587677 1453 | "2012-01-22",9.84357829978222 1454 | "2012-01-23",11.5721750241742 1455 | "2012-01-24",10.2817184876905 1456 | "2012-01-25",10.1697672187275 1457 | "2012-01-26",9.68290322361684 1458 | "2012-01-27",9.89550578279447 1459 | "2012-01-28",9.37627844951961 1460 | "2012-01-29",9.58217975243469 1461 | "2012-01-30",10.3414521187349 1462 | "2012-01-31",10.3339704236196 1463 | "2012-02-01",10.2182252970113 1464 | "2012-02-02",9.73406247747719 1465 | "2012-02-03",10.1874627630566 1466 | "2012-02-04",9.88857693980037 1467 | "2012-02-05",11.075086947327 1468 | "2012-02-06",12.6735418157462 1469 | "2012-02-07",10.9246967023573 1470 | "2012-02-08",10.1815358690196 1471 | "2012-02-09",9.86339445896968 1472 | "2012-02-10",9.92573816147095 1473 | "2012-02-11",9.40153907670774 1474 | "2012-02-12",9.33441468707811 1475 | "2012-02-13",9.14750706280461 1476 | "2012-02-14",8.91395385889425 1477 | "2012-02-15",9.1801903950253 1478 | "2012-02-16",9.05718919248201 1479 | "2012-02-17",8.71275997496021 1480 | "2012-02-18",8.40312823512826 1481 | "2012-02-19",8.29479935899257 1482 | "2012-02-20",9.11591979635669 1483 | "2012-02-21",8.95156964301882 1484 | "2012-02-22",8.3513747067213 1485 | "2012-02-23",8.65381978894806 1486 | "2012-02-24",8.6429443967218 1487 | "2012-02-25",8.71620797115185 1488 | "2012-02-26",8.36497397843873 1489 | "2012-02-27",8.37378460812088 1490 | "2012-02-28",8.51719319141624 1491 | "2012-02-29",8.31825432879885 1492 | "2012-03-01",8.39547743273214 1493 | "2012-03-02",8.3228800217699 1494 | "2012-03-03",8.24564690087386 1495 | "2012-03-04",8.63194942871443 1496 | "2012-03-05",8.31066090590723 1497 | "2012-03-06",8.43294163896865 1498 | "2012-03-07",11.6448305358502 1499 | "2012-03-08",11.3632879189498 1500 | "2012-03-09",10.6929444132335 1501 | "2012-03-10",10.3343929611261 1502 | "2012-03-11",9.98608085083998 1503 | "2012-03-12",10.2820952064744 1504 | "2012-03-13",10.1943645158844 1505 | "2012-03-14",10.0954706196007 1506 | "2012-03-15",10.1468650106811 1507 | "2012-03-16",10.140888975597 1508 | "2012-03-17",10.2095373998461 1509 | "2012-03-18",10.033682134194 1510 | "2012-03-19",11.0828346170357 1511 | "2012-03-20",11.1744832892926 1512 | "2012-03-21",10.7792895676801 1513 | "2012-03-22",9.9475044379529 1514 | "2012-03-23",9.37602428761711 1515 | "2012-03-24",8.99776577201121 1516 | "2012-03-25",8.83287946027762 1517 | "2012-03-26",8.89822898560123 1518 | "2012-03-27",8.76467807411661 1519 | "2012-03-28",8.54110501146255 1520 | "2012-03-29",8.39615486303918 1521 | "2012-03-30",8.31238059678675 1522 | "2012-03-31",8.34117174717076 1523 | "2012-04-01",8.1300590399928 1524 | "2012-04-02",8.35819745992578 1525 | "2012-04-03",8.35561499576018 1526 | "2012-04-04",8.18172045512811 1527 | "2012-04-05",8.10952565975287 1528 | "2012-04-06",8.06463647577422 1529 | "2012-04-07",7.82324569068552 1530 | "2012-04-08",7.85476918349913 1531 | "2012-04-09",8.10167774745457 1532 | "2012-04-10",8.09040229659332 1533 | "2012-04-11",7.98989937494294 1534 | "2012-04-12",8.09894674894334 1535 | "2012-04-13",8.65381978894806 1536 | "2012-04-14",8.04109100370863 1537 | "2012-04-15",8.04974629095219 1538 | "2012-04-16",8.22147894726719 1539 | "2012-04-17",8.17075142375753 1540 | "2012-04-18",8.3354314778808 1541 | "2012-04-19",8.25660734462616 1542 | "2012-04-20",8.05769419481559 1543 | "2012-04-21",7.70796153183549 1544 | "2012-04-22",7.91717198884578 1545 | "2012-04-23",8.2602342916073 1546 | "2012-04-24",8.28803156777646 1547 | "2012-04-25",8.36869318309779 1548 | "2012-04-26",8.63355299253243 1549 | "2012-04-27",9.27246974344173 1550 | "2012-04-28",8.67556352738768 1551 | "2012-04-29",8.48342956126343 1552 | "2012-05-01",8.17188200612782 1553 | "2012-05-02",8.20658361432075 1554 | "2012-05-03",8.18896686364888 1555 | "2012-05-04",8.03073492409854 1556 | "2012-05-05",8.05484022110102 1557 | "2012-05-06",9.15514473650823 1558 | "2012-05-07",8.83331693749932 1559 | "2012-05-08",8.34972083747249 1560 | "2012-05-09",8.18339736999843 1561 | "2012-05-10",7.95647679803678 1562 | "2012-05-11",7.86940171257709 1563 | "2012-05-12",7.70930833338587 1564 | "2012-05-13",7.81923445385907 1565 | "2012-05-14",7.83241092718792 1566 | "2012-05-15",7.88683299895506 1567 | "2012-05-16",8.03786623470962 1568 | "2012-05-17",7.952615111651 1569 | "2012-05-18",7.76768727718691 1570 | "2012-05-19",7.47816969415979 1571 | "2012-05-20",7.539027055824 1572 | "2012-05-21",7.99799931797973 1573 | "2012-05-22",8.30967689598773 1574 | "2012-05-23",8.02878116248715 1575 | "2012-05-24",7.79028238070348 1576 | "2012-05-25",7.76174498465891 1577 | "2012-05-26",7.47647238116391 1578 | "2012-05-27",7.63964228785801 1579 | "2012-05-28",7.65586401761606 1580 | "2012-05-29",7.81963630236759 1581 | "2012-05-30",7.81359155295243 1582 | "2012-05-31",7.99057688174392 1583 | "2012-06-01",7.81278281857758 1584 | "2012-06-02",7.65775527113487 1585 | "2012-06-03",7.69439280262942 1586 | "2012-06-04",7.84149292446001 1587 | "2012-06-05",7.93343838762749 1588 | "2012-06-06",7.6511201757027 1589 | "2012-06-07",7.72356247227797 1590 | "2012-06-08",7.88004820097158 1591 | "2012-06-09",7.94093976232779 1592 | "2012-06-10",7.75876054415766 1593 | "2012-06-11",7.63336964967958 1594 | "2012-06-12",7.84854348245668 1595 | "2012-06-13",7.89729647259588 1596 | "2012-06-14",7.72223474470961 1597 | "2012-06-15",7.71244383427499 1598 | "2012-06-16",7.53955882930103 1599 | "2012-06-17",7.91169052070834 1600 | "2012-06-18",7.80139132029149 1601 | "2012-06-19",8.4013333053217 1602 | "2012-06-20",8.18144069571937 1603 | "2012-06-21",7.86288203464149 1604 | "2012-06-22",7.92407232492342 1605 | "2012-06-23",7.56682847920833 1606 | "2012-06-24",7.51914995766982 1607 | "2012-06-25",7.64873978895624 1608 | "2012-06-26",7.77064523412918 1609 | "2012-06-27",7.60986220091355 1610 | "2012-06-28",7.59186171488993 1611 | "2012-06-29",7.539027055824 1612 | "2012-06-30",7.34536484041687 1613 | "2012-07-01",7.46336304552002 1614 | "2012-07-02",7.51479976048867 1615 | "2012-07-03",7.6425241342329 1616 | "2012-07-04",7.67600993202889 1617 | "2012-07-05",7.55799495853081 1618 | "2012-07-06",7.6889133368648 1619 | "2012-07-07",7.60638738977265 1620 | "2012-07-08",7.58222919427646 1621 | "2012-07-09",7.74196789982069 1622 | "2012-07-10",7.78239033558746 1623 | "2012-07-11",8.00636756765025 1624 | "2012-07-12",8.65102453904976 1625 | "2012-07-13",8.40357646462927 1626 | "2012-07-14",8.3850322878139 1627 | "2012-07-15",8.02812905943176 1628 | "2012-07-16",7.95787735848981 1629 | "2012-07-17",7.99530662029082 1630 | "2012-07-18",7.99226864327075 1631 | "2012-07-19",7.9359451033537 1632 | "2012-07-20",7.98786409608569 1633 | "2012-07-21",7.78364059622125 1634 | "2012-07-22",7.8087293067444 1635 | "2012-07-23",8.0532511535491 1636 | "2012-07-24",7.97590836016554 1637 | "2012-07-25",8.12237124340655 1638 | "2012-07-26",8.55986946569667 1639 | "2012-07-27",8.9274468162562 1640 | "2012-07-28",8.28576542051433 1641 | "2012-07-29",8.28399930424853 1642 | "2012-07-30",8.16337131645991 1643 | "2012-07-31",7.91425227874244 1644 | "2012-08-01",7.86441990499457 1645 | "2012-08-02",8.07215530818825 1646 | "2012-08-03",8.0802374162167 1647 | "2012-08-04",8.12088602109284 1648 | "2012-08-05",8.11312710422178 1649 | "2012-08-06",8.14438886554762 1650 | "2012-08-07",8.06463647577422 1651 | "2012-08-08",7.944846711002 1652 | "2012-08-09",8.24143968982973 1653 | "2012-08-10",9.00736702745136 1654 | "2012-08-11",8.66233195708248 1655 | "2012-08-12",8.80056599227992 1656 | "2012-08-13",8.3742461820963 1657 | "2012-08-14",8.56407677731509 1658 | "2012-08-15",8.38434727808281 1659 | "2012-08-16",8.12651816878071 1660 | "2012-08-17",8.39072252736229 1661 | "2012-08-18",8.3351915834332 1662 | "2012-08-19",8.9278448262117 1663 | "2012-08-20",9.0079793598445 1664 | "2012-08-21",8.37816098272068 1665 | "2012-08-22",8.20330402679528 1666 | "2012-08-23",8.38571682862785 1667 | "2012-08-24",8.31115254800169 1668 | "2012-08-25",8.74145611599836 1669 | "2012-08-26",9.44295889365291 1670 | "2012-08-27",9.14590851181679 1671 | "2012-08-28",8.58951385299586 1672 | "2012-08-29",8.46484671104403 1673 | "2012-08-30",8.36590507720246 1674 | "2012-08-31",8.56541176368671 1675 | "2012-09-01",8.4724050086261 1676 | "2012-09-02",8.96648377906443 1677 | "2012-09-03",8.56006109164341 1678 | "2012-09-04",8.4690528160883 1679 | "2012-09-05",8.74385056203024 1680 | "2012-09-06",10.0138206842205 1681 | "2012-09-07",8.69114649853968 1682 | "2012-09-08",8.78094111357239 1683 | "2012-09-09",9.83900236330972 1684 | "2012-09-10",11.614940390377 1685 | "2012-09-11",9.62865589206317 1686 | "2012-09-12",8.78293635634926 1687 | "2012-09-13",8.68118104152169 1688 | "2012-09-14",9.00097644407034 1689 | "2012-09-15",8.74623928838306 1690 | "2012-09-16",9.8072519446553 1691 | "2012-09-17",9.61266722758384 1692 | "2012-09-18",10.5920994642943 1693 | "2012-09-19",8.75542238014849 1694 | "2012-09-20",8.56063574925907 1695 | "2012-09-21",9.40516674990861 1696 | "2012-09-22",8.45807992692373 1697 | "2012-09-23",9.54959444997195 1698 | "2012-09-24",9.60602446822924 1699 | "2012-09-25",8.67726913926287 1700 | "2012-09-26",8.17103418920548 1701 | "2012-09-27",8.24143968982973 1702 | "2012-09-28",8.51097389160232 1703 | "2012-09-29",8.32360844234357 1704 | "2012-09-30",9.25922576970599 1705 | "2012-10-01",9.84966474583862 1706 | "2012-10-02",8.83317113302287 1707 | "2012-10-03",8.49780647761605 1708 | "2012-10-04",8.63408694288774 1709 | "2012-10-05",9.04227668692893 1710 | "2012-10-06",8.55004752828718 1711 | "2012-10-07",9.81809304951918 1712 | "2012-10-08",9.9020865716205 1713 | "2012-10-09",8.91637191488169 1714 | "2012-10-10",8.33206770728955 1715 | "2012-10-11",8.23668532271246 1716 | "2012-10-12",8.40178233990491 1717 | "2012-10-13",8.24170315972982 1718 | "2012-10-14",9.03562977818356 1719 | "2012-10-15",9.10409057213347 1720 | "2012-10-16",10.8321415433937 1721 | "2012-10-17",8.7787879291047 1722 | "2012-10-18",8.48011418317482 1723 | "2012-10-19",8.48941081040379 1724 | "2012-10-20",8.25062008217469 1725 | "2012-10-21",9.54344981789221 1726 | "2012-10-22",9.09717167387054 1727 | "2012-10-23",8.66939912430557 1728 | "2012-10-24",8.34924780056679 1729 | "2012-10-25",8.34069464792507 1730 | "2012-10-26",8.49474306257865 1731 | "2012-10-27",8.53326337159373 1732 | "2012-10-28",9.21979553074694 1733 | "2012-10-29",10.4442990717924 1734 | "2012-10-30",8.87696334026227 1735 | "2012-10-31",8.68185981297147 1736 | "2012-11-01",8.49821422481843 1737 | "2012-11-02",8.56845648535378 1738 | "2012-11-03",8.45871626165726 1739 | "2012-11-04",9.71818154670121 1740 | "2012-11-05",9.68700923909068 1741 | "2012-11-06",8.83010431791379 1742 | "2012-11-07",8.38799525294456 1743 | "2012-11-08",8.4984180360899 1744 | "2012-11-09",8.84721610435754 1745 | "2012-11-10",8.28096440055337 1746 | "2012-11-11",9.26492324974647 1747 | "2012-11-12",9.11173476822206 1748 | "2012-11-13",8.70682132339263 1749 | "2012-11-14",8.33182700443606 1750 | "2012-11-15",8.36660283278374 1751 | "2012-11-16",8.27690348126706 1752 | "2012-11-17",8.12946976478423 1753 | "2012-11-18",9.17915925449261 1754 | "2012-11-19",9.68558026801716 1755 | "2012-11-20",8.65521448931361 1756 | "2012-11-21",8.29454951514368 1757 | "2012-11-22",8.6522484224091 1758 | "2012-11-23",8.92970011431345 1759 | "2012-11-24",8.3959291039232 1760 | "2012-11-25",9.46753746341524 1761 | "2012-11-26",9.88979422540413 1762 | "2012-11-27",8.84922702143852 1763 | "2012-11-28",8.61431990214696 1764 | "2012-11-29",8.48156601377309 1765 | "2012-11-30",8.74909824839902 1766 | "2012-12-01",8.65364531455174 1767 | "2012-12-02",9.3482745580655 1768 | "2012-12-03",9.67683786189263 1769 | "2012-12-04",9.64290170574605 1770 | "2012-12-05",8.72891172506098 1771 | "2012-12-06",8.77894188184151 1772 | "2012-12-07",9.96057651952026 1773 | "2012-12-08",8.73777346032728 1774 | "2012-12-09",9.25263328416643 1775 | "2012-12-10",9.26624800391448 1776 | "2012-12-11",9.42730487221368 1777 | "2012-12-12",8.79300509129753 1778 | "2012-12-13",8.70300863746445 1779 | "2012-12-14",8.43944784279138 1780 | "2012-12-15",8.29104513108173 1781 | "2012-12-16",9.31325790598287 1782 | "2012-12-17",9.34792603492875 1783 | "2012-12-18",8.791486026749 1784 | "2012-12-19",8.51899157335762 1785 | "2012-12-20",8.41294317004244 1786 | "2012-12-21",8.29679586577005 1787 | "2012-12-22",8.21256839823415 1788 | "2012-12-23",9.25655579577315 1789 | "2012-12-24",9.65226597708712 1790 | "2012-12-25",8.63746202380718 1791 | "2012-12-26",8.60776488960062 1792 | "2012-12-27",8.96533457380484 1793 | "2012-12-28",8.68372406230387 1794 | "2012-12-29",8.53267276226462 1795 | "2012-12-30",9.49016666846238 1796 | "2012-12-31",10.142858720955 1797 | "2013-01-01",9.11162439903702 1798 | "2013-01-02",9.08500388066489 1799 | "2013-01-03",9.05508908670489 1800 | "2013-01-04",9.33626792857397 1801 | "2013-01-05",9.23960786965675 1802 | "2013-01-06",10.1327324527083 1803 | "2013-01-07",9.49122438992696 1804 | "2013-01-08",9.1122864315008 1805 | "2013-01-09",9.06357899058078 1806 | "2013-01-10",8.97297111339799 1807 | "2013-01-11",9.14548179962769 1808 | "2013-01-12",10.5418617072488 1809 | "2013-01-13",11.5075208865114 1810 | "2013-01-14",10.1931676276506 1811 | "2013-01-15",9.27995971385624 1812 | "2013-01-16",8.84635304331433 1813 | "2013-01-17",8.73262709966039 1814 | "2013-01-18",8.65504025810836 1815 | "2013-01-19",8.45446636150793 1816 | "2013-01-20",8.96367227561502 1817 | "2013-01-21",10.0210927946104 1818 | "2013-01-22",9.00565049932022 1819 | "2013-01-23",8.86092472971904 1820 | "2013-01-24",8.58522560180806 1821 | "2013-01-25",8.536211197252 1822 | "2013-01-26",8.45850419506756 1823 | "2013-01-27",8.53444354482276 1824 | "2013-01-28",10.1042218823372 1825 | "2013-01-29",8.65067458279072 1826 | "2013-01-30",8.51218064959269 1827 | "2013-01-31",8.48549610467298 1828 | "2013-02-01",8.57791192645094 1829 | "2013-02-02",8.54985397365579 1830 | "2013-02-03",9.60622641363735 1831 | "2013-02-04",10.0261917925116 1832 | "2013-02-05",8.87024156729927 1833 | "2013-02-06",8.52793528794814 1834 | "2013-02-07",8.38343320123671 1835 | "2013-02-08",8.20083725837985 1836 | "2013-02-09",8.09285102753838 1837 | "2013-02-10",8.03883475778775 1838 | "2013-02-11",8.08641027532378 1839 | "2013-02-12",8.03657340970731 1840 | "2013-02-13",7.97522083865341 1841 | "2013-02-14",7.84267147497946 1842 | "2013-02-15",7.8935720735049 1843 | "2013-02-16",7.81762544305337 1844 | "2013-02-17",7.82284529027977 1845 | "2013-02-18",7.9672801789422 1846 | "2013-02-19",8.00670084544037 1847 | "2013-02-20",7.91132401896335 1848 | "2013-02-21",7.85166117788927 1849 | "2013-02-22",7.87207397986687 1850 | "2013-02-23",7.75362354655975 1851 | "2013-02-24",7.68294316987829 1852 | "2013-02-25",7.84384863815247 1853 | "2013-02-26",8.19146305132693 1854 | "2013-02-27",7.97831096986772 1855 | "2013-02-28",7.92334821193015 1856 | "2013-03-01",7.87131120332341 1857 | "2013-03-02",7.74370325817375 1858 | "2013-03-03",7.77863014732581 1859 | "2013-03-04",7.83518375526675 1860 | "2013-03-05",7.83834331555712 1861 | "2013-03-06",7.84619881549743 1862 | "2013-03-07",7.92044650514261 1863 | "2013-03-08",7.75790620835175 1864 | "2013-03-09",7.58629630715272 1865 | "2013-03-10",7.51479976048867 1866 | "2013-03-11",7.75790620835175 1867 | "2013-03-12",7.80343505695217 1868 | "2013-03-13",8.07899825868515 1869 | "2013-03-14",8.38068594676157 1870 | "2013-03-15",8.0643219609108 1871 | "2013-03-16",7.85282781228174 1872 | "2013-03-17",7.90396563403217 1873 | "2013-03-18",7.84463264446468 1874 | "2013-03-19",7.88945914940452 1875 | "2013-03-20",8.22550309756692 1876 | "2013-03-21",8.54071438645758 1877 | "2013-03-22",8.01928379291679 1878 | "2013-03-23",7.83122021460429 1879 | "2013-03-24",8.43315919580623 1880 | "2013-03-25",8.09620827165004 1881 | "2013-03-26",7.86633892304654 1882 | "2013-03-27",7.77904864492556 1883 | "2013-03-28",7.77359446736019 1884 | "2013-03-29",7.77275271646874 1885 | "2013-03-30",7.76811037852599 1886 | "2013-03-31",7.48099216286952 1887 | "2013-04-01",7.74370325817375 1888 | "2013-04-02",7.5963923040642 1889 | "2013-04-03",7.68063742756094 1890 | "2013-04-04",7.53849499941346 1891 | "2013-04-05",7.4500795698075 1892 | "2013-04-06",7.44307837434852 1893 | "2013-04-07",7.54855597916987 1894 | "2013-04-08",7.64060382639363 1895 | "2013-04-09",7.67647364638916 1896 | "2013-04-10",7.56734567601324 1897 | "2013-04-11",8.07682603129881 1898 | "2013-04-12",7.70120018085745 1899 | "2013-04-13",7.36833968631138 1900 | "2013-04-14",7.3664451483276 1901 | "2013-04-15",7.48661331313996 1902 | "2013-04-16",7.5740450053722 1903 | "2013-04-17",7.568895663407 1904 | "2013-04-18",7.63964228785801 1905 | "2013-04-19",7.85321638815607 1906 | "2013-04-20",7.31188616407716 1907 | "2013-04-21",7.53636393840451 1908 | "2013-04-22",7.68248244653451 1909 | "2013-04-23",7.73193072194849 1910 | "2013-04-24",8.01201823915906 1911 | "2013-04-25",7.98036576511125 1912 | "2013-04-26",8.17131687471973 1913 | "2013-04-27",7.97796809312855 1914 | "2013-04-28",7.79482315217939 1915 | "2013-04-29",8.30424746507847 1916 | "2013-04-30",8.05642676752298 1917 | "2013-05-01",7.77779262633883 1918 | "2013-05-02",8.22897764335831 1919 | "2013-05-03",7.900636613018 1920 | "2013-05-04",7.46164039220858 1921 | "2013-05-05",7.54908271081229 1922 | "2013-05-06",7.81681996576455 1923 | "2013-05-07",7.72223474470961 1924 | "2013-05-08",7.71556953452021 1925 | "2013-05-09",7.72621265050753 1926 | "2013-05-10",7.58171964012531 1927 | "2013-05-11",7.26542972325395 1928 | "2013-05-12",7.30114780585603 1929 | "2013-05-13",7.47420480649612 1930 | "2013-05-14",7.58882987830781 1931 | "2013-05-15",7.61085279039525 1932 | "2013-05-16",7.64778604544093 1933 | "2013-05-17",7.60190195987517 1934 | "2013-05-18",7.25417784645652 1935 | "2013-05-19",7.1800698743028 1936 | "2013-05-20",7.37713371283395 1937 | "2013-05-21",7.57507169950756 1938 | "2013-05-22",7.50714107972761 1939 | "2013-05-23",7.58578882173203 1940 | "2013-05-24",7.40731771046942 1941 | "2013-05-25",7.03085747611612 1942 | "2013-05-26",7.15070145759253 1943 | "2013-05-27",7.25417784645652 1944 | "2013-05-28",7.45066079621154 1945 | "2013-05-29",7.55118686729615 1946 | "2013-05-30",7.61332497954064 1947 | "2013-05-31",7.42714413340862 1948 | "2013-06-01",7.350516171834 1949 | "2013-06-02",7.28824440102012 1950 | "2013-06-03",7.434847875212 1951 | "2013-06-04",7.53743003658651 1952 | "2013-06-05",7.35244110024358 1953 | "2013-06-06",7.28207365809346 1954 | "2013-06-07",7.3031700512368 1955 | "2013-06-08",7.29369772060144 1956 | "2013-06-09",7.22983877815125 1957 | "2013-06-10",7.57507169950756 1958 | "2013-06-11",7.97418866928601 1959 | "2013-06-12",7.61579107203583 1960 | "2013-06-13",7.47420480649612 1961 | "2013-06-14",7.33432935030054 1962 | "2013-06-15",7.31920245876785 1963 | "2013-06-16",7.40488757561612 1964 | "2013-06-17",7.42476176182321 1965 | "2013-06-18",7.47022413589997 1966 | "2013-06-19",7.36770857237437 1967 | "2013-06-20",7.2841348061952 1968 | "2013-06-21",7.32580750259577 1969 | "2013-06-22",7.29097477814298 1970 | "2013-06-23",7.19142933003638 1971 | "2013-06-24",7.28961052145117 1972 | "2013-06-25",7.33236920592906 1973 | "2013-06-26",7.39572160860205 1974 | "2013-06-27",7.56734567601324 1975 | "2013-06-28",7.62119516280984 1976 | "2013-06-29",7.26892012819372 1977 | "2013-06-30",7.26961674960817 1978 | "2013-07-01",7.30787278076371 1979 | "2013-07-02",7.28138566357028 1980 | "2013-07-03",7.32118855673948 1981 | "2013-07-04",7.51207124583547 1982 | "2013-07-05",7.50052948539529 1983 | "2013-07-06",7.11314210870709 1984 | "2013-07-07",7.1420365747068 1985 | "2013-07-08",7.32383056620232 1986 | "2013-07-09",7.42892719480227 1987 | "2013-07-10",7.52886925664225 1988 | "2013-07-11",7.41997992366183 1989 | "2013-07-12",7.4730690880322 1990 | "2013-07-13",7.3375877435386 1991 | "2013-07-14",7.35436233042148 1992 | "2013-07-15",7.58273848891441 1993 | "2013-07-16",7.62608275807238 1994 | "2013-07-17",7.7596141506969 1995 | "2013-07-18",7.94058382710424 1996 | "2013-07-19",7.59085212368858 1997 | "2013-07-20",7.41818082272679 1998 | "2013-07-21",7.41155628781116 1999 | "2013-07-22",7.59789795052178 2000 | "2013-07-24",6.63594655568665 2001 | "2013-07-25",7.64730883235624 2002 | "2013-07-26",7.82763954636642 2003 | "2013-07-27",7.63385355968177 2004 | "2013-07-28",8.53030683056162 2005 | "2013-07-29",8.52951694110507 2006 | "2013-07-30",7.85127199710988 2007 | "2013-07-31",7.79564653633459 2008 | "2013-08-01",7.58222919427646 2009 | "2013-08-02",7.43897159239586 2010 | "2013-08-03",7.63867982387611 2011 | "2013-08-04",7.52725591937378 2012 | "2013-08-05",7.72488843932307 2013 | "2013-08-06",7.91352101728389 2014 | "2013-08-07",8.65956043270316 2015 | "2013-08-08",8.29579811063615 2016 | "2013-08-09",8.13241267450091 2017 | "2013-08-10",7.92551897978693 2018 | "2013-08-11",7.82843635915759 2019 | "2013-08-12",7.84424071814181 2020 | "2013-08-13",7.77695440332244 2021 | "2013-08-14",7.76684053708551 2022 | "2013-08-15",7.78986855905471 2023 | "2013-08-16",7.69393732550927 2024 | "2013-08-17",7.71556953452021 2025 | "2013-08-18",8.15277405274407 2026 | "2013-08-19",8.2529671950008 2027 | "2013-08-20",7.94129557090653 2028 | "2013-08-21",7.80954132465341 2029 | "2013-08-22",7.81923445385907 2030 | "2013-08-23",7.81237820598861 2031 | "2013-08-24",7.54538974961182 2032 | "2013-08-25",8.47428569040496 2033 | "2013-08-26",7.79193595693806 2034 | "2013-08-27",7.66809370908241 2035 | "2013-08-28",7.80547462527086 2036 | "2013-08-29",7.9672801789422 2037 | "2013-08-30",7.99429498641598 2038 | "2013-08-31",7.80954132465341 2039 | "2013-09-01",8.70317470904168 2040 | "2013-09-02",7.9672801789422 2041 | "2013-09-03",8.09620827165004 2042 | "2013-09-04",8.03786623470962 2043 | "2013-09-05",8.58016799057763 2044 | "2013-09-06",10.8718582692757 2045 | "2013-09-07",9.19248185367487 2046 | "2013-09-08",9.15069651904867 2047 | "2013-09-09",9.82319898130729 2048 | "2013-09-10",8.76888532613486 2049 | "2013-09-11",8.50855599802057 2050 | "2013-09-12",8.72972059026726 2051 | "2013-09-13",8.92145757894788 2052 | "2013-09-14",8.52991196382401 2053 | "2013-09-15",10.4159817834027 2054 | "2013-09-16",10.3369892693381 2055 | "2013-09-17",9.14644164612595 2056 | "2013-09-18",8.50875771259514 2057 | "2013-09-19",8.38617292897783 2058 | "2013-09-20",8.36100710822691 2059 | "2013-09-21",8.12976444579417 2060 | "2013-09-22",8.73198193834769 2061 | "2013-09-23",8.73584667745758 2062 | "2013-09-24",10.8196982812101 2063 | "2013-09-25",10.6590929669357 2064 | "2013-09-26",9.84945366404364 2065 | "2013-09-27",8.88820487145502 2066 | "2013-09-28",8.92771217382708 2067 | "2013-09-29",9.66738540005753 2068 | "2013-09-30",10.1635029066262 2069 | "2013-10-01",9.3379417165699 2070 | "2013-10-02",9.17719715338293 2071 | "2013-10-03",8.87905466204227 2072 | "2013-10-04",8.57866451350434 2073 | "2013-10-05",8.73004395324502 2074 | "2013-10-06",9.9533247873833 2075 | "2013-10-07",10.2387447656008 2076 | "2013-10-08",9.20311432688444 2077 | "2013-10-09",8.74719318352693 2078 | "2013-10-10",8.77554943448619 2079 | "2013-10-11",9.2098402469345 2080 | "2013-10-12",8.52813313145457 2081 | "2013-10-13",9.05765528431053 2082 | "2013-10-14",9.42294862137501 2083 | "2013-10-15",9.02917814290207 2084 | "2013-10-16",9.09773142759353 2085 | "2013-10-17",9.44809663565824 2086 | "2013-10-18",9.11250701162742 2087 | "2013-10-19",8.80267284031282 2088 | "2013-10-20",9.20843856468659 2089 | "2013-10-21",11.0470891404358 2090 | "2013-10-22",9.32758993202642 2091 | "2013-10-23",8.67880170661265 2092 | "2013-10-24",8.57659353469768 2093 | "2013-10-25",8.43598313599069 2094 | "2013-10-26",8.19007704971905 2095 | "2013-10-27",9.06044728240157 2096 | "2013-10-28",9.27030595314362 2097 | "2013-10-29",8.5016733797582 2098 | "2013-10-30",8.18729927015515 2099 | "2013-10-31",8.0959035329611 2100 | "2013-11-01",8.04334217044161 2101 | "2013-11-02",7.952615111651 2102 | "2013-11-03",8.39908510293591 2103 | "2013-11-04",8.79102985704596 2104 | "2013-11-05",8.3030093814735 2105 | "2013-11-06",8.11910083763749 2106 | "2013-11-07",8.23031079913502 2107 | "2013-11-08",8.15765701519647 2108 | "2013-11-09",7.82923253754359 2109 | "2013-11-10",8.57395152523485 2110 | "2013-11-11",9.61132880805727 2111 | "2013-11-12",8.92385758009988 2112 | "2013-11-13",8.3654396361887 2113 | "2013-11-14",8.31188955823036 2114 | "2013-11-15",8.63141433550626 2115 | "2013-11-16",8.45382731579442 2116 | "2013-11-17",8.90585118120802 2117 | "2013-11-18",10.8674821444793 2118 | "2013-11-19",9.15514473650823 2119 | "2013-11-20",8.43944784279138 2120 | "2013-11-21",8.44354665124794 2121 | "2013-11-22",8.57262789830434 2122 | "2013-11-23",8.372398606513 2123 | "2013-11-24",8.73600738456922 2124 | "2013-11-25",10.3885029394023 2125 | "2013-11-26",8.70880479511728 2126 | "2013-11-27",8.19533366716287 2127 | "2013-11-28",8.22147894726719 2128 | "2013-11-29",8.27512163021651 2129 | "2013-11-30",8.16990264735914 2130 | "2013-12-01",8.82232217747174 2131 | "2013-12-02",9.80543361206074 2132 | "2013-12-03",9.38907215991958 2133 | "2013-12-04",8.98130449495713 2134 | "2013-12-05",8.57922858233569 2135 | "2013-12-06",8.48776438072542 2136 | "2013-12-07",8.72192834304709 2137 | "2013-12-08",8.9182485910357 2138 | "2013-12-09",9.65162297294974 2139 | "2013-12-10",8.86474666090541 2140 | "2013-12-11",8.50936261230105 2141 | "2013-12-12",8.63177109612367 2142 | "2013-12-13",9.20271134481169 2143 | "2013-12-14",8.90381521172292 2144 | "2013-12-15",9.02653771890043 2145 | "2013-12-16",9.23766366762507 2146 | "2013-12-17",8.89508153175417 2147 | "2013-12-18",8.6429443967218 2148 | "2013-12-19",8.12976444579417 2149 | "2013-12-20",8.29179710504873 2150 | "2013-12-21",8.09803475617607 2151 | "2013-12-22",9.51878049751247 2152 | "2013-12-23",9.90468683311161 2153 | "2013-12-24",8.93734984826739 2154 | "2013-12-25",8.57885257180297 2155 | "2013-12-26",8.71588010229646 2156 | "2013-12-27",8.48899945704546 2157 | "2013-12-28",8.50572771330696 2158 | "2013-12-29",9.30008966411979 2159 | "2013-12-30",10.1461591836579 2160 | "2013-12-31",9.17709377818255 2161 | "2014-01-01",8.83564692253477 2162 | "2014-01-02",8.83287946027762 2163 | "2014-01-03",8.92305821954573 2164 | "2014-01-04",8.89329814421792 2165 | "2014-01-05",8.60263667323371 2166 | "2014-01-07",8.99143781491923 2167 | "2014-01-08",8.80687326653069 2168 | "2014-01-09",8.85409390765552 2169 | "2014-01-10",8.93102321585603 2170 | "2014-01-11",8.85280791762332 2171 | "2014-01-12",10.6933076203563 2172 | "2014-01-13",11.3075604350077 2173 | "2014-01-14",9.83745458193169 2174 | "2014-01-15",9.60508151672137 2175 | "2014-01-16",9.74537068443899 2176 | "2014-01-17",9.67564548044036 2177 | "2014-01-18",9.43468320386588 2178 | "2014-01-19",11.5036223246441 2179 | "2014-01-20",11.9767789709185 2180 | "2014-01-21",10.5425744562461 2181 | "2014-01-22",10.004282662571 2182 | "2014-01-23",9.73281784848262 2183 | "2014-01-24",9.86646043169905 2184 | "2014-01-25",9.37092743662413 2185 | "2014-01-26",9.490544554572 2186 | "2014-01-27",10.139152384404 2187 | "2014-01-28",9.99984264077889 2188 | "2014-01-29",10.0327159505439 2189 | "2014-01-30",10.3803736928726 2190 | "2014-01-31",10.453053004618 2191 | "2014-02-01",10.2401383446439 2192 | "2014-02-02",11.7605196483804 2193 | "2014-02-03",12.846746888829 2194 | "2014-02-04",10.7668837086558 2195 | "2014-02-05",9.84522264440415 2196 | "2014-02-06",9.29035230994557 2197 | "2014-02-07",9.10331179921766 2198 | "2014-02-08",8.79573360595074 2199 | "2014-02-09",8.62335338724463 2200 | "2014-02-10",8.41825644355621 2201 | "2014-02-11",8.31090675716845 2202 | "2014-02-12",8.23615566168312 2203 | "2014-02-13",8.13123654969612 2204 | "2014-02-14",7.92768504561578 2205 | "2014-02-15",7.7591874385078 2206 | "2014-02-16",7.72665366484764 2207 | "2014-02-17",7.83518375526675 2208 | "2014-02-18",7.88419993367604 2209 | "2014-02-19",7.91461770904068 2210 | "2014-02-20",7.92551897978693 2211 | "2014-02-21",7.75319426988434 2212 | "2014-02-22",7.50878717063428 2213 | "2014-02-23",7.55747290161475 2214 | "2014-02-24",7.80261806344267 2215 | "2014-02-25",7.68386398025643 2216 | "2014-02-26",7.9844627322622 2217 | "2014-02-27",7.85166117788927 2218 | "2014-02-28",7.68478394352278 2219 | "2014-03-01",7.3375877435386 2220 | "2014-03-02",7.40367029001237 2221 | "2014-03-03",7.86787149039632 2222 | "2014-03-04",7.8984110928116 2223 | "2014-03-05",7.58426481838906 2224 | "2014-03-06",7.71423114484909 2225 | "2014-03-07",7.88945914940452 2226 | "2014-03-08",7.32580750259577 2227 | "2014-03-09",7.48885295573346 2228 | "2014-03-10",7.55381085200823 2229 | "2014-03-11",7.66996199547358 2230 | "2014-03-12",7.98820359702258 2231 | "2014-03-13",8.00436556497957 2232 | "2014-03-14",7.6511201757027 2233 | "2014-03-15",7.48661331313996 2234 | "2014-03-16",7.44949800538285 2235 | "2014-03-17",7.59538727885397 2236 | "2014-03-18",7.60986220091355 2237 | "2014-03-19",7.54802896993501 2238 | "2014-03-20",7.61775957660851 2239 | "2014-03-21",7.59538727885397 2240 | "2014-03-22",7.34665516317654 2241 | "2014-03-23",7.40123126441302 2242 | "2014-03-24",8.09315669772264 2243 | "2014-03-25",7.92371033396924 2244 | "2014-03-26",7.69074316354187 2245 | "2014-03-27",8.43901541035221 2246 | "2014-03-28",7.78239033558746 2247 | "2014-03-29",7.30854279753919 2248 | "2014-03-30",7.26192709270275 2249 | "2014-03-31",7.43720636687129 2250 | "2014-04-01",7.54009032014532 2251 | "2014-04-02",7.58528107863913 2252 | "2014-04-03",7.60887062919126 2253 | "2014-04-04",7.46450983463653 2254 | "2014-04-05",7.15695636461564 2255 | "2014-04-06",7.48773376143644 2256 | "2014-04-07",7.4489161025442 2257 | "2014-04-08",7.47022413589997 2258 | "2014-04-09",7.43602781635185 2259 | "2014-04-10",7.52185925220163 2260 | "2014-04-11",7.41034709782102 2261 | "2014-04-12",7.15617663748062 2262 | "2014-04-13",7.13807303404435 2263 | "2014-04-14",7.36264527041782 2264 | "2014-04-15",7.51697722460432 2265 | "2014-04-16",7.61726781362835 2266 | "2014-04-17",7.49554194388426 2267 | "2014-04-18",7.39203156751459 2268 | "2014-04-19",7.17472430983638 2269 | "2014-04-20",8.09132127353041 2270 | "2014-04-21",7.51534457118044 2271 | "2014-04-22",7.8458075026378 2272 | "2014-04-23",7.69120009752286 2273 | "2014-04-24",7.83478810738819 2274 | "2014-04-25",7.67740043051481 2275 | "2014-04-26",7.24850407237061 2276 | "2014-04-27",7.40245152081824 2277 | "2014-04-28",7.69439280262942 2278 | "2014-04-29",7.82604401351897 2279 | "2014-04-30",7.61184239958042 2280 | "2014-05-01",7.5137092478397 2281 | "2014-05-02",7.67600993202889 2282 | "2014-05-03",7.24064969425547 2283 | "2014-05-04",7.65539064482615 2284 | "2014-05-05",8.13944052187461 2285 | "2014-05-06",8.37493814383537 2286 | "2014-05-07",7.90174751852014 2287 | "2014-05-08",8.02387999273488 2288 | "2014-05-09",8.75020786252571 2289 | "2014-05-10",8.081784206935 2290 | "2014-05-11",7.70436116791031 2291 | "2014-05-12",7.86825426552061 2292 | "2014-05-13",7.81963630236759 2293 | "2014-05-14",7.76089319585102 2294 | "2014-05-15",7.66715825531915 2295 | "2014-05-16",7.63433723562832 2296 | "2014-05-17",7.35115822643069 2297 | "2014-05-18",7.58933582317062 2298 | "2014-05-19",7.91022370709734 2299 | "2014-05-20",7.85476918349913 2300 | "2014-05-21",7.64683139143048 2301 | "2014-05-22",7.49164547360513 2302 | "2014-05-23",7.5234813125735 2303 | "2014-05-24",7.0352685992811 2304 | "2014-05-25",7.06561336359772 2305 | "2014-05-26",7.22983877815125 2306 | "2014-05-27",7.50823877467866 2307 | "2014-05-28",8.31164394850298 2308 | "2014-05-29",8.01400499477946 2309 | "2014-05-30",7.49720722320332 2310 | "2014-05-31",7.83161727635261 2311 | "2014-06-01",7.15148546390474 2312 | "2014-06-02",7.41095187558364 2313 | "2014-06-03",7.63094658089046 2314 | "2014-06-04",7.4759059693674 2315 | "2014-06-05",7.58832367733522 2316 | "2014-06-06",7.24636808010246 2317 | "2014-06-07",7.10332206252611 2318 | "2014-06-08",7.10414409298753 2319 | "2014-06-09",7.1929342212158 2320 | "2014-06-10",7.40123126441302 2321 | "2014-06-11",7.43955930913332 2322 | "2014-06-12",7.70796153183549 2323 | "2014-06-13",7.350516171834 2324 | "2014-06-14",7.32251043399739 2325 | "2014-06-15",7.28550654852279 2326 | "2014-06-16",7.36770857237437 2327 | "2014-06-17",7.26752542782817 2328 | "2014-06-18",7.22475340576797 2329 | "2014-06-19",7.22256601882217 2330 | "2014-06-20",7.35179986905778 2331 | "2014-06-21",6.97541392745595 2332 | "2014-06-22",7.04315991598834 2333 | "2014-06-23",7.48099216286952 2334 | "2014-06-24",7.20340552108309 2335 | "2014-06-25",7.22402480828583 2336 | "2014-06-26",7.11314210870709 2337 | "2014-06-27",7.07918439460967 2338 | "2014-06-28",6.88550967003482 2339 | "2014-06-29",6.87419849545329 2340 | "2014-06-30",7.72312009226633 2341 | "2014-07-01",7.49665243816828 2342 | "2014-07-02",7.22402480828583 2343 | "2014-07-03",7.27239839257005 2344 | "2014-07-04",7.07918439460967 2345 | "2014-07-05",6.85435450225502 2346 | "2014-07-06",6.93049476595163 2347 | "2014-07-07",7.15617663748062 2348 | "2014-07-08",7.31455283232408 2349 | "2014-07-09",7.22693601849329 2350 | "2014-07-10",7.65681009148038 2351 | "2014-07-11",7.54009032014532 2352 | "2014-07-12",7.21007962817079 2353 | "2014-07-13",7.24992553671799 2354 | "2014-07-14",7.29437729928882 2355 | "2014-07-15",7.51914995766982 2356 | "2014-07-16",7.42237370098682 2357 | "2014-07-17",8.22362717580548 2358 | "2014-07-18",7.49276030092238 2359 | "2014-07-19",7.22475340576797 2360 | "2014-07-20",7.25629723969068 2361 | "2014-07-21",7.4489161025442 2362 | "2014-07-22",7.65539064482615 2363 | "2014-07-23",7.67136092319064 2364 | "2014-07-24",7.92407232492342 2365 | "2014-07-25",7.80098207125774 2366 | "2014-07-26",7.45645455517621 2367 | "2014-07-27",7.36264527041782 2368 | "2014-07-28",8.21311069759668 2369 | "2014-07-29",8.23642052726539 2370 | "2014-07-30",7.92153563213355 2371 | "2014-07-31",7.74500280351584 2372 | "2014-08-01",7.57814547241947 2373 | "2014-08-02",7.56682847920833 2374 | "2014-08-03",7.65822752616135 2375 | "2014-08-04",8.27078101316267 2376 | "2014-08-05",7.80302664363222 2377 | "2014-08-06",7.6226639513236 2378 | "2014-08-07",7.70029520342012 2379 | "2014-08-08",8.05864371221562 2380 | "2014-08-09",7.64108424917491 2381 | "2014-08-10",7.83636976054512 2382 | "2014-08-11",8.37355374121463 2383 | "2014-08-12",8.60940767540405 2384 | "2014-08-13",8.17723488551019 2385 | "2014-08-14",8.03689677268507 2386 | "2014-08-15",7.95331834656043 2387 | "2014-08-16",7.7848892956551 2388 | "2014-08-17",8.07371464110986 2389 | "2014-08-18",8.28045768658256 2390 | "2014-08-19",8.19918935907807 2391 | "2014-08-20",8.00034949532468 2392 | "2014-08-21",7.88720858581393 2393 | "2014-08-22",7.83715965000168 2394 | "2014-08-23",7.97968130238774 2395 | "2014-08-24",8.51839247199172 2396 | "2014-08-25",8.35631996582815 2397 | "2014-08-26",7.93236215433975 2398 | "2014-08-27",7.83676478326407 2399 | "2014-08-29",8.53719187792293 2400 | "2014-08-30",8.02649693894541 2401 | "2014-08-31",7.9728107841214 2402 | "2014-09-01",8.37447688921464 2403 | "2014-09-02",8.25322764558177 2404 | "2014-09-03",8.44591198941127 2405 | "2014-09-04",8.49269555981584 2406 | "2014-09-05",8.83913175254611 2407 | "2014-09-06",8.07589363029886 2408 | "2014-09-07",8.75020786252571 2409 | "2014-09-08",10.702412661625 2410 | "2014-09-09",10.0599783492956 2411 | "2014-09-10",8.79315687091382 2412 | "2014-09-11",8.71440336070394 2413 | "2014-09-12",9.05625635659347 2414 | "2014-09-13",8.62155320674048 2415 | "2014-09-14",9.96142621745657 2416 | "2014-09-15",9.70856696016566 2417 | "2014-09-16",9.19644426678407 2418 | "2014-09-17",8.61431990214696 2419 | "2014-09-18",8.88903257187474 2420 | "2014-09-19",9.01627006814768 2421 | "2014-09-20",8.19918935907807 2422 | "2014-09-21",9.16219999664825 2423 | "2014-09-22",9.60750445504496 2424 | "2014-09-23",8.44290058683438 2425 | "2014-09-24",8.15737044118677 2426 | "2014-09-25",8.18451375303372 2427 | "2014-09-26",8.83898679349679 2428 | "2014-09-27",8.21283958467648 2429 | "2014-09-28",8.33615081612066 2430 | "2014-09-29",8.59044365315583 2431 | "2014-09-30",8.70134640303916 2432 | "2014-10-01",8.26642147298455 2433 | "2014-10-02",8.27461194620955 2434 | "2014-10-03",8.36637030168165 2435 | "2014-10-04",8.03527891114467 2436 | "2014-10-05",9.23151460720759 2437 | "2014-10-06",9.96467672084855 2438 | "2014-10-07",8.84548923675327 2439 | "2014-10-08",8.67299964255444 2440 | "2014-10-09",8.40065937516029 2441 | "2014-10-10",8.58035576637388 2442 | "2014-10-11",8.02059914989697 2443 | "2014-10-12",9.1075321519945 2444 | "2014-10-13",9.43835205468725 2445 | "2014-10-14",8.50126704086598 2446 | "2014-10-15",8.3133619511344 2447 | "2014-10-16",8.3255483071614 2448 | "2014-10-17",8.47637119689598 2449 | "2014-10-18",8.20111164444276 2450 | "2014-10-19",8.70051424854327 2451 | "2014-10-20",11.2744652095441 2452 | "2014-10-21",9.60757167515724 2453 | "2014-10-22",8.87863674743007 2454 | "2014-10-23",8.76592651372944 2455 | "2014-10-24",9.85639594500228 2456 | "2014-10-25",8.43424627059531 2457 | "2014-10-26",8.8034242116007 2458 | "2014-10-27",9.38176948760371 2459 | "2014-10-28",8.76029622047005 2460 | "2014-10-29",8.55506684384432 2461 | "2014-10-30",8.46884293047519 2462 | "2014-10-31",8.53129331579502 2463 | "2014-11-01",8.04558828080353 2464 | "2014-11-02",9.0902045707362 2465 | "2014-11-03",9.45414892373398 2466 | "2014-11-04",9.0590522577624 2467 | "2014-11-05",8.25945819533241 2468 | "2014-11-06",8.18952211074809 2469 | "2014-11-07",8.19533366716287 2470 | "2014-11-08",7.69393732550927 2471 | "2014-11-09",8.29004161870449 2472 | "2014-11-10",9.03288694657909 2473 | "2014-11-11",8.38274709486331 2474 | "2014-11-12",8.21797820315073 2475 | "2014-11-13",8.12474302038557 2476 | "2014-11-14",8.04686951095958 2477 | "2014-11-15",7.57301725605255 2478 | "2014-11-16",8.3986348552921 2479 | "2014-11-17",8.71144331907547 2480 | "2014-11-18",8.25114213909075 2481 | "2014-11-19",7.99226864327075 2482 | "2014-11-20",8.00536706731666 2483 | "2014-11-21",8.08085641964099 2484 | "2014-11-22",7.52833176670725 2485 | "2014-11-23",8.20248244657654 2486 | "2014-11-24",9.07440609473535 2487 | "2014-11-25",8.2147358333823 2488 | "2014-11-26",7.96797317966293 2489 | "2014-11-27",8.12829017160705 2490 | "2014-11-28",7.9536697786498 2491 | "2014-11-29",7.66669020008009 2492 | "2014-11-30",7.96554557312999 2493 | "2014-12-01",9.14216859187285 2494 | "2014-12-02",8.28702502516506 2495 | "2014-12-03",8.28324144138542 2496 | "2014-12-04",8.30102525383845 2497 | "2014-12-05",8.38799525294456 2498 | "2014-12-06",7.70975686445416 2499 | "2014-12-07",8.11102783819368 2500 | "2014-12-08",8.74560285240295 2501 | "2014-12-09",8.39140318535794 2502 | "2014-12-10",8.11969625295725 2503 | "2014-12-11",8.2358907259285 2504 | "2014-12-12",8.10681603894705 2505 | "2014-12-13",7.71199650704767 2506 | "2014-12-14",8.4252971767117 2507 | "2014-12-15",8.84937050375457 2508 | "2014-12-16",8.49310539588715 2509 | "2014-12-17",8.17413934342947 2510 | "2014-12-18",8.10228362448007 2511 | "2014-12-19",7.8336002236611 2512 | "2014-12-20",7.52294091807237 2513 | "2014-12-21",7.91022370709734 2514 | "2014-12-22",8.3654396361887 2515 | "2014-12-23",9.06056344665796 2516 | "2014-12-24",8.17919979842309 2517 | "2014-12-25",8.01631789850341 2518 | "2014-12-26",8.10319175228579 2519 | "2014-12-27",7.81439963380449 2520 | "2014-12-28",8.38799525294456 2521 | "2014-12-29",8.74814616962193 2522 | "2014-12-30",8.31287139434261 2523 | "2014-12-31",7.92334821193015 2524 | "2015-01-01",7.84658997529119 2525 | "2015-01-02",8.3020178097512 2526 | "2015-01-03",8.43620003220671 2527 | "2015-01-04",8.93458687038968 2528 | "2015-01-05",8.88861880730088 2529 | "2015-01-06",8.66423293406555 2530 | "2015-01-07",8.50004703258127 2531 | "2015-01-08",8.41825644355621 2532 | "2015-01-09",8.4721958254855 2533 | "2015-01-10",8.30721262662831 2534 | "2015-01-11",9.88659568486591 2535 | "2015-01-12",10.694985739443 2536 | "2015-01-13",9.76019438270965 2537 | "2015-01-14",9.11007795003779 2538 | "2015-01-15",8.79951090136887 2539 | "2015-01-16",8.7830896717961 2540 | "2015-01-17",8.42989086301344 2541 | "2015-01-18",8.87877607170755 2542 | "2015-01-19",9.75938620856187 2543 | "2015-01-20",8.9520876435484 2544 | "2015-01-21",8.66112036022288 2545 | "2015-01-22",8.58485183989005 2546 | "2015-01-23",8.39660622842712 2547 | "2015-01-24",7.92371033396924 2548 | "2015-01-25",8.08548677210285 2549 | "2015-01-26",8.35890061242164 2550 | "2015-01-27",8.30350479887278 2551 | "2015-01-28",8.27792025817214 2552 | "2015-01-29",8.36357570275064 2553 | "2015-01-30",8.59822003005861 2554 | "2015-01-31",8.08116577772543 2555 | "2015-02-01",9.03443816698441 2556 | "2015-02-02",10.2832245120716 2557 | "2015-02-03",9.27322127001538 2558 | "2015-02-04",8.71407489954152 2559 | "2015-02-06",8.23350314023399 2560 | "2015-02-07",7.88419993367604 2561 | "2015-02-08",7.81278281857758 2562 | "2015-02-09",7.93128476152589 2563 | "2015-02-10",8.4144957931779 2564 | "2015-02-11",8.15651022607997 2565 | "2015-02-12",7.85709386490249 2566 | "2015-02-13",7.9098566672694 2567 | "2015-02-14",7.80913539812054 2568 | "2015-02-15",7.5076900778199 2569 | "2015-02-16",8.20385137218388 2570 | "2015-02-17",7.82164312623998 2571 | "2015-02-18",7.80384330353877 2572 | "2015-02-19",7.76089319585102 2573 | "2015-02-20",7.70345904786717 2574 | "2015-02-21",8.06117135969092 2575 | "2015-02-22",7.350516171834 2576 | "2015-02-23",7.48380668766583 2577 | "2015-02-24",7.54062152865715 2578 | "2015-02-25",7.69666708152646 2579 | "2015-02-26",7.50384074669895 2580 | "2015-02-27",7.39817409297047 2581 | "2015-02-28",7.04228617193974 2582 | "2015-03-01",7.05272104923232 2583 | "2015-03-02",7.36264527041782 2584 | "2015-03-03",7.6231530684769 2585 | "2015-03-04",7.79523492900217 2586 | "2015-03-05",8.42683075133585 2587 | "2015-03-06",7.9168074909376 2588 | "2015-03-07",7.23633934275434 2589 | "2015-03-08",7.20637729147225 2590 | "2015-03-09",7.55642796944025 2591 | "2015-03-10",7.58273848891441 2592 | "2015-03-11",7.68294316987829 2593 | "2015-03-12",7.60688453121963 2594 | "2015-03-13",7.70345904786717 2595 | "2015-03-14",7.15148546390474 2596 | "2015-03-15",7.04053639021596 2597 | "2015-03-16",7.33888813383888 2598 | "2015-03-17",7.48436864328613 2599 | "2015-03-18",7.35179986905778 2600 | "2015-03-19",7.42356844425917 2601 | "2015-03-20",7.29165620917446 2602 | "2015-03-21",6.81673588059497 2603 | "2015-03-22",6.91075078796194 2604 | "2015-03-23",7.32118855673948 2605 | "2015-03-24",7.99159228206809 2606 | "2015-03-25",7.71289096149013 2607 | "2015-03-26",7.28276117960559 2608 | "2015-03-27",7.30586003268401 2609 | "2015-03-28",6.90575327631146 2610 | "2015-03-29",7.87321705486274 2611 | "2015-03-30",7.08590146436561 2612 | "2015-03-31",7.27100853828099 2613 | "2015-04-01",7.21376830811864 2614 | "2015-04-02",7.16626597413364 2615 | "2015-04-03",7.21303165983487 2616 | "2015-04-04",6.82979373751242 2617 | "2015-04-05",6.80128303447162 2618 | "2015-04-06",7.15773548424991 2619 | "2015-04-07",7.04577657687951 2620 | "2015-04-08",7.09174211509515 2621 | "2015-04-09",7.23417717974985 2622 | "2015-04-10",7.28000825288419 2623 | "2015-04-11",6.69703424766648 2624 | "2015-04-12",7.028201432058 2625 | "2015-04-13",7.17472430983638 2626 | "2015-04-14",7.22329567956231 2627 | "2015-04-15",7.33693691370762 2628 | "2015-04-16",7.36201055125973 2629 | "2015-04-17",7.26332961747684 2630 | "2015-04-18",6.81124437860129 2631 | "2015-04-19",7.3185395485679 2632 | "2015-04-20",7.64012317269536 2633 | "2015-04-21",7.40549566319947 2634 | "2015-04-22",7.57250298502038 2635 | "2015-04-23",7.48549160803075 2636 | "2015-04-24",7.33302301438648 2637 | "2015-04-25",7.20563517641036 2638 | "2015-04-26",7.09090982207998 2639 | "2015-04-27",7.32646561384032 2640 | "2015-04-28",7.35564110297425 2641 | "2015-04-29",7.46336304552002 2642 | "2015-04-30",7.56734567601324 2643 | "2015-05-01",7.74975340627444 2644 | "2015-05-02",7.14440718032114 2645 | "2015-05-03",6.89972310728487 2646 | "2015-05-04",7.33106030521863 2647 | "2015-05-05",7.2211050981825 2648 | "2015-05-06",7.7376162828579 2649 | "2015-05-07",7.36327958696304 2650 | "2015-05-08",7.29097477814298 2651 | "2015-05-09",7.03878354138854 2652 | "2015-05-10",6.93244789157251 2653 | "2015-05-11",7.30586003268401 2654 | "2015-05-12",7.68616230349291 2655 | "2015-05-13",7.47929963778283 2656 | "2015-05-14",7.26961674960817 2657 | "2015-05-15",7.30921236569276 2658 | "2015-05-16",6.74051935960622 2659 | "2015-05-17",6.80572255341699 2660 | "2015-05-18",7.14282740116162 2661 | "2015-05-19",7.18690102041163 2662 | "2015-05-20",7.14045304310116 2663 | "2015-05-21",8.76155013912964 2664 | "2015-05-22",8.27944348771267 2665 | "2015-05-23",7.43720636687129 2666 | "2015-05-24",7.16006920759613 2667 | "2015-05-25",7.04141166379481 2668 | "2015-05-26",7.17472430983638 2669 | "2015-05-27",7.41276401742656 2670 | "2015-05-28",7.25629723969068 2671 | "2015-05-29",7.2848209125686 2672 | "2015-05-30",6.72623340235875 2673 | "2015-05-31",6.93244789157251 2674 | "2015-06-01",7.07411681619736 2675 | "2015-06-02",7.20266119652324 2676 | "2015-06-03",7.16472037877186 2677 | "2015-06-04",7.06731984865348 2678 | "2015-06-05",6.90675477864855 2679 | "2015-06-06",6.67708346124714 2680 | "2015-06-07",6.51767127291227 2681 | "2015-06-08",7.04315991598834 2682 | "2015-06-09",7.04315991598834 2683 | "2015-06-10",6.9177056098353 2684 | "2015-06-11",7.05789793741186 2685 | "2015-06-12",6.85540879860993 2686 | "2015-06-13",6.64378973314767 2687 | "2015-06-14",6.52502965784346 2688 | "2015-06-15",6.89060912014717 2689 | "2015-06-16",6.92657703322272 2690 | "2015-06-17",7.00488198971286 2691 | "2015-06-18",6.87316383421252 2692 | "2015-06-19",6.89060912014717 2693 | "2015-06-20",6.4425401664682 2694 | "2015-06-21",6.8351845861473 2695 | "2015-06-22",7.27239839257005 2696 | "2015-06-23",7.07749805356923 2697 | "2015-06-24",7.34407285057307 2698 | "2015-06-25",7.29165620917446 2699 | "2015-06-26",7.27170370688737 2700 | "2015-06-27",7.454719949364 2701 | "2015-06-28",6.69208374250663 2702 | "2015-06-29",6.96318998587024 2703 | "2015-06-30",7.01660968389422 2704 | "2015-07-01",6.79122146272619 2705 | "2015-07-02",6.82001636467413 2706 | "2015-07-03",6.61873898351722 2707 | "2015-07-04",6.47389069635227 2708 | "2015-07-05",6.49978704065585 2709 | "2015-07-06",6.8596149036542 2710 | "2015-07-07",6.88141130364254 2711 | "2015-07-08",6.99759598298193 2712 | "2015-07-09",7.15226885603254 2713 | "2015-07-10",7.19668657083435 2714 | "2015-07-11",6.70808408385307 2715 | "2015-07-12",6.98286275146894 2716 | "2015-07-13",7.12849594568004 2717 | "2015-07-14",7.08924315502751 2718 | "2015-07-15",7.19893124068817 2719 | "2015-07-16",8.090708716084 2720 | "2015-07-17",7.39387829010776 2721 | "2015-07-18",7.05012252026906 2722 | "2015-07-19",7.19518732017871 2723 | "2015-07-20",7.44132038971762 2724 | "2015-07-21",7.41758040241454 2725 | "2015-07-22",7.47420480649612 2726 | "2015-07-23",7.39264752072162 2727 | "2015-07-24",7.18538701558042 2728 | "2015-07-25",6.86484777797086 2729 | "2015-07-26",6.83410873881384 2730 | "2015-07-27",7.28756064030972 2731 | "2015-07-28",7.22402480828583 2732 | "2015-07-29",7.24422751560335 2733 | "2015-07-30",7.30653139893951 2734 | "2015-07-31",7.31721240835984 2735 | "2015-08-01",6.95844839329766 2736 | "2015-08-02",6.82546003625531 2737 | "2015-08-03",7.18159194461187 2738 | "2015-08-04",7.27655640271871 2739 | "2015-08-05",7.27100853828099 2740 | "2015-08-06",7.82444593087762 2741 | "2015-08-07",7.41938058291869 2742 | "2015-08-08",7.00760061395185 2743 | "2015-08-09",7.07326971745971 2744 | "2015-08-10",7.26542972325395 2745 | "2015-08-11",7.60240133566582 2746 | "2015-08-12",7.55747290161475 2747 | "2015-08-13",7.58222919427646 2748 | "2015-08-14",7.28961052145117 2749 | "2015-08-15",7.3304052118444 2750 | "2015-08-16",7.2211050981825 2751 | "2015-08-17",7.4312996751559 2752 | "2015-08-18",7.75018416225784 2753 | "2015-08-19",7.62997570702779 2754 | "2015-08-20",7.73061406606374 2755 | "2015-08-21",7.82404601085629 2756 | "2015-08-22",7.22620901010067 2757 | "2015-08-23",7.4770384723197 2758 | "2015-08-24",7.86326672400957 2759 | "2015-08-25",7.94909149983052 2760 | "2015-08-26",7.7698009960039 2761 | "2015-08-27",7.57967882309046 2762 | "2015-08-28",7.54908271081229 2763 | "2015-08-29",7.29165620917446 2764 | "2015-08-30",7.78986855905471 2765 | "2015-08-31",7.65681009148038 2766 | "2015-09-01",7.53476265703754 2767 | "2015-09-02",7.66528471847135 2768 | "2015-09-03",8.06652149046999 2769 | "2015-09-04",8.14931284363534 2770 | "2015-09-05",7.72533003791713 2771 | "2015-09-06",7.71735127218533 2772 | "2015-09-07",7.67786350067821 2773 | "2015-09-08",7.89506349809157 2774 | "2015-09-09",8.07992777075827 2775 | "2015-09-10",8.1934002319521 2776 | "2015-09-11",8.66509582133973 2777 | "2015-09-12",7.84463264446468 2778 | "2015-09-13",8.77909581088053 2779 | "2015-09-14",9.05870319731322 2780 | "2015-09-15",8.42178300661158 2781 | "2015-09-16",8.07215530818825 2782 | "2015-09-17",8.40469616018909 2783 | "2015-09-18",9.72184576464693 2784 | "2015-09-19",8.11402544235676 2785 | "2015-09-20",8.43076346341785 2786 | "2015-09-21",8.54888563814873 2787 | "2015-09-22",8.3228800217699 2788 | "2015-09-23",8.00836557031292 2789 | "2015-09-24",8.11999382772511 2790 | "2015-09-25",8.58260632996447 2791 | "2015-09-26",7.60986220091355 2792 | "2015-09-27",8.41205487329293 2793 | "2015-09-28",9.5410100922274 2794 | "2015-09-29",8.55948610360649 2795 | "2015-09-30",8.14438886554762 2796 | "2015-10-01",7.9912539298402 2797 | "2015-10-02",7.88532923927319 2798 | "2015-10-03",7.4599147662411 2799 | "2015-10-04",8.37516869138682 2800 | "2015-10-05",8.7268056084461 2801 | "2015-10-06",8.07527154629746 2802 | "2015-10-07",7.80057265467065 2803 | "2015-10-08",7.74975340627444 2804 | "2015-10-09",7.91971976092457 2805 | "2015-10-10",7.35627987655075 2806 | "2015-10-11",8.17301131172497 2807 | "2015-10-13",8.26100978602383 2808 | "2015-10-14",7.84658997529119 2809 | "2015-10-15",7.74022952476318 2810 | "2015-10-16",7.83042561782033 2811 | "2015-10-17",7.36137542897735 2812 | "2015-10-18",8.2987883944492 2813 | "2015-10-19",8.7417757069247 2814 | "2015-10-20",8.39705739017626 2815 | "2015-10-21",7.77821147451249 2816 | "2015-10-22",7.93379687481541 2817 | "2015-10-23",7.86018505747217 2818 | "2015-10-24",7.94236223767433 2819 | "2015-10-25",8.19808924895612 2820 | "2015-10-26",8.42901750051251 2821 | "2015-10-27",8.05674377497531 2822 | "2015-10-28",7.81116338502528 2823 | "2015-10-29",7.78655180642871 2824 | "2015-10-30",8.1086232683546 2825 | "2015-10-31",7.62119516280984 2826 | "2015-11-01",8.09285102753838 2827 | "2015-11-02",9.39224517527379 2828 | "2015-11-03",8.45318786144033 2829 | "2015-11-04",8.09437844497296 2830 | "2015-11-05",7.9912539298402 2831 | "2015-11-06",8.32820949174873 2832 | "2015-11-07",7.64108424917491 2833 | "2015-11-08",8.48632152774915 2834 | "2015-11-09",9.16356318041725 2835 | "2015-11-10",8.18841130807903 2836 | "2015-11-11",7.82644313545601 2837 | "2015-11-12",7.96067260838812 2838 | "2015-11-13",7.67229245562876 2839 | "2015-11-14",7.16317239084664 2840 | "2015-11-15",7.90211754627645 2841 | "2015-11-16",9.63430006272051 2842 | "2015-11-17",8.84822206837138 2843 | "2015-11-18",8.38320455141292 2844 | "2015-11-19",8.16451026874704 2845 | "2015-11-20",8.05293303679757 2846 | "2015-11-21",7.56112158953024 2847 | "2015-11-22",8.25634777291802 2848 | "2015-11-23",8.67282848294769 2849 | "2015-11-24",8.30647216010058 2850 | "2015-11-25",8.05896001776942 2851 | "2015-11-26",7.87245515006398 2852 | "2015-11-27",8.19533366716287 2853 | "2015-11-28",7.59135704669855 2854 | "2015-11-29",8.02158453345511 2855 | "2015-11-30",12.1496715918794 2856 | "2015-12-01",11.5230440984914 2857 | "2015-12-02",8.71177264560569 2858 | "2015-12-03",8.05610965954506 2859 | "2015-12-04",8.08147504013705 2860 | "2015-12-05",7.45876269238096 2861 | "2015-12-06",8.01400499477946 2862 | "2015-12-07",8.49678638163858 2863 | "2015-12-08",7.98104975966596 2864 | "2015-12-09",7.77779262633883 2865 | "2015-12-10",8.2602342916073 2866 | "2015-12-11",7.86633892304654 2867 | "2015-12-12",7.31055015853442 2868 | "2015-12-13",7.71824095195932 2869 | "2015-12-14",8.31947369244219 2870 | "2015-12-15",8.23668532271246 2871 | "2015-12-16",7.80751004221619 2872 | "2015-12-17",7.59186171488993 2873 | "2015-12-18",7.52886925664225 2874 | "2015-12-19",7.17165682276851 2875 | "2015-12-20",7.89133075766189 2876 | "2015-12-21",8.36007143564403 2877 | "2015-12-22",8.11042723757502 2878 | "2015-12-23",7.77527584648686 2879 | "2015-12-24",7.34729970074316 2880 | "2015-12-25",7.30182234213793 2881 | "2015-12-26",7.12044437239249 2882 | "2015-12-27",8.87877607170755 2883 | "2015-12-28",9.25061821847475 2884 | "2015-12-29",9.24792513230345 2885 | "2015-12-30",8.39140318535794 2886 | "2015-12-31",8.00469951054955 2887 | "2016-01-01",7.58933582317062 2888 | "2016-01-02",7.82524529143177 2889 | "2016-01-03",8.24931374626064 2890 | "2016-01-04",9.29514097366865 2891 | "2016-01-05",8.56826646160024 2892 | "2016-01-06",8.35255436947459 2893 | "2016-01-07",8.29579811063615 2894 | "2016-01-08",8.29029259122431 2895 | "2016-01-09",7.78572089653462 2896 | "2016-01-10",8.28172399041139 2897 | "2016-01-11",8.4707303170059 2898 | "2016-01-12",8.13505390861157 2899 | "2016-01-13",8.06714903991011 2900 | "2016-01-14",8.02355239240435 2901 | "2016-01-15",8.02191277898571 2902 | "2016-01-16",7.81722278550817 2903 | "2016-01-17",9.27387839278017 2904 | "2016-01-18",10.3337753460756 2905 | "2016-01-19",9.12587121534973 2906 | "2016-01-20",8.89137400948464 2907 | --------------------------------------------------------------------------------