├── .gitignore
├── LICENSE
├── README.md
├── WiP.md
├── auto_analytics
├── supervisor_loop.py
├── tabular_analysis_session.py
├── tool_chat_loop.py
├── utils
│ ├── format_utils.py
│ ├── ipython_utils.py
│ ├── json_utils.py
│ ├── nbformat_utils.py
│ └── vision_utils.py
└── vision_chat_loop.py
├── docs
├── Schematics.png
├── _config.yml
└── index.md
├── notebooks
├── Multi-agent_predictive_ontime_delivery.ipynb
├── MultiAgent_explorative_analysis_Blood_diabetes.ipynb
├── MultiAgent_explorative_analysis_Huminos.ipynb
├── MultiAgent_explorative_analysis_Pokemon.ipynb
├── MultiAgent_explorative_analysis_Pokemon_run2.ipynb
├── MultiAgent_explorative_analysis_ontime_delivery_run2.ipynb
├── MultiAgent_predictive_analysis_housing_price.ipynb
├── anthropics_playground.ipynb
├── auto_nb_report_gen_demo.ipynb
├── data_analysis_demo.ipynb
├── kaggle_dataset_analysis.ipynb
├── openai_function_calling_playground.ipynb
├── report_output_playground.ipynb
├── tool_use_data_analysis.ipynb
├── tool_use_math_demo.ipynb
├── tool_using_math_playground.ipynb
└── vision-api-figure-description.ipynb
├── setup.py
└── table_data
├── BostonHousing.csv
├── Country statistics.csv
├── Diabetes_Blood_Classification.csv
├── Homininos_DataSet(1).csv
├── Housing_Price_Data.csv
├── Pokemon.csv
├── banana_quality.csv
├── boston.csv
├── customer_booking.csv
├── laptops.csv
├── ontime_delivery.csv
└── world_gdp_data.csv
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 | .DS_Store
6 | */.DS_Store
7 | *.code-workspace
8 | scripts/*
9 | # C extensions
10 | *.so
11 | reports/*
12 | # Distribution / packaging
13 | .Python
14 | build/
15 | develop-eggs/
16 | dist/
17 | downloads/
18 | eggs/
19 | .eggs/
20 | lib/
21 | lib64/
22 | parts/
23 | sdist/
24 | var/
25 | wheels/
26 | share/python-wheels/
27 | *.egg-info/
28 | .installed.cfg
29 | *.egg
30 | MANIFEST
31 |
32 | # PyInstaller
33 | # Usually these files are written by a python script from a template
34 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
35 | *.manifest
36 | *.spec
37 |
38 | # Installer logs
39 | pip-log.txt
40 | pip-delete-this-directory.txt
41 |
42 | # Unit test / coverage reports
43 | htmlcov/
44 | .tox/
45 | .nox/
46 | .coverage
47 | .coverage.*
48 | .cache
49 | nosetests.xml
50 | coverage.xml
51 | *.cover
52 | *.py,cover
53 | .hypothesis/
54 | .pytest_cache/
55 | cover/
56 |
57 | # Translations
58 | *.mo
59 | *.pot
60 |
61 | # Django stuff:
62 | *.log
63 | local_settings.py
64 | db.sqlite3
65 | db.sqlite3-journal
66 |
67 | # Flask stuff:
68 | instance/
69 | .webassets-cache
70 |
71 | # Scrapy stuff:
72 | .scrapy
73 |
74 | # Sphinx documentation
75 | docs/_build/
76 |
77 | # PyBuilder
78 | .pybuilder/
79 | target/
80 |
81 | # Jupyter Notebook
82 | .ipynb_checkpoints
83 |
84 | # IPython
85 | profile_default/
86 | ipython_config.py
87 |
88 | # pyenv
89 | # For a library or package, you might want to ignore these files since the code is
90 | # intended to run in multiple environments; otherwise, check them in:
91 | # .python-version
92 |
93 | # pipenv
94 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
95 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
96 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
97 | # install all needed dependencies.
98 | #Pipfile.lock
99 |
100 | # poetry
101 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
102 | # This is especially recommended for binary packages to ensure reproducibility, and is more
103 | # commonly ignored for libraries.
104 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
105 | #poetry.lock
106 |
107 | # pdm
108 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
109 | #pdm.lock
110 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
111 | # in version control.
112 | # https://pdm.fming.dev/#use-with-ide
113 | .pdm.toml
114 |
115 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
116 | __pypackages__/
117 |
118 | # Celery stuff
119 | celerybeat-schedule
120 | celerybeat.pid
121 |
122 | # SageMath parsed files
123 | *.sage.py
124 |
125 | # Environments
126 | .env
127 | .venv
128 | env/
129 | venv/
130 | ENV/
131 | env.bak/
132 | venv.bak/
133 |
134 | # Spyder project settings
135 | .spyderproject
136 | .spyproject
137 |
138 | # Rope project settings
139 | .ropeproject
140 |
141 | # mkdocs documentation
142 | /site
143 |
144 | # mypy
145 | .mypy_cache/
146 | .dmypy.json
147 | dmypy.json
148 |
149 | # Pyre type checker
150 | .pyre/
151 |
152 | # pytype static type analyzer
153 | .pytype/
154 |
155 | # Cython debug symbols
156 | cython_debug/
157 |
158 | # PyCharm
159 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
160 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
161 | # and can be added to the global gitignore or merged into this file. For a more nuclear
162 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
163 | #.idea/
164 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 Binxu
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.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # GPT-Auto-Data-Analytics
2 |
3 | ### Automate local data analysis with groups of tool-using GPT agents.
4 |
5 | ChatGPT and Code Interpreter has changed the way of data analysis.
6 | But have you ever got frustrated about ...
7 |
8 | * 🤔 Limited runtime and computing resources (no GPU access!)
9 | * 📊 Challenges in handling large and complex local datasets (which is hard to upload)
10 | * 📦 Certain Python packages being unavailable in online environment.
11 | * 🚫 No vision ability to interpret the generated figures.
12 | * 🧩 Lack of organized output from the analysis.
13 |
14 |
15 | This project aims to replicate the online code interpreter experience locally, but also addressing all the issues mentioned above:
16 |
17 | * 💻 Code generation and execution in a local Python kernel
18 | * 📂 Full access to your data on local storage
19 | * 🤖 A supervisor agent guides the coding agent to iteratively solve data analysis problems
20 | * 👀 Vision capabilities for the coding agent to interpret visual figures
21 | * 📚 Organized output, exported as Jupyter notebooks, PDF, and HTML
22 |
23 |
24 |
25 |
28 |
29 | ## 🚀 Installation
30 | ```bash
31 | git clone https://github.com/Animadversio/GPT-Auto-Data-Analytics.git
32 | cd GPT-Auto-Data-Analytics
33 | pip install -e .
34 | ```
35 | ## Usage
36 |
37 | ```python
38 | # set up openai key env variable
39 | from auto_analytics.tabular_analysis_session import TabularAnalysisPipeline
40 | # Tell the agent some info about your data and columns, and your overall objective.
41 | table_descriptions = """..."""
42 | column_descriptions = """..."""
43 | task_objective = """Perform explorative data analysis of this dataset to uncover relationships among different variables."""
44 | csvpath = "~/GPT-Auto-Data-Analytics/table_data/Diabetes_Blood_Classification.csv"
45 | report_root = "reports"
46 |
47 | # Example usage
48 | analysis_session = TabularAnalysisPipeline("Diabetes_Classification", csvpath, report_root=report_root)
49 | # Set up dataset and column descriptions
50 | analysis_session.set_dataset_description(table_descriptions, column_descriptions)
51 | # Let supervisor agent setup and save analysis task
52 | analysis_session.supervisor_set_analysis_task(task_objective, )
53 | # Let research assitent perform data analysis
54 | analysis_session.perform_data_analysis(query=None, MAX_ROUND=30)
55 | # Save results to notebook, HTML, and PDF
56 | analysis_session.save_results()
57 | ```
58 |
59 | [Play with our Colab demo! ](https://colab.research.google.com/drive/17DnAiE6EdAtLfX7xjdxvMEV5HUtBKTq6?usp=sharing)
60 |
61 | [Video walk-through of our system ](https://youtu.be/APP0uvU3QAQ?si=B4bVy646wH1WkMxX)
62 |
63 | ### ✅ Current Features 🌟
64 |
65 | - **Auto Analytics in Local Env:** The coding agent have access to a local python kernel, which runs code and interacts with data on your computer. No more concerns about file uploads, compute limitations, or the online ChatGPT code interpreter environment. Leverage any Python library or computing resources as needed.
66 | - **Collaborative Intelligence:** We've built a team of LLM agents assuming the roles of research supervisor and coding assistant. Their interaction allows the supervisor's overarching vision to guide the detailed coding and data analysis process, leading to a cohesive report.
67 | - **Tabular Data Analysis:** Full support for tabular data analysis (e.g., Kaggle competitions). From tables to analytical insights in one step.
68 | - **Vision Analytics:** Integration with Vision API enables the data analytics agent to generate and understand the meaning of plots in a closed loop.
69 | - **Versatile Report Export:** After automated data analysis, a Jupyter notebook is generated, combining code, results, and visuals into a narrative that tells the story of your data. Exports are available in Jupyter notebook, PDF, and HTML formats for your review and reproduction.
70 |
71 | ### How does it work?
72 | 
73 |
74 | Click to expand!
75 |
76 | **System Overview**. Our high-level idea is to emulate the workflow in research labs: we will assign roles to AI agents, such as research supervisor or student coding agent and let them work in a closed loop. The supervisor, equipped with broader background knowledge, is tasked to set an overarching research goal, and then break it down into detailed code-solvable tasks which are sent to the student. Then, the student coding agent, equipped with coding tool and vision capability, will tackle the tasks one-by-one, synthesizing their findings into reports for the supervisor's review. This iterative process allows the supervisor to refine their understanding and possibly adjust the research agenda, prompting further investigation. Through this collaborative effort, both parties converge to a unified conclusion, culminating in a final report with code, figures and text interpretations.
77 |
78 | **Internal Coding Loop**. At the core of our system lies the coding agent, an LLM agent who is tasked for conducting interactive data analysis. This agent will take in task objective, and then analyze datasets by outputting code snippets, which are executed in a local IPython kernel. The results of code execution (including error message) will be sent back to LLM in the form of text strings. Notably, when figures are generated, they will also be turned into text descriptions by a multimodal LLM prompted to interpret the figure .
79 |
80 |
81 |
82 | ### 🌐 What's Next?
83 | - [ ] Better report summarization.
84 | - [ ] Enhanced report presentation. (filtering, formating etc.)
85 | - [ ] CLI interface to auto data analysis.
86 | - [ ] Addressing complex, multi-file data analysis challenges.
87 | - [ ] Tackling multi-modal data analysis problems, including text, image and neural data.
88 | - [ ] Enhancing multi-round communication between the supervisor and the coding agent, adjusting the research goal based on the report
89 |
90 | ## Join Us on This Journey
91 | As an end goal, we hope our tools can auto-pilot data analysis on its own.
92 | If you're interested in using our tool in your daily data analysis work or scientific research, we'd love to hear your thoughts and what you find interesting!
93 |
94 | * Binxu Wang
95 | * **Email**: binxu_wang@hms.harvard.edu
96 |
97 |
98 |
--------------------------------------------------------------------------------
/WiP.md:
--------------------------------------------------------------------------------
1 |
2 | ## Work-in-Progress
3 | * [x] Terminate the loop properly and avoid repeated run of loop.
4 | * [x] **Dataset** Demo dataset of for data analysis from Kaggle. Mar. 3
5 | * [x] **ipynb report export** @Mar 10
6 | * [x] Export a ipynb type output from recorded analysis chat history! @Mar 10
7 | * [x] support multi media outputs (table, image) in the captured output and export! @Mar 10
8 | * [x] Export a ipynb type output from the system, record. Build up the ipynb in the process `tool_chat_loop_2nb`.
9 | * [x] Support PDF and HTML formulated export of ipynb.
10 | * [ ] **Presentation** Nicer way to summarize results, code and figures into a nice looking report for human to read, instead of reading through the debugging history.
11 | * [x] Jupyter notebook report
12 | * [x] PDF and HTML report
13 | * [ ] Post processing and filtering of report.
14 | * [ ] **Bug fix**, if the loop in running in a terminal then the captured won't get the figure component! wont go to report!!
15 | * [ ] **Folder structure** Design file structure for storing analysis results.
16 | * [x] *reports* sub-directory
17 | * [x] notebook
18 | * [ ] export figure directory?
19 | * [ ] cleaned up code
20 | * [ ] **Multi agent** tool chat, one assigning tasks and objectives the other one execute it.
21 | * Code architecture for these multi agent system.
22 | * **Roles**
23 | * [x] **Analysis Supervisor**. Breaking down the overall objective into smaller questions that could be analyzed by code, assign them to data analyst.
24 | * [x] **Data analyst**. Taking the objective and tasks into account, using code to solve each one of them.
25 | * [x] **Visual analyst**. Draw conclusions from reading the figures and code. @Mar.12th
26 | * [ ] **Research Manager**. Maintain a list of TODO for the analyst, hand out task one by one, when one analysis is finished check the result and write summary, assign a new one.
27 | * [x] Format the objective in a structred list, as json etc. @Mar.12th
28 | * [ ] Then we can ask / answer them one by one? How to manage better?
29 | * [ ] **Summary writer**. Taking the output of data analyst and polish it into a report.
30 | * [x] **Vision interface**, current agent cannot see the plot, so the analysis is not quite informative....
31 | * [x] Demo for vision api drawing conclusions from the figures. @Mar.11.
32 | * [x] Integrating vision agent with the main chat loop and integrating visual insight @Mar.12th.
33 | * Vision API is significantly slower than others.....
34 | * [ ] Overall CLI for default data analysis of a data set. Have a default workflow. Supervisor => Data analysis =>
35 | * [ ] Think about input structure. `csvpath`, `column description`, `dataset description`. `overall objective`
36 | * [ ] Add memory slot, let it remember the objective by reading it back.
37 | * [ ] Multi-file complex system analysis project.
38 |
--------------------------------------------------------------------------------
/auto_analytics/supervisor_loop.py:
--------------------------------------------------------------------------------
1 |
2 | import os
3 | import sys
4 | import textwrap
5 | from openai import OpenAI
6 | import IPython
7 | from IPython.core.interactiveshell import InteractiveShell
8 | from auto_analytics.utils.json_utils import parse_partial_json
9 | from auto_analytics.utils.ipython_utils import richoutput_to_image
10 | from auto_analytics.utils.format_utils import wrap_breakline
11 | from nbformat.v4 import new_notebook, new_code_cell, new_output, new_markdown_cell
12 | from auto_analytics.utils.nbformat_utils import create_code_cell_from_captured, save_cells_to_nb
13 | from auto_analytics.utils.nbformat_utils import convert_notebook_to_html, convert_notebook_to_pdf
14 |
15 | client = OpenAI(
16 | api_key=os.environ['OPENAI_API_KEY'],
17 | )
18 | system_message_library = {
19 | "Data Analysis Question Generator":
20 | """As a Data Analysis Research Manager, your primary role is to bridge the gap between raw datasets and the insights they can provide.
21 | This requires a deep understanding of both the content of datasets and the various analytical tools available to process them. Upon receiving a new dataset and reading their descriptions, you are expected to:
22 |
23 | 1. Research Questions Generation: Based on the dataset overview, formulate a set of research questions that can be explored through data analysis.
24 | These questions should be clear, focused, and aligned with potential research outcomes.
25 |
26 | 2. Categorization of Questions: Group the generated research questions by the type of analytical tools required to address them. Categories may include:
27 |
28 | * Statistical Analysis (for questions related to trends, averages, variances)
29 | * Machine Learning (for predictive modeling, clustering, classification)
30 | * Data Visualization (for questions best answered through charts, graphs, heat maps)
31 | * Natural Language Processing (for datasets involving textual data)
32 | * Time Series Analysis (for datasets with a temporal component)
33 |
34 | 3. Data Preparation Guidelines: Provide guidelines for preparing the dataset for analysis. This includes data cleaning steps, handling missing data, data transformation, and feature engineering techniques relevant to the questions posed and the analytical methods chosen.
35 | """,
36 |
37 |
38 | "Data Analysis Research Manager":
39 | """As a Data Analysis Research Manager, your primary role is to bridge the gap between raw datasets and the insights they can provide. This requires a deep understanding of both the content of datasets and the various analytical tools available to process them. Upon receiving a new dataset, you are expected to:
40 |
41 | 1. Dataset Overview: Provide a comprehensive description of the dataset, including its source, size, structure (e.g., columns, types of data), and any peculiarities (e.g., missing values, anomalies).
42 |
43 | 2. Research Questions Generation: Based on the dataset overview, formulate a set of research questions that can be explored through data analysis. These questions should be clear, focused, and aligned with potential business or research outcomes.
44 |
45 | 3. Categorization of Questions: Group the generated research questions by the type of analytical tools required to address them. Categories may include:
46 |
47 | * Statistical Analysis (for questions related to trends, averages, variances)
48 | * Machine Learning (for predictive modeling, clustering, classification)
49 | * Data Visualization (for questions best answered through charts, graphs, heat maps)
50 | * Natural Language Processing (for datasets involving textual data)
51 | * Time Series Analysis (for datasets with a temporal component)
52 |
53 | 4. Analysis Plan: For each category of questions, outline a preliminary analysis plan. This plan should include the selection of specific tools or software (e.g., Python libraries like Pandas for data manipulation, scikit-learn for machine learning), methodologies to be employed, and any initial hypotheses or expected outcomes.
54 |
55 | 5. Data Preparation Guidelines: Provide guidelines for preparing the dataset for analysis. This includes data cleaning steps, handling missing data, data transformation, and feature engineering techniques relevant to the questions posed and the analytical methods chosen.
56 |
57 | 6. Collaboration and Reporting: Describe how you plan to collaborate with other team members (e.g., data scientists, domain experts) in the analysis process and report your findings. Include any specific formats or templates for reporting results, insights, and recommendations.
58 | """
59 | }
60 |
61 |
62 |
63 | system_message = system_message_library["Data Analysis Question Generator"]
64 |
65 | def supervisor_chat_loop_2nb(question, model_name='gpt-3.5-turbo-1106',
66 | MAX_ROUND=1, chat_history=None, nbcells=None,
67 | system_message=system_message, ):
68 | # available_functions=available_functions,
69 | # codeexec_tools=codeexec_tools,
70 | # Step 1: send the conversation and available functions to the model
71 | cell_cache = []
72 | if nbcells is None:
73 | nbcells = []
74 | else:
75 | nbcells = nbcells
76 | if chat_history is None:
77 | messages = [
78 | {'role': 'system', 'content': system_message},
79 | {'role': 'user', 'content': question}
80 | ]
81 | else:
82 | if question is None:
83 | messages = chat_history
84 | else:
85 | messages = chat_history
86 | messages.append({'role': 'user', 'content': question})
87 | # decide if the final message is asking for human input,
88 | # then append the question as result to that.
89 | # if dict(messages[-1])["role"] == "assistant" and \
90 | # chat_history[-1].tool_calls and \
91 | # (chat_history[-1].tool_calls[-1].function.name == "seek_human_input"):
92 | # print("[put the question as human input]")
93 | # messages.append({
94 | # "role": "tool",
95 | # "tool_call_id": chat_history[-1].tool_calls[-1].id,
96 | # "name": "seek_human_input",
97 | # "content": question
98 | # })
99 | # else:
100 | # messages.append({'role': 'user', 'content': question})
101 | # add the user input as markdown cell
102 | nbcells.append(new_markdown_cell(source="**User**:\n"+question))
103 | # this flag allows us to break out of the loop when human input is needed.
104 | LOOP_END = False
105 | for iteration in range(MAX_ROUND):
106 | response = client.chat.completions.create(
107 | model = model_name,
108 | messages = messages,
109 | # tools = codeexec_tools,
110 | # tool_choice = 'auto', # auto is default, but we'll be explicit
111 | )
112 | response_message = response.choices[0].message
113 | # extract token count
114 | # token_count = response_message.token_count
115 | messages.append(response_message) # extend conversation with assistant's reply
116 | if response_message.content:
117 | print(wrap_breakline(response_message.content, width=80))
118 | nbcells.append(new_markdown_cell(source="**Assistant**:\n"+response_message.content))
119 | # else:
120 | # print("[No tool use. Finishing conversation.]")
121 | # break
122 | return messages, nbcells, cell_cache
--------------------------------------------------------------------------------
/auto_analytics/tabular_analysis_session.py:
--------------------------------------------------------------------------------
1 | # %%
2 | import sys
3 | sys.path.append('../')
4 | import os
5 | from os.path import join
6 | import pandas as pd
7 | import pickle as pkl
8 | import openai_multi_tool_use_parallel_patch
9 | from auto_analytics.tool_chat_loop import tool_chat_loop,tool_chat_loop_2, shell, tool_chat_loop_2nb, tool_chat_loop_2nb_with_vision
10 | from auto_analytics.supervisor_loop import supervisor_chat_loop_2nb, system_message_library
11 | from auto_analytics.utils.format_utils import message_thread_render
12 | from auto_analytics.utils.nbformat_utils import save_cells_to_nb
13 | from nbformat.v4 import new_notebook, new_code_cell, new_output, new_markdown_cell
14 | from auto_analytics.utils.nbformat_utils import create_code_cell_from_captured, save_cells_to_nb
15 | from auto_analytics.utils.nbformat_utils import convert_notebook_to_html, convert_notebook_to_pdf
16 |
17 |
18 | class TabularAnalysisPipeline:
19 | def __init__(self, analysis_name, dataset_path, report_root="", ):
20 | self.report_dir = report_root
21 | self.dataset_path = dataset_path
22 | self.result_dir = None
23 | self.analysis_name = analysis_name
24 | self.nbcells = []
25 | self.messages = []
26 | self.cache = []
27 | self.result_dir = join(self.report_dir, analysis_name)
28 | os.makedirs(self.result_dir, exist_ok=True)
29 | print(f"Result of analysis [{analysis_name}] will be saved to {self.result_dir}")
30 | assert os.path.exists(dataset_path), f"Dataset path {dataset_path} does not exist! check the path."
31 | # self.setup_directories(analysis_name)
32 | # TODO: check and clear the ipython kernel
33 |
34 | def setup_directories(self, name):
35 | self.result_dir = join(self.report_dir, name)
36 | os.makedirs(self.result_dir, exist_ok=True)
37 |
38 | def set_dataset_description(self, table_descriptions, column_descriptions):
39 | self.table_descriptions = table_descriptions
40 | self.column_descriptions = column_descriptions
41 |
42 | def supervisor_set_analysis_task(self, task_objective,
43 | model_name="gpt-4-turbo-preview", MAX_ROUND=1):
44 | self.task_objective = task_objective
45 | self.messages, self.nbcells, _ = supervisor_chat_loop_2nb(
46 | f"Here is a dataset, that can be loaded from {self.dataset_path}."\
47 | f"the dataset description {self.table_descriptions}. "\
48 | f"and the column description {self.column_descriptions}.\n"\
49 | f"Our objective is to {self.task_objective}",
50 | model_name=model_name, MAX_ROUND=MAX_ROUND,
51 | nbcells=self.nbcells)
52 |
53 | content = self.messages[-1].content
54 | with open(join(self.result_dir, "analysis_questions.md"), "w") as file:
55 | file.write(content)
56 |
57 | def perform_data_analysis(self, query=None, MAX_ROUND=15, model_name='gpt-3.5-turbo-1106',
58 | enable_vision=True, vision_token_count=1024):
59 |
60 | if query is None:
61 | print("No query is provided, using the default query from the supervisor.")
62 | with open(join(self.result_dir, "analysis_questions.md"), "r") as file:
63 | supervisor_objective = file.read()
64 | query = f"""Here is a dataset, that can be loaded from {self.dataset_path}.
65 | The dataset description {self.table_descriptions}.
66 | And the column description {self.column_descriptions}.\n
67 | Our overall objective is to {self.task_objective}, \n
68 | The specific questions are listed as follows,
69 | {supervisor_objective}"""
70 | else:
71 | query = query
72 |
73 | self.messages, self.nbcells, cache = tool_chat_loop_2nb_with_vision(query,
74 | enable_vision=enable_vision, vision_token_count=vision_token_count,
75 | MAX_ROUND=MAX_ROUND, model_name=model_name,
76 | nbcells=self.nbcells, chat_history=self.messages)
77 | self.cache += cache
78 | pkl.dump((self.messages, self.nbcells, self.cache),
79 | open(join(self.result_dir, "datasci_messages.pkl"), "wb"))
80 |
81 | def perform_data_analysis_human_in_loop(self, query=None,
82 | MAX_ROUND=15, model_name='gpt-3.5-turbo-1106',
83 | enable_vision=True, vision_token_count=1024):
84 |
85 | if query is None:
86 | print("No query is provided, using the default query from the supervisor.")
87 | with open(join(self.result_dir, "analysis_questions.md"), "r") as file:
88 | supervisor_objective = file.read()
89 | query = f"""Here is a dataset, that can be loaded from {self.dataset_path}.
90 | The dataset description {self.table_descriptions}.
91 | And the column description {self.column_descriptions}.\n
92 | Our overall objective is to {self.task_objective}, \n
93 | The specific questions are listed as follows,
94 | {supervisor_objective}"""
95 | else:
96 | query = query
97 |
98 | while True:
99 | self.messages, self.nbcells, cache = tool_chat_loop_2nb_with_vision(query,
100 | enable_vision=enable_vision, vision_token_count=vision_token_count,
101 | MAX_ROUND=MAX_ROUND, model_name=model_name,
102 | nbcells=self.nbcells, chat_history=self.messages)
103 | self.cache += cache
104 | pkl.dump((self.messages, self.nbcells, self.cache),
105 | open(join(self.result_dir, "datasci_messages.pkl"), "wb"))
106 |
107 | next_query = input("Human input: (QUIT to break loop)")
108 | if next_query.strip().lower() == "quit":
109 | break
110 | else:
111 | query = next_query
112 |
113 | def save_results(self, savename=None):
114 | if savename is None:
115 | savename = self.analysis_name
116 | save_cells_to_nb(self.nbcells, join(self.result_dir, f"{savename}_report.ipynb"),
117 | save_html=True, save_pdf=True)
118 |
119 |
120 | if __name__ == "__main__":
121 | report_dir = "/Users/binxuwang/Github/GPT-Auto-Data-Analytics/reports"
122 | csvpath = "/Users/binxuwang/Github/GPT-Auto-Data-Analytics/table_data/Diabetes_Blood_Classification.csv"
123 | table_descriptions = """
124 | This dataset contains clinical data from a number of patients that have been analyzed to examine cardiovascular health and kidney function. This data is important for evaluating the risk of heart disease and diabetes, as well as the impaired kidney function often associated with these conditions.
125 |
126 | This dataset was created to support research and development of risk prediction models for heart disease, diabetes and impaired kidney function. With relevant features and clear diagnosis labels, this dataset can be used to build and test accurate prediction models."""
127 | column_descriptions = """
128 | About this file
129 |
130 | * Age: Represents the age of the patient in years. Age can be a risk factor for diabetes, as the risk of diabetes increases with age.
131 |
132 | * Gender: Indicates the gender of the patient, which can be a factor in the prediction of diabetes. Some studies suggest that women may have a different risk than men in developing diabetes.
133 |
134 | * Body Mass Index (BMI): BMI is a measure that uses a person's height and weight to determine whether they are in the normal weight, overweight, or obese category. A high BMI is associated with a higher risk of diabetes.
135 |
136 | * Chol: total cholesterol level in the blood. Cholesterol is a fat found in the blood and can come from foods consumed and also be produced by the body. High cholesterol can be a risk factor for heart disease and diabetes.
137 |
138 | * TG (Triglycerides): Represents the level of triglycerides in the blood. Triglycerides are a type of fat found in the blood, and high levels can also increase the risk of heart disease and diabetes.
139 |
140 | * HDL (High-Density Lipoprotein): Is the "good" cholesterol that helps transport excess cholesterol from body tissues back to the liver for further processing or excretion. High levels of HDL are usually considered good for heart health.
141 |
142 | * LDL (Low-Density Lipoprotein): Is the "bad" cholesterol that can cause plaque buildup in the arteries, increasing the risk of heart disease and stroke. High LDL levels can be a risk factor for diabetes.
143 |
144 | * Cr (Creatinine): A waste product of muscle metabolism that is excreted from the body through the kidneys. Creatinine levels in the blood can provide information about kidney function. Kidney disease may be linked to the risk of diabetes.
145 |
146 | * BUN (Blood Urea Nitrogen): Is a measure used to evaluate kidney and liver function. High levels of BUN may indicate kidney or liver disorders that can be related to diabetes.
147 |
148 | * Diagonisis: An indicator that someone has diabetes.
149 | """
150 | task_objective = """Perform explorative data analysis of this dataset,
151 | This analyis is poised to uncover relationships among different variables,
152 | and to find predictive model of diabetes and attribute their importance for prediction.
153 |
154 | First, pose potential questions that could be answered by analyzing this dataset
155 | Organize these question by the type of analysis that would be required to answer them.
156 | These questions will be send to data scientist to write code to answer.
157 | """
158 | #%%
159 | # Example usage
160 | analysis_session = TabularAnalysisPipeline("Diabetes_Classification", csvpath, report_root=report_dir)
161 | # Set up dataset and column descriptions
162 | analysis_session.set_dataset_description(table_descriptions, column_descriptions)
163 | # Setup and document analysis task
164 | analysis_session.supervisor_set_analysis_task(task_objective)
165 | # Perform data analysis
166 | analysis_session.perform_data_analysis(query=None, MAX_ROUND=2)
167 | # Save results to notebook, HTML, and PDF
168 | analysis_session.save_results()
169 |
--------------------------------------------------------------------------------
/auto_analytics/tool_chat_loop.py:
--------------------------------------------------------------------------------
1 |
2 | import os
3 | import sys
4 | import textwrap
5 | import time
6 | import copy
7 | import openai_multi_tool_use_parallel_patch
8 | from openai import OpenAI
9 | import IPython
10 | from IPython.core.interactiveshell import InteractiveShell
11 | from auto_analytics.utils.json_utils import parse_partial_json
12 | from auto_analytics.utils.ipython_utils import richoutput_to_image
13 | from auto_analytics.utils.format_utils import wrap_breakline
14 | from auto_analytics.vision_chat_loop import vision_qa_response
15 |
16 | client = OpenAI(
17 | api_key=os.environ['OPENAI_API_KEY'],
18 | )
19 |
20 | system_message = """You are an intelligent assistent with access to a running ipython kernel.
21 | You can use `python_code_exec` to execute python code to solve computational problems and return the output.
22 | You can also use `inspect_variable` to inspect the state of the kernel by getting the value of a variable.
23 | You should use `seek_human_input` when analysis finishes. When you stuck, use this function to ask human for clarification, instruction.
24 | These functions execute code in local terminal with no cost, you can use them as many times as you want.
25 | When facing complex problems, you can divide them into smaller problems and run code to solve smaller ones, check the returned results and then solve the more complex one.
26 |
27 | Under no circumstances should you attempt to call functions / tools that are not available to you.
28 | Any functions / tools you do call must have the name satisfy the following regex: ^[a-zA-Z0-9_-]{1,64}$
29 | """
30 |
31 | codeexec_functions = [
32 | {
33 | 'name': 'python_code_exec',
34 | 'description': 'Execute python code to solve computational problems and return the output',
35 | 'parameters': {
36 | 'type': 'object',
37 | 'properties': {
38 | 'code': {
39 | 'type': 'string',
40 | 'description': 'Python code to execute, multiline string supported.'
41 | },
42 | }
43 | }
44 | },
45 | {
46 | 'name': 'inspect_variable',
47 | 'description': 'Get the value of a variable from the kernel. Used to inspect the state of the kernel.',
48 | 'parameters': {
49 | 'type': 'object',
50 | 'properties': {
51 | 'var_name': {
52 | 'type': 'string',
53 | 'description': 'Name of the variable to get the value of.'
54 | },
55 | }
56 | }
57 | },
58 | {
59 | 'name': 'seek_human_input',
60 | 'description': 'When analysis finishes, stuck or is exhausted, ask human for clarification, instruction for further progress.',
61 | 'parameters': {
62 | 'type': 'object',
63 | 'properties': {
64 | 'question': {
65 | 'type': 'string',
66 | 'description': 'Question for human to progress and get unstuck.'
67 | },
68 | }
69 | }
70 | }
71 | ]
72 |
73 | codeexec_tools = [
74 | {
75 | "type": "function",
76 | "function": codeexec_functions[0]
77 | }
78 | ]
79 |
80 | # Step 0: define the python functions.
81 | def python_code_exec(code, verbose=False):
82 | with IPython.utils.io.capture_output() as captured:
83 | # Execute the code
84 | out = shell.run_cell(code)
85 | # except Exception as e:
86 | # results = f"query failed with error: {e}"
87 | if verbose:
88 | print("Result of the code execution: ", type(out.result), "\n", out.result)
89 | print("Standard Output:", captured.stdout)
90 | print("Standard Error:", captured.stderr)
91 | print("Captured Outputs:", captured.outputs)
92 | disp_images = []
93 | if captured.outputs:
94 | for display_output in captured.outputs:
95 | # Process each display output as needed
96 | disp_images.append(richoutput_to_image(display_output))
97 | return out, captured, disp_images
98 |
99 |
100 | def inspect_variable(var_name):
101 | return shell.user_ns[var_name]
102 |
103 |
104 | def seek_human_input(question):
105 | return question
106 |
107 | # start the ipython kernel
108 | shell = InteractiveShell.instance()
109 |
110 | available_functions = {
111 | "python_code_exec": python_code_exec,
112 | "inspect_variable": inspect_variable,
113 | "seek_human_input": seek_human_input
114 | }
115 |
116 | MAX_ROUND = 4
117 | # model_name = 'gpt-3.5-turbo-1106' # "gpt-4-turbo-preview"
118 | # question = "We have already loaded a dataframe `df` in the kernel. Do not reload this. Each row denotes one model and its performance. find the best performing 10 models and summarize their similarities in time window"
119 | def tool_chat_loop_obsolete(question, model_name='gpt-3.5-turbo-1106',
120 | available_functions=available_functions,
121 | codeexec_tools=codeexec_tools, MAX_ROUND=4):
122 | # Step 1: send the conversation and available functions to the model
123 | messages = [
124 | {'role': 'system', 'content': system_message},
125 | {'role': 'user', 'content': question}
126 | ]
127 | # this flag allows us to break out of the loop when human input is needed.
128 | LOOP_END = False
129 | for iteration in range(MAX_ROUND):
130 | response = client.chat.completions.create(
131 | model = model_name,
132 | messages = messages,
133 | tools = codeexec_tools,
134 | tool_choice = 'auto', # auto is default, but we'll be explicit
135 | )
136 | response_message = response.choices[0].message
137 | messages.append(response_message) # extend conversation with assistant's reply
138 | tool_calls = response_message.tool_calls
139 | if response_message.content:
140 | print(wrap_breakline(response_message.content, width=80))
141 | # Step 2: check if the model wanted to call a function
142 | if tool_calls:
143 | # iterate over all the function calls
144 | for tool_call in tool_calls:
145 | # Parse the function call
146 | function_name = tool_call.function.name
147 | function_to_call = available_functions[function_name]
148 | # Note: the JSON response may not always be valid; be sure to handle errors
149 | # function_args = json.loads(tool_call.function.arguments)
150 | function_args = parse_partial_json(tool_call.function.arguments)
151 | # Step 3: call the function
152 | if function_name == "python_code_exec":
153 | out, captured, disp_images = function_to_call(*list(function_args.values()))
154 | print("Python Code executed:\n```python", function_args['code'], "```", sep="\n")
155 | if not out.success:
156 | # if not success, return the error message as function response.
157 | print("Execution error:", out.error_in_exec.__class__.__name__, out.error_in_exec)
158 | function_response = "Execution error: %s : %s" % (out.error_in_exec.__class__.__name__, out.error_in_exec)
159 | else:
160 | # if success return the output as function response.
161 | print("Execution Succeed:")
162 | captured.show()
163 | if captured.stdout:
164 | function_response = captured.stdout
165 | elif captured.outputs:
166 | function_response = captured.outputs[0].data['text/plain']
167 | else:
168 | function_response = "Multimedia output e.g. image and code."
169 | messages.append(
170 | {
171 | "role": "tool",
172 | "tool_call_id": tool_call.id,
173 | "name": function_name,
174 | "content": function_response,
175 | }
176 | ) # extend conversation with function response
177 | LOOP_END = False
178 | elif function_name == "inspect_variable":
179 | insp_var = function_to_call(*list(function_args.values()))
180 | print("Variable inspected:", function_args['var_name'])
181 | print(insp_var)
182 | messages.append(
183 | {
184 | "role": "tool",
185 | "tool_call_id": tool_call.id,
186 | "name": function_name,
187 | "content": insp_var.__repr__(),
188 | }
189 | )
190 | LOOP_END = False
191 | elif function_name == "seek_human_input":
192 | print(f"[Loop end, human input needed]\nAI request {list(function_args.values())}")
193 | LOOP_END = True
194 | if LOOP_END:
195 | break
196 | # Step 4: send the info for each function call and function response to the model
197 | second_response = client.chat.completions.create(
198 | model=model_name,
199 | messages=messages,
200 | )
201 | # get a new response from the model where it can see the function response
202 | response_message_w_func = second_response.choices[0].message
203 | print(wrap_breakline(response_message_w_func.content, width=80))
204 | messages.append(response_message_w_func)
205 | else:
206 | print("[No tool use. Finishing conversation.]")
207 | break
208 | return messages
209 |
210 |
211 | def tool_chat_loop_2(question, model_name='gpt-3.5-turbo-1106',
212 | available_functions=available_functions,
213 | codeexec_tools=codeexec_tools, MAX_ROUND=4, chat_history=None):
214 | # Step 1: send the conversation and available functions to the model
215 | if chat_history is None:
216 | messages = [
217 | {'role': 'system', 'content': system_message},
218 | {'role': 'user', 'content': question}
219 | ]
220 | else:
221 | if question is None:
222 | messages = chat_history
223 | else:
224 | messages = chat_history
225 | # decide if the final message is asking for human input,
226 | # then append the question as result to that.
227 | if dict(messages[-1])["role"] == "assistant" and \
228 | chat_history[-1].tool_calls and \
229 | (chat_history[-1].tool_calls[-1].function.name == "seek_human_input"):
230 | print("[put the question as human input]")
231 | messages.append({
232 | "role": "tool",
233 | "tool_call_id": chat_history[-1].tool_calls[-1].id,
234 | "name": "seek_human_input",
235 | "content": question
236 | })
237 | else:
238 | messages.append({'role': 'user', 'content': question})
239 |
240 | # this flag allows us to break out of the loop when human input is needed.
241 | LOOP_END = False
242 | for iteration in range(MAX_ROUND):
243 | response = client.chat.completions.create(
244 | model = model_name,
245 | messages = messages,
246 | tools = codeexec_tools,
247 | tool_choice = 'auto', # auto is default, but we'll be explicit
248 | )
249 | response_message = response.choices[0].message
250 | # extract token count
251 | # token_count = response_message.token_count
252 | messages.append(response_message) # extend conversation with assistant's reply
253 | tool_calls = response_message.tool_calls
254 | if response_message.content:
255 | print(wrap_breakline(response_message.content, width=80))
256 | # Step 2: check if the model wanted to call a function
257 | if tool_calls:
258 | # iterate over all the function calls
259 | for tool_call in tool_calls:
260 | # Parse the function call
261 | function_name = tool_call.function.name
262 | function_to_call = available_functions[function_name]
263 | # Note: the JSON response may not always be valid; be sure to handle errors
264 | # function_args = json.loads(tool_call.function.arguments)
265 | function_args = parse_partial_json(tool_call.function.arguments)
266 | # Step 3: call the function
267 | if function_name == "python_code_exec":
268 | out, captured, disp_images = function_to_call(*list(function_args.values()))
269 | print("Python Code executed:\n```python", function_args['code'], "```", sep="\n")
270 | if not out.success:
271 | # if not success, return the error message as function response.
272 | print("Execution error:", out.error_in_exec.__class__.__name__, out.error_in_exec)
273 | function_response = "Execution error: %s : %s" % (out.error_in_exec.__class__.__name__, out.error_in_exec)
274 | else:
275 | # if success return the output as function response.
276 | print("Execution Succeed:")
277 | captured.show()
278 | if captured.stdout:
279 | function_response = captured.stdout
280 | elif captured.outputs:
281 | function_response = captured.outputs[0].data['text/plain']
282 | else:
283 | function_response = "Multimedia output e.g. image and code."
284 | messages.append(
285 | {
286 | "role": "tool",
287 | "tool_call_id": tool_call.id,
288 | "name": function_name,
289 | "content": function_response,
290 | }
291 | ) # extend conversation with function response
292 | LOOP_END = False
293 | elif function_name == "inspect_variable":
294 | insp_var = function_to_call(*list(function_args.values()))
295 | print("Variable inspected:", function_args['var_name'])
296 | print(insp_var)
297 | messages.append(
298 | {
299 | "role": "tool",
300 | "tool_call_id": tool_call.id,
301 | "name": function_name,
302 | "content": insp_var.__repr__(),
303 | }
304 | )
305 | LOOP_END = False
306 | elif function_name == "seek_human_input":
307 | print(f"[Loop end, human input needed]\nAI request {list(function_args.values())}")
308 | LOOP_END = True
309 | if LOOP_END:
310 | break
311 | # # Step 4: send the info for each function call and function response to the model
312 | # second_response = client.chat.completions.create(
313 | # model=model_name,
314 | # messages=messages,
315 | # )
316 | # # get a new response from the model where it can see the function response
317 | # response_message_w_func = second_response.choices[0].message
318 | # print(wrap_breakline(response_message_w_func.content, width=80))
319 | # messages.append(response_message_w_func)
320 | else:
321 | print("[No tool use. Finishing conversation.]")
322 | break
323 | return messages
324 |
325 | tool_chat_loop = tool_chat_loop_2
326 | from nbformat.v4 import new_notebook, new_code_cell, new_output, new_markdown_cell
327 | from auto_analytics.utils.nbformat_utils import create_code_cell_from_captured, save_cells_to_nb
328 | from auto_analytics.utils.nbformat_utils import convert_notebook_to_html, convert_notebook_to_pdf
329 | def tool_chat_loop_2nb(question, model_name='gpt-3.5-turbo-1106',
330 | available_functions=available_functions,
331 | codeexec_tools=codeexec_tools, MAX_ROUND=15,
332 | chat_history=None, nbcells=None):
333 | # Step 1: send the conversation and available functions to the model
334 | cell_cache = []
335 | if nbcells is None:
336 | nbcells = []
337 | else:
338 | nbcells = nbcells
339 | if chat_history is None:
340 | messages = [
341 | {'role': 'system', 'content': system_message},
342 | {'role': 'user', 'content': question}
343 | ]
344 | else:
345 | if question is None:
346 | messages = chat_history
347 | else:
348 | messages = chat_history
349 | # decide if the final message is asking for human input,
350 | # then append the question as result to that.
351 | if dict(messages[-1])["role"] == "assistant" and \
352 | chat_history[-1].tool_calls and \
353 | (chat_history[-1].tool_calls[-1].function.name == "seek_human_input"):
354 | print("[put the question as human input]")
355 | messages.append({
356 | "role": "tool",
357 | "tool_call_id": chat_history[-1].tool_calls[-1].id,
358 | "name": "seek_human_input",
359 | "content": question
360 | })
361 | else:
362 | messages.append({'role': 'user', 'content': question})
363 | # add the user input as markdown cell
364 | nbcells.append(new_markdown_cell(source="**User**:\n"+question))
365 | # this flag allows us to break out of the loop when human input is needed.
366 | LOOP_END = False
367 | for iteration in range(MAX_ROUND):
368 | response = client.chat.completions.create(
369 | model = model_name,
370 | messages = messages,
371 | tools = codeexec_tools,
372 | tool_choice = 'auto', # auto is default, but we'll be explicit
373 | )
374 | response_message = response.choices[0].message
375 | # extract token count
376 | # token_count = response_message.token_count
377 | messages.append(response_message) # extend conversation with assistant's reply
378 | if response_message.content:
379 | print(wrap_breakline(response_message.content, width=80))
380 | nbcells.append(new_markdown_cell(source="**Assistant**:\n"+response_message.content))
381 |
382 | tool_calls = response_message.tool_calls
383 | # Step 2: check if the model wanted to call a function
384 | if tool_calls:
385 | # iterate over all the function calls
386 | for tool_call in tool_calls:
387 | # Parse the function call
388 | function_name = tool_call.function.name
389 | function_to_call = available_functions[function_name]
390 | # Note: the JSON response may not always be valid; be sure to handle errors
391 | # function_args = json.loads(tool_call.function.arguments)
392 | function_args = parse_partial_json(tool_call.function.arguments)
393 | # Step 3: call the function
394 | if function_name == "python_code_exec":
395 | out, captured, disp_images = function_to_call(*list(function_args.values()))
396 | print("Python Code executed:\n```python", function_args['code'], "```", sep="\n")
397 | if not out.success:
398 | # if not success, return the error message as function response.
399 | print("Execution error:", out.error_in_exec.__class__.__name__, out.error_in_exec)
400 | function_response = "Execution error: %s : %s" % (out.error_in_exec.__class__.__name__, out.error_in_exec)
401 | else:
402 | # if success return the output as function response.
403 | print("Execution Succeed:")
404 | captured.show()
405 | if captured.stdout:
406 | function_response = captured.stdout
407 | elif captured.outputs:
408 | function_response = captured.outputs[0].data['text/plain']
409 | else:
410 | function_response = "Multimedia output e.g. image and code."
411 | messages.append(
412 | {
413 | "role": "tool",
414 | "tool_call_id": tool_call.id,
415 | "name": function_name,
416 | "content": function_response,
417 | }
418 | ) # extend conversation with function response
419 | code_cell_out = create_code_cell_from_captured(function_args['code'], out, captured)
420 | cell_cache.append((function_args['code'], out, captured))
421 | nbcells.append(code_cell_out)
422 | LOOP_END = False
423 | # elif function_name == "inspect_variable":
424 | # insp_var = function_to_call(*list(function_args.values()))
425 | # print("Variable inspected:", function_args['var_name'])
426 | # print(insp_var)
427 | # messages.append(
428 | # {
429 | # "role": "tool",
430 | # "tool_call_id": tool_call.id,
431 | # "name": function_name,
432 | # "content": insp_var.__repr__(),
433 | # }
434 | # )
435 | # LOOP_END = False
436 | elif function_name == "seek_human_input":
437 | print(f"[Loop end, human input needed]\nAI request {list(function_args.values())}")
438 | LOOP_END = True
439 | if LOOP_END:
440 | break
441 | # # Step 4: send the info for each function call and function response to the model
442 | # second_response = client.chat.completions.create(
443 | # model=model_name,
444 | # messages=messages,
445 | # )
446 | # # get a new response from the model where it can see the function response
447 | # response_message_w_func = second_response.choices[0].message
448 | # print(wrap_breakline(response_message_w_func.content, width=80))
449 | # messages.append(response_message_w_func)
450 | else:
451 | print("[No tool use. Finishing conversation.]")
452 | break
453 | return messages, nbcells, cell_cache
454 |
455 |
456 | def tool_chat_loop_2nb_with_vision(question, model_name='gpt-3.5-turbo-1106',
457 | available_functions=available_functions,
458 | codeexec_tools=codeexec_tools, MAX_ROUND=15,
459 | chat_history=None, nbcells=None,
460 | enable_vision=False, vision_token_count=1024):
461 | # Step 1: send the conversation and available functions to the model
462 | cell_cache = []
463 | if nbcells is None:
464 | nbcells = []
465 | else:
466 | nbcells = nbcells
467 | if chat_history is None:
468 | messages = [
469 | {'role': 'system', 'content': system_message},
470 | {'role': 'user', 'content': question}
471 | ]
472 | elif type(chat_history) == list and len(chat_history) == 0:
473 | messages = chat_history
474 | messages.extend([
475 | {'role': 'system', 'content': system_message},
476 | {'role': 'user', 'content': question}
477 | ])
478 | else:
479 | if question is None:
480 | messages = chat_history
481 | else:
482 | messages = chat_history
483 | # decide if the final message is asking for human input,
484 | # then append the question as result to that.
485 | if dict(messages[-1])["role"] == "assistant" and \
486 | chat_history[-1].tool_calls and \
487 | (chat_history[-1].tool_calls[-1].function.name == "seek_human_input"):
488 | print("[put the question as human input]")
489 | messages.append({
490 | "role": "tool",
491 | "tool_call_id": chat_history[-1].tool_calls[-1].id,
492 | "name": "seek_human_input",
493 | "content": question
494 | })
495 | else:
496 | messages.append({'role': 'user', 'content': question})
497 | # add the user input as markdown cell
498 | nbcells.append(new_markdown_cell(source="**User**:\n"+question))
499 | # this flag allows us to break out of the loop when human input is needed.
500 | LOOP_END = False
501 | for iteration in range(MAX_ROUND):
502 | response = client.chat.completions.create(
503 | model = model_name,
504 | messages = messages,
505 | tools = codeexec_tools,
506 | tool_choice = 'auto', # auto is default, but we'll be explicit
507 | )
508 | response_message = response.choices[0].message
509 | # extract token count
510 | # token_count = response_message.token_count
511 | messages.append(response_message) # extend conversation with assistant's reply
512 | if response_message.content:
513 | print(wrap_breakline(response_message.content, width=80))
514 | nbcells.append(new_markdown_cell(source="**Assistant**:\n"+response_message.content))
515 |
516 | tool_calls = response_message.tool_calls
517 | # Step 2: check if the model wanted to call a function
518 | if tool_calls:
519 | # iterate over all the function calls
520 | for tool_call in tool_calls:
521 | # Parse the function call
522 | function_name = tool_call.function.name
523 | if function_name not in available_functions:
524 | print(f"{function_name} called by agent, which is not available. Use quick hacky fix")
525 | # quick fix for the function not available.
526 | # 'multi_tool_use.parallel' issue may need separate handling.
527 | messages.append(
528 | {
529 | "role": "tool",
530 | "tool_call_id": tool_call.id,
531 | "name": function_name,
532 | "content": "Function not available. Please call sequentially. Available functions are: " + \
533 | ", ".join(available_functions.keys()),
534 | }
535 | )
536 | continue
537 | function_to_call = available_functions[function_name]
538 | # Note: the JSON response may not always be valid; be sure to handle errors
539 | # function_args = json.loads(tool_call.function.arguments)
540 | function_args = parse_partial_json(tool_call.function.arguments)
541 | # Step 3: call the function
542 | if function_name == "python_code_exec":
543 | vision_api_messages = []
544 | out, captured, disp_images = function_to_call(*list(function_args.values()))
545 | print("Python Code executed:\n```python", function_args['code'], "```", sep="\n")
546 | code2run = function_args['code']
547 | if not out.success:
548 | # if execution not success, return the error message as function response.
549 | print("Execution error:", out.error_in_exec.__class__.__name__, out.error_in_exec)
550 | function_response = "Execution error: %s : %s" % (out.error_in_exec.__class__.__name__, out.error_in_exec)
551 | else:
552 | # if execution success, return the output as function response.
553 | print("Execution Succeed:")
554 | # first show the captured outputs to the user in current notebook.
555 | captured.show()
556 | function_response = ""
557 | if captured.stdout:
558 | function_response += captured.stdout
559 | # reconsider the logic of streaming capturing outputs to model.
560 | if captured.outputs:
561 | # function_response = captured.outputs[0].data['text/plain']
562 | for outi, output in enumerate(captured.outputs):
563 | if hasattr(output, "data"):
564 | if 'text/plain' in output.data:
565 | function_response += output.data['text/plain'] + "\n"
566 | # print(output.data['text/plain'])
567 | if 'text/html' in output.data:
568 | function_response += output.data['text/html'] + "\n"
569 | # print(output.data['text/html'])
570 | if "image/png" in output.data:
571 | image = richoutput_to_image(output)
572 | if enable_vision:
573 | #TODO: maybe resize oversized images.
574 | image_encoded = output.data['image/png']
575 | vision_prompt = f"Describe the figure from a data analysis notebook "\
576 | f"generated from the code {code2run}. Try to draw some insights from the figure."
577 |
578 | t0 = time.time()
579 | vision_api_message = vision_qa_response(vision_prompt,
580 | image_encoded, img_fmt='image/png',
581 | max_tokens=vision_token_count, display_output=False)
582 | t1 = time.time()
583 |
584 | print("Vision API response time:", t1-t0)
585 | function_response += "**Visual Analyst Figure Description**:\n" + \
586 | vision_api_message.content
587 | print(wrap_breakline("**Visual Analyst Figure Description**:\n" +
588 | vision_api_message.content, width=80))
589 | vision_api_messages.append(vision_api_message)
590 | if ('text/plain' not in output.data) and \
591 | ('text/html' not in output.data) and \
592 | ("image/png" not in output.data):
593 | print("output data not recognized !!!")
594 | print(output.data)
595 | # print(output.data)
596 | else:
597 | print("output has no data !!!")
598 | print(output)
599 | else:
600 | function_response = "Multimedia output e.g. image and code."
601 | messages.append(
602 | {
603 | "role": "tool",
604 | "tool_call_id": tool_call.id,
605 | "name": function_name,
606 | "content": function_response,
607 | }
608 | ) # extend conversation with function response
609 | code_cell_out = create_code_cell_from_captured(function_args['code'], out, captured)
610 | nbcells.append(code_cell_out)
611 | for vision_api_message in vision_api_messages:
612 | nbcells.append(new_markdown_cell(source="**Vision Analyst Response**: \n"+vision_api_message.content))
613 | cell_cache.append((function_args['code'], out, captured, copy.deepcopy(vision_api_messages)))
614 | LOOP_END = False
615 | # elif function_name == "inspect_variable":
616 | # insp_var = function_to_call(*list(function_args.values()))
617 | # print("Variable inspected:", function_args['var_name'])
618 | # print(insp_var)
619 | # messages.append(
620 | # {
621 | # "role": "tool",
622 | # "tool_call_id": tool_call.id,
623 | # "name": function_name,
624 | # "content": insp_var.__repr__(),
625 | # }
626 | # )
627 | # LOOP_END = False
628 | elif function_name == "seek_human_input":
629 | print(f"[Loop end, human input needed]\nAI request {list(function_args.values())}")
630 | LOOP_END = True
631 | if LOOP_END:
632 | break
633 | # # Step 4: send the info for each function call and function response to the model
634 | # second_response = client.chat.completions.create(
635 | # model=model_name,
636 | # messages=messages,
637 | # )
638 | # # get a new response from the model where it can see the function response
639 | # response_message_w_func = second_response.choices[0].message
640 | # print(wrap_breakline(response_message_w_func.content, width=80))
641 | # messages.append(response_message_w_func)
642 | else:
643 | print("[No tool use. Finishing conversation.]")
644 | break
645 | return messages, nbcells, cell_cache
646 |
647 | class DataAnalysisAgent:
648 |
649 | def __init__(self, model_name='gpt-3.5-turbo-1106',
650 | codeexec_tools=codeexec_tools,
651 | available_functions=available_functions):
652 | self.model_name = model_name
653 | self.messages = []
654 | self.nbcells = []
655 | self.cell_cache = []
656 | self.codeexec_tools = codeexec_tools
657 | self.available_functions = available_functions
658 |
659 | def chat(self, question, MAX_ROUND=15):
660 | self.messages, self.nbcells, self.cell_cache = tool_chat_loop_2nb(
661 | question, model_name=self.model_name,
662 | available_functions=available_functions,
663 | codeexec_tools=codeexec_tools, MAX_ROUND=MAX_ROUND,
664 | chat_history=self.messages, nbcells=self.nbcells)
665 | return self.messages
666 |
667 | def save_nb(self, filename='notebook_with_plot_all.ipynb', save_pdf=False, save_html=False):
668 | nb = save_cells_to_nb(self.nbcells, filename)
669 | if save_pdf:
670 | convert_notebook_to_pdf(nb, filename.replace('.ipynb', '.pdf'))
671 | if save_html:
672 | convert_notebook_to_html(nb, filename.replace('.ipynb', '.html'))
673 | return filename
674 |
675 | def dump_messages(self, filename='messages.json'):
676 | import json
677 | with open(filename, 'w', encoding='utf-8') as f:
678 | json.dump(self.messages, f, indent=4)
679 |
680 |
--------------------------------------------------------------------------------
/auto_analytics/utils/format_utils.py:
--------------------------------------------------------------------------------
1 | import textwrap
2 | from IPython.display import display, Math, Markdown, Code
3 | from auto_analytics.utils.json_utils import parse_partial_json
4 |
5 | def wrap_breakline(s, width=70):
6 | return "\n".join("\n".join(textwrap.wrap(x, width=width)) for x in s.splitlines())
7 |
8 |
9 | def replace_equsymbol_markdown(message):
10 | return message.replace("\(", "$").replace("\)", "$").\
11 | replace("\[", "$$").replace("\]", "$$")
12 |
13 |
14 | def message_thread_render(messages):
15 | """Render a list of messages in a thread using IPython.display, Markdown, and Code."""
16 | for message in messages:
17 | # if isinstance(message, dict):
18 | print(dict(message)["role"].upper())
19 | if "content" in dict(message) and dict(message)["content"] is not None:
20 | display(Markdown(replace_equsymbol_markdown(dict(message)["content"])))
21 | if "tool_calls" in dict(message) and message.tool_calls is not None:
22 | for tool_call in message.tool_calls:
23 | tool_name = tool_call.function.name
24 | function_args = parse_partial_json(tool_call.function.arguments)
25 | print("Called tool: ", tool_name.upper())
26 | if "code" in function_args:
27 | display(Code(function_args["code"], language="python"))
28 | else:
29 | print(function_args)
30 | # print(function_args)
31 |
--------------------------------------------------------------------------------
/auto_analytics/utils/ipython_utils.py:
--------------------------------------------------------------------------------
1 | import base64
2 | from PIL import Image
3 | import numpy as np
4 | from io import BytesIO
5 | import IPython
6 | from IPython.utils.capture import RichOutput
7 | from IPython.core.interactiveshell import InteractiveShell
8 |
9 | def richoutput_to_image(output):
10 | try:
11 | assert isinstance(output, RichOutput)
12 | # assert output.data['image/png']
13 | if "image/png" in output.data:
14 | image_data = output.data['image/png']
15 | image_data = base64.b64decode(image_data)
16 | image = Image.open(BytesIO(image_data))
17 | return image
18 | elif "text/html" in output.data:
19 | html = output.data['text/html']
20 | return html
21 | elif "text/plain" in output.data:
22 | # note mostly text/plain and text/html co exist. not one or the other.
23 | text = output.data['text/plain']
24 | return text
25 | except AssertionError and KeyError:
26 | return None
27 |
28 |
29 | def ipyshell_code_exec(shell, code, verbose=False):
30 | with IPython.utils.io.capture_output() as captured:
31 | # Execute the code
32 | out = shell.run_cell(code)
33 | if verbose:
34 | print("Result of the code execution: ", type(out.result), "\n", out.result)
35 | print("Standard Output:", captured.stdout)
36 | print("Standard Error:", captured.stderr)
37 | print("Captured Outputs:", captured.outputs)
38 | disp_images = []
39 | if captured.outputs:
40 | for display_output in captured.outputs:
41 | # Process each display output as needed
42 | disp_images.append(richoutput_to_image(display_output))
43 | # note stdout returns a string
44 | # out.result returns real objects like tensors! important!
45 | return out, captured, disp_images
46 |
47 |
48 | def ipyshell_get_var(shell, var_name):
49 | return shell.user_ns[var_name]
--------------------------------------------------------------------------------
/auto_analytics/utils/json_utils.py:
--------------------------------------------------------------------------------
1 | # parse partial json (by replacing and regex)
2 | # Credit to Killian Lucas‘s open-interpreter for this function
3 | # https://github.com/KillianLucas/open-interpreter/blob/a609ba93096ebea4b4fd044d8372a38519218f6a/interpreter/core/llm/utils/parse_partial_json.py
4 |
5 | import json
6 | import re
7 |
8 |
9 | def parse_partial_json(s):
10 | # Attempt to parse the string as-is.
11 | try:
12 | return json.loads(s)
13 | except:
14 | pass
15 |
16 | # Initialize variables.
17 | new_s = ""
18 | stack = []
19 | is_inside_string = False
20 | escaped = False
21 |
22 | # Process each character in the string one at a time.
23 | for char in s:
24 | if is_inside_string:
25 | if char == '"' and not escaped:
26 | is_inside_string = False
27 | elif char == "\n" and not escaped:
28 | char = "\\n" # Replace the newline character with the escape sequence.
29 | elif char == "\\":
30 | escaped = not escaped
31 | else:
32 | escaped = False
33 | else:
34 | if char == '"':
35 | is_inside_string = True
36 | escaped = False
37 | elif char == "{":
38 | stack.append("}")
39 | elif char == "[":
40 | stack.append("]")
41 | elif char == "}" or char == "]":
42 | if stack and stack[-1] == char:
43 | stack.pop()
44 | else:
45 | # Mismatched closing character; the input is malformed.
46 | return None
47 |
48 | # Append the processed character to the new string.
49 | new_s += char
50 |
51 | # If we're still inside a string at the end of processing, we need to close the string.
52 | if is_inside_string:
53 | new_s += '"'
54 |
55 | # Close any remaining open structures in the reverse order that they were opened.
56 | for closing_char in reversed(stack):
57 | new_s += closing_char
58 |
59 | # Attempt to parse the modified string as JSON.
60 | try:
61 | return json.loads(new_s)
62 | except:
63 | # If we still can't parse the string as JSON, return None to indicate failure.
64 | return None
--------------------------------------------------------------------------------
/auto_analytics/utils/nbformat_utils.py:
--------------------------------------------------------------------------------
1 | import nbformat
2 | from nbformat.v4 import new_notebook, new_code_cell, new_output
3 |
4 | def create_code_cell_from_captured(code, out, captured):
5 | """
6 | Example script of creating a Jupyter notebook from captured outputs
7 |
8 | from nbformat.v4 import new_notebook, new_code_cell, new_output
9 | # Create a new notebook
10 | nb = new_notebook()
11 | # Add a code cell with the executed code
12 | code = "import pandas as pd\ndf = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]})\ndf"
13 | out, captured, disp_images = python_code_exec(code)
14 | # code_cell = create_code_cell_from_captured(code, out, captured)
15 | nb.cells.append(create_code_cell_from_captured(code, out, captured))
16 | code = "print('welcome!');import matplotlib.pyplot as plt\nplt.plot([1,2],[1,2,3,4])\nplt.show()"
17 | out, captured, disp_images = python_code_exec(code)
18 | nb.cells.append(create_code_cell_from_captured(code, out, captured))
19 | code = "print('welcome!');import matplotlib.pyplot as plt\nplt.plot([1,2,3,4])\nplt.show()"
20 | out, captured, disp_images = python_code_exec(code)
21 | nb.cells.append(create_code_cell_from_captured(code, out, captured))
22 |
23 | # Write the notebook to a file
24 | filename = 'notebook_with_plot_all.ipynb'
25 | with open(filename, 'w', encoding='utf-8') as f:
26 | nbformat.write(nb, f)
27 | """
28 | # Add a code cell with the executed code
29 | code_cell = new_code_cell(source=code)
30 | # handle errors
31 | if not out.success:
32 | if out.error_before_exec:
33 | output_stderr = new_output(output_type="stream",
34 | name="stderr", text=repr(out.error_before_exec) )
35 | code_cell.outputs.append(output_stderr)
36 | if out.error_in_exec:
37 | output_stderr = new_output(output_type="stream",
38 | name="stderr", text=repr(out.error_in_exec) )
39 | code_cell.outputs.append(output_stderr)
40 | # handle stdout outputs
41 | output_stdout = new_output(output_type="stream",
42 | name="stdout", text=captured.stdout )
43 | code_cell.outputs.append(output_stdout)
44 | # handle stderror outputs
45 | output_stderr = new_output(output_type="stream",
46 | name="stderr", text=captured.stderr )
47 | code_cell.outputs.append(output_stderr)
48 | # Process captured outputs
49 | for output in captured.outputs:
50 | if hasattr(output, 'data'):
51 | # For rich outputs (e.g., plots), `data` attribute holds the MIME-typed representations
52 | output_cell = new_output(
53 | output_type='display_data',
54 | data=output.data,
55 | metadata=output.metadata
56 | )
57 | elif hasattr(output, 'text'):
58 | # For text outputs, `text` attribute holds the content
59 | output_cell = new_output(
60 | output_type='stream',
61 | name='stdout', # or 'stderr' for error outputs
62 | text=output.text
63 | )
64 | else:
65 | continue # Skip any unsupported output types
66 |
67 | # Append each output cell to the code cell
68 | code_cell.outputs.append(output_cell)
69 | return code_cell
70 |
71 |
72 | def save_cells_to_nb(cells, nbpath, save_pdf=False, save_html=False):
73 | # Create a new notebook
74 | nb = new_notebook()
75 | for cell in cells:
76 | nb.cells.append(cell)
77 | # Write the notebook to a file
78 | with open(nbpath, 'w', encoding='utf-8') as f:
79 | nbformat.write(nb, f)
80 | print(f"Notebook saved to {nbpath}")
81 | if save_html:
82 | try:
83 | convert_notebook_to_html(nb, nbpath.replace('.ipynb', '.html'))
84 | except Exception as e:
85 | print("Failed to convert to html")
86 | print(e)
87 | if save_pdf:
88 | try:
89 | convert_notebook_to_pdf(nb, nbpath.replace('.ipynb', '.pdf'))
90 | except Exception as e:
91 | print("Failed to convert to pdf")
92 | print(e)
93 | return nb
94 |
95 | from nbconvert import HTMLExporter, PDFExporter
96 | import nbformat
97 |
98 | def convert_notebook_to_html(notebook_path, output_path=None):
99 | """
100 | Converts a Jupyter Notebook to an HTML file.
101 |
102 | Parameters:
103 | - notebook_path: Path to the input Jupyter Notebook (.ipynb).
104 | - output_path: Path for the output HTML file.
105 | """
106 | # Load the notebook
107 | if type(notebook_path) == str:
108 | with open(notebook_path, 'r', encoding='utf-8') as f:
109 | nb = nbformat.read(f, as_version=4)
110 | elif type(notebook_path) == nbformat.notebooknode.NotebookNode:
111 | nb = notebook_path
112 | else:
113 | raise ValueError("notebook_path must be a string or a NotebookNode")
114 |
115 | # Initialize the HTML Exporter and convert
116 | html_exporter = HTMLExporter()
117 | html_body, _ = html_exporter.from_notebook_node(nb)
118 | if output_path is None and type(notebook_path) == str:
119 | output_path = notebook_path.replace('.ipynb', '.html')
120 | # Write the HTML output
121 | with open(output_path, 'w', encoding='utf-8') as f:
122 | f.write(html_body)
123 |
124 | print(f"HTML report saved to {output_path}")
125 |
126 |
127 | def convert_notebook_to_pdf(notebook_path, output_path=None):
128 | """
129 | Converts a Jupyter Notebook to a PDF file.
130 |
131 | Parameters:
132 | - notebook_path: Path to the input Jupyter Notebook (.ipynb).
133 | - output_path: Path for the output PDF file.
134 | """
135 | # Load the notebook
136 | if type(notebook_path) == str:
137 | with open(notebook_path, 'r', encoding='utf-8') as f:
138 | nb = nbformat.read(f, as_version=4)
139 | elif type(notebook_path) == nbformat.notebooknode.NotebookNode:
140 | nb = notebook_path
141 | else:
142 | raise ValueError("notebook_path must be a string or a NotebookNode")
143 | # Initialize the PDF Exporter and convert
144 | pdf_exporter = PDFExporter()
145 | # pdf_exporter.template_file = 'article'
146 | pdf_body, _ = pdf_exporter.from_notebook_node(nb)
147 | if output_path is None and type(notebook_path) == str:
148 | output_path = notebook_path.replace('.ipynb', '.pdf')
149 | # Write the PDF output
150 | with open(output_path, 'wb') as f:
151 | f.write(pdf_body)
152 |
153 | print(f"PDF report saved to {output_path}")
154 |
155 |
--------------------------------------------------------------------------------
/auto_analytics/utils/vision_utils.py:
--------------------------------------------------------------------------------
1 | import base64
2 | import requests
3 |
4 | def encode_image(image_path):
5 | with open(image_path, "rb") as image_file:
6 | return base64.b64encode(image_file.read()).decode('utf-8')
7 |
8 | # # Path to your image
9 | # image_path = "path_to_your_image.jpg"
10 |
11 | # # Getting the base64 string
12 | # base64_image = encode_image(image_path)
13 |
14 | # headers = {
15 | # "Content-Type": "application/json",
16 | # "Authorization": f"Bearer {api_key}"
17 | # }
18 |
19 | # payload = {
20 | # "model": "gpt-4-vision-preview",
21 | # "messages": [
22 | # {
23 | # "role": "user",
24 | # "content": [
25 | # {
26 | # "type": "text",
27 | # "text": "What’s in this image?"
28 | # },
29 | # {
30 | # "type": "image_url",
31 | # "image_url": {
32 | # "url": f"data:image/jpeg;base64,{base64_image}"
33 | # }
34 | # }
35 | # ]
36 | # }
37 | # ],
38 | # "max_tokens": 300
39 | # }
40 |
41 | # response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
42 |
43 | # print(response.json())
--------------------------------------------------------------------------------
/auto_analytics/vision_chat_loop.py:
--------------------------------------------------------------------------------
1 | from openai import OpenAI
2 | import time
3 | from auto_analytics.utils.format_utils import Markdown, display
4 | from auto_analytics.utils.vision_utils import encode_image
5 | client = OpenAI()
6 |
7 | def vision_qa_response(prompt, base64_image,
8 | img_fmt='image/png', max_tokens=1024,
9 | model_name="gpt-4-vision-preview", display_output=True):
10 | response = client.chat.completions.create(
11 | model=model_name,
12 | messages=[
13 | {
14 | "role": "user",
15 | "content": [
16 | {
17 | "type": "text",
18 | "text": prompt,
19 | },
20 | {
21 | "type": "image_url",
22 | "image_url": {
23 | # "url": f"data:image/jpeg;base64,{base64_image}"
24 | "url": f"data:{img_fmt};base64,{base64_image}"
25 | }
26 | }
27 | ]
28 | }
29 | ],
30 | max_tokens=max_tokens,
31 | )
32 | # print(response.choices[0])
33 | # print(response.choices[0].message.content)
34 | if display_output:
35 | display(Markdown(response.choices[0].message.content))
36 | return response.choices[0].message
37 |
38 |
--------------------------------------------------------------------------------
/docs/Schematics.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Animadversio/GPT-Auto-Data-Analytics/7aeb2d505c2ee152da1d515813dcc30f76a057a8/docs/Schematics.png
--------------------------------------------------------------------------------
/docs/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-cayman
2 | title: GPT-Auto-Data-Analytics
3 | description: Project Page for GPT-Auto-Data-Analytics
4 | author: Binxu Wang
--------------------------------------------------------------------------------
/docs/index.md:
--------------------------------------------------------------------------------
1 | # GPT-Auto-Data-Analytics
2 |
3 | ### Automate local data analysis with groups of tool-using GPT agents.
4 |
5 | ChatGPT and Code Interpreter has changed the way of data analysis.
6 | But have you ever got frustrated about ...
7 |
8 | * 🤔 Limited runtime and computing resources (no GPU access!)
9 | * 📊 Challenges in handling large and complex local datasets (which is hard to upload)
10 | * 📦 Certain Python packages being unavailable in online environment.
11 | * 🚫 No vision ability to interpret the generated figures.
12 | * 🧩 Lack of organized output from the analysis.
13 |
14 |
15 | This project aims to replicate the online code interpreter experience locally, but also addressing all the issues mentioned above:
16 |
17 | * 💻 Code generation and execution in a local Python kernel
18 | * 📂 Full access to your data on local storage
19 | * 🤖 A supervisor agent guides the coding agent to iteratively solve data analysis problems
20 | * 👀 Vision capabilities for the coding agent to interpret visual figures
21 | * 📚 Organized output, exported as Jupyter notebooks, PDF, and HTML
22 |
23 |
24 |
27 |
28 | ## 🚀 Installation
29 | ```bash
30 | git clone https://github.com/Animadversio/GPT-Auto-Data-Analytics.git
31 | cd GPT-Auto-Data-Analytics
32 | pip install -e .
33 | ```
34 | ## Usage
35 |
36 | ```python
37 | # set up openai key env variable
38 | from auto_analytics.tabular_analysis_session import TabularAnalysisPipeline
39 | # Tell the agent some info about your data and columns, and your overall objective.
40 | table_descriptions = """..."""
41 | column_descriptions = """..."""
42 | task_objective = """Perform explorative data analysis of this dataset to uncover relationships among different variables."""
43 | csvpath = "~/GPT-Auto-Data-Analytics/table_data/Diabetes_Blood_Classification.csv"
44 | report_root = "reports"
45 |
46 | # Example usage
47 | analysis_session = TabularAnalysisPipeline("Diabetes_Classification", csvpath, report_root=report_root)
48 | # Set up dataset and column descriptions
49 | analysis_session.set_dataset_description(table_descriptions, column_descriptions)
50 | # Let supervisor agent setup and save analysis task
51 | analysis_session.supervisor_set_analysis_task(task_objective, )
52 | # Let research assitent perform data analysis
53 | analysis_session.perform_data_analysis(query=None, MAX_ROUND=30)
54 | # Save results to notebook, HTML, and PDF
55 | analysis_session.save_results()
56 | ```
57 |
58 | [Play with our Colab demo! ](https://colab.research.google.com/drive/17DnAiE6EdAtLfX7xjdxvMEV5HUtBKTq6?usp=sharing)
59 |
60 | [Video walk-through of our system](https://youtu.be/APP0uvU3QAQ?si=B4bVy646wH1WkMxX)
61 |
62 | ### ✅ Current Features 🌟
63 |
64 | - **Auto Analytics in Local Env:** The coding agent have access to a local python kernel, which runs code and interacts with data on your computer. No more concerns about file uploads, compute limitations, or the online ChatGPT code interpreter environment. Leverage any Python library or computing resources as needed.
65 | - **Collaborative Intelligence:** We've built a team of LLM agents assuming the roles of research supervisor and coding assistant. Their interaction allows the supervisor's overarching vision to guide the detailed coding and data analysis process, leading to a cohesive report.
66 | - **Tabular Data Analysis:** Full support for tabular data analysis (e.g., Kaggle competitions). From tables to analytical insights in one step.
67 | - **Vision Analytics:** Integration with Vision API enables the data analytics agent to generate and understand the meaning of plots in a closed loop.
68 | - **Versatile Report Export:** After automated data analysis, a Jupyter notebook is generated, combining code, results, and visuals into a narrative that tells the story of your data. Exports are available in Jupyter notebook, PDF, and HTML formats for your review and reproduction.
69 |
70 | ### How does it work?
71 | 
72 |
73 | Click to expand!
74 |
75 | **System Overview**. Our high-level idea is to emulate the workflow in research labs: we will assign roles to AI agents, such as research supervisor or student coding agent and let them work in a closed loop. The supervisor, equipped with broader background knowledge, is tasked to set an overarching research goal, and then break it down into detailed code-solvable tasks which are sent to the student. Then, the student coding agent, equipped with coding tool and vision capability, will tackle the tasks one-by-one, synthesizing their findings into reports for the supervisor's review. This iterative process allows the supervisor to refine their understanding and possibly adjust the research agenda, prompting further investigation. Through this collaborative effort, both parties converge to a unified conclusion, culminating in a final report with code, figures and text interpretations.
76 |
77 | **Internal Coding Loop**. At the core of our system lies the coding agent, an LLM agent who is tasked for conducting interactive data analysis. This agent will take in task objective, and then analyze datasets by outputting code snippets, which are executed in a local IPython kernel. The results of code execution (including error message) will be sent back to LLM in the form of text strings. Notably, when figures are generated, they will also be turned into text descriptions by a multimodal LLM prompted to interpret the figure .
78 |
79 |
80 |
81 | ### 🌐 What's Next?
82 | - [ ] Better report summarization.
83 | - [ ] Enhanced report presentation. (filtering, formating etc.)
84 | - [ ] CLI interface to auto data analysis.
85 | - [ ] Addressing complex, multi-file data analysis challenges.
86 | - [ ] Tackling multi-modal data analysis problems, including text, image and neural data.
87 | - [ ] Enhancing multi-round communication between the supervisor and the coding agent, adjusting the research goal based on the report
88 |
89 | ## Join Us on This Journey
90 | As an end goal, we hope our tools can auto-pilot data analysis on its own.
91 | If you're interested in using our tool in your daily data analysis work or scientific research, we'd love to hear your thoughts and what you find interesting!
92 |
93 | * Binxu Wang
94 | * **Email**: binxu_wang@hms.harvard.edu
95 |
96 |
97 |
--------------------------------------------------------------------------------
/notebooks/tool_use_math_demo.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import sys\n",
10 | "sys.path.append('../')\n",
11 | "from auto_analytics.tool_chat_loop import tool_chat_loop,tool_chat_loop_2, shell\n",
12 | "from auto_analytics.utils.format_utils import message_thread_render"
13 | ]
14 | },
15 | {
16 | "cell_type": "code",
17 | "execution_count": 3,
18 | "metadata": {},
19 | "outputs": [
20 | {
21 | "name": "stdout",
22 | "output_type": "stream",
23 | "text": [
24 | "Python Code executed:\n",
25 | "```python\n",
26 | "import numpy as np\n",
27 | "from sympy import Matrix\n",
28 | "\n",
29 | "# Define matrix\n",
30 | "A = np.array([[1, 2], [3, 4]])\n",
31 | "\n",
32 | "# Calculate the inverse in the finite field of 7\n",
33 | "A_mod7 = Matrix(A).inv_mod(7)\n",
34 | "A_mod7\n",
35 | "```\n",
36 | "Execution Succeed:\n"
37 | ]
38 | },
39 | {
40 | "data": {
41 | "text/latex": [
42 | "$\\displaystyle \\left[\\begin{matrix}5 & 1\\\\5 & 3\\end{matrix}\\right]$"
43 | ],
44 | "text/plain": [
45 | "Matrix([\n",
46 | "[5, 1],\n",
47 | "[5, 3]])"
48 | ]
49 | },
50 | "metadata": {},
51 | "output_type": "display_data"
52 | },
53 | {
54 | "name": "stdout",
55 | "output_type": "stream",
56 | "text": [
57 | "The inverse of the matrix [[1, 2], [3, 4]] in the finite field of 7 is:\n",
58 | "\n",
59 | "[[5, 1],\n",
60 | "[5, 3]]\n",
61 | "[No tool use. Finishing conversation.]\n"
62 | ]
63 | }
64 | ],
65 | "source": [
66 | "messages = tool_chat_loop_2(\"Can you solve the matrix inverse of [[1 2],[3 4]] in the finite field of 7?\")"
67 | ]
68 | },
69 | {
70 | "cell_type": "code",
71 | "execution_count": 6,
72 | "metadata": {},
73 | "outputs": [
74 | {
75 | "data": {
76 | "text/latex": [
77 | "$\\displaystyle \\left[\\begin{matrix}1 & 0\\\\0 & 1\\end{matrix}\\right]$"
78 | ],
79 | "text/plain": [
80 | "Matrix([\n",
81 | "[1, 0],\n",
82 | "[0, 1]])"
83 | ]
84 | },
85 | "execution_count": 6,
86 | "metadata": {},
87 | "output_type": "execute_result"
88 | }
89 | ],
90 | "source": [
91 | "(shell.user_ns[\"A\"] @ shell.user_ns[\"A_mod7\"])%7"
92 | ]
93 | },
94 | {
95 | "cell_type": "code",
96 | "execution_count": null,
97 | "metadata": {},
98 | "outputs": [],
99 | "source": []
100 | },
101 | {
102 | "cell_type": "code",
103 | "execution_count": null,
104 | "metadata": {},
105 | "outputs": [],
106 | "source": []
107 | }
108 | ],
109 | "metadata": {
110 | "kernelspec": {
111 | "display_name": "torch",
112 | "language": "python",
113 | "name": "python3"
114 | },
115 | "language_info": {
116 | "codemirror_mode": {
117 | "name": "ipython",
118 | "version": 3
119 | },
120 | "file_extension": ".py",
121 | "mimetype": "text/x-python",
122 | "name": "python",
123 | "nbconvert_exporter": "python",
124 | "pygments_lexer": "ipython3",
125 | "version": "3.11.6"
126 | }
127 | },
128 | "nbformat": 4,
129 | "nbformat_minor": 2
130 | }
131 |
--------------------------------------------------------------------------------
/setup.py:
--------------------------------------------------------------------------------
1 | from setuptools import setup, find_packages
2 |
3 | setup(
4 | name='auto_analytics',
5 | version='0.1.0',
6 | author='Binxu Wang',
7 | author_email='binxu_wang@hms.harvard.edu',
8 | description='Automated local data analytics and report generation powered by GPT models.',
9 | long_description="",
10 | long_description_content_type='text/markdown',
11 | url='https://github.com/Animadversio/GPT-Auto-Data-Analytics',
12 | packages=find_packages(),
13 | install_requires=[
14 | 'openai_multi_tool_use_parallel_patch',
15 | 'nbformat',
16 | 'openai',
17 | # Add your package dependencies here
18 | # Example:
19 | # 'numpy>=1.19.2',
20 | # 'pandas>=1.1.3',
21 | # 'transformers>=4.0.0',
22 | ],
23 | python_requires='>=3.7',
24 | classifiers=[
25 | 'Development Status :: 3 - Alpha',
26 | 'Intended Audience :: Developers',
27 | 'Topic :: Software Development :: Build Tools',
28 | 'License :: OSI Approved :: MIT License',
29 | 'Programming Language :: Python :: 3',
30 | 'Programming Language :: Python :: 3.7',
31 | 'Programming Language :: Python :: 3.8',
32 | 'Programming Language :: Python :: 3.9',
33 | 'Programming Language :: Python :: 3.10',
34 | ],
35 | keywords='data analytics, GPT, automation',
36 | )
--------------------------------------------------------------------------------
/table_data/BostonHousing.csv:
--------------------------------------------------------------------------------
1 | crim,zn,indus,chas,nox,rm,age,dis,rad,tax,ptratio,b,lstat,medv
2 | 0.00632,18,2.31,0,0.538,6.575,65.2,4.09,1,296,15.3,396.9,4.98,24
3 | 0.02731,0,7.07,0,0.469,6.421,78.9,4.9671,2,242,17.8,396.9,9.14,21.6
4 | 0.02729,0,7.07,0,0.469,7.185,61.1,4.9671,2,242,17.8,392.83,4.03,34.7
5 | 0.03237,0,2.18,0,0.458,6.998,45.8,6.0622,3,222,18.7,394.63,2.94,33.4
6 | 0.06905,0,2.18,0,0.458,7.147,54.2,6.0622,3,222,18.7,396.9,5.33,36.2
7 | 0.02985,0,2.18,0,0.458,6.43,58.7,6.0622,3,222,18.7,394.12,5.21,28.7
8 | 0.08829,12.5,7.87,0,0.524,6.012,66.6,5.5605,5,311,15.2,395.6,12.43,22.9
9 | 0.14455,12.5,7.87,0,0.524,6.172,96.1,5.9505,5,311,15.2,396.9,19.15,27.1
10 | 0.21124,12.5,7.87,0,0.524,5.631,100,6.0821,5,311,15.2,386.63,29.93,16.5
11 | 0.17004,12.5,7.87,0,0.524,6.004,85.9,6.5921,5,311,15.2,386.71,17.1,18.9
12 | 0.22489,12.5,7.87,0,0.524,,94.3,6.3467,5,311,15.2,392.52,20.45,15
13 | 0.11747,12.5,7.87,0,0.524,6.009,82.9,6.2267,5,311,15.2,396.9,13.27,18.9
14 | 0.09378,12.5,7.87,0,0.524,5.889,39,5.4509,5,311,15.2,390.5,15.71,21.7
15 | 0.62976,0,8.14,0,0.538,5.949,61.8,4.7075,4,307,21,396.9,8.26,20.4
16 | 0.63796,0,8.14,0,0.538,6.096,84.5,4.4619,4,307,21,380.02,10.26,18.2
17 | 0.62739,0,8.14,0,0.538,5.834,56.5,4.4986,4,307,21,395.62,8.47,19.9
18 | 1.05393,0,8.14,0,0.538,5.935,29.3,4.4986,4,307,21,386.85,6.58,23.1
19 | 0.7842,0,8.14,0,0.538,5.99,81.7,4.2579,4,307,21,386.75,14.67,17.5
20 | 0.80271,0,8.14,0,0.538,5.456,36.6,3.7965,4,307,21,288.99,11.69,20.2
21 | 0.7258,0,8.14,0,0.538,5.727,69.5,3.7965,4,307,21,390.95,11.28,18.2
22 | 1.25179,0,8.14,0,0.538,5.57,98.1,3.7979,4,307,21,376.57,21.02,13.6
23 | 0.85204,0,8.14,0,0.538,5.965,89.2,4.0123,4,307,21,392.53,13.83,19.6
24 | 1.23247,0,8.14,0,0.538,6.142,91.7,3.9769,4,307,21,396.9,18.72,15.2
25 | 0.98843,0,8.14,0,0.538,5.813,100,4.0952,4,307,21,394.54,19.88,14.5
26 | 0.75026,0,8.14,0,0.538,5.924,94.1,4.3996,4,307,21,394.33,16.3,15.6
27 | 0.84054,0,8.14,0,0.538,5.599,85.7,4.4546,4,307,21,303.42,16.51,13.9
28 | 0.67191,0,8.14,0,0.538,5.813,90.3,4.682,4,307,21,376.88,14.81,16.6
29 | 0.95577,0,8.14,0,0.538,6.047,88.8,4.4534,4,307,21,306.38,17.28,14.8
30 | 0.77299,0,8.14,0,0.538,6.495,94.4,4.4547,4,307,21,387.94,12.8,18.4
31 | 1.00245,0,8.14,0,0.538,6.674,87.3,4.239,4,307,21,380.23,11.98,21
32 | 1.13081,0,8.14,0,0.538,5.713,94.1,4.233,4,307,21,360.17,22.6,12.7
33 | 1.35472,0,8.14,0,0.538,6.072,100,4.175,4,307,21,376.73,13.04,14.5
34 | 1.38799,0,8.14,0,0.538,5.95,82,3.99,4,307,21,232.6,27.71,13.2
35 | 1.15172,0,8.14,0,0.538,5.701,95,3.7872,4,307,21,358.77,18.35,13.1
36 | 1.61282,0,8.14,0,0.538,6.096,96.9,3.7598,4,307,21,248.31,20.34,13.5
37 | 0.06417,0,5.96,0,0.499,,68.2,3.3603,5,279,19.2,396.9,9.68,18.9
38 | 0.09744,0,5.96,0,0.499,5.841,61.4,3.3779,5,279,19.2,377.56,11.41,20
39 | 0.08014,0,5.96,0,0.499,5.85,41.5,3.9342,5,279,19.2,396.9,8.77,21
40 | 0.17505,0,5.96,0,0.499,5.966,30.2,3.8473,5,279,19.2,393.43,10.13,24.7
41 | 0.02763,75,2.95,0,0.428,6.595,21.8,5.4011,3,252,18.3,395.63,4.32,30.8
42 | 0.03359,75,2.95,0,0.428,7.024,15.8,5.4011,3,252,18.3,395.62,1.98,34.9
43 | 0.12744,0,6.91,0,0.448,6.77,2.9,5.7209,3,233,17.9,385.41,4.84,26.6
44 | 0.1415,0,6.91,0,0.448,6.169,6.6,5.7209,3,233,17.9,383.37,5.81,25.3
45 | 0.15936,0,6.91,0,0.448,6.211,6.5,5.7209,3,233,17.9,394.46,7.44,24.7
46 | 0.12269,0,6.91,0,0.448,6.069,40,5.7209,3,233,17.9,389.39,9.55,21.2
47 | 0.17142,0,6.91,0,0.448,5.682,33.8,5.1004,3,233,17.9,396.9,10.21,19.3
48 | 0.18836,0,6.91,0,0.448,5.786,33.3,5.1004,3,233,17.9,396.9,14.15,20
49 | 0.22927,0,6.91,0,0.448,6.03,85.5,5.6894,3,233,17.9,392.74,18.8,16.6
50 | 0.25387,0,6.91,0,0.448,5.399,95.3,5.87,3,233,17.9,396.9,30.81,14.4
51 | 0.21977,0,6.91,0,0.448,5.602,62,6.0877,3,233,17.9,396.9,16.2,19.4
52 | 0.08873,21,5.64,0,0.439,5.963,45.7,6.8147,4,243,16.8,395.56,13.45,19.7
53 | 0.04337,21,5.64,0,0.439,6.115,63,6.8147,4,243,16.8,393.97,9.43,20.5
54 | 0.0536,21,5.64,0,0.439,6.511,21.1,6.8147,4,243,16.8,396.9,5.28,25
55 | 0.04981,21,5.64,0,0.439,5.998,21.4,6.8147,4,243,16.8,396.9,8.43,23.4
56 | 0.0136,75,4,0,0.41,5.888,47.6,7.3197,3,469,21.1,396.9,14.8,18.9
57 | 0.01311,90,1.22,0,0.403,7.249,21.9,8.6966,5,226,17.9,395.93,4.81,35.4
58 | 0.02055,85,0.74,0,0.41,6.383,35.7,9.1876,2,313,17.3,396.9,5.77,24.7
59 | 0.01432,100,1.32,0,0.411,6.816,40.5,8.3248,5,256,15.1,392.9,3.95,31.6
60 | 0.15445,25,5.13,0,0.453,6.145,29.2,7.8148,8,284,19.7,390.68,6.86,23.3
61 | 0.10328,25,5.13,0,0.453,5.927,47.2,6.932,8,284,19.7,396.9,9.22,19.6
62 | 0.14932,25,5.13,0,0.453,5.741,66.2,7.2254,8,284,19.7,395.11,13.15,18.7
63 | 0.17171,25,5.13,0,0.453,5.966,93.4,6.8185,8,284,19.7,378.08,14.44,16
64 | 0.11027,25,5.13,0,0.453,6.456,67.8,7.2255,8,284,19.7,396.9,6.73,22.2
65 | 0.1265,25,5.13,0,0.453,,43.4,7.9809,8,284,19.7,395.58,9.5,25
66 | 0.01951,17.5,1.38,0,0.4161,7.104,59.5,9.2229,3,216,18.6,393.24,8.05,33
67 | 0.03584,80,3.37,0,0.398,6.29,17.8,6.6115,4,337,16.1,396.9,4.67,23.5
68 | 0.04379,80,3.37,0,0.398,5.787,31.1,6.6115,4,337,16.1,396.9,10.24,19.4
69 | 0.05789,12.5,6.07,0,0.409,5.878,21.4,6.498,4,345,18.9,396.21,8.1,22
70 | 0.13554,12.5,6.07,0,0.409,5.594,36.8,6.498,4,345,18.9,396.9,13.09,17.4
71 | 0.12816,12.5,6.07,0,0.409,5.885,33,6.498,4,345,18.9,396.9,8.79,20.9
72 | 0.08826,0,10.81,0,0.413,6.417,6.6,5.2873,4,305,19.2,383.73,6.72,24.2
73 | 0.15876,0,10.81,0,0.413,5.961,17.5,5.2873,4,305,19.2,376.94,9.88,21.7
74 | 0.09164,0,10.81,0,0.413,6.065,7.8,5.2873,4,305,19.2,390.91,5.52,22.8
75 | 0.19539,0,10.81,0,0.413,6.245,6.2,5.2873,4,305,19.2,377.17,7.54,23.4
76 | 0.07896,0,12.83,0,0.437,6.273,6,4.2515,5,398,18.7,394.92,6.78,24.1
77 | 0.09512,0,12.83,0,0.437,6.286,45,4.5026,5,398,18.7,383.23,8.94,21.4
78 | 0.10153,0,12.83,0,0.437,6.279,74.5,4.0522,5,398,18.7,373.66,11.97,20
79 | 0.08707,0,12.83,0,0.437,6.14,45.8,4.0905,5,398,18.7,386.96,10.27,20.8
80 | 0.05646,0,12.83,0,0.437,6.232,53.7,5.0141,5,398,18.7,386.4,12.34,21.2
81 | 0.08387,0,12.83,0,0.437,5.874,36.6,4.5026,5,398,18.7,396.06,9.1,20.3
82 | 0.04113,25,4.86,0,0.426,6.727,33.5,5.4007,4,281,19,396.9,5.29,28
83 | 0.04462,25,4.86,0,0.426,6.619,70.4,5.4007,4,281,19,395.63,7.22,23.9
84 | 0.03659,25,4.86,0,0.426,6.302,32.2,5.4007,4,281,19,396.9,6.72,24.8
85 | 0.03551,25,4.86,0,0.426,6.167,46.7,5.4007,4,281,19,390.64,7.51,22.9
86 | 0.05059,0,4.49,0,0.449,6.389,48,4.7794,3,247,18.5,396.9,9.62,23.9
87 | 0.05735,0,4.49,0,0.449,6.63,56.1,4.4377,3,247,18.5,392.3,6.53,26.6
88 | 0.05188,0,4.49,0,0.449,6.015,45.1,4.4272,3,247,18.5,395.99,12.86,22.5
89 | 0.07151,0,4.49,0,0.449,6.121,56.8,3.7476,3,247,18.5,395.15,8.44,22.2
90 | 0.0566,0,3.41,0,0.489,7.007,86.3,3.4217,2,270,17.8,396.9,5.5,23.6
91 | 0.05302,0,3.41,0,0.489,7.079,63.1,3.4145,2,270,17.8,396.06,5.7,28.7
92 | 0.04684,0,3.41,0,0.489,6.417,66.1,3.0923,2,270,17.8,392.18,8.81,22.6
93 | 0.03932,0,3.41,0,0.489,6.405,73.9,3.0921,2,270,17.8,393.55,8.2,22
94 | 0.04203,28,15.04,0,0.464,6.442,53.6,3.6659,4,270,18.2,395.01,8.16,22.9
95 | 0.02875,28,15.04,0,0.464,6.211,28.9,3.6659,4,270,18.2,396.33,6.21,25
96 | 0.04294,28,15.04,0,0.464,6.249,77.3,3.615,4,270,18.2,396.9,10.59,20.6
97 | 0.12204,0,2.89,0,0.445,6.625,57.8,3.4952,2,276,18,357.98,6.65,28.4
98 | 0.11504,0,2.89,0,0.445,,69.6,3.4952,2,276,18,391.83,11.34,21.4
99 | 0.12083,0,2.89,0,0.445,8.069,76,3.4952,2,276,18,396.9,4.21,38.7
100 | 0.08187,0,2.89,0,0.445,7.82,36.9,3.4952,2,276,18,393.53,3.57,43.8
101 | 0.0686,0,2.89,0,0.445,7.416,62.5,3.4952,2,276,18,396.9,6.19,33.2
102 | 0.14866,0,8.56,0,0.52,6.727,79.9,2.7778,5,384,20.9,394.76,9.42,27.5
103 | 0.11432,0,8.56,0,0.52,6.781,71.3,2.8561,5,384,20.9,395.58,7.67,26.5
104 | 0.22876,0,8.56,0,0.52,6.405,85.4,2.7147,5,384,20.9,70.8,10.63,18.6
105 | 0.21161,0,8.56,0,0.52,6.137,87.4,2.7147,5,384,20.9,394.47,13.44,19.3
106 | 0.1396,0,8.56,0,0.52,6.167,90,2.421,5,384,20.9,392.69,12.33,20.1
107 | 0.13262,0,8.56,0,0.52,5.851,96.7,2.1069,5,384,20.9,394.05,16.47,19.5
108 | 0.1712,0,8.56,0,0.52,5.836,91.9,2.211,5,384,20.9,395.67,18.66,19.5
109 | 0.13117,0,8.56,0,0.52,6.127,85.2,2.1224,5,384,20.9,387.69,14.09,20.4
110 | 0.12802,0,8.56,0,0.52,6.474,97.1,2.4329,5,384,20.9,395.24,12.27,19.8
111 | 0.26363,0,8.56,0,0.52,6.229,91.2,2.5451,5,384,20.9,391.23,15.55,19.4
112 | 0.10793,0,8.56,0,0.52,6.195,54.4,2.7778,5,384,20.9,393.49,13,21.7
113 | 0.10084,0,10.01,0,0.547,6.715,81.6,2.6775,6,432,17.8,395.59,10.16,22.8
114 | 0.12329,0,10.01,0,0.547,5.913,92.9,2.3534,6,432,17.8,394.95,16.21,18.8
115 | 0.22212,0,10.01,0,0.547,6.092,95.4,2.548,6,432,17.8,396.9,17.09,18.7
116 | 0.14231,0,10.01,0,0.547,6.254,84.2,2.2565,6,432,17.8,388.74,10.45,18.5
117 | 0.17134,0,10.01,0,0.547,5.928,88.2,2.4631,6,432,17.8,344.91,15.76,18.3
118 | 0.13158,0,10.01,0,0.547,6.176,72.5,2.7301,6,432,17.8,393.3,12.04,21.2
119 | 0.15098,0,10.01,0,0.547,6.021,82.6,2.7474,6,432,17.8,394.51,10.3,19.2
120 | 0.13058,0,10.01,0,0.547,5.872,73.1,2.4775,6,432,17.8,338.63,15.37,20.4
121 | 0.14476,0,10.01,0,0.547,5.731,65.2,2.7592,6,432,17.8,391.5,13.61,19.3
122 | 0.06899,0,25.65,0,0.581,5.87,69.7,2.2577,2,188,19.1,389.15,14.37,22
123 | 0.07165,0,25.65,0,0.581,6.004,84.1,2.1974,2,188,19.1,377.67,14.27,20.3
124 | 0.09299,0,25.65,0,0.581,5.961,92.9,2.0869,2,188,19.1,378.09,17.93,20.5
125 | 0.15038,0,25.65,0,0.581,5.856,97,1.9444,2,188,19.1,370.31,25.41,17.3
126 | 0.09849,0,25.65,0,0.581,5.879,95.8,2.0063,2,188,19.1,379.38,17.58,18.8
127 | 0.16902,0,25.65,0,0.581,5.986,88.4,1.9929,2,188,19.1,385.02,14.81,21.4
128 | 0.38735,0,25.65,0,0.581,5.613,95.6,1.7572,2,188,19.1,359.29,27.26,15.7
129 | 0.25915,0,21.89,0,0.624,5.693,96,1.7883,4,437,21.2,392.11,17.19,16.2
130 | 0.32543,0,21.89,0,0.624,6.431,98.8,1.8125,4,437,21.2,396.9,15.39,18
131 | 0.88125,0,21.89,0,0.624,5.637,94.7,1.9799,4,437,21.2,396.9,18.34,14.3
132 | 0.34006,0,21.89,0,0.624,6.458,98.9,2.1185,4,437,21.2,395.04,12.6,19.2
133 | 1.19294,0,21.89,0,0.624,6.326,97.7,2.271,4,437,21.2,396.9,12.26,19.6
134 | 0.59005,0,21.89,0,0.624,6.372,97.9,2.3274,4,437,21.2,385.76,11.12,23
135 | 0.32982,0,21.89,0,0.624,5.822,95.4,2.4699,4,437,21.2,388.69,15.03,18.4
136 | 0.97617,0,21.89,0,0.624,5.757,98.4,2.346,4,437,21.2,262.76,17.31,15.6
137 | 0.55778,0,21.89,0,0.624,,98.2,2.1107,4,437,21.2,394.67,16.96,18.1
138 | 0.32264,0,21.89,0,0.624,5.942,93.5,1.9669,4,437,21.2,378.25,16.9,17.4
139 | 0.35233,0,21.89,0,0.624,6.454,98.4,1.8498,4,437,21.2,394.08,14.59,17.1
140 | 0.2498,0,21.89,0,0.624,5.857,98.2,1.6686,4,437,21.2,392.04,21.32,13.3
141 | 0.54452,0,21.89,0,0.624,6.151,97.9,1.6687,4,437,21.2,396.9,18.46,17.8
142 | 0.2909,0,21.89,0,0.624,6.174,93.6,1.6119,4,437,21.2,388.08,24.16,14
143 | 1.62864,0,21.89,0,0.624,5.019,100,1.4394,4,437,21.2,396.9,34.41,14.4
144 | 3.32105,0,19.58,1,0.871,5.403,100,1.3216,5,403,14.7,396.9,26.82,13.4
145 | 4.0974,0,19.58,0,0.871,5.468,100,1.4118,5,403,14.7,396.9,26.42,15.6
146 | 2.77974,0,19.58,0,0.871,4.903,97.8,1.3459,5,403,14.7,396.9,29.29,11.8
147 | 2.37934,0,19.58,0,0.871,6.13,100,1.4191,5,403,14.7,172.91,27.8,13.8
148 | 2.15505,0,19.58,0,0.871,5.628,100,1.5166,5,403,14.7,169.27,16.65,15.6
149 | 2.36862,0,19.58,0,0.871,4.926,95.7,1.4608,5,403,14.7,391.71,29.53,14.6
150 | 2.33099,0,19.58,0,0.871,5.186,93.8,1.5296,5,403,14.7,356.99,28.32,17.8
151 | 2.73397,0,19.58,0,0.871,5.597,94.9,1.5257,5,403,14.7,351.85,21.45,15.4
152 | 1.6566,0,19.58,0,0.871,6.122,97.3,1.618,5,403,14.7,372.8,14.1,21.5
153 | 1.49632,0,19.58,0,0.871,5.404,100,1.5916,5,403,14.7,341.6,13.28,19.6
154 | 1.12658,0,19.58,1,0.871,5.012,88,1.6102,5,403,14.7,343.28,12.12,15.3
155 | 2.14918,0,19.58,0,0.871,5.709,98.5,1.6232,5,403,14.7,261.95,15.79,19.4
156 | 1.41385,0,19.58,1,0.871,6.129,96,1.7494,5,403,14.7,321.02,15.12,17
157 | 3.53501,0,19.58,1,0.871,6.152,82.6,1.7455,5,403,14.7,88.01,15.02,15.6
158 | 2.44668,0,19.58,0,0.871,5.272,94,1.7364,5,403,14.7,88.63,16.14,13.1
159 | 1.22358,0,19.58,0,0.605,6.943,97.4,1.8773,5,403,14.7,363.43,4.59,41.3
160 | 1.34284,0,19.58,0,0.605,6.066,100,1.7573,5,403,14.7,353.89,6.43,24.3
161 | 1.42502,0,19.58,0,0.871,6.51,100,1.7659,5,403,14.7,364.31,7.39,23.3
162 | 1.27346,0,19.58,1,0.605,6.25,92.6,1.7984,5,403,14.7,338.92,5.5,27
163 | 1.46336,0,19.58,0,0.605,7.489,90.8,1.9709,5,403,14.7,374.43,1.73,50
164 | 1.83377,0,19.58,1,0.605,7.802,98.2,2.0407,5,403,14.7,389.61,1.92,50
165 | 1.51902,0,19.58,1,0.605,8.375,93.9,2.162,5,403,14.7,388.45,3.32,50
166 | 2.24236,0,19.58,0,0.605,5.854,91.8,2.422,5,403,14.7,395.11,11.64,22.7
167 | 2.924,0,19.58,0,0.605,6.101,93,2.2834,5,403,14.7,240.16,9.81,25
168 | 2.01019,0,19.58,0,0.605,7.929,96.2,2.0459,5,403,14.7,369.3,3.7,50
169 | 1.80028,0,19.58,0,0.605,5.877,79.2,2.4259,5,403,14.7,227.61,12.14,23.8
170 | 2.3004,0,19.58,0,0.605,6.319,96.1,2.1,5,403,14.7,297.09,11.1,23.8
171 | 2.44953,0,19.58,0,0.605,6.402,95.2,2.2625,5,403,14.7,330.04,11.32,22.3
172 | 1.20742,0,19.58,0,0.605,5.875,94.6,2.4259,5,403,14.7,292.29,14.43,17.4
173 | 2.3139,0,19.58,0,0.605,5.88,97.3,2.3887,5,403,14.7,348.13,12.03,19.1
174 | 0.13914,0,4.05,0,0.51,5.572,88.5,2.5961,5,296,16.6,396.9,14.69,23.1
175 | 0.09178,0,4.05,0,0.51,6.416,84.1,2.6463,5,296,16.6,395.5,9.04,23.6
176 | 0.08447,0,4.05,0,0.51,5.859,68.7,2.7019,5,296,16.6,393.23,9.64,22.6
177 | 0.06664,0,4.05,0,0.51,6.546,33.1,3.1323,5,296,16.6,390.96,5.33,29.4
178 | 0.07022,0,4.05,0,0.51,6.02,47.2,3.5549,5,296,16.6,393.23,10.11,23.2
179 | 0.05425,0,4.05,0,0.51,6.315,73.4,3.3175,5,296,16.6,395.6,6.29,24.6
180 | 0.06642,0,4.05,0,0.51,6.86,74.4,2.9153,5,296,16.6,391.27,6.92,29.9
181 | 0.0578,0,2.46,0,0.488,6.98,58.4,2.829,3,193,17.8,396.9,5.04,37.2
182 | 0.06588,0,2.46,0,0.488,7.765,83.3,2.741,3,193,17.8,395.56,7.56,39.8
183 | 0.06888,0,2.46,0,0.488,6.144,62.2,2.5979,3,193,17.8,396.9,9.45,36.2
184 | 0.09103,0,2.46,0,0.488,7.155,92.2,2.7006,3,193,17.8,394.12,4.82,37.9
185 | 0.10008,0,2.46,0,0.488,6.563,95.6,2.847,3,193,17.8,396.9,5.68,32.5
186 | 0.08308,0,2.46,0,0.488,5.604,89.8,2.9879,3,193,17.8,391,13.98,26.4
187 | 0.06047,0,2.46,0,0.488,6.153,68.8,3.2797,3,193,17.8,387.11,13.15,29.6
188 | 0.05602,0,2.46,0,0.488,7.831,53.6,3.1992,3,193,17.8,392.63,4.45,50
189 | 0.07875,45,3.44,0,0.437,6.782,41.1,3.7886,5,398,15.2,393.87,6.68,32
190 | 0.12579,45,3.44,0,0.437,6.556,29.1,4.5667,5,398,15.2,382.84,4.56,29.8
191 | 0.0837,45,3.44,0,0.437,7.185,38.9,4.5667,5,398,15.2,396.9,5.39,34.9
192 | 0.09068,45,3.44,0,0.437,6.951,21.5,6.4798,5,398,15.2,377.68,5.1,37
193 | 0.06911,45,3.44,0,0.437,6.739,30.8,6.4798,5,398,15.2,389.71,4.69,30.5
194 | 0.08664,45,3.44,0,0.437,7.178,26.3,6.4798,5,398,15.2,390.49,2.87,36.4
195 | 0.02187,60,2.93,0,0.401,6.8,9.9,6.2196,1,265,15.6,393.37,5.03,31.1
196 | 0.01439,60,2.93,0,0.401,6.604,18.8,6.2196,1,265,15.6,376.7,4.38,29.1
197 | 0.01381,80,0.46,0,0.422,7.875,32,5.6484,4,255,14.4,394.23,2.97,50
198 | 0.04011,80,1.52,0,0.404,7.287,34.1,7.309,2,329,12.6,396.9,4.08,33.3
199 | 0.04666,80,1.52,0,0.404,7.107,36.6,7.309,2,329,12.6,354.31,8.61,30.3
200 | 0.03768,80,1.52,0,0.404,7.274,38.3,7.309,2,329,12.6,392.2,6.62,34.6
201 | 0.0315,95,1.47,0,0.403,6.975,15.3,7.6534,3,402,17,396.9,4.56,34.9
202 | 0.01778,95,1.47,0,0.403,7.135,13.9,7.6534,3,402,17,384.3,4.45,32.9
203 | 0.03445,82.5,2.03,0,0.415,6.162,38.4,6.27,2,348,14.7,393.77,7.43,24.1
204 | 0.02177,82.5,2.03,0,0.415,7.61,15.7,6.27,2,348,14.7,395.38,3.11,42.3
205 | 0.0351,95,2.68,0,0.4161,7.853,33.2,5.118,4,224,14.7,392.78,3.81,48.5
206 | 0.02009,95,2.68,0,0.4161,8.034,31.9,5.118,4,224,14.7,390.55,2.88,50
207 | 0.13642,0,10.59,0,0.489,5.891,22.3,3.9454,4,277,18.6,396.9,10.87,22.6
208 | 0.22969,0,10.59,0,0.489,6.326,52.5,4.3549,4,277,18.6,394.87,10.97,24.4
209 | 0.25199,0,10.59,0,0.489,5.783,72.7,4.3549,4,277,18.6,389.43,18.06,22.5
210 | 0.13587,0,10.59,1,0.489,6.064,59.1,4.2392,4,277,18.6,381.32,14.66,24.4
211 | 0.43571,0,10.59,1,0.489,5.344,100,3.875,4,277,18.6,396.9,23.09,20
212 | 0.17446,0,10.59,1,0.489,5.96,92.1,3.8771,4,277,18.6,393.25,17.27,21.7
213 | 0.37578,0,10.59,1,0.489,5.404,88.6,3.665,4,277,18.6,395.24,23.98,19.3
214 | 0.21719,0,10.59,1,0.489,5.807,53.8,3.6526,4,277,18.6,390.94,16.03,22.4
215 | 0.14052,0,10.59,0,0.489,6.375,32.3,3.9454,4,277,18.6,385.81,9.38,28.1
216 | 0.28955,0,10.59,0,0.489,5.412,9.8,3.5875,4,277,18.6,348.93,29.55,23.7
217 | 0.19802,0,10.59,0,0.489,6.182,42.4,3.9454,4,277,18.6,393.63,9.47,25
218 | 0.0456,0,13.89,1,0.55,5.888,56,3.1121,5,276,16.4,392.8,13.51,23.3
219 | 0.07013,0,13.89,0,0.55,6.642,85.1,3.4211,5,276,16.4,392.78,9.69,28.7
220 | 0.11069,0,13.89,1,0.55,5.951,93.8,2.8893,5,276,16.4,396.9,17.92,21.5
221 | 0.11425,0,13.89,1,0.55,6.373,92.4,3.3633,5,276,16.4,393.74,10.5,23
222 | 0.35809,0,6.2,1,0.507,6.951,88.5,2.8617,8,307,17.4,391.7,9.71,26.7
223 | 0.40771,0,6.2,1,0.507,6.164,91.3,3.048,8,307,17.4,395.24,21.46,21.7
224 | 0.62356,0,6.2,1,0.507,6.879,77.7,3.2721,8,307,17.4,390.39,9.93,27.5
225 | 0.6147,0,6.2,0,0.507,6.618,80.8,3.2721,8,307,17.4,396.9,7.6,30.1
226 | 0.31533,0,6.2,0,0.504,8.266,78.3,2.8944,8,307,17.4,385.05,4.14,44.8
227 | 0.52693,0,6.2,0,0.504,8.725,83,2.8944,8,307,17.4,382,4.63,50
228 | 0.38214,0,6.2,0,0.504,8.04,86.5,3.2157,8,307,17.4,387.38,3.13,37.6
229 | 0.41238,0,6.2,0,0.504,7.163,79.9,3.2157,8,307,17.4,372.08,6.36,31.6
230 | 0.29819,0,6.2,0,0.504,7.686,17,3.3751,8,307,17.4,377.51,3.92,46.7
231 | 0.44178,0,6.2,0,0.504,6.552,21.4,3.3751,8,307,17.4,380.34,3.76,31.5
232 | 0.537,0,6.2,0,0.504,5.981,68.1,3.6715,8,307,17.4,378.35,11.65,24.3
233 | 0.46296,0,6.2,0,0.504,7.412,76.9,3.6715,8,307,17.4,376.14,5.25,31.7
234 | 0.57529,0,6.2,0,0.507,8.337,73.3,3.8384,8,307,17.4,385.91,2.47,41.7
235 | 0.33147,0,6.2,0,0.507,8.247,70.4,3.6519,8,307,17.4,378.95,3.95,48.3
236 | 0.44791,0,6.2,1,0.507,6.726,66.5,3.6519,8,307,17.4,360.2,8.05,29
237 | 0.33045,0,6.2,0,0.507,6.086,61.5,3.6519,8,307,17.4,376.75,10.88,24
238 | 0.52058,0,6.2,1,0.507,6.631,76.5,4.148,8,307,17.4,388.45,9.54,25.1
239 | 0.51183,0,6.2,0,0.507,7.358,71.6,4.148,8,307,17.4,390.07,4.73,31.5
240 | 0.08244,30,4.93,0,0.428,6.481,18.5,6.1899,6,300,16.6,379.41,6.36,23.7
241 | 0.09252,30,4.93,0,0.428,6.606,42.2,6.1899,6,300,16.6,383.78,7.37,23.3
242 | 0.11329,30,4.93,0,0.428,6.897,54.3,6.3361,6,300,16.6,391.25,11.38,22
243 | 0.10612,30,4.93,0,0.428,6.095,65.1,6.3361,6,300,16.6,394.62,12.4,20.1
244 | 0.1029,30,4.93,0,0.428,6.358,52.9,7.0355,6,300,16.6,372.75,11.22,22.2
245 | 0.12757,30,4.93,0,0.428,6.393,7.8,7.0355,6,300,16.6,374.71,5.19,23.7
246 | 0.20608,22,5.86,0,0.431,5.593,76.5,7.9549,7,330,19.1,372.49,12.5,17.6
247 | 0.19133,22,5.86,0,0.431,5.605,70.2,7.9549,7,330,19.1,389.13,18.46,18.5
248 | 0.33983,22,5.86,0,0.431,6.108,34.9,8.0555,7,330,19.1,390.18,9.16,24.3
249 | 0.19657,22,5.86,0,0.431,6.226,79.2,8.0555,7,330,19.1,376.14,10.15,20.5
250 | 0.16439,22,5.86,0,0.431,6.433,49.1,7.8265,7,330,19.1,374.71,9.52,24.5
251 | 0.19073,22,5.86,0,0.431,6.718,17.5,7.8265,7,330,19.1,393.74,6.56,26.2
252 | 0.1403,22,5.86,0,0.431,6.487,13,7.3967,7,330,19.1,396.28,5.9,24.4
253 | 0.21409,22,5.86,0,0.431,6.438,8.9,7.3967,7,330,19.1,377.07,3.59,24.8
254 | 0.08221,22,5.86,0,0.431,6.957,6.8,8.9067,7,330,19.1,386.09,3.53,29.6
255 | 0.36894,22,5.86,0,0.431,8.259,8.4,8.9067,7,330,19.1,396.9,3.54,42.8
256 | 0.04819,80,3.64,0,0.392,6.108,32,9.2203,1,315,16.4,392.89,6.57,21.9
257 | 0.03548,80,3.64,0,0.392,5.876,19.1,9.2203,1,315,16.4,395.18,9.25,20.9
258 | 0.01538,90,3.75,0,0.394,7.454,34.2,6.3361,3,244,15.9,386.34,3.11,44
259 | 0.61154,20,3.97,0,0.647,8.704,86.9,1.801,5,264,13,389.7,5.12,50
260 | 0.66351,20,3.97,0,0.647,7.333,100,1.8946,5,264,13,383.29,7.79,36
261 | 0.65665,20,3.97,0,0.647,6.842,100,2.0107,5,264,13,391.93,6.9,30.1
262 | 0.54011,20,3.97,0,0.647,7.203,81.8,2.1121,5,264,13,392.8,9.59,33.8
263 | 0.53412,20,3.97,0,0.647,7.52,89.4,2.1398,5,264,13,388.37,7.26,43.1
264 | 0.52014,20,3.97,0,0.647,8.398,91.5,2.2885,5,264,13,386.86,5.91,48.8
265 | 0.82526,20,3.97,0,0.647,7.327,94.5,2.0788,5,264,13,393.42,11.25,31
266 | 0.55007,20,3.97,0,0.647,7.206,91.6,1.9301,5,264,13,387.89,8.1,36.5
267 | 0.76162,20,3.97,0,0.647,5.56,62.8,1.9865,5,264,13,392.4,10.45,22.8
268 | 0.7857,20,3.97,0,0.647,7.014,84.6,2.1329,5,264,13,384.07,14.79,30.7
269 | 0.57834,20,3.97,0,0.575,8.297,67,2.4216,5,264,13,384.54,7.44,50
270 | 0.5405,20,3.97,0,0.575,7.47,52.6,2.872,5,264,13,390.3,3.16,43.5
271 | 0.09065,20,6.96,1,0.464,5.92,61.5,3.9175,3,223,18.6,391.34,13.65,20.7
272 | 0.29916,20,6.96,0,0.464,5.856,42.1,4.429,3,223,18.6,388.65,13,21.1
273 | 0.16211,20,6.96,0,0.464,6.24,16.3,4.429,3,223,18.6,396.9,6.59,25.2
274 | 0.1146,20,6.96,0,0.464,6.538,58.7,3.9175,3,223,18.6,394.96,7.73,24.4
275 | 0.22188,20,6.96,1,0.464,7.691,51.8,4.3665,3,223,18.6,390.77,6.58,35.2
276 | 0.05644,40,6.41,1,0.447,6.758,32.9,4.0776,4,254,17.6,396.9,3.53,32.4
277 | 0.09604,40,6.41,0,0.447,6.854,42.8,4.2673,4,254,17.6,396.9,2.98,32
278 | 0.10469,40,6.41,1,0.447,7.267,49,4.7872,4,254,17.6,389.25,6.05,33.2
279 | 0.06127,40,6.41,1,0.447,6.826,27.6,4.8628,4,254,17.6,393.45,4.16,33.1
280 | 0.07978,40,6.41,0,0.447,6.482,32.1,4.1403,4,254,17.6,396.9,7.19,29.1
281 | 0.21038,20,3.33,0,0.4429,6.812,32.2,4.1007,5,216,14.9,396.9,4.85,35.1
282 | 0.03578,20,3.33,0,0.4429,7.82,64.5,4.6947,5,216,14.9,387.31,3.76,45.4
283 | 0.03705,20,3.33,0,0.4429,6.968,37.2,5.2447,5,216,14.9,392.23,4.59,35.4
284 | 0.06129,20,3.33,1,0.4429,7.645,49.7,5.2119,5,216,14.9,377.07,3.01,46
285 | 0.01501,90,1.21,1,0.401,7.923,24.8,5.885,1,198,13.6,395.52,3.16,50
286 | 0.00906,90,2.97,0,0.4,7.088,20.8,7.3073,1,285,15.3,394.72,7.85,32.2
287 | 0.01096,55,2.25,0,0.389,6.453,31.9,7.3073,1,300,15.3,394.72,8.23,22
288 | 0.01965,80,1.76,0,0.385,6.23,31.5,9.0892,1,241,18.2,341.6,12.93,20.1
289 | 0.03871,52.5,5.32,0,0.405,6.209,31.3,7.3172,6,293,16.6,396.9,7.14,23.2
290 | 0.0459,52.5,5.32,0,0.405,6.315,45.6,7.3172,6,293,16.6,396.9,7.6,22.3
291 | 0.04297,52.5,5.32,0,0.405,6.565,22.9,7.3172,6,293,16.6,371.72,9.51,24.8
292 | 0.03502,80,4.95,0,0.411,6.861,27.9,5.1167,4,245,19.2,396.9,3.33,28.5
293 | 0.07886,80,4.95,0,0.411,7.148,27.7,5.1167,4,245,19.2,396.9,3.56,37.3
294 | 0.03615,80,4.95,0,0.411,6.63,23.4,5.1167,4,245,19.2,396.9,4.7,27.9
295 | 0.08265,0,13.92,0,0.437,6.127,18.4,5.5027,4,289,16,396.9,8.58,23.9
296 | 0.08199,0,13.92,0,0.437,6.009,42.3,5.5027,4,289,16,396.9,10.4,21.7
297 | 0.12932,0,13.92,0,0.437,6.678,31.1,5.9604,4,289,16,396.9,6.27,28.6
298 | 0.05372,0,13.92,0,0.437,6.549,51,5.9604,4,289,16,392.85,7.39,27.1
299 | 0.14103,0,13.92,0,0.437,5.79,58,6.32,4,289,16,396.9,15.84,20.3
300 | 0.06466,70,2.24,0,0.4,6.345,20.1,7.8278,5,358,14.8,368.24,4.97,22.5
301 | 0.05561,70,2.24,0,0.4,7.041,10,7.8278,5,358,14.8,371.58,4.74,29
302 | 0.04417,70,2.24,0,0.4,6.871,47.4,7.8278,5,358,14.8,390.86,6.07,24.8
303 | 0.03537,34,6.09,0,0.433,6.59,40.4,5.4917,7,329,16.1,395.75,9.5,22
304 | 0.09266,34,6.09,0,0.433,6.495,18.4,5.4917,7,329,16.1,383.61,8.67,26.4
305 | 0.1,34,6.09,0,0.433,6.982,17.7,5.4917,7,329,16.1,390.43,4.86,33.1
306 | 0.05515,33,2.18,0,0.472,7.236,41.1,4.022,7,222,18.4,393.68,6.93,36.1
307 | 0.05479,33,2.18,0,0.472,6.616,58.1,3.37,7,222,18.4,393.36,8.93,28.4
308 | 0.07503,33,2.18,0,0.472,7.42,71.9,3.0992,7,222,18.4,396.9,6.47,33.4
309 | 0.04932,33,2.18,0,0.472,6.849,70.3,3.1827,7,222,18.4,396.9,7.53,28.2
310 | 0.49298,0,9.9,0,0.544,6.635,82.5,3.3175,4,304,18.4,396.9,4.54,22.8
311 | 0.3494,0,9.9,0,0.544,5.972,76.7,3.1025,4,304,18.4,396.24,9.97,20.3
312 | 2.63548,0,9.9,0,0.544,4.973,37.8,2.5194,4,304,18.4,350.45,12.64,16.1
313 | 0.79041,0,9.9,0,0.544,6.122,52.8,2.6403,4,304,18.4,396.9,5.98,22.1
314 | 0.26169,0,9.9,0,0.544,6.023,90.4,2.834,4,304,18.4,396.3,11.72,19.4
315 | 0.26938,0,9.9,0,0.544,6.266,82.8,3.2628,4,304,18.4,393.39,7.9,21.6
316 | 0.3692,0,9.9,0,0.544,6.567,87.3,3.6023,4,304,18.4,395.69,9.28,23.8
317 | 0.25356,0,9.9,0,0.544,5.705,77.7,3.945,4,304,18.4,396.42,11.5,16.2
318 | 0.31827,0,9.9,0,0.544,5.914,83.2,3.9986,4,304,18.4,390.7,18.33,17.8
319 | 0.24522,0,9.9,0,0.544,5.782,71.7,4.0317,4,304,18.4,396.9,15.94,19.8
320 | 0.40202,0,9.9,0,0.544,6.382,67.2,3.5325,4,304,18.4,395.21,10.36,23.1
321 | 0.47547,0,9.9,0,0.544,6.113,58.8,4.0019,4,304,18.4,396.23,12.73,21
322 | 0.1676,0,7.38,0,0.493,6.426,52.3,4.5404,5,287,19.6,396.9,7.2,23.8
323 | 0.18159,0,7.38,0,0.493,6.376,54.3,4.5404,5,287,19.6,396.9,6.87,23.1
324 | 0.35114,0,7.38,0,0.493,6.041,49.9,4.7211,5,287,19.6,396.9,7.7,20.4
325 | 0.28392,0,7.38,0,0.493,5.708,74.3,4.7211,5,287,19.6,391.13,11.74,18.5
326 | 0.34109,0,7.38,0,0.493,6.415,40.1,4.7211,5,287,19.6,396.9,6.12,25
327 | 0.19186,0,7.38,0,0.493,6.431,14.7,5.4159,5,287,19.6,393.68,5.08,24.6
328 | 0.30347,0,7.38,0,0.493,6.312,28.9,5.4159,5,287,19.6,396.9,6.15,23
329 | 0.24103,0,7.38,0,0.493,6.083,43.7,5.4159,5,287,19.6,396.9,12.79,22.2
330 | 0.06617,0,3.24,0,0.46,5.868,25.8,5.2146,4,430,16.9,382.44,9.97,19.3
331 | 0.06724,0,3.24,0,0.46,6.333,17.2,5.2146,4,430,16.9,375.21,7.34,22.6
332 | 0.04544,0,3.24,0,0.46,6.144,32.2,5.8736,4,430,16.9,368.57,9.09,19.8
333 | 0.05023,35,6.06,0,0.4379,5.706,28.4,6.6407,1,304,16.9,394.02,12.43,17.1
334 | 0.03466,35,6.06,0,0.4379,6.031,23.3,6.6407,1,304,16.9,362.25,7.83,19.4
335 | 0.05083,0,5.19,0,0.515,6.316,38.1,6.4584,5,224,20.2,389.71,5.68,22.2
336 | 0.03738,0,5.19,0,0.515,6.31,38.5,6.4584,5,224,20.2,389.4,6.75,20.7
337 | 0.03961,0,5.19,0,0.515,6.037,34.5,5.9853,5,224,20.2,396.9,8.01,21.1
338 | 0.03427,0,5.19,0,0.515,5.869,46.3,5.2311,5,224,20.2,396.9,9.8,19.5
339 | 0.03041,0,5.19,0,0.515,5.895,59.6,5.615,5,224,20.2,394.81,10.56,18.5
340 | 0.03306,0,5.19,0,0.515,6.059,37.3,4.8122,5,224,20.2,396.14,8.51,20.6
341 | 0.05497,0,5.19,0,0.515,5.985,45.4,4.8122,5,224,20.2,396.9,9.74,19
342 | 0.06151,0,5.19,0,0.515,5.968,58.5,4.8122,5,224,20.2,396.9,9.29,18.7
343 | 0.01301,35,1.52,0,0.442,7.241,49.3,7.0379,1,284,15.5,394.74,5.49,32.7
344 | 0.02498,0,1.89,0,0.518,6.54,59.7,6.2669,1,422,15.9,389.96,8.65,16.5
345 | 0.02543,55,3.78,0,0.484,6.696,56.4,5.7321,5,370,17.6,396.9,7.18,23.9
346 | 0.03049,55,3.78,0,0.484,6.874,28.1,6.4654,5,370,17.6,387.97,4.61,31.2
347 | 0.03113,0,4.39,0,0.442,6.014,48.5,8.0136,3,352,18.8,385.64,10.53,17.5
348 | 0.06162,0,4.39,0,0.442,5.898,52.3,8.0136,3,352,18.8,364.61,12.67,17.2
349 | 0.0187,85,4.15,0,0.429,6.516,27.7,8.5353,4,351,17.9,392.43,6.36,23.1
350 | 0.01501,80,2.01,0,0.435,6.635,29.7,8.344,4,280,17,390.94,5.99,24.5
351 | 0.02899,40,1.25,0,0.429,6.939,34.5,8.7921,1,335,19.7,389.85,5.89,26.6
352 | 0.06211,40,1.25,0,0.429,6.49,44.4,8.7921,1,335,19.7,396.9,5.98,22.9
353 | 0.0795,60,1.69,0,0.411,6.579,35.9,10.7103,4,411,18.3,370.78,5.49,24.1
354 | 0.07244,60,1.69,0,0.411,5.884,18.5,10.7103,4,411,18.3,392.33,7.79,18.6
355 | 0.01709,90,2.02,0,0.41,6.728,36.1,12.1265,5,187,17,384.46,4.5,30.1
356 | 0.04301,80,1.91,0,0.413,5.663,21.9,10.5857,4,334,22,382.8,8.05,18.2
357 | 0.10659,80,1.91,0,0.413,5.936,19.5,10.5857,4,334,22,376.04,5.57,20.6
358 | 8.98296,0,18.1,1,0.77,6.212,97.4,2.1222,24,666,20.2,377.73,17.6,17.8
359 | 3.8497,0,18.1,1,0.77,6.395,91,2.5052,24,666,20.2,391.34,13.27,21.7
360 | 5.20177,0,18.1,1,0.77,6.127,83.4,2.7227,24,666,20.2,395.43,11.48,22.7
361 | 4.26131,0,18.1,0,0.77,6.112,81.3,2.5091,24,666,20.2,390.74,12.67,22.6
362 | 4.54192,0,18.1,0,0.77,6.398,88,2.5182,24,666,20.2,374.56,7.79,25
363 | 3.83684,0,18.1,0,0.77,6.251,91.1,2.2955,24,666,20.2,350.65,14.19,19.9
364 | 3.67822,0,18.1,0,0.77,5.362,96.2,2.1036,24,666,20.2,380.79,10.19,20.8
365 | 4.22239,0,18.1,1,0.77,5.803,89,1.9047,24,666,20.2,353.04,14.64,16.8
366 | 3.47428,0,18.1,1,0.718,8.78,82.9,1.9047,24,666,20.2,354.55,5.29,21.9
367 | 4.55587,0,18.1,0,0.718,3.561,87.9,1.6132,24,666,20.2,354.7,7.12,27.5
368 | 3.69695,0,18.1,0,0.718,4.963,91.4,1.7523,24,666,20.2,316.03,14,21.9
369 | 13.5222,0,18.1,0,0.631,3.863,100,1.5106,24,666,20.2,131.42,13.33,23.1
370 | 4.89822,0,18.1,0,0.631,4.97,100,1.3325,24,666,20.2,375.52,3.26,50
371 | 5.66998,0,18.1,1,0.631,6.683,96.8,1.3567,24,666,20.2,375.33,3.73,50
372 | 6.53876,0,18.1,1,0.631,7.016,97.5,1.2024,24,666,20.2,392.05,2.96,50
373 | 9.2323,0,18.1,0,0.631,6.216,100,1.1691,24,666,20.2,366.15,9.53,50
374 | 8.26725,0,18.1,1,0.668,5.875,89.6,1.1296,24,666,20.2,347.88,8.88,50
375 | 11.1081,0,18.1,0,0.668,4.906,100,1.1742,24,666,20.2,396.9,34.77,13.8
376 | 18.4982,0,18.1,0,0.668,4.138,100,1.137,24,666,20.2,396.9,37.97,13.8
377 | 19.6091,0,18.1,0,0.671,7.313,97.9,1.3163,24,666,20.2,396.9,13.44,15
378 | 15.288,0,18.1,0,0.671,6.649,93.3,1.3449,24,666,20.2,363.02,23.24,13.9
379 | 9.82349,0,18.1,0,0.671,6.794,98.8,1.358,24,666,20.2,396.9,21.24,13.3
380 | 23.6482,0,18.1,0,0.671,6.38,96.2,1.3861,24,666,20.2,396.9,23.69,13.1
381 | 17.8667,0,18.1,0,0.671,6.223,100,1.3861,24,666,20.2,393.74,21.78,10.2
382 | 88.9762,0,18.1,0,0.671,6.968,91.9,1.4165,24,666,20.2,396.9,17.21,10.4
383 | 15.8744,0,18.1,0,0.671,6.545,99.1,1.5192,24,666,20.2,396.9,21.08,10.9
384 | 9.18702,0,18.1,0,0.7,5.536,100,1.5804,24,666,20.2,396.9,23.6,11.3
385 | 7.99248,0,18.1,0,0.7,5.52,100,1.5331,24,666,20.2,396.9,24.56,12.3
386 | 20.0849,0,18.1,0,0.7,4.368,91.2,1.4395,24,666,20.2,285.83,30.63,8.8
387 | 16.8118,0,18.1,0,0.7,5.277,98.1,1.4261,24,666,20.2,396.9,30.81,7.2
388 | 24.3938,0,18.1,0,0.7,4.652,100,1.4672,24,666,20.2,396.9,28.28,10.5
389 | 22.5971,0,18.1,0,0.7,5,89.5,1.5184,24,666,20.2,396.9,31.99,7.4
390 | 14.3337,0,18.1,0,0.7,4.88,100,1.5895,24,666,20.2,372.92,30.62,10.2
391 | 8.15174,0,18.1,0,0.7,5.39,98.9,1.7281,24,666,20.2,396.9,20.85,11.5
392 | 6.96215,0,18.1,0,0.7,5.713,97,1.9265,24,666,20.2,394.43,17.11,15.1
393 | 5.29305,0,18.1,0,0.7,6.051,82.5,2.1678,24,666,20.2,378.38,18.76,23.2
394 | 11.5779,0,18.1,0,0.7,5.036,97,1.77,24,666,20.2,396.9,25.68,9.7
395 | 8.64476,0,18.1,0,0.693,6.193,92.6,1.7912,24,666,20.2,396.9,15.17,13.8
396 | 13.3598,0,18.1,0,0.693,5.887,94.7,1.7821,24,666,20.2,396.9,16.35,12.7
397 | 8.71675,0,18.1,0,0.693,6.471,98.8,1.7257,24,666,20.2,391.98,17.12,13.1
398 | 5.87205,0,18.1,0,0.693,6.405,96,1.6768,24,666,20.2,396.9,19.37,12.5
399 | 7.67202,0,18.1,0,0.693,5.747,98.9,1.6334,24,666,20.2,393.1,19.92,8.5
400 | 38.3518,0,18.1,0,0.693,5.453,100,1.4896,24,666,20.2,396.9,30.59,5
401 | 9.91655,0,18.1,0,0.693,5.852,77.8,1.5004,24,666,20.2,338.16,29.97,6.3
402 | 25.0461,0,18.1,0,0.693,5.987,100,1.5888,24,666,20.2,396.9,26.77,5.6
403 | 14.2362,0,18.1,0,0.693,6.343,100,1.5741,24,666,20.2,396.9,20.32,7.2
404 | 9.59571,0,18.1,0,0.693,6.404,100,1.639,24,666,20.2,376.11,20.31,12.1
405 | 24.8017,0,18.1,0,0.693,5.349,96,1.7028,24,666,20.2,396.9,19.77,8.3
406 | 41.5292,0,18.1,0,0.693,5.531,85.4,1.6074,24,666,20.2,329.46,27.38,8.5
407 | 67.9208,0,18.1,0,0.693,5.683,100,1.4254,24,666,20.2,384.97,22.98,5
408 | 20.7162,0,18.1,0,0.659,4.138,100,1.1781,24,666,20.2,370.22,23.34,11.9
409 | 11.9511,0,18.1,0,0.659,5.608,100,1.2852,24,666,20.2,332.09,12.13,27.9
410 | 7.40389,0,18.1,0,0.597,5.617,97.9,1.4547,24,666,20.2,314.64,26.4,17.2
411 | 14.4383,0,18.1,0,0.597,6.852,100,1.4655,24,666,20.2,179.36,19.78,27.5
412 | 51.1358,0,18.1,0,0.597,5.757,100,1.413,24,666,20.2,2.6,10.11,15
413 | 14.0507,0,18.1,0,0.597,6.657,100,1.5275,24,666,20.2,35.05,21.22,17.2
414 | 18.811,0,18.1,0,0.597,4.628,100,1.5539,24,666,20.2,28.79,34.37,17.9
415 | 28.6558,0,18.1,0,0.597,5.155,100,1.5894,24,666,20.2,210.97,20.08,16.3
416 | 45.7461,0,18.1,0,0.693,4.519,100,1.6582,24,666,20.2,88.27,36.98,7
417 | 18.0846,0,18.1,0,0.679,6.434,100,1.8347,24,666,20.2,27.25,29.05,7.2
418 | 10.8342,0,18.1,0,0.679,6.782,90.8,1.8195,24,666,20.2,21.57,25.79,7.5
419 | 25.9406,0,18.1,0,0.679,5.304,89.1,1.6475,24,666,20.2,127.36,26.64,10.4
420 | 73.5341,0,18.1,0,0.679,5.957,100,1.8026,24,666,20.2,16.45,20.62,8.8
421 | 11.8123,0,18.1,0,0.718,6.824,76.5,1.794,24,666,20.2,48.45,22.74,8.4
422 | 11.0874,0,18.1,0,0.718,6.411,100,1.8589,24,666,20.2,318.75,15.02,16.7
423 | 7.02259,0,18.1,0,0.718,6.006,95.3,1.8746,24,666,20.2,319.98,15.7,14.2
424 | 12.0482,0,18.1,0,0.614,5.648,87.6,1.9512,24,666,20.2,291.55,14.1,20.8
425 | 7.05042,0,18.1,0,0.614,6.103,85.1,2.0218,24,666,20.2,2.52,23.29,13.4
426 | 8.79212,0,18.1,0,0.584,5.565,70.6,2.0635,24,666,20.2,3.65,17.16,11.7
427 | 15.8603,0,18.1,0,0.679,5.896,95.4,1.9096,24,666,20.2,7.68,24.39,8.3
428 | 12.2472,0,18.1,0,0.584,5.837,59.7,1.9976,24,666,20.2,24.65,15.69,10.2
429 | 37.6619,0,18.1,0,0.679,6.202,78.7,1.8629,24,666,20.2,18.82,14.52,10.9
430 | 7.36711,0,18.1,0,0.679,6.193,78.1,1.9356,24,666,20.2,96.73,21.52,11
431 | 9.33889,0,18.1,0,0.679,6.38,95.6,1.9682,24,666,20.2,60.72,24.08,9.5
432 | 8.49213,0,18.1,0,0.584,6.348,86.1,2.0527,24,666,20.2,83.45,17.64,14.5
433 | 10.0623,0,18.1,0,0.584,6.833,94.3,2.0882,24,666,20.2,81.33,19.69,14.1
434 | 6.44405,0,18.1,0,0.584,6.425,74.8,2.2004,24,666,20.2,97.95,12.03,16.1
435 | 5.58107,0,18.1,0,0.713,6.436,87.9,2.3158,24,666,20.2,100.19,16.22,14.3
436 | 13.9134,0,18.1,0,0.713,6.208,95,2.2222,24,666,20.2,100.63,15.17,11.7
437 | 11.1604,0,18.1,0,0.74,6.629,94.6,2.1247,24,666,20.2,109.85,23.27,13.4
438 | 14.4208,0,18.1,0,0.74,6.461,93.3,2.0026,24,666,20.2,27.49,18.05,9.6
439 | 15.1772,0,18.1,0,0.74,6.152,100,1.9142,24,666,20.2,9.32,26.45,8.7
440 | 13.6781,0,18.1,0,0.74,5.935,87.9,1.8206,24,666,20.2,68.95,34.02,8.4
441 | 9.39063,0,18.1,0,0.74,5.627,93.9,1.8172,24,666,20.2,396.9,22.88,12.8
442 | 22.0511,0,18.1,0,0.74,5.818,92.4,1.8662,24,666,20.2,391.45,22.11,10.5
443 | 9.72418,0,18.1,0,0.74,6.406,97.2,2.0651,24,666,20.2,385.96,19.52,17.1
444 | 5.66637,0,18.1,0,0.74,6.219,100,2.0048,24,666,20.2,395.69,16.59,18.4
445 | 9.96654,0,18.1,0,0.74,6.485,100,1.9784,24,666,20.2,386.73,18.85,15.4
446 | 12.8023,0,18.1,0,0.74,5.854,96.6,1.8956,24,666,20.2,240.52,23.79,10.8
447 | 10.6718,0,18.1,0,0.74,6.459,94.8,1.9879,24,666,20.2,43.06,23.98,11.8
448 | 6.28807,0,18.1,0,0.74,6.341,96.4,2.072,24,666,20.2,318.01,17.79,14.9
449 | 9.92485,0,18.1,0,0.74,6.251,96.6,2.198,24,666,20.2,388.52,16.44,12.6
450 | 9.32909,0,18.1,0,0.713,6.185,98.7,2.2616,24,666,20.2,396.9,18.13,14.1
451 | 7.52601,0,18.1,0,0.713,6.417,98.3,2.185,24,666,20.2,304.21,19.31,13
452 | 6.71772,0,18.1,0,0.713,6.749,92.6,2.3236,24,666,20.2,0.32,17.44,13.4
453 | 5.44114,0,18.1,0,0.713,6.655,98.2,2.3552,24,666,20.2,355.29,17.73,15.2
454 | 5.09017,0,18.1,0,0.713,6.297,91.8,2.3682,24,666,20.2,385.09,17.27,16.1
455 | 8.24809,0,18.1,0,0.713,7.393,99.3,2.4527,24,666,20.2,375.87,16.74,17.8
456 | 9.51363,0,18.1,0,0.713,6.728,94.1,2.4961,24,666,20.2,6.68,18.71,14.9
457 | 4.75237,0,18.1,0,0.713,6.525,86.5,2.4358,24,666,20.2,50.92,18.13,14.1
458 | 4.66883,0,18.1,0,0.713,5.976,87.9,2.5806,24,666,20.2,10.48,19.01,12.7
459 | 8.20058,0,18.1,0,0.713,5.936,80.3,2.7792,24,666,20.2,3.5,16.94,13.5
460 | 7.75223,0,18.1,0,0.713,6.301,83.7,2.7831,24,666,20.2,272.21,16.23,14.9
461 | 6.80117,0,18.1,0,0.713,6.081,84.4,2.7175,24,666,20.2,396.9,14.7,20
462 | 4.81213,0,18.1,0,0.713,6.701,90,2.5975,24,666,20.2,255.23,16.42,16.4
463 | 3.69311,0,18.1,0,0.713,6.376,88.4,2.5671,24,666,20.2,391.43,14.65,17.7
464 | 6.65492,0,18.1,0,0.713,6.317,83,2.7344,24,666,20.2,396.9,13.99,19.5
465 | 5.82115,0,18.1,0,0.713,6.513,89.9,2.8016,24,666,20.2,393.82,10.29,20.2
466 | 7.83932,0,18.1,0,0.655,6.209,65.4,2.9634,24,666,20.2,396.9,13.22,21.4
467 | 3.1636,0,18.1,0,0.655,5.759,48.2,3.0665,24,666,20.2,334.4,14.13,19.9
468 | 3.77498,0,18.1,0,0.655,5.952,84.7,2.8715,24,666,20.2,22.01,17.15,19
469 | 4.42228,0,18.1,0,0.584,6.003,94.5,2.5403,24,666,20.2,331.29,21.32,19.1
470 | 15.5757,0,18.1,0,0.58,5.926,71,2.9084,24,666,20.2,368.74,18.13,19.1
471 | 13.0751,0,18.1,0,0.58,5.713,56.7,2.8237,24,666,20.2,396.9,14.76,20.1
472 | 4.34879,0,18.1,0,0.58,6.167,84,3.0334,24,666,20.2,396.9,16.29,19.9
473 | 4.03841,0,18.1,0,0.532,6.229,90.7,3.0993,24,666,20.2,395.33,12.87,19.6
474 | 3.56868,0,18.1,0,0.58,6.437,75,2.8965,24,666,20.2,393.37,14.36,23.2
475 | 4.64689,0,18.1,0,0.614,6.98,67.6,2.5329,24,666,20.2,374.68,11.66,29.8
476 | 8.05579,0,18.1,0,0.584,5.427,95.4,2.4298,24,666,20.2,352.58,18.14,13.8
477 | 6.39312,0,18.1,0,0.584,6.162,97.4,2.206,24,666,20.2,302.76,24.1,13.3
478 | 4.87141,0,18.1,0,0.614,6.484,93.6,2.3053,24,666,20.2,396.21,18.68,16.7
479 | 15.0234,0,18.1,0,0.614,5.304,97.3,2.1007,24,666,20.2,349.48,24.91,12
480 | 10.233,0,18.1,0,0.614,6.185,96.7,2.1705,24,666,20.2,379.7,18.03,14.6
481 | 14.3337,0,18.1,0,0.614,6.229,88,1.9512,24,666,20.2,383.32,13.11,21.4
482 | 5.82401,0,18.1,0,0.532,6.242,64.7,3.4242,24,666,20.2,396.9,10.74,23
483 | 5.70818,0,18.1,0,0.532,6.75,74.9,3.3317,24,666,20.2,393.07,7.74,23.7
484 | 5.73116,0,18.1,0,0.532,7.061,77,3.4106,24,666,20.2,395.28,7.01,25
485 | 2.81838,0,18.1,0,0.532,5.762,40.3,4.0983,24,666,20.2,392.92,10.42,21.8
486 | 2.37857,0,18.1,0,0.583,5.871,41.9,3.724,24,666,20.2,370.73,13.34,20.6
487 | 3.67367,0,18.1,0,0.583,6.312,51.9,3.9917,24,666,20.2,388.62,10.58,21.2
488 | 5.69175,0,18.1,0,0.583,6.114,79.8,3.5459,24,666,20.2,392.68,14.98,19.1
489 | 4.83567,0,18.1,0,0.583,5.905,53.2,3.1523,24,666,20.2,388.22,11.45,20.6
490 | 0.15086,0,27.74,0,0.609,5.454,92.7,1.8209,4,711,20.1,395.09,18.06,15.2
491 | 0.18337,0,27.74,0,0.609,5.414,98.3,1.7554,4,711,20.1,344.05,23.97,7
492 | 0.20746,0,27.74,0,0.609,5.093,98,1.8226,4,711,20.1,318.43,29.68,8.1
493 | 0.10574,0,27.74,0,0.609,5.983,98.8,1.8681,4,711,20.1,390.11,18.07,13.6
494 | 0.11132,0,27.74,0,0.609,5.983,83.5,2.1099,4,711,20.1,396.9,13.35,20.1
495 | 0.17331,0,9.69,0,0.585,5.707,54,2.3817,6,391,19.2,396.9,12.01,21.8
496 | 0.27957,0,9.69,0,0.585,5.926,42.6,2.3817,6,391,19.2,396.9,13.59,24.5
497 | 0.17899,0,9.69,0,0.585,5.67,28.8,2.7986,6,391,19.2,393.29,17.6,23.1
498 | 0.2896,0,9.69,0,0.585,5.39,72.9,2.7986,6,391,19.2,396.9,21.14,19.7
499 | 0.26838,0,9.69,0,0.585,5.794,70.6,2.8927,6,391,19.2,396.9,14.1,18.3
500 | 0.23912,0,9.69,0,0.585,6.019,65.3,2.4091,6,391,19.2,396.9,12.92,21.2
501 | 0.17783,0,9.69,0,0.585,5.569,73.5,2.3999,6,391,19.2,395.77,15.1,17.5
502 | 0.22438,0,9.69,0,0.585,6.027,79.7,2.4982,6,391,19.2,396.9,14.33,16.8
503 | 0.06263,0,11.93,0,0.573,6.593,69.1,2.4786,1,273,21,391.99,9.67,22.4
504 | 0.04527,0,11.93,0,0.573,6.12,76.7,2.2875,1,273,21,396.9,9.08,20.6
505 | 0.06076,0,11.93,0,0.573,6.976,91,2.1675,1,273,21,396.9,5.64,23.9
506 | 0.10959,0,11.93,0,0.573,6.794,89.3,2.3889,1,273,21,393.45,6.48,22
507 | 0.04741,0,11.93,0,0.573,6.03,80.8,2.505,1,273,21,396.9,7.88,11.9
508 |
--------------------------------------------------------------------------------
/table_data/Country statistics.csv:
--------------------------------------------------------------------------------
1 | HDI rank,Country,Human Development Index (HDI) ,Life expectancy at birth,Expected years of schooling,Mean years of schooling,Gross national income (GNI) per capita,GNI per capita rank minus HDI rank,HDI rank
2 | 1,Switzerland,0.962,84.0,16.5,13.9,"66,933",5,3
3 | 2,Norway,0.961,83.2,18.2,13.0,"64,660",6,1
4 | 3,Iceland,0.959,82.7,19.2,13.8,"55,782",11,2
5 | 4,"Hong Kong, China (SAR)",0.952,85.5,17.3,12.2,"62,607",6,4
6 | 5,Australia,0.951,84.5,21.1,12.7,"49,238",18,5
7 | 6,Denmark,0.948,81.4,18.7,13.0,"60,365",6,5
8 | 7,Sweden,0.947,83.0,19.4,12.6,"54,489",9,9
9 | 8,Ireland,0.945,82.0,18.9,11.6,"76,169",-3,8
10 | 9,Germany,0.942,80.6,17.0,14.1,"54,534",6,7
11 | 10,Netherlands,0.941,81.7,18.7,12.6,"55,979",3,10
12 | 11,Finland,0.940,82.0,19.1,12.9,"49,452",11,12
13 | 12,Singapore,0.939,82.8,16.5,11.9,"90,919",-10,10
14 | 13,Belgium,0.937,81.9,19.6,12.4,"52,293",7,16
15 | 13,New Zealand,0.937,82.5,20.3,12.9,"44,057",16,13
16 | 15,Canada,0.936,82.7,16.4,13.8,"46,808",9,15
17 | 16,Liechtenstein,0.935,83.3,15.2,12.5,"146,830",-15,14
18 | 17,Luxembourg,0.930,82.6,14.4,13.0,"84,649",-13,17
19 | 18,United Kingdom,0.929,80.7,17.3,13.4,"45,225",9,17
20 | 19,Japan,0.925,84.8,15.2,13.4,"42,274",12,19
21 | 19,Korea (Republic of),0.925,83.7,16.5,12.5,"44,501",9,20
22 | 21,United States,0.921,77.2,16.3,13.7,"64,765",-14,21
23 | 22,Israel,0.919,82.3,16.1,13.3,"41,524",10,22
24 | 23,Malta,0.918,83.8,16.8,12.2,"38,884",12,26
25 | 23,Slovenia,0.918,80.7,17.7,12.8,"39,746",10,23
26 | 25,Austria,0.916,81.6,16.0,12.3,"53,619",-8,23
27 | 26,United Arab Emirates,0.911,78.7,15.7,12.7,"62,574",-15,25
28 | 27,Spain,0.905,83.0,17.9,10.6,"38,354",10,27
29 | 28,France,0.903,82.5,15.8,11.6,"45,937",-2,28
30 | 29,Cyprus,0.896,81.2,15.6,12.4,"38,188",9,29
31 | 30,Italy,0.895,82.9,16.2,10.7,"42,840",0,32
32 | 31,Estonia,0.890,77.1,15.9,13.5,"38,048",8,30
33 | 32,Czechia,0.889,77.7,16.2,12.9,"38,745",4,30
34 | 33,Greece,0.887,80.1,20.0,11.4,"29,002",17,33
35 | 34,Poland,0.876,76.5,16.0,13.2,"33,034",8,36
36 | 35,Bahrain,0.875,78.8,16.3,11.0,"39,497",-1,35
37 | 35,Lithuania,0.875,73.7,16.3,13.5,"37,931",5,34
38 | 35,Saudi Arabia,0.875,76.9,16.1,11.3,"46,112",-10,38
39 | 38,Portugal,0.866,81.0,16.9,9.6,"33,155",3,39
40 | 39,Latvia,0.863,73.6,16.2,13.3,"32,803",4,37
41 | 40,Andorra,0.858,80.4,13.3,10.6,"51,167",-19,45
42 | 40,Croatia,0.858,77.6,15.1,12.2,"30,132",8,41
43 | 42,Chile,0.855,78.9,16.7,10.9,"24,563",14,43
44 | 42,Qatar,0.855,79.3,12.6,10.0,"87,134",-39,42
45 | 44,San Marino,0.853,80.9,12.3,10.8,"52,654",-25,46
46 | 45,Slovakia,0.848,74.9,14.5,12.9,"30,690",1,40
47 | 46,Hungary,0.846,74.5,15.0,12.2,"32,789",-2,44
48 | 47,Argentina,0.842,75.4,17.9,11.1,"20,925",17,47
49 | 48,Turkiye,0.838,76.0,18.3,8.6,"31,033",-3,48
50 | 49,Montenegro,0.832,76.3,15.1,12.2,"20,839",16,52
51 | 50,Kuwait,0.831,78.7,15.3,7.3,"52,920",-32,54
52 | 51,Brunei Darussalam,0.829,74.6,14.0,9.2,"64,490",-42,49
53 | 52,Russian Federation,0.822,69.4,15.8,12.8,"27,166",-1,49
54 | 53,Romania,0.821,74.2,14.2,11.3,"30,027",-4,53
55 | 54,Oman,0.816,72.5,14.6,11.7,"27,054",-2,51
56 | 55,Bahamas,0.812,71.6,12.9,12.6,"30,486",-8,58
57 | 56,Kazakhstan,0.811,69.4,15.8,12.3,"23,943",1,59
58 | 57,Trinidad and Tobago,0.810,73.0,14.5,11.6,"23,392",1,56
59 | 58,Costa Rica,0.809,77.0,16.5,8.8,"19,974",8,57
60 | 58,Uruguay,0.809,75.4,16.8,9.0,"21,269",5,55
61 | 60,Belarus,0.808,72.4,15.2,12.1,"18,849",8,60
62 | 61,Panama,0.805,76.2,13.1,10.5,"26,957",-8,67
63 | 62,Malaysia,0.803,74.9,13.3,10.6,"26,658",-8,61
64 | 63,Georgia,0.802,71.7,15.6,12.8,"14,664",17,64
65 | 63,Mauritius,0.802,73.6,15.2,10.4,"22,025",-1,62
66 | 63,Serbia,0.802,74.2,14.4,11.4,"19,123",4,62
67 | 66,Thailand,0.800,78.7,15.9,8.7,"17,030",6,64
68 | 67,Albania,0.796,76.5,14.4,11.3,"14,131",17,68
69 | 68,Bulgaria,0.795,71.8,13.9,11.4,"23,079",-8,64
70 | 68,Grenada,0.795,74.9,18.7,9.0,"13,484",18,70
71 | 70,Barbados,0.790,77.6,15.7,9.9,"12,306",26,71
72 | 71,Antigua and Barbuda,0.788,78.5,14.2,9.3,"16,792",2,71
73 | 72,Seychelles,0.785,71.3,13.9,10.3,"25,831",-17,69
74 | 73,Sri Lanka,0.782,76.4,14.1,10.8,"12,578",21,75
75 | 74,Bosnia and Herzegovina,0.780,75.3,13.8,10.5,"15,242",4,73
76 | 75,Saint Kitts and Nevis,0.777,71.7,15.4,8.7,"23,358",-16,76
77 | 76,Iran (Islamic Republic of),0.774,73.9,14.6,10.6,"13,001",15,77
78 | 77,Ukraine,0.773,71.6,15.0,11.1,"13,256",11,78
79 | 78,North Macedonia,0.770,73.8,13.6,10.2,"15,918",-3,79
80 | 79,China,0.768,78.2,14.2,7.6,"17,504",-8,82
81 | 80,Dominican Republic,0.767,72.6,14.5,9.3,"17,990",-11,82
82 | 80,Moldova (Republic of),0.767,68.8,14.4,11.8,"14,875",-1,81
83 | 80,Palau,0.767,66.0,15.8,12.5,"13,819",5,80
84 | 83,Cuba,0.764,73.7,14.4,12.5,"7,879",37,73
85 | 84,Peru,0.762,72.4,15.4,9.9,"12,246",13,85
86 | 85,Armenia,0.759,72.0,13.1,11.3,"13,158",4,87
87 | 86,Mexico,0.758,70.2,14.9,9.2,"17,896",-16,88
88 | 87,Brazil,0.754,72.8,15.6,8.1,"14,370",-5,86
89 | 88,Colombia,0.752,72.8,14.4,8.9,"14,384",-7,88
90 | 89,Saint Vincent and the Grenadines,0.751,69.6,14.7,10.8,"11,961",11,82
91 | 90,Maldives,0.747,79.9,12.6,7.3,"15,448",-14,97
92 | 91,Algeria,0.745,76.4,14.6,8.1,"10,800",13,96
93 | 91,Azerbaijan,0.745,69.4,13.5,10.5,"14,257",-8,100
94 | 91,Tonga,0.745,71.0,16.0,11.4,"6,822",34,90
95 | 91,Turkmenistan,0.745,69.3,13.2,11.3,"13,021",-1,93
96 | 95,Ecuador,0.740,73.7,14.6,8.8,"10,312",11,99
97 | 96,Mongolia,0.739,71.0,15.0,9.4,"10,588",9,90
98 | 97,Egypt,0.731,70.2,13.8,9.6,"11,732",4,97
99 | 97,Tunisia,0.731,73.8,15.4,7.4,"10,258",10,94
100 | 99,Fiji,0.730,67.1,14.7,10.9,"9,980",9,94
101 | 99,Suriname,0.730,70.3,13.0,9.8,"12,672",-6,92
102 | 101,Uzbekistan,0.727,70.9,12.5,11.9,"7,917",18,107
103 | 102,Dominica,0.720,72.8,13.3,8.1,"11,488",0,106
104 | 102,Jordan,0.720,74.3,10.6,10.4,"9,924",8,104
105 | 104,Libya,0.718,71.9,12.9,7.6,"15,336",-27,117
106 | 105,Paraguay,0.717,70.3,13.0,8.9,"12,349",-10,100
107 | 106,"Palestine, State of",0.715,73.5,13.4,9.9,"6,583",21,109
108 | 106,Saint Lucia,0.715,71.1,12.9,8.5,"12,048",-7,104
109 | 108,Guyana,0.714,65.7,12.5,8.6,"22,465",-47,107
110 | 109,South Africa,0.713,62.3,13.6,11.4,"12,948",-17,102
111 | 110,Jamaica,0.709,70.5,13.4,9.2,"8,834",4,110
112 | 111,Samoa,0.707,72.8,12.4,11.4,"5,308",24,112
113 | 112,Gabon,0.706,65.8,13.0,9.4,"13,367",-25,113
114 | 112,Lebanon,0.706,75.0,11.3,8.7,"9,526",-1,103
115 | 114,Indonesia,0.705,67.6,13.7,8.6,"11,466",-11,116
116 | 115,Viet Nam,0.703,73.6,13.0,8.4,"7,867",6,113
117 | 116,Philippines,0.699,69.3,13.1,9.0,"8,920",-3,113
118 | 117,Botswana,0.693,61.1,12.3,10.3,"16,198",-43,110
119 | 118,Bolivia (Plurinational State of),0.692,63.6,14.9,9.8,"8,111",0,119
120 | 118,Kyrgyzstan,0.692,70.0,13.2,11.4,"4,566",26,121
121 | 120,Venezuela (Bolivarian Republic of),0.691,70.6,12.8,11.1,"4,811",20,118
122 | 121,Iraq,0.686,70.4,12.1,7.9,"9,977",-12,122
123 | 122,Tajikistan,0.685,71.6,11.7,11.3,"4,548",23,126
124 | 123,Belize,0.683,70.5,13.0,8.8,"6,309",6,120
125 | 123,Morocco,0.683,74.0,14.2,5.9,"7,303",1,122
126 | 125,El Salvador,0.675,70.7,12.7,7.2,"8,296",-8,124
127 | 126,Nicaragua,0.667,73.8,12.6,7.1,"5,625",6,129
128 | 127,Bhutan,0.666,71.8,13.2,5.2,"9,438",-15,125
129 | 128,Cabo Verde,0.662,74.1,12.6,6.3,"6,230",2,127
130 | 129,Bangladesh,0.661,72.4,12.4,7.4,"5,472",4,128
131 | 130,Tuvalu,0.641,64.5,9.4,10.6,"6,351",-2,131
132 | 131,Marshall Islands,0.639,65.3,10.2,10.9,"4,620",12,131
133 | 132,India,0.633,67.2,11.9,6.7,"6,590",-6,130
134 | 133,Ghana,0.632,63.8,12.0,8.3,"5,745",-2,135
135 | 134,Micronesia (Federated States of),0.628,70.7,11.5,7.8,"3,696",22,136
136 | 135,Guatemala,0.627,69.2,10.6,5.7,"8,723",-20,133
137 | 136,Kiribati,0.624,67.4,11.8,8.0,"4,063",14,137
138 | 137,Honduras,0.621,70.1,10.1,7.1,"5,298",-1,138
139 | 138,Sao Tome and Principe,0.618,67.6,13.4,6.2,"4,021",13,139
140 | 139,Namibia,0.615,59.3,11.9,7.2,"8,634",-23,134
141 | 140,Lao People's Democratic Republic,0.607,68.1,10.1,5.4,"7,700",-18,142
142 | 140,Timor-Leste,0.607,67.7,12.6,5.4,"4,461",7,140
143 | 140,Vanuatu,0.607,70.4,11.5,7.1,"3,085",23,142
144 | 143,Nepal,0.602,68.4,12.9,5.1,"3,877",10,144
145 | 144,Eswatini (Kingdom of),0.597,57.1,13.7,5.6,"7,679",-21,141
146 | 145,Equatorial Guinea,0.596,60.6,9.7,5.9,"12,074",-47,147
147 | 146,Cambodia,0.593,69.6,11.5,5.1,"4,079",3,148
148 | 146,Zimbabwe,0.593,59.3,12.1,8.7,"3,810",9,145
149 | 148,Angola,0.586,61.6,12.2,5.4,"5,466",-14,149
150 | 149,Myanmar,0.585,65.7,10.9,6.4,"3,851",5,145
151 | 150,Syrian Arab Republic,0.577,72.1,9.2,5.1,"4,192",-2,152
152 | 151,Cameroon,0.576,60.3,13.1,6.2,"3,621",6,150
153 | 152,Kenya,0.575,61.4,10.7,6.7,"4,474",-6,150
154 | 153,Congo,0.571,63.5,12.3,6.2,"2,889",11,153
155 | 154,Zambia,0.565,61.2,10.9,7.2,"3,218",7,154
156 | 155,Solomon Islands,0.564,70.3,10.3,5.7,"2,482",13,155
157 | 156,Comoros,0.558,63.4,11.9,5.1,"3,142",6,156
158 | 156,Papua New Guinea,0.558,65.4,10.4,4.7,"4,009",-4,157
159 | 158,Mauritania,0.556,64.4,9.4,4.9,"5,075",-20,158
160 | 159,C�te d'Ivoire,0.550,58.6,10.7,5.2,"5,217",-22,159
161 | 160,Tanzania (United Republic of),0.549,66.2,9.2,6.4,"2,664",7,160
162 | 161,Pakistan,0.544,66.1,8.7,4.5,"4,624",-19,161
163 | 162,Togo,0.539,61.6,13.0,5.0,"2,167",12,163
164 | 163,Haiti,0.535,63.2,9.7,5.6,"2,848",2,162
165 | 163,Nigeria,0.535,52.7,10.1,7.2,"4,790",-22,163
166 | 165,Rwanda,0.534,66.1,11.2,4.4,"2,210",6,165
167 | 166,Benin,0.525,59.8,10.8,4.3,"3,409",-7,166
168 | 166,Uganda,0.525,62.7,10.1,5.7,"2,181",6,166
169 | 168,Lesotho,0.514,53.1,12.0,6.0,"2,700",-2,168
170 | 169,Malawi,0.512,62.9,12.7,4.5,"1,466",13,169
171 | 170,Senegal,0.511,67.1,9.0,2.9,"3,344",-10,170
172 | 171,Djibouti,0.509,62.3,7.4,4.1,"5,025",-32,171
173 | 172,Sudan,0.508,65.3,7.9,3.8,"3,575",-14,171
174 | 173,Madagascar,0.501,64.5,10.1,5.1,"1,484",8,173
175 | 174,Gambia,0.500,62.1,9.4,4.6,"2,172",-1,173
176 | 175,Ethiopia,0.498,65.0,9.7,3.2,"2,361",-5,175
177 | 176,Eritrea,0.492,66.5,8.1,4.9,"1,729",3,176
178 | 177,Guinea-Bissau,0.483,59.7,10.6,3.6,"1,908",0,177
179 | 178,Liberia,0.481,60.7,10.4,5.1,"1,289",7,179
180 | 179,Congo (Democratic Republic of the),0.479,59.2,9.8,7.0,"1,076",9,180
181 | 180,Afghanistan,0.478,62.0,10.3,3.0,"1,824",-2,177
182 | 181,Sierra Leone,0.477,60.1,9.6,4.6,"1,622",-1,181
183 | 182,Guinea,0.465,58.9,9.8,2.2,"2,481",-13,182
184 | 183,Yemen,0.455,63.8,9.1,3.2,"1,314",1,183
185 | 184,Burkina Faso,0.449,59.3,9.1,2.1,"2,118",-8,185
186 | 185,Mozambique,0.446,59.3,10.2,3.2,"1,198",2,184
187 | 186,Mali,0.428,58.9,7.4,2.3,"2,133",-11,186
188 | 187,Burundi,0.426,61.7,10.7,3.1,732,4,187
189 | 188,Central African Republic,0.404,53.9,8.0,4.3,966,1,188
190 | 189,Niger,0.400,61.6,7.0,2.1,"1,240",-3,189
191 | 190,Chad,0.394,52.5,8.0,2.6,"1,364",-7,190
192 | 191,South Sudan,0.385,55.0,5.5,5.7,768,-1,191
193 |
--------------------------------------------------------------------------------
/table_data/Housing_Price_Data.csv:
--------------------------------------------------------------------------------
1 | price,area,bedrooms,bathrooms,stories,mainroad,guestroom,basement,hotwaterheating,airconditioning,parking,prefarea,furnishingstatus
2 | 13300000,7420,4,2,3,yes,no,no,no,yes,2,yes,furnished
3 | 12250000,8960,4,4,4,yes,no,no,no,yes,3,no,furnished
4 | 12250000,9960,3,2,2,yes,no,yes,no,no,2,yes,semi-furnished
5 | 12215000,7500,4,2,2,yes,no,yes,no,yes,3,yes,furnished
6 | 11410000,7420,4,1,2,yes,yes,yes,no,yes,2,no,furnished
7 | 10850000,7500,3,3,1,yes,no,yes,no,yes,2,yes,semi-furnished
8 | 10150000,8580,4,3,4,yes,no,no,no,yes,2,yes,semi-furnished
9 | 10150000,16200,5,3,2,yes,no,no,no,no,0,no,unfurnished
10 | 9870000,8100,4,1,2,yes,yes,yes,no,yes,2,yes,furnished
11 | 9800000,5750,3,2,4,yes,yes,no,no,yes,1,yes,unfurnished
12 | 9800000,13200,3,1,2,yes,no,yes,no,yes,2,yes,furnished
13 | 9681000,6000,4,3,2,yes,yes,yes,yes,no,2,no,semi-furnished
14 | 9310000,6550,4,2,2,yes,no,no,no,yes,1,yes,semi-furnished
15 | 9240000,3500,4,2,2,yes,no,no,yes,no,2,no,furnished
16 | 9240000,7800,3,2,2,yes,no,no,no,no,0,yes,semi-furnished
17 | 9100000,6000,4,1,2,yes,no,yes,no,no,2,no,semi-furnished
18 | 9100000,6600,4,2,2,yes,yes,yes,no,yes,1,yes,unfurnished
19 | 8960000,8500,3,2,4,yes,no,no,no,yes,2,no,furnished
20 | 8890000,4600,3,2,2,yes,yes,no,no,yes,2,no,furnished
21 | 8855000,6420,3,2,2,yes,no,no,no,yes,1,yes,semi-furnished
22 | 8750000,4320,3,1,2,yes,no,yes,yes,no,2,no,semi-furnished
23 | 8680000,7155,3,2,1,yes,yes,yes,no,yes,2,no,unfurnished
24 | 8645000,8050,3,1,1,yes,yes,yes,no,yes,1,no,furnished
25 | 8645000,4560,3,2,2,yes,yes,yes,no,yes,1,no,furnished
26 | 8575000,8800,3,2,2,yes,no,no,no,yes,2,no,furnished
27 | 8540000,6540,4,2,2,yes,yes,yes,no,yes,2,yes,furnished
28 | 8463000,6000,3,2,4,yes,yes,yes,no,yes,0,yes,semi-furnished
29 | 8400000,8875,3,1,1,yes,no,no,no,no,1,no,semi-furnished
30 | 8400000,7950,5,2,2,yes,no,yes,yes,no,2,no,unfurnished
31 | 8400000,5500,4,2,2,yes,no,yes,no,yes,1,yes,semi-furnished
32 | 8400000,7475,3,2,4,yes,no,no,no,yes,2,no,unfurnished
33 | 8400000,7000,3,1,4,yes,no,no,no,yes,2,no,semi-furnished
34 | 8295000,4880,4,2,2,yes,no,no,no,yes,1,yes,furnished
35 | 8190000,5960,3,3,2,yes,yes,yes,no,no,1,no,unfurnished
36 | 8120000,6840,5,1,2,yes,yes,yes,no,yes,1,no,furnished
37 | 8080940,7000,3,2,4,yes,no,no,no,yes,2,no,furnished
38 | 8043000,7482,3,2,3,yes,no,no,yes,no,1,yes,furnished
39 | 7980000,9000,4,2,4,yes,no,no,no,yes,2,no,furnished
40 | 7962500,6000,3,1,4,yes,yes,no,no,yes,2,no,unfurnished
41 | 7910000,6000,4,2,4,yes,no,no,no,yes,1,no,semi-furnished
42 | 7875000,6550,3,1,2,yes,no,yes,no,yes,0,yes,furnished
43 | 7840000,6360,3,2,4,yes,no,no,no,yes,0,yes,furnished
44 | 7700000,6480,3,2,4,yes,no,no,no,yes,2,no,unfurnished
45 | 7700000,6000,4,2,4,yes,no,no,no,no,2,no,semi-furnished
46 | 7560000,6000,4,2,4,yes,no,no,no,yes,1,no,furnished
47 | 7560000,6000,3,2,3,yes,no,no,no,yes,0,no,semi-furnished
48 | 7525000,6000,3,2,4,yes,no,no,no,yes,1,no,furnished
49 | 7490000,6600,3,1,4,yes,no,no,no,yes,3,yes,furnished
50 | 7455000,4300,3,2,2,yes,no,yes,no,no,1,no,unfurnished
51 | 7420000,7440,3,2,1,yes,yes,yes,no,yes,0,yes,semi-furnished
52 | 7420000,7440,3,2,4,yes,no,no,no,no,1,yes,unfurnished
53 | 7420000,6325,3,1,4,yes,no,no,no,yes,1,no,unfurnished
54 | 7350000,6000,4,2,4,yes,yes,no,no,yes,1,no,furnished
55 | 7350000,5150,3,2,4,yes,no,no,no,yes,2,no,semi-furnished
56 | 7350000,6000,3,2,2,yes,yes,no,no,yes,1,no,semi-furnished
57 | 7350000,6000,3,1,2,yes,no,no,no,yes,1,no,unfurnished
58 | 7343000,11440,4,1,2,yes,no,yes,no,no,1,yes,semi-furnished
59 | 7245000,9000,4,2,4,yes,yes,no,no,yes,1,yes,furnished
60 | 7210000,7680,4,2,4,yes,yes,no,no,yes,1,no,semi-furnished
61 | 7210000,6000,3,2,4,yes,yes,no,no,yes,1,no,furnished
62 | 7140000,6000,3,2,2,yes,yes,no,no,no,1,no,semi-furnished
63 | 7070000,8880,2,1,1,yes,no,no,no,yes,1,no,semi-furnished
64 | 7070000,6240,4,2,2,yes,no,no,no,yes,1,no,furnished
65 | 7035000,6360,4,2,3,yes,no,no,no,yes,2,yes,furnished
66 | 7000000,11175,3,1,1,yes,no,yes,no,yes,1,yes,furnished
67 | 6930000,8880,3,2,2,yes,no,yes,no,yes,1,no,furnished
68 | 6930000,13200,2,1,1,yes,no,yes,yes,no,1,no,furnished
69 | 6895000,7700,3,2,1,yes,no,no,no,no,2,no,unfurnished
70 | 6860000,6000,3,1,1,yes,no,no,no,yes,1,no,furnished
71 | 6790000,12090,4,2,2,yes,no,no,no,no,2,yes,furnished
72 | 6790000,4000,3,2,2,yes,no,yes,no,yes,0,yes,semi-furnished
73 | 6755000,6000,4,2,4,yes,no,no,no,yes,0,no,unfurnished
74 | 6720000,5020,3,1,4,yes,no,no,no,yes,0,yes,unfurnished
75 | 6685000,6600,2,2,4,yes,no,yes,no,no,0,yes,furnished
76 | 6650000,4040,3,1,2,yes,no,yes,yes,no,1,no,furnished
77 | 6650000,4260,4,2,2,yes,no,no,yes,no,0,no,semi-furnished
78 | 6650000,6420,3,2,3,yes,no,no,no,yes,0,yes,furnished
79 | 6650000,6500,3,2,3,yes,no,no,no,yes,0,yes,furnished
80 | 6650000,5700,3,1,1,yes,yes,yes,no,yes,2,yes,furnished
81 | 6650000,6000,3,2,3,yes,yes,no,no,yes,0,no,furnished
82 | 6629000,6000,3,1,2,yes,no,no,yes,no,1,yes,semi-furnished
83 | 6615000,4000,3,2,2,yes,no,yes,no,yes,1,no,semi-furnished
84 | 6615000,10500,3,2,1,yes,no,yes,no,yes,1,yes,furnished
85 | 6580000,6000,3,2,4,yes,no,no,no,yes,0,no,semi-furnished
86 | 6510000,3760,3,1,2,yes,no,no,yes,no,2,no,semi-furnished
87 | 6510000,8250,3,2,3,yes,no,no,no,yes,0,no,furnished
88 | 6510000,6670,3,1,3,yes,no,yes,no,no,0,yes,unfurnished
89 | 6475000,3960,3,1,1,yes,no,yes,no,no,2,no,semi-furnished
90 | 6475000,7410,3,1,1,yes,yes,yes,no,yes,2,yes,unfurnished
91 | 6440000,8580,5,3,2,yes,no,no,no,no,2,no,furnished
92 | 6440000,5000,3,1,2,yes,no,no,no,yes,0,no,semi-furnished
93 | 6419000,6750,2,1,1,yes,yes,yes,no,no,2,yes,furnished
94 | 6405000,4800,3,2,4,yes,yes,no,no,yes,0,no,furnished
95 | 6300000,7200,3,2,1,yes,no,yes,no,yes,3,no,semi-furnished
96 | 6300000,6000,4,2,4,yes,no,no,no,no,1,no,semi-furnished
97 | 6300000,4100,3,2,3,yes,no,no,no,yes,2,no,semi-furnished
98 | 6300000,9000,3,1,1,yes,no,yes,no,no,1,yes,furnished
99 | 6300000,6400,3,1,1,yes,yes,yes,no,yes,1,yes,semi-furnished
100 | 6293000,6600,3,2,3,yes,no,no,no,yes,0,yes,unfurnished
101 | 6265000,6000,4,1,3,yes,yes,yes,no,no,0,yes,unfurnished
102 | 6230000,6600,3,2,1,yes,no,yes,no,yes,0,yes,unfurnished
103 | 6230000,5500,3,1,3,yes,no,no,no,no,1,yes,unfurnished
104 | 6195000,5500,3,2,4,yes,yes,no,no,yes,1,no,semi-furnished
105 | 6195000,6350,3,2,3,yes,yes,no,no,yes,0,no,furnished
106 | 6195000,5500,3,2,1,yes,yes,yes,no,no,2,yes,furnished
107 | 6160000,4500,3,1,4,yes,no,no,no,yes,0,no,unfurnished
108 | 6160000,5450,4,2,1,yes,no,yes,no,yes,0,yes,semi-furnished
109 | 6125000,6420,3,1,3,yes,no,yes,no,no,0,yes,unfurnished
110 | 6107500,3240,4,1,3,yes,no,no,no,no,1,no,semi-furnished
111 | 6090000,6615,4,2,2,yes,yes,no,yes,no,1,no,semi-furnished
112 | 6090000,6600,3,1,1,yes,yes,yes,no,no,2,yes,semi-furnished
113 | 6090000,8372,3,1,3,yes,no,no,no,yes,2,no,unfurnished
114 | 6083000,4300,6,2,2,yes,no,no,no,no,0,no,furnished
115 | 6083000,9620,3,1,1,yes,no,yes,no,no,2,yes,furnished
116 | 6020000,6800,2,1,1,yes,yes,yes,no,no,2,no,furnished
117 | 6020000,8000,3,1,1,yes,yes,yes,no,yes,2,yes,semi-furnished
118 | 6020000,6900,3,2,1,yes,yes,yes,no,no,0,yes,unfurnished
119 | 5950000,3700,4,1,2,yes,yes,no,no,yes,0,no,furnished
120 | 5950000,6420,3,1,1,yes,no,yes,no,yes,0,yes,furnished
121 | 5950000,7020,3,1,1,yes,no,yes,no,yes,2,yes,semi-furnished
122 | 5950000,6540,3,1,1,yes,yes,yes,no,no,2,yes,furnished
123 | 5950000,7231,3,1,2,yes,yes,yes,no,yes,0,yes,semi-furnished
124 | 5950000,6254,4,2,1,yes,no,yes,no,no,1,yes,semi-furnished
125 | 5950000,7320,4,2,2,yes,no,no,no,no,0,no,furnished
126 | 5950000,6525,3,2,4,yes,no,no,no,no,1,no,furnished
127 | 5943000,15600,3,1,1,yes,no,no,no,yes,2,no,semi-furnished
128 | 5880000,7160,3,1,1,yes,no,yes,no,no,2,yes,unfurnished
129 | 5880000,6500,3,2,3,yes,no,no,no,yes,0,no,unfurnished
130 | 5873000,5500,3,1,3,yes,yes,no,no,yes,1,no,furnished
131 | 5873000,11460,3,1,3,yes,no,no,no,no,2,yes,semi-furnished
132 | 5866000,4800,3,1,1,yes,yes,yes,no,no,0,no,unfurnished
133 | 5810000,5828,4,1,4,yes,yes,no,no,no,0,no,semi-furnished
134 | 5810000,5200,3,1,3,yes,no,no,no,yes,0,no,semi-furnished
135 | 5810000,4800,3,1,3,yes,no,no,no,yes,0,no,unfurnished
136 | 5803000,7000,3,1,1,yes,no,yes,no,no,2,yes,semi-furnished
137 | 5775000,6000,3,2,4,yes,no,no,no,yes,0,no,unfurnished
138 | 5740000,5400,4,2,2,yes,no,no,no,yes,2,no,unfurnished
139 | 5740000,4640,4,1,2,yes,no,no,no,no,1,no,semi-furnished
140 | 5740000,5000,3,1,3,yes,no,no,no,yes,0,no,semi-furnished
141 | 5740000,6360,3,1,1,yes,yes,yes,no,yes,2,yes,furnished
142 | 5740000,5800,3,2,4,yes,no,no,no,yes,0,no,unfurnished
143 | 5652500,6660,4,2,2,yes,yes,yes,no,no,1,yes,semi-furnished
144 | 5600000,10500,4,2,2,yes,no,no,no,no,1,no,semi-furnished
145 | 5600000,4800,5,2,3,no,no,yes,yes,no,0,no,unfurnished
146 | 5600000,4700,4,1,2,yes,yes,yes,no,yes,1,no,furnished
147 | 5600000,5000,3,1,4,yes,no,no,no,no,0,no,furnished
148 | 5600000,10500,2,1,1,yes,no,no,no,no,1,no,semi-furnished
149 | 5600000,5500,3,2,2,yes,no,no,no,no,1,no,semi-furnished
150 | 5600000,6360,3,1,3,yes,no,no,no,no,0,yes,semi-furnished
151 | 5600000,6600,4,2,1,yes,no,yes,no,no,0,yes,semi-furnished
152 | 5600000,5136,3,1,2,yes,yes,yes,no,yes,0,yes,unfurnished
153 | 5565000,4400,4,1,2,yes,no,no,no,yes,2,yes,semi-furnished
154 | 5565000,5400,5,1,2,yes,yes,yes,no,yes,0,yes,furnished
155 | 5530000,3300,3,3,2,yes,no,yes,no,no,0,no,semi-furnished
156 | 5530000,3650,3,2,2,yes,no,no,no,no,2,no,semi-furnished
157 | 5530000,6100,3,2,1,yes,no,yes,no,no,2,yes,furnished
158 | 5523000,6900,3,1,1,yes,yes,yes,no,no,0,yes,semi-furnished
159 | 5495000,2817,4,2,2,no,yes,yes,no,no,1,no,furnished
160 | 5495000,7980,3,1,1,yes,no,no,no,no,2,no,semi-furnished
161 | 5460000,3150,3,2,1,yes,yes,yes,no,yes,0,no,furnished
162 | 5460000,6210,4,1,4,yes,yes,no,no,yes,0,no,furnished
163 | 5460000,6100,3,1,3,yes,yes,no,no,yes,0,yes,semi-furnished
164 | 5460000,6600,4,2,2,yes,yes,yes,no,no,0,yes,semi-furnished
165 | 5425000,6825,3,1,1,yes,yes,yes,no,yes,0,yes,semi-furnished
166 | 5390000,6710,3,2,2,yes,yes,yes,no,no,1,yes,furnished
167 | 5383000,6450,3,2,1,yes,yes,yes,yes,no,0,no,unfurnished
168 | 5320000,7800,3,1,1,yes,no,yes,no,yes,2,yes,unfurnished
169 | 5285000,4600,2,2,1,yes,no,no,no,yes,2,no,semi-furnished
170 | 5250000,4260,4,1,2,yes,no,yes,no,yes,0,no,furnished
171 | 5250000,6540,4,2,2,no,no,no,no,yes,0,no,semi-furnished
172 | 5250000,5500,3,2,1,yes,no,yes,no,no,0,no,semi-furnished
173 | 5250000,10269,3,1,1,yes,no,no,no,no,1,yes,semi-furnished
174 | 5250000,8400,3,1,2,yes,yes,yes,no,yes,2,yes,unfurnished
175 | 5250000,5300,4,2,1,yes,no,no,no,yes,0,yes,unfurnished
176 | 5250000,3800,3,1,2,yes,yes,yes,no,no,1,yes,unfurnished
177 | 5250000,9800,4,2,2,yes,yes,no,no,no,2,no,semi-furnished
178 | 5250000,8520,3,1,1,yes,no,no,no,yes,2,no,furnished
179 | 5243000,6050,3,1,1,yes,no,yes,no,no,0,yes,semi-furnished
180 | 5229000,7085,3,1,1,yes,yes,yes,no,no,2,yes,semi-furnished
181 | 5215000,3180,3,2,2,yes,no,no,no,no,2,no,semi-furnished
182 | 5215000,4500,4,2,1,no,no,yes,no,yes,2,no,semi-furnished
183 | 5215000,7200,3,1,2,yes,yes,yes,no,no,1,yes,furnished
184 | 5145000,3410,3,1,2,no,no,no,no,yes,0,no,semi-furnished
185 | 5145000,7980,3,1,1,yes,no,no,no,no,1,yes,semi-furnished
186 | 5110000,3000,3,2,2,yes,yes,yes,no,no,0,no,furnished
187 | 5110000,3000,3,1,2,yes,no,yes,no,no,0,no,unfurnished
188 | 5110000,11410,2,1,2,yes,no,no,no,no,0,yes,furnished
189 | 5110000,6100,3,1,1,yes,no,yes,no,yes,0,yes,semi-furnished
190 | 5075000,5720,2,1,2,yes,no,no,no,yes,0,yes,unfurnished
191 | 5040000,3540,2,1,1,no,yes,yes,no,no,0,no,semi-furnished
192 | 5040000,7600,4,1,2,yes,no,no,no,yes,2,no,furnished
193 | 5040000,10700,3,1,2,yes,yes,yes,no,no,0,no,semi-furnished
194 | 5040000,6600,3,1,1,yes,yes,yes,no,no,0,yes,furnished
195 | 5033000,4800,2,1,1,yes,yes,yes,no,no,0,no,semi-furnished
196 | 5005000,8150,3,2,1,yes,yes,yes,no,no,0,no,semi-furnished
197 | 4970000,4410,4,3,2,yes,no,yes,no,no,2,no,semi-furnished
198 | 4970000,7686,3,1,1,yes,yes,yes,yes,no,0,no,semi-furnished
199 | 4956000,2800,3,2,2,no,no,yes,no,yes,1,no,semi-furnished
200 | 4935000,5948,3,1,2,yes,no,no,no,yes,0,no,semi-furnished
201 | 4907000,4200,3,1,2,yes,no,no,no,no,1,no,furnished
202 | 4900000,4520,3,1,2,yes,no,yes,no,yes,0,no,semi-furnished
203 | 4900000,4095,3,1,2,no,yes,yes,no,yes,0,no,semi-furnished
204 | 4900000,4120,2,1,1,yes,no,yes,no,no,1,no,semi-furnished
205 | 4900000,5400,4,1,2,yes,no,no,no,no,0,no,semi-furnished
206 | 4900000,4770,3,1,1,yes,yes,yes,no,no,0,no,semi-furnished
207 | 4900000,6300,3,1,1,yes,no,no,no,yes,2,no,semi-furnished
208 | 4900000,5800,2,1,1,yes,yes,yes,no,yes,0,no,semi-furnished
209 | 4900000,3000,3,1,2,yes,no,yes,no,yes,0,no,semi-furnished
210 | 4900000,2970,3,1,3,yes,no,no,no,no,0,no,semi-furnished
211 | 4900000,6720,3,1,1,yes,no,no,no,no,0,no,unfurnished
212 | 4900000,4646,3,1,2,yes,yes,yes,no,no,2,no,semi-furnished
213 | 4900000,12900,3,1,1,yes,no,no,no,no,2,no,furnished
214 | 4893000,3420,4,2,2,yes,no,yes,no,yes,2,no,semi-furnished
215 | 4893000,4995,4,2,1,yes,no,yes,no,no,0,no,semi-furnished
216 | 4865000,4350,2,1,1,yes,no,yes,no,no,0,no,unfurnished
217 | 4830000,4160,3,1,3,yes,no,no,no,no,0,no,unfurnished
218 | 4830000,6040,3,1,1,yes,no,no,no,no,2,yes,semi-furnished
219 | 4830000,6862,3,1,2,yes,no,no,no,yes,2,yes,furnished
220 | 4830000,4815,2,1,1,yes,no,no,no,yes,0,yes,semi-furnished
221 | 4795000,7000,3,1,2,yes,no,yes,no,no,0,no,unfurnished
222 | 4795000,8100,4,1,4,yes,no,yes,no,yes,2,no,semi-furnished
223 | 4767000,3420,4,2,2,yes,no,no,no,no,0,no,semi-furnished
224 | 4760000,9166,2,1,1,yes,no,yes,no,yes,2,no,semi-furnished
225 | 4760000,6321,3,1,2,yes,no,yes,no,yes,1,no,furnished
226 | 4760000,10240,2,1,1,yes,no,no,no,yes,2,yes,unfurnished
227 | 4753000,6440,2,1,1,yes,no,no,no,yes,3,no,semi-furnished
228 | 4690000,5170,3,1,4,yes,no,no,no,yes,0,no,semi-furnished
229 | 4690000,6000,2,1,1,yes,no,yes,no,yes,1,no,furnished
230 | 4690000,3630,3,1,2,yes,no,no,no,no,2,no,semi-furnished
231 | 4690000,9667,4,2,2,yes,yes,yes,no,no,1,no,semi-furnished
232 | 4690000,5400,2,1,2,yes,no,no,no,no,0,yes,semi-furnished
233 | 4690000,4320,3,1,1,yes,no,no,no,no,0,yes,semi-furnished
234 | 4655000,3745,3,1,2,yes,no,yes,no,no,0,no,furnished
235 | 4620000,4160,3,1,1,yes,yes,yes,no,yes,0,no,unfurnished
236 | 4620000,3880,3,2,2,yes,no,yes,no,no,2,no,semi-furnished
237 | 4620000,5680,3,1,2,yes,yes,no,no,yes,1,no,semi-furnished
238 | 4620000,2870,2,1,2,yes,yes,yes,no,no,0,yes,semi-furnished
239 | 4620000,5010,3,1,2,yes,no,yes,no,no,0,no,semi-furnished
240 | 4613000,4510,4,2,2,yes,no,yes,no,no,0,no,semi-furnished
241 | 4585000,4000,3,1,2,yes,no,no,no,no,1,no,furnished
242 | 4585000,3840,3,1,2,yes,no,no,no,no,1,yes,semi-furnished
243 | 4550000,3760,3,1,1,yes,no,no,no,no,2,no,semi-furnished
244 | 4550000,3640,3,1,2,yes,no,no,no,yes,0,no,furnished
245 | 4550000,2550,3,1,2,yes,no,yes,no,no,0,no,furnished
246 | 4550000,5320,3,1,2,yes,yes,yes,no,no,0,yes,semi-furnished
247 | 4550000,5360,3,1,2,yes,no,no,no,no,2,yes,unfurnished
248 | 4550000,3520,3,1,1,yes,no,no,no,no,0,yes,semi-furnished
249 | 4550000,8400,4,1,4,yes,no,no,no,no,3,no,unfurnished
250 | 4543000,4100,2,2,1,yes,yes,yes,no,no,0,no,semi-furnished
251 | 4543000,4990,4,2,2,yes,yes,yes,no,no,0,yes,furnished
252 | 4515000,3510,3,1,3,yes,no,no,no,no,0,no,semi-furnished
253 | 4515000,3450,3,1,2,yes,no,yes,no,no,1,no,semi-furnished
254 | 4515000,9860,3,1,1,yes,no,no,no,no,0,no,semi-furnished
255 | 4515000,3520,2,1,2,yes,no,no,no,no,0,yes,furnished
256 | 4480000,4510,4,1,2,yes,no,no,no,yes,2,no,semi-furnished
257 | 4480000,5885,2,1,1,yes,no,no,no,yes,1,no,unfurnished
258 | 4480000,4000,3,1,2,yes,no,no,no,no,2,no,furnished
259 | 4480000,8250,3,1,1,yes,no,no,no,no,0,no,furnished
260 | 4480000,4040,3,1,2,yes,no,no,no,no,1,no,semi-furnished
261 | 4473000,6360,2,1,1,yes,no,yes,no,yes,1,no,furnished
262 | 4473000,3162,3,1,2,yes,no,no,no,yes,1,no,furnished
263 | 4473000,3510,3,1,2,yes,no,no,no,no,0,no,semi-furnished
264 | 4445000,3750,2,1,1,yes,yes,yes,no,no,0,no,semi-furnished
265 | 4410000,3968,3,1,2,no,no,no,no,no,0,no,semi-furnished
266 | 4410000,4900,2,1,2,yes,no,yes,no,no,0,no,semi-furnished
267 | 4403000,2880,3,1,2,yes,no,no,no,no,0,yes,semi-furnished
268 | 4403000,4880,3,1,1,yes,no,no,no,no,2,yes,unfurnished
269 | 4403000,4920,3,1,2,yes,no,no,no,no,1,no,semi-furnished
270 | 4382000,4950,4,1,2,yes,no,no,no,yes,0,no,semi-furnished
271 | 4375000,3900,3,1,2,yes,no,no,no,no,0,no,unfurnished
272 | 4340000,4500,3,2,3,yes,no,no,yes,no,1,no,furnished
273 | 4340000,1905,5,1,2,no,no,yes,no,no,0,no,semi-furnished
274 | 4340000,4075,3,1,1,yes,yes,yes,no,no,2,no,semi-furnished
275 | 4340000,3500,4,1,2,yes,no,no,no,no,2,no,furnished
276 | 4340000,6450,4,1,2,yes,no,no,no,no,0,no,semi-furnished
277 | 4319000,4032,2,1,1,yes,no,yes,no,no,0,no,furnished
278 | 4305000,4400,2,1,1,yes,no,no,no,no,1,no,semi-furnished
279 | 4305000,10360,2,1,1,yes,no,no,no,no,1,yes,semi-furnished
280 | 4277000,3400,3,1,2,yes,no,yes,no,no,2,yes,semi-furnished
281 | 4270000,6360,2,1,1,yes,no,no,no,no,0,no,furnished
282 | 4270000,6360,2,1,2,yes,no,no,no,no,0,no,unfurnished
283 | 4270000,4500,2,1,1,yes,no,no,no,yes,2,no,furnished
284 | 4270000,2175,3,1,2,no,yes,yes,no,yes,0,no,unfurnished
285 | 4270000,4360,4,1,2,yes,no,no,no,no,0,no,furnished
286 | 4270000,7770,2,1,1,yes,no,no,no,no,1,no,furnished
287 | 4235000,6650,3,1,2,yes,yes,no,no,no,0,no,semi-furnished
288 | 4235000,2787,3,1,1,yes,no,yes,no,no,0,yes,furnished
289 | 4200000,5500,3,1,2,yes,no,no,no,yes,0,no,unfurnished
290 | 4200000,5040,3,1,2,yes,no,yes,no,yes,0,no,unfurnished
291 | 4200000,5850,2,1,1,yes,yes,yes,no,no,2,no,semi-furnished
292 | 4200000,2610,4,3,2,no,no,no,no,no,0,no,semi-furnished
293 | 4200000,2953,3,1,2,yes,no,yes,no,yes,0,no,unfurnished
294 | 4200000,2747,4,2,2,no,no,no,no,no,0,no,semi-furnished
295 | 4200000,4410,2,1,1,no,no,no,no,no,1,no,unfurnished
296 | 4200000,4000,4,2,2,no,no,no,no,no,0,no,semi-furnished
297 | 4200000,2325,3,1,2,no,no,no,no,no,0,no,semi-furnished
298 | 4200000,4600,3,2,2,yes,no,no,no,yes,1,no,semi-furnished
299 | 4200000,3640,3,2,2,yes,no,yes,no,no,0,no,unfurnished
300 | 4200000,5800,3,1,1,yes,no,no,yes,no,2,no,semi-furnished
301 | 4200000,7000,3,1,1,yes,no,no,no,no,3,no,furnished
302 | 4200000,4079,3,1,3,yes,no,no,no,no,0,no,semi-furnished
303 | 4200000,3520,3,1,2,yes,no,no,no,no,0,yes,semi-furnished
304 | 4200000,2145,3,1,3,yes,no,no,no,no,1,yes,unfurnished
305 | 4200000,4500,3,1,1,yes,no,yes,no,no,0,no,furnished
306 | 4193000,8250,3,1,1,yes,no,yes,no,no,3,no,semi-furnished
307 | 4193000,3450,3,1,2,yes,no,no,no,no,1,no,semi-furnished
308 | 4165000,4840,3,1,2,yes,no,no,no,no,1,no,semi-furnished
309 | 4165000,4080,3,1,2,yes,no,no,no,no,2,no,semi-furnished
310 | 4165000,4046,3,1,2,yes,no,yes,no,no,1,no,semi-furnished
311 | 4130000,4632,4,1,2,yes,no,no,no,yes,0,no,semi-furnished
312 | 4130000,5985,3,1,1,yes,no,yes,no,no,0,no,semi-furnished
313 | 4123000,6060,2,1,1,yes,no,yes,no,no,1,no,semi-furnished
314 | 4098500,3600,3,1,1,yes,no,yes,no,yes,0,yes,furnished
315 | 4095000,3680,3,2,2,yes,no,no,no,no,0,no,semi-furnished
316 | 4095000,4040,2,1,2,yes,no,no,no,no,1,no,semi-furnished
317 | 4095000,5600,2,1,1,yes,no,no,no,yes,0,no,semi-furnished
318 | 4060000,5900,4,2,2,no,no,yes,no,no,1,no,unfurnished
319 | 4060000,4992,3,2,2,yes,no,no,no,no,2,no,unfurnished
320 | 4060000,4340,3,1,1,yes,no,no,no,no,0,no,semi-furnished
321 | 4060000,3000,4,1,3,yes,no,yes,no,yes,2,no,semi-furnished
322 | 4060000,4320,3,1,2,yes,no,no,no,no,2,yes,furnished
323 | 4025000,3630,3,2,2,yes,no,no,yes,no,2,no,semi-furnished
324 | 4025000,3460,3,2,1,yes,no,yes,no,yes,1,no,furnished
325 | 4025000,5400,3,1,1,yes,no,no,no,no,3,no,semi-furnished
326 | 4007500,4500,3,1,2,no,no,yes,no,yes,0,no,semi-furnished
327 | 4007500,3460,4,1,2,yes,no,no,no,yes,0,no,semi-furnished
328 | 3990000,4100,4,1,1,no,no,yes,no,no,0,no,unfurnished
329 | 3990000,6480,3,1,2,no,no,no,no,yes,1,no,semi-furnished
330 | 3990000,4500,3,2,2,no,no,yes,no,yes,0,no,semi-furnished
331 | 3990000,3960,3,1,2,yes,no,no,no,no,0,no,furnished
332 | 3990000,4050,2,1,2,yes,yes,yes,no,no,0,yes,unfurnished
333 | 3920000,7260,3,2,1,yes,yes,yes,no,no,3,no,furnished
334 | 3920000,5500,4,1,2,yes,yes,yes,no,no,0,no,semi-furnished
335 | 3920000,3000,3,1,2,yes,no,no,no,no,0,no,semi-furnished
336 | 3920000,3290,2,1,1,yes,no,no,yes,no,1,no,furnished
337 | 3920000,3816,2,1,1,yes,no,yes,no,yes,2,no,furnished
338 | 3920000,8080,3,1,1,yes,no,no,no,yes,2,no,semi-furnished
339 | 3920000,2145,4,2,1,yes,no,yes,no,no,0,yes,unfurnished
340 | 3885000,3780,2,1,2,yes,yes,yes,no,no,0,no,semi-furnished
341 | 3885000,3180,4,2,2,yes,no,no,no,no,0,no,furnished
342 | 3850000,5300,5,2,2,yes,no,no,no,no,0,no,semi-furnished
343 | 3850000,3180,2,2,1,yes,no,yes,no,no,2,no,semi-furnished
344 | 3850000,7152,3,1,2,yes,no,no,no,yes,0,no,furnished
345 | 3850000,4080,2,1,1,yes,no,no,no,no,0,no,semi-furnished
346 | 3850000,3850,2,1,1,yes,no,no,no,no,0,no,semi-furnished
347 | 3850000,2015,3,1,2,yes,no,yes,no,no,0,yes,semi-furnished
348 | 3850000,2176,2,1,2,yes,yes,no,no,no,0,yes,semi-furnished
349 | 3836000,3350,3,1,2,yes,no,no,no,no,0,no,unfurnished
350 | 3815000,3150,2,2,1,no,no,yes,no,no,0,no,semi-furnished
351 | 3780000,4820,3,1,2,yes,no,no,no,no,0,no,semi-furnished
352 | 3780000,3420,2,1,2,yes,no,no,yes,no,1,no,semi-furnished
353 | 3780000,3600,2,1,1,yes,no,no,no,no,0,no,semi-furnished
354 | 3780000,5830,2,1,1,yes,no,no,no,no,2,no,unfurnished
355 | 3780000,2856,3,1,3,yes,no,no,no,no,0,yes,furnished
356 | 3780000,8400,2,1,1,yes,no,no,no,no,1,no,furnished
357 | 3773000,8250,3,1,1,yes,no,no,no,no,2,no,furnished
358 | 3773000,2520,5,2,1,no,no,yes,no,yes,1,no,furnished
359 | 3773000,6930,4,1,2,no,no,no,no,no,1,no,furnished
360 | 3745000,3480,2,1,1,yes,no,no,no,no,0,yes,semi-furnished
361 | 3710000,3600,3,1,1,yes,no,no,no,no,1,no,unfurnished
362 | 3710000,4040,2,1,1,yes,no,no,no,no,0,no,semi-furnished
363 | 3710000,6020,3,1,1,yes,no,no,no,no,0,no,semi-furnished
364 | 3710000,4050,2,1,1,yes,no,no,no,no,0,no,furnished
365 | 3710000,3584,2,1,1,yes,no,no,yes,no,0,no,semi-furnished
366 | 3703000,3120,3,1,2,no,no,yes,yes,no,0,no,semi-furnished
367 | 3703000,5450,2,1,1,yes,no,no,no,no,0,no,furnished
368 | 3675000,3630,2,1,1,yes,no,yes,no,no,0,no,furnished
369 | 3675000,3630,2,1,1,yes,no,no,no,yes,0,no,unfurnished
370 | 3675000,5640,2,1,1,no,no,no,no,no,0,no,semi-furnished
371 | 3675000,3600,2,1,1,yes,no,no,no,no,0,no,furnished
372 | 3640000,4280,2,1,1,yes,no,no,no,yes,2,no,semi-furnished
373 | 3640000,3570,3,1,2,yes,no,yes,no,no,0,no,semi-furnished
374 | 3640000,3180,3,1,2,no,no,yes,no,no,0,no,semi-furnished
375 | 3640000,3000,2,1,2,yes,no,no,no,yes,0,no,furnished
376 | 3640000,3520,2,2,1,yes,no,yes,no,no,0,no,semi-furnished
377 | 3640000,5960,3,1,2,yes,yes,yes,no,no,0,no,unfurnished
378 | 3640000,4130,3,2,2,yes,no,no,no,no,2,no,semi-furnished
379 | 3640000,2850,3,2,2,no,no,yes,no,no,0,yes,unfurnished
380 | 3640000,2275,3,1,3,yes,no,no,yes,yes,0,yes,semi-furnished
381 | 3633000,3520,3,1,1,yes,no,no,no,no,2,yes,unfurnished
382 | 3605000,4500,2,1,1,yes,no,no,no,no,0,no,semi-furnished
383 | 3605000,4000,2,1,1,yes,no,no,no,no,0,yes,semi-furnished
384 | 3570000,3150,3,1,2,yes,no,yes,no,no,0,no,furnished
385 | 3570000,4500,4,2,2,yes,no,yes,no,no,2,no,furnished
386 | 3570000,4500,2,1,1,no,no,no,no,no,0,no,furnished
387 | 3570000,3640,2,1,1,yes,no,no,no,no,0,no,unfurnished
388 | 3535000,3850,3,1,1,yes,no,no,no,no,2,no,unfurnished
389 | 3500000,4240,3,1,2,yes,no,no,no,yes,0,no,semi-furnished
390 | 3500000,3650,3,1,2,yes,no,no,no,no,0,no,unfurnished
391 | 3500000,4600,4,1,2,yes,no,no,no,no,0,no,semi-furnished
392 | 3500000,2135,3,2,2,no,no,no,no,no,0,no,unfurnished
393 | 3500000,3036,3,1,2,yes,no,yes,no,no,0,no,semi-furnished
394 | 3500000,3990,3,1,2,yes,no,no,no,no,0,no,semi-furnished
395 | 3500000,7424,3,1,1,no,no,no,no,no,0,no,unfurnished
396 | 3500000,3480,3,1,1,no,no,no,no,yes,0,no,unfurnished
397 | 3500000,3600,6,1,2,yes,no,no,no,no,1,no,unfurnished
398 | 3500000,3640,2,1,1,yes,no,no,no,no,1,no,semi-furnished
399 | 3500000,5900,2,1,1,yes,no,no,no,no,1,no,furnished
400 | 3500000,3120,3,1,2,yes,no,no,no,no,1,no,unfurnished
401 | 3500000,7350,2,1,1,yes,no,no,no,no,1,no,semi-furnished
402 | 3500000,3512,2,1,1,yes,no,no,no,no,1,yes,unfurnished
403 | 3500000,9500,3,1,2,yes,no,no,no,no,3,yes,unfurnished
404 | 3500000,5880,2,1,1,yes,no,no,no,no,0,no,unfurnished
405 | 3500000,12944,3,1,1,yes,no,no,no,no,0,no,unfurnished
406 | 3493000,4900,3,1,2,no,no,no,no,no,0,no,unfurnished
407 | 3465000,3060,3,1,1,yes,no,no,no,no,0,no,unfurnished
408 | 3465000,5320,2,1,1,yes,no,no,no,no,1,yes,unfurnished
409 | 3465000,2145,3,1,3,yes,no,no,no,no,0,yes,furnished
410 | 3430000,4000,2,1,1,yes,no,no,no,no,0,no,unfurnished
411 | 3430000,3185,2,1,1,yes,no,no,no,no,2,no,unfurnished
412 | 3430000,3850,3,1,1,yes,no,no,no,no,0,no,unfurnished
413 | 3430000,2145,3,1,3,yes,no,no,no,no,0,yes,furnished
414 | 3430000,2610,3,1,2,yes,no,yes,no,no,0,yes,unfurnished
415 | 3430000,1950,3,2,2,yes,no,yes,no,no,0,yes,unfurnished
416 | 3423000,4040,2,1,1,yes,no,no,no,no,0,no,unfurnished
417 | 3395000,4785,3,1,2,yes,yes,yes,no,yes,1,no,furnished
418 | 3395000,3450,3,1,1,yes,no,yes,no,no,2,no,unfurnished
419 | 3395000,3640,2,1,1,yes,no,no,no,no,0,no,furnished
420 | 3360000,3500,4,1,2,yes,no,no,no,yes,2,no,unfurnished
421 | 3360000,4960,4,1,3,no,no,no,no,no,0,no,semi-furnished
422 | 3360000,4120,2,1,2,yes,no,no,no,no,0,no,unfurnished
423 | 3360000,4750,2,1,1,yes,no,no,no,no,0,no,unfurnished
424 | 3360000,3720,2,1,1,no,no,no,no,yes,0,no,unfurnished
425 | 3360000,3750,3,1,1,yes,no,no,no,no,0,no,unfurnished
426 | 3360000,3100,3,1,2,no,no,yes,no,no,0,no,semi-furnished
427 | 3360000,3185,2,1,1,yes,no,yes,no,no,2,no,furnished
428 | 3353000,2700,3,1,1,no,no,no,no,no,0,no,furnished
429 | 3332000,2145,3,1,2,yes,no,yes,no,no,0,yes,furnished
430 | 3325000,4040,2,1,1,yes,no,no,no,no,1,no,unfurnished
431 | 3325000,4775,4,1,2,yes,no,no,no,no,0,no,unfurnished
432 | 3290000,2500,2,1,1,no,no,no,no,yes,0,no,unfurnished
433 | 3290000,3180,4,1,2,yes,no,yes,no,yes,0,no,unfurnished
434 | 3290000,6060,3,1,1,yes,yes,yes,no,no,0,no,furnished
435 | 3290000,3480,4,1,2,no,no,no,no,no,1,no,semi-furnished
436 | 3290000,3792,4,1,2,yes,no,no,no,no,0,no,semi-furnished
437 | 3290000,4040,2,1,1,yes,no,no,no,no,0,no,unfurnished
438 | 3290000,2145,3,1,2,yes,no,yes,no,no,0,yes,furnished
439 | 3290000,5880,3,1,1,yes,no,no,no,no,1,no,unfurnished
440 | 3255000,4500,2,1,1,no,no,no,no,no,0,no,semi-furnished
441 | 3255000,3930,2,1,1,no,no,no,no,no,0,no,unfurnished
442 | 3234000,3640,4,1,2,yes,no,yes,no,no,0,no,unfurnished
443 | 3220000,4370,3,1,2,yes,no,no,no,no,0,no,unfurnished
444 | 3220000,2684,2,1,1,yes,no,no,no,yes,1,no,unfurnished
445 | 3220000,4320,3,1,1,no,no,no,no,no,1,no,unfurnished
446 | 3220000,3120,3,1,2,no,no,no,no,no,0,no,furnished
447 | 3150000,3450,1,1,1,yes,no,no,no,no,0,no,furnished
448 | 3150000,3986,2,2,1,no,yes,yes,no,no,1,no,unfurnished
449 | 3150000,3500,2,1,1,no,no,yes,no,no,0,no,semi-furnished
450 | 3150000,4095,2,1,1,yes,no,no,no,no,2,no,semi-furnished
451 | 3150000,1650,3,1,2,no,no,yes,no,no,0,no,unfurnished
452 | 3150000,3450,3,1,2,yes,no,yes,no,no,0,no,semi-furnished
453 | 3150000,6750,2,1,1,yes,no,no,no,no,0,no,semi-furnished
454 | 3150000,9000,3,1,2,yes,no,no,no,no,2,no,semi-furnished
455 | 3150000,3069,2,1,1,yes,no,no,no,no,1,no,unfurnished
456 | 3143000,4500,3,1,2,yes,no,no,no,yes,0,no,unfurnished
457 | 3129000,5495,3,1,1,yes,no,yes,no,no,0,no,unfurnished
458 | 3118850,2398,3,1,1,yes,no,no,no,no,0,yes,semi-furnished
459 | 3115000,3000,3,1,1,no,no,no,no,yes,0,no,unfurnished
460 | 3115000,3850,3,1,2,yes,no,no,no,no,0,no,unfurnished
461 | 3115000,3500,2,1,1,yes,no,no,no,no,0,no,unfurnished
462 | 3087000,8100,2,1,1,yes,no,no,no,no,1,no,unfurnished
463 | 3080000,4960,2,1,1,yes,no,yes,no,yes,0,no,unfurnished
464 | 3080000,2160,3,1,2,no,no,yes,no,no,0,no,semi-furnished
465 | 3080000,3090,2,1,1,yes,yes,yes,no,no,0,no,unfurnished
466 | 3080000,4500,2,1,2,yes,no,no,yes,no,1,no,semi-furnished
467 | 3045000,3800,2,1,1,yes,no,no,no,no,0,no,unfurnished
468 | 3010000,3090,3,1,2,no,no,no,no,no,0,no,semi-furnished
469 | 3010000,3240,3,1,2,yes,no,no,no,no,2,no,semi-furnished
470 | 3010000,2835,2,1,1,yes,no,no,no,no,0,no,semi-furnished
471 | 3010000,4600,2,1,1,yes,no,no,no,no,0,no,furnished
472 | 3010000,5076,3,1,1,no,no,no,no,no,0,no,unfurnished
473 | 3010000,3750,3,1,2,yes,no,no,no,no,0,no,unfurnished
474 | 3010000,3630,4,1,2,yes,no,no,no,no,3,no,semi-furnished
475 | 3003000,8050,2,1,1,yes,no,no,no,no,0,no,unfurnished
476 | 2975000,4352,4,1,2,no,no,no,no,no,1,no,unfurnished
477 | 2961000,3000,2,1,2,yes,no,no,no,no,0,no,semi-furnished
478 | 2940000,5850,3,1,2,yes,no,yes,no,no,1,no,unfurnished
479 | 2940000,4960,2,1,1,yes,no,no,no,no,0,no,unfurnished
480 | 2940000,3600,3,1,2,no,no,no,no,no,1,no,unfurnished
481 | 2940000,3660,4,1,2,no,no,no,no,no,0,no,unfurnished
482 | 2940000,3480,3,1,2,no,no,no,no,no,1,no,semi-furnished
483 | 2940000,2700,2,1,1,no,no,no,no,no,0,no,furnished
484 | 2940000,3150,3,1,2,no,no,no,no,no,0,no,unfurnished
485 | 2940000,6615,3,1,2,yes,no,no,no,no,0,no,semi-furnished
486 | 2870000,3040,2,1,1,no,no,no,no,no,0,no,unfurnished
487 | 2870000,3630,2,1,1,yes,no,no,no,no,0,no,unfurnished
488 | 2870000,6000,2,1,1,yes,no,no,no,no,0,no,semi-furnished
489 | 2870000,5400,4,1,2,yes,no,no,no,no,0,no,unfurnished
490 | 2852500,5200,4,1,3,yes,no,no,no,no,0,no,unfurnished
491 | 2835000,3300,3,1,2,no,no,no,no,no,1,no,semi-furnished
492 | 2835000,4350,3,1,2,no,no,no,yes,no,1,no,unfurnished
493 | 2835000,2640,2,1,1,no,no,no,no,no,1,no,furnished
494 | 2800000,2650,3,1,2,yes,no,yes,no,no,1,no,unfurnished
495 | 2800000,3960,3,1,1,yes,no,no,no,no,0,no,furnished
496 | 2730000,6800,2,1,1,yes,no,no,no,no,0,no,unfurnished
497 | 2730000,4000,3,1,2,yes,no,no,no,no,1,no,unfurnished
498 | 2695000,4000,2,1,1,yes,no,no,no,no,0,no,unfurnished
499 | 2660000,3934,2,1,1,yes,no,no,no,no,0,no,unfurnished
500 | 2660000,2000,2,1,2,yes,no,no,no,no,0,no,semi-furnished
501 | 2660000,3630,3,3,2,no,yes,no,no,no,0,no,unfurnished
502 | 2660000,2800,3,1,1,yes,no,no,no,no,0,no,unfurnished
503 | 2660000,2430,3,1,1,no,no,no,no,no,0,no,unfurnished
504 | 2660000,3480,2,1,1,yes,no,no,no,no,1,no,semi-furnished
505 | 2660000,4000,3,1,1,yes,no,no,no,no,0,no,semi-furnished
506 | 2653000,3185,2,1,1,yes,no,no,no,yes,0,no,unfurnished
507 | 2653000,4000,3,1,2,yes,no,no,no,yes,0,no,unfurnished
508 | 2604000,2910,2,1,1,no,no,no,no,no,0,no,unfurnished
509 | 2590000,3600,2,1,1,yes,no,no,no,no,0,no,unfurnished
510 | 2590000,4400,2,1,1,yes,no,no,no,no,0,no,unfurnished
511 | 2590000,3600,2,2,2,yes,no,yes,no,no,1,no,furnished
512 | 2520000,2880,3,1,1,no,no,no,no,no,0,no,unfurnished
513 | 2520000,3180,3,1,1,no,no,no,no,no,0,no,unfurnished
514 | 2520000,3000,2,1,2,yes,no,no,no,no,0,no,furnished
515 | 2485000,4400,3,1,2,yes,no,no,no,no,0,no,unfurnished
516 | 2485000,3000,3,1,2,no,no,no,no,no,0,no,semi-furnished
517 | 2450000,3210,3,1,2,yes,no,yes,no,no,0,no,unfurnished
518 | 2450000,3240,2,1,1,no,yes,no,no,no,1,no,unfurnished
519 | 2450000,3000,2,1,1,yes,no,no,no,no,1,no,unfurnished
520 | 2450000,3500,2,1,1,yes,yes,no,no,no,0,no,unfurnished
521 | 2450000,4840,2,1,2,yes,no,no,no,no,0,no,unfurnished
522 | 2450000,7700,2,1,1,yes,no,no,no,no,0,no,unfurnished
523 | 2408000,3635,2,1,1,no,no,no,no,no,0,no,unfurnished
524 | 2380000,2475,3,1,2,yes,no,no,no,no,0,no,furnished
525 | 2380000,2787,4,2,2,yes,no,no,no,no,0,no,furnished
526 | 2380000,3264,2,1,1,yes,no,no,no,no,0,no,unfurnished
527 | 2345000,3640,2,1,1,yes,no,no,no,no,0,no,unfurnished
528 | 2310000,3180,2,1,1,yes,no,no,no,no,0,no,unfurnished
529 | 2275000,1836,2,1,1,no,no,yes,no,no,0,no,semi-furnished
530 | 2275000,3970,1,1,1,no,no,no,no,no,0,no,unfurnished
531 | 2275000,3970,3,1,2,yes,no,yes,no,no,0,no,unfurnished
532 | 2240000,1950,3,1,1,no,no,no,yes,no,0,no,unfurnished
533 | 2233000,5300,3,1,1,no,no,no,no,yes,0,yes,unfurnished
534 | 2135000,3000,2,1,1,no,no,no,no,no,0,no,unfurnished
535 | 2100000,2400,3,1,2,yes,no,no,no,no,0,no,unfurnished
536 | 2100000,3000,4,1,2,yes,no,no,no,no,0,no,unfurnished
537 | 2100000,3360,2,1,1,yes,no,no,no,no,1,no,unfurnished
538 | 1960000,3420,5,1,2,no,no,no,no,no,0,no,unfurnished
539 | 1890000,1700,3,1,2,yes,no,no,no,no,0,no,unfurnished
540 | 1890000,3649,2,1,1,yes,no,no,no,no,0,no,unfurnished
541 | 1855000,2990,2,1,1,no,no,no,no,no,1,no,unfurnished
542 | 1820000,3000,2,1,1,yes,no,yes,no,no,2,no,unfurnished
543 | 1767150,2400,3,1,1,no,no,no,no,no,0,no,semi-furnished
544 | 1750000,3620,2,1,1,yes,no,no,no,no,0,no,unfurnished
545 | 1750000,2910,3,1,1,no,no,no,no,no,0,no,furnished
546 | 1750000,3850,3,1,2,yes,no,no,no,no,0,no,unfurnished
547 |
--------------------------------------------------------------------------------
/table_data/boston.csv:
--------------------------------------------------------------------------------
1 | CRIM,ZN,INDUS,CHAS,NOX,RM,AGE,DIS,RAD,TAX,PTRATIO,B,LSTAT,MEDV
2 | 0.00632,18.00,2.310,0,0.5380,6.5750,65.20,4.0900,1,296.0,15.30,396.90,4.98,24.00
3 | 0.02731,0.00,7.070,0,0.4690,6.4210,78.90,4.9671,2,242.0,17.80,396.90,9.14,21.60
4 | 0.02729,0.00,7.070,0,0.4690,7.1850,61.10,4.9671,2,242.0,17.80,392.83,4.03,34.70
5 | 0.03237,0.00,2.180,0,0.4580,6.9980,45.80,6.0622,3,222.0,18.70,394.63,2.94,33.40
6 | 0.06905,0.00,2.180,0,0.4580,7.1470,54.20,6.0622,3,222.0,18.70,396.90,5.33,36.20
7 | 0.02985,0.00,2.180,0,0.4580,6.4300,58.70,6.0622,3,222.0,18.70,394.12,5.21,28.70
8 | 0.08829,12.50,7.870,0,0.5240,6.0120,66.60,5.5605,5,311.0,15.20,395.60,12.43,22.90
9 | 0.14455,12.50,7.870,0,0.5240,6.1720,96.10,5.9505,5,311.0,15.20,396.90,19.15,27.10
10 | 0.21124,12.50,7.870,0,0.5240,5.6310,100.00,6.0821,5,311.0,15.20,386.63,29.93,16.50
11 | 0.17004,12.50,7.870,0,0.5240,6.0040,85.90,6.5921,5,311.0,15.20,386.71,17.10,18.90
12 | 0.22489,12.50,7.870,0,0.5240,6.3770,94.30,6.3467,5,311.0,15.20,392.52,20.45,15.00
13 | 0.11747,12.50,7.870,0,0.5240,6.0090,82.90,6.2267,5,311.0,15.20,396.90,13.27,18.90
14 | 0.09378,12.50,7.870,0,0.5240,5.8890,39.00,5.4509,5,311.0,15.20,390.50,15.71,21.70
15 | 0.62976,0.00,8.140,0,0.5380,5.9490,61.80,4.7075,4,307.0,21.00,396.90,8.26,20.40
16 | 0.63796,0.00,8.140,0,0.5380,6.0960,84.50,4.4619,4,307.0,21.00,380.02,10.26,18.20
17 | 0.62739,0.00,8.140,0,0.5380,5.8340,56.50,4.4986,4,307.0,21.00,395.62,8.47,19.90
18 | 1.05393,0.00,8.140,0,0.5380,5.9350,29.30,4.4986,4,307.0,21.00,386.85,6.58,23.10
19 | 0.78420,0.00,8.140,0,0.5380,5.9900,81.70,4.2579,4,307.0,21.00,386.75,14.67,17.50
20 | 0.80271,0.00,8.140,0,0.5380,5.4560,36.60,3.7965,4,307.0,21.00,288.99,11.69,20.20
21 | 0.72580,0.00,8.140,0,0.5380,5.7270,69.50,3.7965,4,307.0,21.00,390.95,11.28,18.20
22 | 1.25179,0.00,8.140,0,0.5380,5.5700,98.10,3.7979,4,307.0,21.00,376.57,21.02,13.60
23 | 0.85204,0.00,8.140,0,0.5380,5.9650,89.20,4.0123,4,307.0,21.00,392.53,13.83,19.60
24 | 1.23247,0.00,8.140,0,0.5380,6.1420,91.70,3.9769,4,307.0,21.00,396.90,18.72,15.20
25 | 0.98843,0.00,8.140,0,0.5380,5.8130,100.00,4.0952,4,307.0,21.00,394.54,19.88,14.50
26 | 0.75026,0.00,8.140,0,0.5380,5.9240,94.10,4.3996,4,307.0,21.00,394.33,16.30,15.60
27 | 0.84054,0.00,8.140,0,0.5380,5.5990,85.70,4.4546,4,307.0,21.00,303.42,16.51,13.90
28 | 0.67191,0.00,8.140,0,0.5380,5.8130,90.30,4.6820,4,307.0,21.00,376.88,14.81,16.60
29 | 0.95577,0.00,8.140,0,0.5380,6.0470,88.80,4.4534,4,307.0,21.00,306.38,17.28,14.80
30 | 0.77299,0.00,8.140,0,0.5380,6.4950,94.40,4.4547,4,307.0,21.00,387.94,12.80,18.40
31 | 1.00245,0.00,8.140,0,0.5380,6.6740,87.30,4.2390,4,307.0,21.00,380.23,11.98,21.00
32 | 1.13081,0.00,8.140,0,0.5380,5.7130,94.10,4.2330,4,307.0,21.00,360.17,22.60,12.70
33 | 1.35472,0.00,8.140,0,0.5380,6.0720,100.00,4.1750,4,307.0,21.00,376.73,13.04,14.50
34 | 1.38799,0.00,8.140,0,0.5380,5.9500,82.00,3.9900,4,307.0,21.00,232.60,27.71,13.20
35 | 1.15172,0.00,8.140,0,0.5380,5.7010,95.00,3.7872,4,307.0,21.00,358.77,18.35,13.10
36 | 1.61282,0.00,8.140,0,0.5380,6.0960,96.90,3.7598,4,307.0,21.00,248.31,20.34,13.50
37 | 0.06417,0.00,5.960,0,0.4990,5.9330,68.20,3.3603,5,279.0,19.20,396.90,9.68,18.90
38 | 0.09744,0.00,5.960,0,0.4990,5.8410,61.40,3.3779,5,279.0,19.20,377.56,11.41,20.00
39 | 0.08014,0.00,5.960,0,0.4990,5.8500,41.50,3.9342,5,279.0,19.20,396.90,8.77,21.00
40 | 0.17505,0.00,5.960,0,0.4990,5.9660,30.20,3.8473,5,279.0,19.20,393.43,10.13,24.70
41 | 0.02763,75.00,2.950,0,0.4280,6.5950,21.80,5.4011,3,252.0,18.30,395.63,4.32,30.80
42 | 0.03359,75.00,2.950,0,0.4280,7.0240,15.80,5.4011,3,252.0,18.30,395.62,1.98,34.90
43 | 0.12744,0.00,6.910,0,0.4480,6.7700,2.90,5.7209,3,233.0,17.90,385.41,4.84,26.60
44 | 0.14150,0.00,6.910,0,0.4480,6.1690,6.60,5.7209,3,233.0,17.90,383.37,5.81,25.30
45 | 0.15936,0.00,6.910,0,0.4480,6.2110,6.50,5.7209,3,233.0,17.90,394.46,7.44,24.70
46 | 0.12269,0.00,6.910,0,0.4480,6.0690,40.00,5.7209,3,233.0,17.90,389.39,9.55,21.20
47 | 0.17142,0.00,6.910,0,0.4480,5.6820,33.80,5.1004,3,233.0,17.90,396.90,10.21,19.30
48 | 0.18836,0.00,6.910,0,0.4480,5.7860,33.30,5.1004,3,233.0,17.90,396.90,14.15,20.00
49 | 0.22927,0.00,6.910,0,0.4480,6.0300,85.50,5.6894,3,233.0,17.90,392.74,18.80,16.60
50 | 0.25387,0.00,6.910,0,0.4480,5.3990,95.30,5.8700,3,233.0,17.90,396.90,30.81,14.40
51 | 0.21977,0.00,6.910,0,0.4480,5.6020,62.00,6.0877,3,233.0,17.90,396.90,16.20,19.40
52 | 0.08873,21.00,5.640,0,0.4390,5.9630,45.70,6.8147,4,243.0,16.80,395.56,13.45,19.70
53 | 0.04337,21.00,5.640,0,0.4390,6.1150,63.00,6.8147,4,243.0,16.80,393.97,9.43,20.50
54 | 0.05360,21.00,5.640,0,0.4390,6.5110,21.10,6.8147,4,243.0,16.80,396.90,5.28,25.00
55 | 0.04981,21.00,5.640,0,0.4390,5.9980,21.40,6.8147,4,243.0,16.80,396.90,8.43,23.40
56 | 0.01360,75.00,4.000,0,0.4100,5.8880,47.60,7.3197,3,469.0,21.10,396.90,14.80,18.90
57 | 0.01311,90.00,1.220,0,0.4030,7.2490,21.90,8.6966,5,226.0,17.90,395.93,4.81,35.40
58 | 0.02055,85.00,0.740,0,0.4100,6.3830,35.70,9.1876,2,313.0,17.30,396.90,5.77,24.70
59 | 0.01432,100.00,1.320,0,0.4110,6.8160,40.50,8.3248,5,256.0,15.10,392.90,3.95,31.60
60 | 0.15445,25.00,5.130,0,0.4530,6.1450,29.20,7.8148,8,284.0,19.70,390.68,6.86,23.30
61 | 0.10328,25.00,5.130,0,0.4530,5.9270,47.20,6.9320,8,284.0,19.70,396.90,9.22,19.60
62 | 0.14932,25.00,5.130,0,0.4530,5.7410,66.20,7.2254,8,284.0,19.70,395.11,13.15,18.70
63 | 0.17171,25.00,5.130,0,0.4530,5.9660,93.40,6.8185,8,284.0,19.70,378.08,14.44,16.00
64 | 0.11027,25.00,5.130,0,0.4530,6.4560,67.80,7.2255,8,284.0,19.70,396.90,6.73,22.20
65 | 0.12650,25.00,5.130,0,0.4530,6.7620,43.40,7.9809,8,284.0,19.70,395.58,9.50,25.00
66 | 0.01951,17.50,1.380,0,0.4161,7.1040,59.50,9.2229,3,216.0,18.60,393.24,8.05,33.00
67 | 0.03584,80.00,3.370,0,0.3980,6.2900,17.80,6.6115,4,337.0,16.10,396.90,4.67,23.50
68 | 0.04379,80.00,3.370,0,0.3980,5.7870,31.10,6.6115,4,337.0,16.10,396.90,10.24,19.40
69 | 0.05789,12.50,6.070,0,0.4090,5.8780,21.40,6.4980,4,345.0,18.90,396.21,8.10,22.00
70 | 0.13554,12.50,6.070,0,0.4090,5.5940,36.80,6.4980,4,345.0,18.90,396.90,13.09,17.40
71 | 0.12816,12.50,6.070,0,0.4090,5.8850,33.00,6.4980,4,345.0,18.90,396.90,8.79,20.90
72 | 0.08826,0.00,10.810,0,0.4130,6.4170,6.60,5.2873,4,305.0,19.20,383.73,6.72,24.20
73 | 0.15876,0.00,10.810,0,0.4130,5.9610,17.50,5.2873,4,305.0,19.20,376.94,9.88,21.70
74 | 0.09164,0.00,10.810,0,0.4130,6.0650,7.80,5.2873,4,305.0,19.20,390.91,5.52,22.80
75 | 0.19539,0.00,10.810,0,0.4130,6.2450,6.20,5.2873,4,305.0,19.20,377.17,7.54,23.40
76 | 0.07896,0.00,12.830,0,0.4370,6.2730,6.00,4.2515,5,398.0,18.70,394.92,6.78,24.10
77 | 0.09512,0.00,12.830,0,0.4370,6.2860,45.00,4.5026,5,398.0,18.70,383.23,8.94,21.40
78 | 0.10153,0.00,12.830,0,0.4370,6.2790,74.50,4.0522,5,398.0,18.70,373.66,11.97,20.00
79 | 0.08707,0.00,12.830,0,0.4370,6.1400,45.80,4.0905,5,398.0,18.70,386.96,10.27,20.80
80 | 0.05646,0.00,12.830,0,0.4370,6.2320,53.70,5.0141,5,398.0,18.70,386.40,12.34,21.20
81 | 0.08387,0.00,12.830,0,0.4370,5.8740,36.60,4.5026,5,398.0,18.70,396.06,9.10,20.30
82 | 0.04113,25.00,4.860,0,0.4260,6.7270,33.50,5.4007,4,281.0,19.00,396.90,5.29,28.00
83 | 0.04462,25.00,4.860,0,0.4260,6.6190,70.40,5.4007,4,281.0,19.00,395.63,7.22,23.90
84 | 0.03659,25.00,4.860,0,0.4260,6.3020,32.20,5.4007,4,281.0,19.00,396.90,6.72,24.80
85 | 0.03551,25.00,4.860,0,0.4260,6.1670,46.70,5.4007,4,281.0,19.00,390.64,7.51,22.90
86 | 0.05059,0.00,4.490,0,0.4490,6.3890,48.00,4.7794,3,247.0,18.50,396.90,9.62,23.90
87 | 0.05735,0.00,4.490,0,0.4490,6.6300,56.10,4.4377,3,247.0,18.50,392.30,6.53,26.60
88 | 0.05188,0.00,4.490,0,0.4490,6.0150,45.10,4.4272,3,247.0,18.50,395.99,12.86,22.50
89 | 0.07151,0.00,4.490,0,0.4490,6.1210,56.80,3.7476,3,247.0,18.50,395.15,8.44,22.20
90 | 0.05660,0.00,3.410,0,0.4890,7.0070,86.30,3.4217,2,270.0,17.80,396.90,5.50,23.60
91 | 0.05302,0.00,3.410,0,0.4890,7.0790,63.10,3.4145,2,270.0,17.80,396.06,5.70,28.70
92 | 0.04684,0.00,3.410,0,0.4890,6.4170,66.10,3.0923,2,270.0,17.80,392.18,8.81,22.60
93 | 0.03932,0.00,3.410,0,0.4890,6.4050,73.90,3.0921,2,270.0,17.80,393.55,8.20,22.00
94 | 0.04203,28.00,15.040,0,0.4640,6.4420,53.60,3.6659,4,270.0,18.20,395.01,8.16,22.90
95 | 0.02875,28.00,15.040,0,0.4640,6.2110,28.90,3.6659,4,270.0,18.20,396.33,6.21,25.00
96 | 0.04294,28.00,15.040,0,0.4640,6.2490,77.30,3.6150,4,270.0,18.20,396.90,10.59,20.60
97 | 0.12204,0.00,2.890,0,0.4450,6.6250,57.80,3.4952,2,276.0,18.00,357.98,6.65,28.40
98 | 0.11504,0.00,2.890,0,0.4450,6.1630,69.60,3.4952,2,276.0,18.00,391.83,11.34,21.40
99 | 0.12083,0.00,2.890,0,0.4450,8.0690,76.00,3.4952,2,276.0,18.00,396.90,4.21,38.70
100 | 0.08187,0.00,2.890,0,0.4450,7.8200,36.90,3.4952,2,276.0,18.00,393.53,3.57,43.80
101 | 0.06860,0.00,2.890,0,0.4450,7.4160,62.50,3.4952,2,276.0,18.00,396.90,6.19,33.20
102 | 0.14866,0.00,8.560,0,0.5200,6.7270,79.90,2.7778,5,384.0,20.90,394.76,9.42,27.50
103 | 0.11432,0.00,8.560,0,0.5200,6.7810,71.30,2.8561,5,384.0,20.90,395.58,7.67,26.50
104 | 0.22876,0.00,8.560,0,0.5200,6.4050,85.40,2.7147,5,384.0,20.90,70.80,10.63,18.60
105 | 0.21161,0.00,8.560,0,0.5200,6.1370,87.40,2.7147,5,384.0,20.90,394.47,13.44,19.30
106 | 0.13960,0.00,8.560,0,0.5200,6.1670,90.00,2.4210,5,384.0,20.90,392.69,12.33,20.10
107 | 0.13262,0.00,8.560,0,0.5200,5.8510,96.70,2.1069,5,384.0,20.90,394.05,16.47,19.50
108 | 0.17120,0.00,8.560,0,0.5200,5.8360,91.90,2.2110,5,384.0,20.90,395.67,18.66,19.50
109 | 0.13117,0.00,8.560,0,0.5200,6.1270,85.20,2.1224,5,384.0,20.90,387.69,14.09,20.40
110 | 0.12802,0.00,8.560,0,0.5200,6.4740,97.10,2.4329,5,384.0,20.90,395.24,12.27,19.80
111 | 0.26363,0.00,8.560,0,0.5200,6.2290,91.20,2.5451,5,384.0,20.90,391.23,15.55,19.40
112 | 0.10793,0.00,8.560,0,0.5200,6.1950,54.40,2.7778,5,384.0,20.90,393.49,13.00,21.70
113 | 0.10084,0.00,10.010,0,0.5470,6.7150,81.60,2.6775,6,432.0,17.80,395.59,10.16,22.80
114 | 0.12329,0.00,10.010,0,0.5470,5.9130,92.90,2.3534,6,432.0,17.80,394.95,16.21,18.80
115 | 0.22212,0.00,10.010,0,0.5470,6.0920,95.40,2.5480,6,432.0,17.80,396.90,17.09,18.70
116 | 0.14231,0.00,10.010,0,0.5470,6.2540,84.20,2.2565,6,432.0,17.80,388.74,10.45,18.50
117 | 0.17134,0.00,10.010,0,0.5470,5.9280,88.20,2.4631,6,432.0,17.80,344.91,15.76,18.30
118 | 0.13158,0.00,10.010,0,0.5470,6.1760,72.50,2.7301,6,432.0,17.80,393.30,12.04,21.20
119 | 0.15098,0.00,10.010,0,0.5470,6.0210,82.60,2.7474,6,432.0,17.80,394.51,10.30,19.20
120 | 0.13058,0.00,10.010,0,0.5470,5.8720,73.10,2.4775,6,432.0,17.80,338.63,15.37,20.40
121 | 0.14476,0.00,10.010,0,0.5470,5.7310,65.20,2.7592,6,432.0,17.80,391.50,13.61,19.30
122 | 0.06899,0.00,25.650,0,0.5810,5.8700,69.70,2.2577,2,188.0,19.10,389.15,14.37,22.00
123 | 0.07165,0.00,25.650,0,0.5810,6.0040,84.10,2.1974,2,188.0,19.10,377.67,14.27,20.30
124 | 0.09299,0.00,25.650,0,0.5810,5.9610,92.90,2.0869,2,188.0,19.10,378.09,17.93,20.50
125 | 0.15038,0.00,25.650,0,0.5810,5.8560,97.00,1.9444,2,188.0,19.10,370.31,25.41,17.30
126 | 0.09849,0.00,25.650,0,0.5810,5.8790,95.80,2.0063,2,188.0,19.10,379.38,17.58,18.80
127 | 0.16902,0.00,25.650,0,0.5810,5.9860,88.40,1.9929,2,188.0,19.10,385.02,14.81,21.40
128 | 0.38735,0.00,25.650,0,0.5810,5.6130,95.60,1.7572,2,188.0,19.10,359.29,27.26,15.70
129 | 0.25915,0.00,21.890,0,0.6240,5.6930,96.00,1.7883,4,437.0,21.20,392.11,17.19,16.20
130 | 0.32543,0.00,21.890,0,0.6240,6.4310,98.80,1.8125,4,437.0,21.20,396.90,15.39,18.00
131 | 0.88125,0.00,21.890,0,0.6240,5.6370,94.70,1.9799,4,437.0,21.20,396.90,18.34,14.30
132 | 0.34006,0.00,21.890,0,0.6240,6.4580,98.90,2.1185,4,437.0,21.20,395.04,12.60,19.20
133 | 1.19294,0.00,21.890,0,0.6240,6.3260,97.70,2.2710,4,437.0,21.20,396.90,12.26,19.60
134 | 0.59005,0.00,21.890,0,0.6240,6.3720,97.90,2.3274,4,437.0,21.20,385.76,11.12,23.00
135 | 0.32982,0.00,21.890,0,0.6240,5.8220,95.40,2.4699,4,437.0,21.20,388.69,15.03,18.40
136 | 0.97617,0.00,21.890,0,0.6240,5.7570,98.40,2.3460,4,437.0,21.20,262.76,17.31,15.60
137 | 0.55778,0.00,21.890,0,0.6240,6.3350,98.20,2.1107,4,437.0,21.20,394.67,16.96,18.10
138 | 0.32264,0.00,21.890,0,0.6240,5.9420,93.50,1.9669,4,437.0,21.20,378.25,16.90,17.40
139 | 0.35233,0.00,21.890,0,0.6240,6.4540,98.40,1.8498,4,437.0,21.20,394.08,14.59,17.10
140 | 0.24980,0.00,21.890,0,0.6240,5.8570,98.20,1.6686,4,437.0,21.20,392.04,21.32,13.30
141 | 0.54452,0.00,21.890,0,0.6240,6.1510,97.90,1.6687,4,437.0,21.20,396.90,18.46,17.80
142 | 0.29090,0.00,21.890,0,0.6240,6.1740,93.60,1.6119,4,437.0,21.20,388.08,24.16,14.00
143 | 1.62864,0.00,21.890,0,0.6240,5.0190,100.00,1.4394,4,437.0,21.20,396.90,34.41,14.40
144 | 3.32105,0.00,19.580,1,0.8710,5.4030,100.00,1.3216,5,403.0,14.70,396.90,26.82,13.40
145 | 4.09740,0.00,19.580,0,0.8710,5.4680,100.00,1.4118,5,403.0,14.70,396.90,26.42,15.60
146 | 2.77974,0.00,19.580,0,0.8710,4.9030,97.80,1.3459,5,403.0,14.70,396.90,29.29,11.80
147 | 2.37934,0.00,19.580,0,0.8710,6.1300,100.00,1.4191,5,403.0,14.70,172.91,27.80,13.80
148 | 2.15505,0.00,19.580,0,0.8710,5.6280,100.00,1.5166,5,403.0,14.70,169.27,16.65,15.60
149 | 2.36862,0.00,19.580,0,0.8710,4.9260,95.70,1.4608,5,403.0,14.70,391.71,29.53,14.60
150 | 2.33099,0.00,19.580,0,0.8710,5.1860,93.80,1.5296,5,403.0,14.70,356.99,28.32,17.80
151 | 2.73397,0.00,19.580,0,0.8710,5.5970,94.90,1.5257,5,403.0,14.70,351.85,21.45,15.40
152 | 1.65660,0.00,19.580,0,0.8710,6.1220,97.30,1.6180,5,403.0,14.70,372.80,14.10,21.50
153 | 1.49632,0.00,19.580,0,0.8710,5.4040,100.00,1.5916,5,403.0,14.70,341.60,13.28,19.60
154 | 1.12658,0.00,19.580,1,0.8710,5.0120,88.00,1.6102,5,403.0,14.70,343.28,12.12,15.30
155 | 2.14918,0.00,19.580,0,0.8710,5.7090,98.50,1.6232,5,403.0,14.70,261.95,15.79,19.40
156 | 1.41385,0.00,19.580,1,0.8710,6.1290,96.00,1.7494,5,403.0,14.70,321.02,15.12,17.00
157 | 3.53501,0.00,19.580,1,0.8710,6.1520,82.60,1.7455,5,403.0,14.70,88.01,15.02,15.60
158 | 2.44668,0.00,19.580,0,0.8710,5.2720,94.00,1.7364,5,403.0,14.70,88.63,16.14,13.10
159 | 1.22358,0.00,19.580,0,0.6050,6.9430,97.40,1.8773,5,403.0,14.70,363.43,4.59,41.30
160 | 1.34284,0.00,19.580,0,0.6050,6.0660,100.00,1.7573,5,403.0,14.70,353.89,6.43,24.30
161 | 1.42502,0.00,19.580,0,0.8710,6.5100,100.00,1.7659,5,403.0,14.70,364.31,7.39,23.30
162 | 1.27346,0.00,19.580,1,0.6050,6.2500,92.60,1.7984,5,403.0,14.70,338.92,5.50,27.00
163 | 1.46336,0.00,19.580,0,0.6050,7.4890,90.80,1.9709,5,403.0,14.70,374.43,1.73,50.00
164 | 1.83377,0.00,19.580,1,0.6050,7.8020,98.20,2.0407,5,403.0,14.70,389.61,1.92,50.00
165 | 1.51902,0.00,19.580,1,0.6050,8.3750,93.90,2.1620,5,403.0,14.70,388.45,3.32,50.00
166 | 2.24236,0.00,19.580,0,0.6050,5.8540,91.80,2.4220,5,403.0,14.70,395.11,11.64,22.70
167 | 2.92400,0.00,19.580,0,0.6050,6.1010,93.00,2.2834,5,403.0,14.70,240.16,9.81,25.00
168 | 2.01019,0.00,19.580,0,0.6050,7.9290,96.20,2.0459,5,403.0,14.70,369.30,3.70,50.00
169 | 1.80028,0.00,19.580,0,0.6050,5.8770,79.20,2.4259,5,403.0,14.70,227.61,12.14,23.80
170 | 2.30040,0.00,19.580,0,0.6050,6.3190,96.10,2.1000,5,403.0,14.70,297.09,11.10,23.80
171 | 2.44953,0.00,19.580,0,0.6050,6.4020,95.20,2.2625,5,403.0,14.70,330.04,11.32,22.30
172 | 1.20742,0.00,19.580,0,0.6050,5.8750,94.60,2.4259,5,403.0,14.70,292.29,14.43,17.40
173 | 2.31390,0.00,19.580,0,0.6050,5.8800,97.30,2.3887,5,403.0,14.70,348.13,12.03,19.10
174 | 0.13914,0.00,4.050,0,0.5100,5.5720,88.50,2.5961,5,296.0,16.60,396.90,14.69,23.10
175 | 0.09178,0.00,4.050,0,0.5100,6.4160,84.10,2.6463,5,296.0,16.60,395.50,9.04,23.60
176 | 0.08447,0.00,4.050,0,0.5100,5.8590,68.70,2.7019,5,296.0,16.60,393.23,9.64,22.60
177 | 0.06664,0.00,4.050,0,0.5100,6.5460,33.10,3.1323,5,296.0,16.60,390.96,5.33,29.40
178 | 0.07022,0.00,4.050,0,0.5100,6.0200,47.20,3.5549,5,296.0,16.60,393.23,10.11,23.20
179 | 0.05425,0.00,4.050,0,0.5100,6.3150,73.40,3.3175,5,296.0,16.60,395.60,6.29,24.60
180 | 0.06642,0.00,4.050,0,0.5100,6.8600,74.40,2.9153,5,296.0,16.60,391.27,6.92,29.90
181 | 0.05780,0.00,2.460,0,0.4880,6.9800,58.40,2.8290,3,193.0,17.80,396.90,5.04,37.20
182 | 0.06588,0.00,2.460,0,0.4880,7.7650,83.30,2.7410,3,193.0,17.80,395.56,7.56,39.80
183 | 0.06888,0.00,2.460,0,0.4880,6.1440,62.20,2.5979,3,193.0,17.80,396.90,9.45,36.20
184 | 0.09103,0.00,2.460,0,0.4880,7.1550,92.20,2.7006,3,193.0,17.80,394.12,4.82,37.90
185 | 0.10008,0.00,2.460,0,0.4880,6.5630,95.60,2.8470,3,193.0,17.80,396.90,5.68,32.50
186 | 0.08308,0.00,2.460,0,0.4880,5.6040,89.80,2.9879,3,193.0,17.80,391.00,13.98,26.40
187 | 0.06047,0.00,2.460,0,0.4880,6.1530,68.80,3.2797,3,193.0,17.80,387.11,13.15,29.60
188 | 0.05602,0.00,2.460,0,0.4880,7.8310,53.60,3.1992,3,193.0,17.80,392.63,4.45,50.00
189 | 0.07875,45.00,3.440,0,0.4370,6.7820,41.10,3.7886,5,398.0,15.20,393.87,6.68,32.00
190 | 0.12579,45.00,3.440,0,0.4370,6.5560,29.10,4.5667,5,398.0,15.20,382.84,4.56,29.80
191 | 0.08370,45.00,3.440,0,0.4370,7.1850,38.90,4.5667,5,398.0,15.20,396.90,5.39,34.90
192 | 0.09068,45.00,3.440,0,0.4370,6.9510,21.50,6.4798,5,398.0,15.20,377.68,5.10,37.00
193 | 0.06911,45.00,3.440,0,0.4370,6.7390,30.80,6.4798,5,398.0,15.20,389.71,4.69,30.50
194 | 0.08664,45.00,3.440,0,0.4370,7.1780,26.30,6.4798,5,398.0,15.20,390.49,2.87,36.40
195 | 0.02187,60.00,2.930,0,0.4010,6.8000,9.90,6.2196,1,265.0,15.60,393.37,5.03,31.10
196 | 0.01439,60.00,2.930,0,0.4010,6.6040,18.80,6.2196,1,265.0,15.60,376.70,4.38,29.10
197 | 0.01381,80.00,0.460,0,0.4220,7.8750,32.00,5.6484,4,255.0,14.40,394.23,2.97,50.00
198 | 0.04011,80.00,1.520,0,0.4040,7.2870,34.10,7.3090,2,329.0,12.60,396.90,4.08,33.30
199 | 0.04666,80.00,1.520,0,0.4040,7.1070,36.60,7.3090,2,329.0,12.60,354.31,8.61,30.30
200 | 0.03768,80.00,1.520,0,0.4040,7.2740,38.30,7.3090,2,329.0,12.60,392.20,6.62,34.60
201 | 0.03150,95.00,1.470,0,0.4030,6.9750,15.30,7.6534,3,402.0,17.00,396.90,4.56,34.90
202 | 0.01778,95.00,1.470,0,0.4030,7.1350,13.90,7.6534,3,402.0,17.00,384.30,4.45,32.90
203 | 0.03445,82.50,2.030,0,0.4150,6.1620,38.40,6.2700,2,348.0,14.70,393.77,7.43,24.10
204 | 0.02177,82.50,2.030,0,0.4150,7.6100,15.70,6.2700,2,348.0,14.70,395.38,3.11,42.30
205 | 0.03510,95.00,2.680,0,0.4161,7.8530,33.20,5.1180,4,224.0,14.70,392.78,3.81,48.50
206 | 0.02009,95.00,2.680,0,0.4161,8.0340,31.90,5.1180,4,224.0,14.70,390.55,2.88,50.00
207 | 0.13642,0.00,10.590,0,0.4890,5.8910,22.30,3.9454,4,277.0,18.60,396.90,10.87,22.60
208 | 0.22969,0.00,10.590,0,0.4890,6.3260,52.50,4.3549,4,277.0,18.60,394.87,10.97,24.40
209 | 0.25199,0.00,10.590,0,0.4890,5.7830,72.70,4.3549,4,277.0,18.60,389.43,18.06,22.50
210 | 0.13587,0.00,10.590,1,0.4890,6.0640,59.10,4.2392,4,277.0,18.60,381.32,14.66,24.40
211 | 0.43571,0.00,10.590,1,0.4890,5.3440,100.00,3.8750,4,277.0,18.60,396.90,23.09,20.00
212 | 0.17446,0.00,10.590,1,0.4890,5.9600,92.10,3.8771,4,277.0,18.60,393.25,17.27,21.70
213 | 0.37578,0.00,10.590,1,0.4890,5.4040,88.60,3.6650,4,277.0,18.60,395.24,23.98,19.30
214 | 0.21719,0.00,10.590,1,0.4890,5.8070,53.80,3.6526,4,277.0,18.60,390.94,16.03,22.40
215 | 0.14052,0.00,10.590,0,0.4890,6.3750,32.30,3.9454,4,277.0,18.60,385.81,9.38,28.10
216 | 0.28955,0.00,10.590,0,0.4890,5.4120,9.80,3.5875,4,277.0,18.60,348.93,29.55,23.70
217 | 0.19802,0.00,10.590,0,0.4890,6.1820,42.40,3.9454,4,277.0,18.60,393.63,9.47,25.00
218 | 0.04560,0.00,13.890,1,0.5500,5.8880,56.00,3.1121,5,276.0,16.40,392.80,13.51,23.30
219 | 0.07013,0.00,13.890,0,0.5500,6.6420,85.10,3.4211,5,276.0,16.40,392.78,9.69,28.70
220 | 0.11069,0.00,13.890,1,0.5500,5.9510,93.80,2.8893,5,276.0,16.40,396.90,17.92,21.50
221 | 0.11425,0.00,13.890,1,0.5500,6.3730,92.40,3.3633,5,276.0,16.40,393.74,10.50,23.00
222 | 0.35809,0.00,6.200,1,0.5070,6.9510,88.50,2.8617,8,307.0,17.40,391.70,9.71,26.70
223 | 0.40771,0.00,6.200,1,0.5070,6.1640,91.30,3.0480,8,307.0,17.40,395.24,21.46,21.70
224 | 0.62356,0.00,6.200,1,0.5070,6.8790,77.70,3.2721,8,307.0,17.40,390.39,9.93,27.50
225 | 0.61470,0.00,6.200,0,0.5070,6.6180,80.80,3.2721,8,307.0,17.40,396.90,7.60,30.10
226 | 0.31533,0.00,6.200,0,0.5040,8.2660,78.30,2.8944,8,307.0,17.40,385.05,4.14,44.80
227 | 0.52693,0.00,6.200,0,0.5040,8.7250,83.00,2.8944,8,307.0,17.40,382.00,4.63,50.00
228 | 0.38214,0.00,6.200,0,0.5040,8.0400,86.50,3.2157,8,307.0,17.40,387.38,3.13,37.60
229 | 0.41238,0.00,6.200,0,0.5040,7.1630,79.90,3.2157,8,307.0,17.40,372.08,6.36,31.60
230 | 0.29819,0.00,6.200,0,0.5040,7.6860,17.00,3.3751,8,307.0,17.40,377.51,3.92,46.70
231 | 0.44178,0.00,6.200,0,0.5040,6.5520,21.40,3.3751,8,307.0,17.40,380.34,3.76,31.50
232 | 0.53700,0.00,6.200,0,0.5040,5.9810,68.10,3.6715,8,307.0,17.40,378.35,11.65,24.30
233 | 0.46296,0.00,6.200,0,0.5040,7.4120,76.90,3.6715,8,307.0,17.40,376.14,5.25,31.70
234 | 0.57529,0.00,6.200,0,0.5070,8.3370,73.30,3.8384,8,307.0,17.40,385.91,2.47,41.70
235 | 0.33147,0.00,6.200,0,0.5070,8.2470,70.40,3.6519,8,307.0,17.40,378.95,3.95,48.30
236 | 0.44791,0.00,6.200,1,0.5070,6.7260,66.50,3.6519,8,307.0,17.40,360.20,8.05,29.00
237 | 0.33045,0.00,6.200,0,0.5070,6.0860,61.50,3.6519,8,307.0,17.40,376.75,10.88,24.00
238 | 0.52058,0.00,6.200,1,0.5070,6.6310,76.50,4.1480,8,307.0,17.40,388.45,9.54,25.10
239 | 0.51183,0.00,6.200,0,0.5070,7.3580,71.60,4.1480,8,307.0,17.40,390.07,4.73,31.50
240 | 0.08244,30.00,4.930,0,0.4280,6.4810,18.50,6.1899,6,300.0,16.60,379.41,6.36,23.70
241 | 0.09252,30.00,4.930,0,0.4280,6.6060,42.20,6.1899,6,300.0,16.60,383.78,7.37,23.30
242 | 0.11329,30.00,4.930,0,0.4280,6.8970,54.30,6.3361,6,300.0,16.60,391.25,11.38,22.00
243 | 0.10612,30.00,4.930,0,0.4280,6.0950,65.10,6.3361,6,300.0,16.60,394.62,12.40,20.10
244 | 0.10290,30.00,4.930,0,0.4280,6.3580,52.90,7.0355,6,300.0,16.60,372.75,11.22,22.20
245 | 0.12757,30.00,4.930,0,0.4280,6.3930,7.80,7.0355,6,300.0,16.60,374.71,5.19,23.70
246 | 0.20608,22.00,5.860,0,0.4310,5.5930,76.50,7.9549,7,330.0,19.10,372.49,12.50,17.60
247 | 0.19133,22.00,5.860,0,0.4310,5.6050,70.20,7.9549,7,330.0,19.10,389.13,18.46,18.50
248 | 0.33983,22.00,5.860,0,0.4310,6.1080,34.90,8.0555,7,330.0,19.10,390.18,9.16,24.30
249 | 0.19657,22.00,5.860,0,0.4310,6.2260,79.20,8.0555,7,330.0,19.10,376.14,10.15,20.50
250 | 0.16439,22.00,5.860,0,0.4310,6.4330,49.10,7.8265,7,330.0,19.10,374.71,9.52,24.50
251 | 0.19073,22.00,5.860,0,0.4310,6.7180,17.50,7.8265,7,330.0,19.10,393.74,6.56,26.20
252 | 0.14030,22.00,5.860,0,0.4310,6.4870,13.00,7.3967,7,330.0,19.10,396.28,5.90,24.40
253 | 0.21409,22.00,5.860,0,0.4310,6.4380,8.90,7.3967,7,330.0,19.10,377.07,3.59,24.80
254 | 0.08221,22.00,5.860,0,0.4310,6.9570,6.80,8.9067,7,330.0,19.10,386.09,3.53,29.60
255 | 0.36894,22.00,5.860,0,0.4310,8.2590,8.40,8.9067,7,330.0,19.10,396.90,3.54,42.80
256 | 0.04819,80.00,3.640,0,0.3920,6.1080,32.00,9.2203,1,315.0,16.40,392.89,6.57,21.90
257 | 0.03548,80.00,3.640,0,0.3920,5.8760,19.10,9.2203,1,315.0,16.40,395.18,9.25,20.90
258 | 0.01538,90.00,3.750,0,0.3940,7.4540,34.20,6.3361,3,244.0,15.90,386.34,3.11,44.00
259 | 0.61154,20.00,3.970,0,0.6470,8.7040,86.90,1.8010,5,264.0,13.00,389.70,5.12,50.00
260 | 0.66351,20.00,3.970,0,0.6470,7.3330,100.00,1.8946,5,264.0,13.00,383.29,7.79,36.00
261 | 0.65665,20.00,3.970,0,0.6470,6.8420,100.00,2.0107,5,264.0,13.00,391.93,6.90,30.10
262 | 0.54011,20.00,3.970,0,0.6470,7.2030,81.80,2.1121,5,264.0,13.00,392.80,9.59,33.80
263 | 0.53412,20.00,3.970,0,0.6470,7.5200,89.40,2.1398,5,264.0,13.00,388.37,7.26,43.10
264 | 0.52014,20.00,3.970,0,0.6470,8.3980,91.50,2.2885,5,264.0,13.00,386.86,5.91,48.80
265 | 0.82526,20.00,3.970,0,0.6470,7.3270,94.50,2.0788,5,264.0,13.00,393.42,11.25,31.00
266 | 0.55007,20.00,3.970,0,0.6470,7.2060,91.60,1.9301,5,264.0,13.00,387.89,8.10,36.50
267 | 0.76162,20.00,3.970,0,0.6470,5.5600,62.80,1.9865,5,264.0,13.00,392.40,10.45,22.80
268 | 0.78570,20.00,3.970,0,0.6470,7.0140,84.60,2.1329,5,264.0,13.00,384.07,14.79,30.70
269 | 0.57834,20.00,3.970,0,0.5750,8.2970,67.00,2.4216,5,264.0,13.00,384.54,7.44,50.00
270 | 0.54050,20.00,3.970,0,0.5750,7.4700,52.60,2.8720,5,264.0,13.00,390.30,3.16,43.50
271 | 0.09065,20.00,6.960,1,0.4640,5.9200,61.50,3.9175,3,223.0,18.60,391.34,13.65,20.70
272 | 0.29916,20.00,6.960,0,0.4640,5.8560,42.10,4.4290,3,223.0,18.60,388.65,13.00,21.10
273 | 0.16211,20.00,6.960,0,0.4640,6.2400,16.30,4.4290,3,223.0,18.60,396.90,6.59,25.20
274 | 0.11460,20.00,6.960,0,0.4640,6.5380,58.70,3.9175,3,223.0,18.60,394.96,7.73,24.40
275 | 0.22188,20.00,6.960,1,0.4640,7.6910,51.80,4.3665,3,223.0,18.60,390.77,6.58,35.20
276 | 0.05644,40.00,6.410,1,0.4470,6.7580,32.90,4.0776,4,254.0,17.60,396.90,3.53,32.40
277 | 0.09604,40.00,6.410,0,0.4470,6.8540,42.80,4.2673,4,254.0,17.60,396.90,2.98,32.00
278 | 0.10469,40.00,6.410,1,0.4470,7.2670,49.00,4.7872,4,254.0,17.60,389.25,6.05,33.20
279 | 0.06127,40.00,6.410,1,0.4470,6.8260,27.60,4.8628,4,254.0,17.60,393.45,4.16,33.10
280 | 0.07978,40.00,6.410,0,0.4470,6.4820,32.10,4.1403,4,254.0,17.60,396.90,7.19,29.10
281 | 0.21038,20.00,3.330,0,0.4429,6.8120,32.20,4.1007,5,216.0,14.90,396.90,4.85,35.10
282 | 0.03578,20.00,3.330,0,0.4429,7.8200,64.50,4.6947,5,216.0,14.90,387.31,3.76,45.40
283 | 0.03705,20.00,3.330,0,0.4429,6.9680,37.20,5.2447,5,216.0,14.90,392.23,4.59,35.40
284 | 0.06129,20.00,3.330,1,0.4429,7.6450,49.70,5.2119,5,216.0,14.90,377.07,3.01,46.00
285 | 0.01501,90.00,1.210,1,0.4010,7.9230,24.80,5.8850,1,198.0,13.60,395.52,3.16,50.00
286 | 0.00906,90.00,2.970,0,0.4000,7.0880,20.80,7.3073,1,285.0,15.30,394.72,7.85,32.20
287 | 0.01096,55.00,2.250,0,0.3890,6.4530,31.90,7.3073,1,300.0,15.30,394.72,8.23,22.00
288 | 0.01965,80.00,1.760,0,0.3850,6.2300,31.50,9.0892,1,241.0,18.20,341.60,12.93,20.10
289 | 0.03871,52.50,5.320,0,0.4050,6.2090,31.30,7.3172,6,293.0,16.60,396.90,7.14,23.20
290 | 0.04590,52.50,5.320,0,0.4050,6.3150,45.60,7.3172,6,293.0,16.60,396.90,7.60,22.30
291 | 0.04297,52.50,5.320,0,0.4050,6.5650,22.90,7.3172,6,293.0,16.60,371.72,9.51,24.80
292 | 0.03502,80.00,4.950,0,0.4110,6.8610,27.90,5.1167,4,245.0,19.20,396.90,3.33,28.50
293 | 0.07886,80.00,4.950,0,0.4110,7.1480,27.70,5.1167,4,245.0,19.20,396.90,3.56,37.30
294 | 0.03615,80.00,4.950,0,0.4110,6.6300,23.40,5.1167,4,245.0,19.20,396.90,4.70,27.90
295 | 0.08265,0.00,13.920,0,0.4370,6.1270,18.40,5.5027,4,289.0,16.00,396.90,8.58,23.90
296 | 0.08199,0.00,13.920,0,0.4370,6.0090,42.30,5.5027,4,289.0,16.00,396.90,10.40,21.70
297 | 0.12932,0.00,13.920,0,0.4370,6.6780,31.10,5.9604,4,289.0,16.00,396.90,6.27,28.60
298 | 0.05372,0.00,13.920,0,0.4370,6.5490,51.00,5.9604,4,289.0,16.00,392.85,7.39,27.10
299 | 0.14103,0.00,13.920,0,0.4370,5.7900,58.00,6.3200,4,289.0,16.00,396.90,15.84,20.30
300 | 0.06466,70.00,2.240,0,0.4000,6.3450,20.10,7.8278,5,358.0,14.80,368.24,4.97,22.50
301 | 0.05561,70.00,2.240,0,0.4000,7.0410,10.00,7.8278,5,358.0,14.80,371.58,4.74,29.00
302 | 0.04417,70.00,2.240,0,0.4000,6.8710,47.40,7.8278,5,358.0,14.80,390.86,6.07,24.80
303 | 0.03537,34.00,6.090,0,0.4330,6.5900,40.40,5.4917,7,329.0,16.10,395.75,9.50,22.00
304 | 0.09266,34.00,6.090,0,0.4330,6.4950,18.40,5.4917,7,329.0,16.10,383.61,8.67,26.40
305 | 0.10000,34.00,6.090,0,0.4330,6.9820,17.70,5.4917,7,329.0,16.10,390.43,4.86,33.10
306 | 0.05515,33.00,2.180,0,0.4720,7.2360,41.10,4.0220,7,222.0,18.40,393.68,6.93,36.10
307 | 0.05479,33.00,2.180,0,0.4720,6.6160,58.10,3.3700,7,222.0,18.40,393.36,8.93,28.40
308 | 0.07503,33.00,2.180,0,0.4720,7.4200,71.90,3.0992,7,222.0,18.40,396.90,6.47,33.40
309 | 0.04932,33.00,2.180,0,0.4720,6.8490,70.30,3.1827,7,222.0,18.40,396.90,7.53,28.20
310 | 0.49298,0.00,9.900,0,0.5440,6.6350,82.50,3.3175,4,304.0,18.40,396.90,4.54,22.80
311 | 0.34940,0.00,9.900,0,0.5440,5.9720,76.70,3.1025,4,304.0,18.40,396.24,9.97,20.30
312 | 2.63548,0.00,9.900,0,0.5440,4.9730,37.80,2.5194,4,304.0,18.40,350.45,12.64,16.10
313 | 0.79041,0.00,9.900,0,0.5440,6.1220,52.80,2.6403,4,304.0,18.40,396.90,5.98,22.10
314 | 0.26169,0.00,9.900,0,0.5440,6.0230,90.40,2.8340,4,304.0,18.40,396.30,11.72,19.40
315 | 0.26938,0.00,9.900,0,0.5440,6.2660,82.80,3.2628,4,304.0,18.40,393.39,7.90,21.60
316 | 0.36920,0.00,9.900,0,0.5440,6.5670,87.30,3.6023,4,304.0,18.40,395.69,9.28,23.80
317 | 0.25356,0.00,9.900,0,0.5440,5.7050,77.70,3.9450,4,304.0,18.40,396.42,11.50,16.20
318 | 0.31827,0.00,9.900,0,0.5440,5.9140,83.20,3.9986,4,304.0,18.40,390.70,18.33,17.80
319 | 0.24522,0.00,9.900,0,0.5440,5.7820,71.70,4.0317,4,304.0,18.40,396.90,15.94,19.80
320 | 0.40202,0.00,9.900,0,0.5440,6.3820,67.20,3.5325,4,304.0,18.40,395.21,10.36,23.10
321 | 0.47547,0.00,9.900,0,0.5440,6.1130,58.80,4.0019,4,304.0,18.40,396.23,12.73,21.00
322 | 0.16760,0.00,7.380,0,0.4930,6.4260,52.30,4.5404,5,287.0,19.60,396.90,7.20,23.80
323 | 0.18159,0.00,7.380,0,0.4930,6.3760,54.30,4.5404,5,287.0,19.60,396.90,6.87,23.10
324 | 0.35114,0.00,7.380,0,0.4930,6.0410,49.90,4.7211,5,287.0,19.60,396.90,7.70,20.40
325 | 0.28392,0.00,7.380,0,0.4930,5.7080,74.30,4.7211,5,287.0,19.60,391.13,11.74,18.50
326 | 0.34109,0.00,7.380,0,0.4930,6.4150,40.10,4.7211,5,287.0,19.60,396.90,6.12,25.00
327 | 0.19186,0.00,7.380,0,0.4930,6.4310,14.70,5.4159,5,287.0,19.60,393.68,5.08,24.60
328 | 0.30347,0.00,7.380,0,0.4930,6.3120,28.90,5.4159,5,287.0,19.60,396.90,6.15,23.00
329 | 0.24103,0.00,7.380,0,0.4930,6.0830,43.70,5.4159,5,287.0,19.60,396.90,12.79,22.20
330 | 0.06617,0.00,3.240,0,0.4600,5.8680,25.80,5.2146,4,430.0,16.90,382.44,9.97,19.30
331 | 0.06724,0.00,3.240,0,0.4600,6.3330,17.20,5.2146,4,430.0,16.90,375.21,7.34,22.60
332 | 0.04544,0.00,3.240,0,0.4600,6.1440,32.20,5.8736,4,430.0,16.90,368.57,9.09,19.80
333 | 0.05023,35.00,6.060,0,0.4379,5.7060,28.40,6.6407,1,304.0,16.90,394.02,12.43,17.10
334 | 0.03466,35.00,6.060,0,0.4379,6.0310,23.30,6.6407,1,304.0,16.90,362.25,7.83,19.40
335 | 0.05083,0.00,5.190,0,0.5150,6.3160,38.10,6.4584,5,224.0,20.20,389.71,5.68,22.20
336 | 0.03738,0.00,5.190,0,0.5150,6.3100,38.50,6.4584,5,224.0,20.20,389.40,6.75,20.70
337 | 0.03961,0.00,5.190,0,0.5150,6.0370,34.50,5.9853,5,224.0,20.20,396.90,8.01,21.10
338 | 0.03427,0.00,5.190,0,0.5150,5.8690,46.30,5.2311,5,224.0,20.20,396.90,9.80,19.50
339 | 0.03041,0.00,5.190,0,0.5150,5.8950,59.60,5.6150,5,224.0,20.20,394.81,10.56,18.50
340 | 0.03306,0.00,5.190,0,0.5150,6.0590,37.30,4.8122,5,224.0,20.20,396.14,8.51,20.60
341 | 0.05497,0.00,5.190,0,0.5150,5.9850,45.40,4.8122,5,224.0,20.20,396.90,9.74,19.00
342 | 0.06151,0.00,5.190,0,0.5150,5.9680,58.50,4.8122,5,224.0,20.20,396.90,9.29,18.70
343 | 0.01301,35.00,1.520,0,0.4420,7.2410,49.30,7.0379,1,284.0,15.50,394.74,5.49,32.70
344 | 0.02498,0.00,1.890,0,0.5180,6.5400,59.70,6.2669,1,422.0,15.90,389.96,8.65,16.50
345 | 0.02543,55.00,3.780,0,0.4840,6.6960,56.40,5.7321,5,370.0,17.60,396.90,7.18,23.90
346 | 0.03049,55.00,3.780,0,0.4840,6.8740,28.10,6.4654,5,370.0,17.60,387.97,4.61,31.20
347 | 0.03113,0.00,4.390,0,0.4420,6.0140,48.50,8.0136,3,352.0,18.80,385.64,10.53,17.50
348 | 0.06162,0.00,4.390,0,0.4420,5.8980,52.30,8.0136,3,352.0,18.80,364.61,12.67,17.20
349 | 0.01870,85.00,4.150,0,0.4290,6.5160,27.70,8.5353,4,351.0,17.90,392.43,6.36,23.10
350 | 0.01501,80.00,2.010,0,0.4350,6.6350,29.70,8.3440,4,280.0,17.00,390.94,5.99,24.50
351 | 0.02899,40.00,1.250,0,0.4290,6.9390,34.50,8.7921,1,335.0,19.70,389.85,5.89,26.60
352 | 0.06211,40.00,1.250,0,0.4290,6.4900,44.40,8.7921,1,335.0,19.70,396.90,5.98,22.90
353 | 0.07950,60.00,1.690,0,0.4110,6.5790,35.90,10.7103,4,411.0,18.30,370.78,5.49,24.10
354 | 0.07244,60.00,1.690,0,0.4110,5.8840,18.50,10.7103,4,411.0,18.30,392.33,7.79,18.60
355 | 0.01709,90.00,2.020,0,0.4100,6.7280,36.10,12.1265,5,187.0,17.00,384.46,4.50,30.10
356 | 0.04301,80.00,1.910,0,0.4130,5.6630,21.90,10.5857,4,334.0,22.00,382.80,8.05,18.20
357 | 0.10659,80.00,1.910,0,0.4130,5.9360,19.50,10.5857,4,334.0,22.00,376.04,5.57,20.60
358 | 8.98296,0.00,18.100,1,0.7700,6.2120,97.40,2.1222,24,666.0,20.20,377.73,17.60,17.80
359 | 3.84970,0.00,18.100,1,0.7700,6.3950,91.00,2.5052,24,666.0,20.20,391.34,13.27,21.70
360 | 5.20177,0.00,18.100,1,0.7700,6.1270,83.40,2.7227,24,666.0,20.20,395.43,11.48,22.70
361 | 4.26131,0.00,18.100,0,0.7700,6.1120,81.30,2.5091,24,666.0,20.20,390.74,12.67,22.60
362 | 4.54192,0.00,18.100,0,0.7700,6.3980,88.00,2.5182,24,666.0,20.20,374.56,7.79,25.00
363 | 3.83684,0.00,18.100,0,0.7700,6.2510,91.10,2.2955,24,666.0,20.20,350.65,14.19,19.90
364 | 3.67822,0.00,18.100,0,0.7700,5.3620,96.20,2.1036,24,666.0,20.20,380.79,10.19,20.80
365 | 4.22239,0.00,18.100,1,0.7700,5.8030,89.00,1.9047,24,666.0,20.20,353.04,14.64,16.80
366 | 3.47428,0.00,18.100,1,0.7180,8.7800,82.90,1.9047,24,666.0,20.20,354.55,5.29,21.90
367 | 4.55587,0.00,18.100,0,0.7180,3.5610,87.90,1.6132,24,666.0,20.20,354.70,7.12,27.50
368 | 3.69695,0.00,18.100,0,0.7180,4.9630,91.40,1.7523,24,666.0,20.20,316.03,14.00,21.90
369 | 13.52220,0.00,18.100,0,0.6310,3.8630,100.00,1.5106,24,666.0,20.20,131.42,13.33,23.10
370 | 4.89822,0.00,18.100,0,0.6310,4.9700,100.00,1.3325,24,666.0,20.20,375.52,3.26,50.00
371 | 5.66998,0.00,18.100,1,0.6310,6.6830,96.80,1.3567,24,666.0,20.20,375.33,3.73,50.00
372 | 6.53876,0.00,18.100,1,0.6310,7.0160,97.50,1.2024,24,666.0,20.20,392.05,2.96,50.00
373 | 9.23230,0.00,18.100,0,0.6310,6.2160,100.00,1.1691,24,666.0,20.20,366.15,9.53,50.00
374 | 8.26725,0.00,18.100,1,0.6680,5.8750,89.60,1.1296,24,666.0,20.20,347.88,8.88,50.00
375 | 11.10810,0.00,18.100,0,0.6680,4.9060,100.00,1.1742,24,666.0,20.20,396.90,34.77,13.80
376 | 18.49820,0.00,18.100,0,0.6680,4.1380,100.00,1.1370,24,666.0,20.20,396.90,37.97,13.80
377 | 19.60910,0.00,18.100,0,0.6710,7.3130,97.90,1.3163,24,666.0,20.20,396.90,13.44,15.00
378 | 15.28800,0.00,18.100,0,0.6710,6.6490,93.30,1.3449,24,666.0,20.20,363.02,23.24,13.90
379 | 9.82349,0.00,18.100,0,0.6710,6.7940,98.80,1.3580,24,666.0,20.20,396.90,21.24,13.30
380 | 23.64820,0.00,18.100,0,0.6710,6.3800,96.20,1.3861,24,666.0,20.20,396.90,23.69,13.10
381 | 17.86670,0.00,18.100,0,0.6710,6.2230,100.00,1.3861,24,666.0,20.20,393.74,21.78,10.20
382 | 88.97620,0.00,18.100,0,0.6710,6.9680,91.90,1.4165,24,666.0,20.20,396.90,17.21,10.40
383 | 15.87440,0.00,18.100,0,0.6710,6.5450,99.10,1.5192,24,666.0,20.20,396.90,21.08,10.90
384 | 9.18702,0.00,18.100,0,0.7000,5.5360,100.00,1.5804,24,666.0,20.20,396.90,23.60,11.30
385 | 7.99248,0.00,18.100,0,0.7000,5.5200,100.00,1.5331,24,666.0,20.20,396.90,24.56,12.30
386 | 20.08490,0.00,18.100,0,0.7000,4.3680,91.20,1.4395,24,666.0,20.20,285.83,30.63,8.80
387 | 16.81180,0.00,18.100,0,0.7000,5.2770,98.10,1.4261,24,666.0,20.20,396.90,30.81,7.20
388 | 24.39380,0.00,18.100,0,0.7000,4.6520,100.00,1.4672,24,666.0,20.20,396.90,28.28,10.50
389 | 22.59710,0.00,18.100,0,0.7000,5.0000,89.50,1.5184,24,666.0,20.20,396.90,31.99,7.40
390 | 14.33370,0.00,18.100,0,0.7000,4.8800,100.00,1.5895,24,666.0,20.20,372.92,30.62,10.20
391 | 8.15174,0.00,18.100,0,0.7000,5.3900,98.90,1.7281,24,666.0,20.20,396.90,20.85,11.50
392 | 6.96215,0.00,18.100,0,0.7000,5.7130,97.00,1.9265,24,666.0,20.20,394.43,17.11,15.10
393 | 5.29305,0.00,18.100,0,0.7000,6.0510,82.50,2.1678,24,666.0,20.20,378.38,18.76,23.20
394 | 11.57790,0.00,18.100,0,0.7000,5.0360,97.00,1.7700,24,666.0,20.20,396.90,25.68,9.70
395 | 8.64476,0.00,18.100,0,0.6930,6.1930,92.60,1.7912,24,666.0,20.20,396.90,15.17,13.80
396 | 13.35980,0.00,18.100,0,0.6930,5.8870,94.70,1.7821,24,666.0,20.20,396.90,16.35,12.70
397 | 8.71675,0.00,18.100,0,0.6930,6.4710,98.80,1.7257,24,666.0,20.20,391.98,17.12,13.10
398 | 5.87205,0.00,18.100,0,0.6930,6.4050,96.00,1.6768,24,666.0,20.20,396.90,19.37,12.50
399 | 7.67202,0.00,18.100,0,0.6930,5.7470,98.90,1.6334,24,666.0,20.20,393.10,19.92,8.50
400 | 38.35180,0.00,18.100,0,0.6930,5.4530,100.00,1.4896,24,666.0,20.20,396.90,30.59,5.00
401 | 9.91655,0.00,18.100,0,0.6930,5.8520,77.80,1.5004,24,666.0,20.20,338.16,29.97,6.30
402 | 25.04610,0.00,18.100,0,0.6930,5.9870,100.00,1.5888,24,666.0,20.20,396.90,26.77,5.60
403 | 14.23620,0.00,18.100,0,0.6930,6.3430,100.00,1.5741,24,666.0,20.20,396.90,20.32,7.20
404 | 9.59571,0.00,18.100,0,0.6930,6.4040,100.00,1.6390,24,666.0,20.20,376.11,20.31,12.10
405 | 24.80170,0.00,18.100,0,0.6930,5.3490,96.00,1.7028,24,666.0,20.20,396.90,19.77,8.30
406 | 41.52920,0.00,18.100,0,0.6930,5.5310,85.40,1.6074,24,666.0,20.20,329.46,27.38,8.50
407 | 67.92080,0.00,18.100,0,0.6930,5.6830,100.00,1.4254,24,666.0,20.20,384.97,22.98,5.00
408 | 20.71620,0.00,18.100,0,0.6590,4.1380,100.00,1.1781,24,666.0,20.20,370.22,23.34,11.90
409 | 11.95110,0.00,18.100,0,0.6590,5.6080,100.00,1.2852,24,666.0,20.20,332.09,12.13,27.90
410 | 7.40389,0.00,18.100,0,0.5970,5.6170,97.90,1.4547,24,666.0,20.20,314.64,26.40,17.20
411 | 14.43830,0.00,18.100,0,0.5970,6.8520,100.00,1.4655,24,666.0,20.20,179.36,19.78,27.50
412 | 51.13580,0.00,18.100,0,0.5970,5.7570,100.00,1.4130,24,666.0,20.20,2.60,10.11,15.00
413 | 14.05070,0.00,18.100,0,0.5970,6.6570,100.00,1.5275,24,666.0,20.20,35.05,21.22,17.20
414 | 18.81100,0.00,18.100,0,0.5970,4.6280,100.00,1.5539,24,666.0,20.20,28.79,34.37,17.90
415 | 28.65580,0.00,18.100,0,0.5970,5.1550,100.00,1.5894,24,666.0,20.20,210.97,20.08,16.30
416 | 45.74610,0.00,18.100,0,0.6930,4.5190,100.00,1.6582,24,666.0,20.20,88.27,36.98,7.00
417 | 18.08460,0.00,18.100,0,0.6790,6.4340,100.00,1.8347,24,666.0,20.20,27.25,29.05,7.20
418 | 10.83420,0.00,18.100,0,0.6790,6.7820,90.80,1.8195,24,666.0,20.20,21.57,25.79,7.50
419 | 25.94060,0.00,18.100,0,0.6790,5.3040,89.10,1.6475,24,666.0,20.20,127.36,26.64,10.40
420 | 73.53410,0.00,18.100,0,0.6790,5.9570,100.00,1.8026,24,666.0,20.20,16.45,20.62,8.80
421 | 11.81230,0.00,18.100,0,0.7180,6.8240,76.50,1.7940,24,666.0,20.20,48.45,22.74,8.40
422 | 11.08740,0.00,18.100,0,0.7180,6.4110,100.00,1.8589,24,666.0,20.20,318.75,15.02,16.70
423 | 7.02259,0.00,18.100,0,0.7180,6.0060,95.30,1.8746,24,666.0,20.20,319.98,15.70,14.20
424 | 12.04820,0.00,18.100,0,0.6140,5.6480,87.60,1.9512,24,666.0,20.20,291.55,14.10,20.80
425 | 7.05042,0.00,18.100,0,0.6140,6.1030,85.10,2.0218,24,666.0,20.20,2.52,23.29,13.40
426 | 8.79212,0.00,18.100,0,0.5840,5.5650,70.60,2.0635,24,666.0,20.20,3.65,17.16,11.70
427 | 15.86030,0.00,18.100,0,0.6790,5.8960,95.40,1.9096,24,666.0,20.20,7.68,24.39,8.30
428 | 12.24720,0.00,18.100,0,0.5840,5.8370,59.70,1.9976,24,666.0,20.20,24.65,15.69,10.20
429 | 37.66190,0.00,18.100,0,0.6790,6.2020,78.70,1.8629,24,666.0,20.20,18.82,14.52,10.90
430 | 7.36711,0.00,18.100,0,0.6790,6.1930,78.10,1.9356,24,666.0,20.20,96.73,21.52,11.00
431 | 9.33889,0.00,18.100,0,0.6790,6.3800,95.60,1.9682,24,666.0,20.20,60.72,24.08,9.50
432 | 8.49213,0.00,18.100,0,0.5840,6.3480,86.10,2.0527,24,666.0,20.20,83.45,17.64,14.50
433 | 10.06230,0.00,18.100,0,0.5840,6.8330,94.30,2.0882,24,666.0,20.20,81.33,19.69,14.10
434 | 6.44405,0.00,18.100,0,0.5840,6.4250,74.80,2.2004,24,666.0,20.20,97.95,12.03,16.10
435 | 5.58107,0.00,18.100,0,0.7130,6.4360,87.90,2.3158,24,666.0,20.20,100.19,16.22,14.30
436 | 13.91340,0.00,18.100,0,0.7130,6.2080,95.00,2.2222,24,666.0,20.20,100.63,15.17,11.70
437 | 11.16040,0.00,18.100,0,0.7400,6.6290,94.60,2.1247,24,666.0,20.20,109.85,23.27,13.40
438 | 14.42080,0.00,18.100,0,0.7400,6.4610,93.30,2.0026,24,666.0,20.20,27.49,18.05,9.60
439 | 15.17720,0.00,18.100,0,0.7400,6.1520,100.00,1.9142,24,666.0,20.20,9.32,26.45,8.70
440 | 13.67810,0.00,18.100,0,0.7400,5.9350,87.90,1.8206,24,666.0,20.20,68.95,34.02,8.40
441 | 9.39063,0.00,18.100,0,0.7400,5.6270,93.90,1.8172,24,666.0,20.20,396.90,22.88,12.80
442 | 22.05110,0.00,18.100,0,0.7400,5.8180,92.40,1.8662,24,666.0,20.20,391.45,22.11,10.50
443 | 9.72418,0.00,18.100,0,0.7400,6.4060,97.20,2.0651,24,666.0,20.20,385.96,19.52,17.10
444 | 5.66637,0.00,18.100,0,0.7400,6.2190,100.00,2.0048,24,666.0,20.20,395.69,16.59,18.40
445 | 9.96654,0.00,18.100,0,0.7400,6.4850,100.00,1.9784,24,666.0,20.20,386.73,18.85,15.40
446 | 12.80230,0.00,18.100,0,0.7400,5.8540,96.60,1.8956,24,666.0,20.20,240.52,23.79,10.80
447 | 10.67180,0.00,18.100,0,0.7400,6.4590,94.80,1.9879,24,666.0,20.20,43.06,23.98,11.80
448 | 6.28807,0.00,18.100,0,0.7400,6.3410,96.40,2.0720,24,666.0,20.20,318.01,17.79,14.90
449 | 9.92485,0.00,18.100,0,0.7400,6.2510,96.60,2.1980,24,666.0,20.20,388.52,16.44,12.60
450 | 9.32909,0.00,18.100,0,0.7130,6.1850,98.70,2.2616,24,666.0,20.20,396.90,18.13,14.10
451 | 7.52601,0.00,18.100,0,0.7130,6.4170,98.30,2.1850,24,666.0,20.20,304.21,19.31,13.00
452 | 6.71772,0.00,18.100,0,0.7130,6.7490,92.60,2.3236,24,666.0,20.20,0.32,17.44,13.40
453 | 5.44114,0.00,18.100,0,0.7130,6.6550,98.20,2.3552,24,666.0,20.20,355.29,17.73,15.20
454 | 5.09017,0.00,18.100,0,0.7130,6.2970,91.80,2.3682,24,666.0,20.20,385.09,17.27,16.10
455 | 8.24809,0.00,18.100,0,0.7130,7.3930,99.30,2.4527,24,666.0,20.20,375.87,16.74,17.80
456 | 9.51363,0.00,18.100,0,0.7130,6.7280,94.10,2.4961,24,666.0,20.20,6.68,18.71,14.90
457 | 4.75237,0.00,18.100,0,0.7130,6.5250,86.50,2.4358,24,666.0,20.20,50.92,18.13,14.10
458 | 4.66883,0.00,18.100,0,0.7130,5.9760,87.90,2.5806,24,666.0,20.20,10.48,19.01,12.70
459 | 8.20058,0.00,18.100,0,0.7130,5.9360,80.30,2.7792,24,666.0,20.20,3.50,16.94,13.50
460 | 7.75223,0.00,18.100,0,0.7130,6.3010,83.70,2.7831,24,666.0,20.20,272.21,16.23,14.90
461 | 6.80117,0.00,18.100,0,0.7130,6.0810,84.40,2.7175,24,666.0,20.20,396.90,14.70,20.00
462 | 4.81213,0.00,18.100,0,0.7130,6.7010,90.00,2.5975,24,666.0,20.20,255.23,16.42,16.40
463 | 3.69311,0.00,18.100,0,0.7130,6.3760,88.40,2.5671,24,666.0,20.20,391.43,14.65,17.70
464 | 6.65492,0.00,18.100,0,0.7130,6.3170,83.00,2.7344,24,666.0,20.20,396.90,13.99,19.50
465 | 5.82115,0.00,18.100,0,0.7130,6.5130,89.90,2.8016,24,666.0,20.20,393.82,10.29,20.20
466 | 7.83932,0.00,18.100,0,0.6550,6.2090,65.40,2.9634,24,666.0,20.20,396.90,13.22,21.40
467 | 3.16360,0.00,18.100,0,0.6550,5.7590,48.20,3.0665,24,666.0,20.20,334.40,14.13,19.90
468 | 3.77498,0.00,18.100,0,0.6550,5.9520,84.70,2.8715,24,666.0,20.20,22.01,17.15,19.00
469 | 4.42228,0.00,18.100,0,0.5840,6.0030,94.50,2.5403,24,666.0,20.20,331.29,21.32,19.10
470 | 15.57570,0.00,18.100,0,0.5800,5.9260,71.00,2.9084,24,666.0,20.20,368.74,18.13,19.10
471 | 13.07510,0.00,18.100,0,0.5800,5.7130,56.70,2.8237,24,666.0,20.20,396.90,14.76,20.10
472 | 4.34879,0.00,18.100,0,0.5800,6.1670,84.00,3.0334,24,666.0,20.20,396.90,16.29,19.90
473 | 4.03841,0.00,18.100,0,0.5320,6.2290,90.70,3.0993,24,666.0,20.20,395.33,12.87,19.60
474 | 3.56868,0.00,18.100,0,0.5800,6.4370,75.00,2.8965,24,666.0,20.20,393.37,14.36,23.20
475 | 4.64689,0.00,18.100,0,0.6140,6.9800,67.60,2.5329,24,666.0,20.20,374.68,11.66,29.80
476 | 8.05579,0.00,18.100,0,0.5840,5.4270,95.40,2.4298,24,666.0,20.20,352.58,18.14,13.80
477 | 6.39312,0.00,18.100,0,0.5840,6.1620,97.40,2.2060,24,666.0,20.20,302.76,24.10,13.30
478 | 4.87141,0.00,18.100,0,0.6140,6.4840,93.60,2.3053,24,666.0,20.20,396.21,18.68,16.70
479 | 15.02340,0.00,18.100,0,0.6140,5.3040,97.30,2.1007,24,666.0,20.20,349.48,24.91,12.00
480 | 10.23300,0.00,18.100,0,0.6140,6.1850,96.70,2.1705,24,666.0,20.20,379.70,18.03,14.60
481 | 14.33370,0.00,18.100,0,0.6140,6.2290,88.00,1.9512,24,666.0,20.20,383.32,13.11,21.40
482 | 5.82401,0.00,18.100,0,0.5320,6.2420,64.70,3.4242,24,666.0,20.20,396.90,10.74,23.00
483 | 5.70818,0.00,18.100,0,0.5320,6.7500,74.90,3.3317,24,666.0,20.20,393.07,7.74,23.70
484 | 5.73116,0.00,18.100,0,0.5320,7.0610,77.00,3.4106,24,666.0,20.20,395.28,7.01,25.00
485 | 2.81838,0.00,18.100,0,0.5320,5.7620,40.30,4.0983,24,666.0,20.20,392.92,10.42,21.80
486 | 2.37857,0.00,18.100,0,0.5830,5.8710,41.90,3.7240,24,666.0,20.20,370.73,13.34,20.60
487 | 3.67367,0.00,18.100,0,0.5830,6.3120,51.90,3.9917,24,666.0,20.20,388.62,10.58,21.20
488 | 5.69175,0.00,18.100,0,0.5830,6.1140,79.80,3.5459,24,666.0,20.20,392.68,14.98,19.10
489 | 4.83567,0.00,18.100,0,0.5830,5.9050,53.20,3.1523,24,666.0,20.20,388.22,11.45,20.60
490 | 0.15086,0.00,27.740,0,0.6090,5.4540,92.70,1.8209,4,711.0,20.10,395.09,18.06,15.20
491 | 0.18337,0.00,27.740,0,0.6090,5.4140,98.30,1.7554,4,711.0,20.10,344.05,23.97,7.00
492 | 0.20746,0.00,27.740,0,0.6090,5.0930,98.00,1.8226,4,711.0,20.10,318.43,29.68,8.10
493 | 0.10574,0.00,27.740,0,0.6090,5.9830,98.80,1.8681,4,711.0,20.10,390.11,18.07,13.60
494 | 0.11132,0.00,27.740,0,0.6090,5.9830,83.50,2.1099,4,711.0,20.10,396.90,13.35,20.10
495 | 0.17331,0.00,9.690,0,0.5850,5.7070,54.00,2.3817,6,391.0,19.20,396.90,12.01,21.80
496 | 0.27957,0.00,9.690,0,0.5850,5.9260,42.60,2.3817,6,391.0,19.20,396.90,13.59,24.50
497 | 0.17899,0.00,9.690,0,0.5850,5.6700,28.80,2.7986,6,391.0,19.20,393.29,17.60,23.10
498 | 0.28960,0.00,9.690,0,0.5850,5.3900,72.90,2.7986,6,391.0,19.20,396.90,21.14,19.70
499 | 0.26838,0.00,9.690,0,0.5850,5.7940,70.60,2.8927,6,391.0,19.20,396.90,14.10,18.30
500 | 0.23912,0.00,9.690,0,0.5850,6.0190,65.30,2.4091,6,391.0,19.20,396.90,12.92,21.20
501 | 0.17783,0.00,9.690,0,0.5850,5.5690,73.50,2.3999,6,391.0,19.20,395.77,15.10,17.50
502 | 0.22438,0.00,9.690,0,0.5850,6.0270,79.70,2.4982,6,391.0,19.20,396.90,14.33,16.80
503 | 0.06263,0.00,11.930,0,0.5730,6.5930,69.10,2.4786,1,273.0,21.00,391.99,9.67,22.40
504 | 0.04527,0.00,11.930,0,0.5730,6.1200,76.70,2.2875,1,273.0,21.00,396.90,9.08,20.60
505 | 0.06076,0.00,11.930,0,0.5730,6.9760,91.00,2.1675,1,273.0,21.00,396.90,5.64,23.90
506 | 0.10959,0.00,11.930,0,0.5730,6.7940,89.30,2.3889,1,273.0,21.00,393.45,6.48,22.00
507 | 0.04741,0.00,11.930,0,0.5730,6.0300,80.80,2.5050,1,273.0,21.00,396.90,7.88,11.90
508 |
--------------------------------------------------------------------------------
/table_data/world_gdp_data.csv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Animadversio/GPT-Auto-Data-Analytics/7aeb2d505c2ee152da1d515813dcc30f76a057a8/table_data/world_gdp_data.csv
--------------------------------------------------------------------------------