├── .DS_Store
├── .gitignore
├── 1-operators
├── condition.ipynb
└── parallel.ipynb
├── 2-data-passing
└── data-passing.ipynb
├── 3-visualize
├── html.ipynb
└── metrics.ipynb
├── 4-samples
├── linear_regression.ipynb
└── produce_and_consume.ipynb
├── README.md
├── components
├── add
│ └── component.yaml
├── get_csv_info
│ └── component.yaml
├── merge_csv
│ └── component.yaml
├── minus
│ └── component.yaml
├── visualize_html
│ └── component.yaml
└── visualize_metrics
│ └── component.yaml
├── constants.py
├── data
├── housing.csv
└── housing_features.csv
├── requirements.txt
└── utils
├── __init__.py
├── auth.py
└── helpers.py
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quan-dang/kubeflow-tutorials/20624db3e035081085e05edc858d52183247dbb7/.DS_Store
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Ref: https://github.com/github/gitignore/blob/main/Python.gitignore
2 | # Byte-compiled / optimized / DLL files
3 | __pycache__/
4 | *.py[cod]
5 | *$py.class
6 |
7 | # C extensions
8 | *.so
9 |
10 | # Distribution / packaging
11 | .Python
12 | build/
13 | develop-eggs/
14 | dist/
15 | downloads/
16 | eggs/
17 | .eggs/
18 | lib/
19 | lib64/
20 | parts/
21 | sdist/
22 | var/
23 | wheels/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 | cover/
54 |
55 | # Translations
56 | *.mo
57 | *.pot
58 |
59 | # Django stuff:
60 | *.log
61 | local_settings.py
62 | db.sqlite3
63 | db.sqlite3-journal
64 |
65 | # Flask stuff:
66 | instance/
67 | .webassets-cache
68 |
69 | # Scrapy stuff:
70 | .scrapy
71 |
72 | # Sphinx documentation
73 | docs/_build/
74 |
75 | # PyBuilder
76 | .pybuilder/
77 | target/
78 |
79 | # Jupyter Notebook
80 | .ipynb_checkpoints
81 |
82 | # IPython
83 | profile_default/
84 | ipython_config.py
85 |
86 | # pyenv
87 | # For a library or package, you might want to ignore these files since the code is
88 | # intended to run in multiple environments; otherwise, check them in:
89 | # .python-version
90 |
91 | # pipenv
92 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
93 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
94 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
95 | # install all needed dependencies.
96 | #Pipfile.lock
97 |
98 | # poetry
99 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
100 | # This is especially recommended for binary packages to ensure reproducibility, and is more
101 | # commonly ignored for libraries.
102 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
103 | #poetry.lock
104 |
105 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
106 | __pypackages__/
107 |
108 | # Celery stuff
109 | celerybeat-schedule
110 | celerybeat.pid
111 |
112 | # SageMath parsed files
113 | *.sage.py
114 |
115 | # Environments
116 | .env
117 | .venv
118 | env/
119 | venv/
120 | ENV/
121 | env.bak/
122 | venv.bak/
123 |
124 | # Spyder project settings
125 | .spyderproject
126 | .spyproject
127 |
128 | # Rope project settings
129 | .ropeproject
130 |
131 | # mkdocs documentation
132 | /site
133 |
134 | # mypy
135 | .mypy_cache/
136 | .dmypy.json
137 | dmypy.json
138 |
139 | # Pyre type checker
140 | .pyre/
141 |
142 | # pytype static type analyzer
143 | .pytype/
144 |
145 | # Cython debug symbols
146 | cython_debug/
147 |
148 | # PyCharm
149 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
150 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
151 | # and can be added to the global gitignore or merged into this file. For a more nuclear
152 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
153 | #.idea/
154 |
--------------------------------------------------------------------------------
/1-operators/condition.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": null,
6 | "id": "d6382411",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "from kfp.components import create_component_from_func\n",
11 | "\n",
12 | "import sys\n",
13 | "sys.path.insert(0, \"..\")\n",
14 | "from constants import NAMESPACE, HOST\n",
15 | "from utils.auth import get_session_cookie"
16 | ]
17 | },
18 | {
19 | "cell_type": "code",
20 | "execution_count": null,
21 | "id": "b9bdca81",
22 | "metadata": {},
23 | "outputs": [],
24 | "source": [
25 | "EXPERIMENT_NAME = \"tutorial\""
26 | ]
27 | },
28 | {
29 | "cell_type": "code",
30 | "execution_count": null,
31 | "id": "fc054cfe",
32 | "metadata": {},
33 | "outputs": [],
34 | "source": [
35 | "def add(a: float, b: float) -> float:\n",
36 | " \"\"\"Returns sum of two arguments\"\"\"\n",
37 | " return a + b\n",
38 | "\n",
39 | "add_op = create_component_from_func(\n",
40 | " func=add,\n",
41 | " base_image='python:3.7', # Optional, with default is python:3.7\n",
42 | " output_component_file='../components/add/component.yaml', # Optional\n",
43 | " packages_to_install=['pandas==0.24'], # Optional\n",
44 | ")\n",
45 | "\n",
46 | "def minus(a: float, b: float) -> float:\n",
47 | " \"\"\"Returns minus of two arguments\"\"\"\n",
48 | " print(a-b)\n",
49 | " return a - b\n",
50 | "\n",
51 | "minus_op = create_component_from_func(\n",
52 | " func=minus,\n",
53 | " base_image='python:3.7', # Optional\n",
54 | " output_component_file='../components/minus/component.yaml', # Optional\n",
55 | " packages_to_install=['pandas==0.24'], # Optional\n",
56 | ")"
57 | ]
58 | },
59 | {
60 | "cell_type": "code",
61 | "execution_count": null,
62 | "id": "42071235",
63 | "metadata": {},
64 | "outputs": [],
65 | "source": [
66 | "from kfp import dsl\n",
67 | "import kfp\n",
68 | "\n",
69 | "@dsl.pipeline(\n",
70 | " name='Condition',\n",
71 | " description='Run minus op if the condition is satisfied.'\n",
72 | ")\n",
73 | "def add_and_minus():\n",
74 | " \"\"\"A sample pipeline showing condition.\"\"\"\n",
75 | "\n",
76 | " add_task = add_op(1, 2)\n",
77 | " sum_output_ref = add_task.outputs['Output']\n",
78 | " \n",
79 | " with dsl.Condition(sum_output_ref>3):\n",
80 | " minus_task = minus_op(sum_output_ref, 4)"
81 | ]
82 | },
83 | {
84 | "cell_type": "code",
85 | "execution_count": null,
86 | "id": "94efc3a2",
87 | "metadata": {},
88 | "outputs": [],
89 | "source": [
90 | "session_cookie = get_session_cookie()\n",
91 | "client = kfp.Client(\n",
92 | " host=f\"{HOST}/pipeline\",\n",
93 | " cookies=f\"authservice_session={session_cookie}\",\n",
94 | " namespace=NAMESPACE,\n",
95 | ")"
96 | ]
97 | },
98 | {
99 | "cell_type": "code",
100 | "execution_count": null,
101 | "id": "116d1827",
102 | "metadata": {},
103 | "outputs": [],
104 | "source": [
105 | "client.create_run_from_pipeline_func(add_and_minus, \n",
106 | " arguments={}, \n",
107 | " experiment_name=EXPERIMENT_NAME\n",
108 | ")"
109 | ]
110 | }
111 | ],
112 | "metadata": {
113 | "kernelspec": {
114 | "display_name": "Python 3",
115 | "language": "python",
116 | "name": "python3"
117 | },
118 | "language_info": {
119 | "codemirror_mode": {
120 | "name": "ipython",
121 | "version": 3
122 | },
123 | "file_extension": ".py",
124 | "mimetype": "text/x-python",
125 | "name": "python",
126 | "nbconvert_exporter": "python",
127 | "pygments_lexer": "ipython3",
128 | "version": "3.8.8"
129 | }
130 | },
131 | "nbformat": 4,
132 | "nbformat_minor": 5
133 | }
134 |
--------------------------------------------------------------------------------
/1-operators/parallel.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": null,
6 | "id": "b56d2809",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "from kfp.components import create_component_from_func, load_component_from_file\n",
11 | "\n",
12 | "import sys\n",
13 | "sys.path.insert(0, \"..\")\n",
14 | "from constants import NAMESPACE, HOST\n",
15 | "from utils.auth import get_session_cookie"
16 | ]
17 | },
18 | {
19 | "cell_type": "code",
20 | "execution_count": null,
21 | "id": "5ef3a0c0",
22 | "metadata": {},
23 | "outputs": [],
24 | "source": [
25 | "EXPERIMENT_NAME = \"tutorial\""
26 | ]
27 | },
28 | {
29 | "cell_type": "code",
30 | "execution_count": null,
31 | "id": "564dc0c6",
32 | "metadata": {},
33 | "outputs": [],
34 | "source": [
35 | "add_op = load_component_from_file(\"../components/add/component.yaml\")\n",
36 | "minus_op = load_component_from_file(\"../components/minus/component.yaml\")"
37 | ]
38 | },
39 | {
40 | "cell_type": "code",
41 | "execution_count": null,
42 | "id": "eba3ab97",
43 | "metadata": {},
44 | "outputs": [],
45 | "source": [
46 | "from kfp import dsl\n",
47 | "import kfp\n",
48 | "\n",
49 | "@dsl.pipeline(\n",
50 | " name='Parallel For',\n",
51 | " description='Run in parallel two add tasks.'\n",
52 | ")\n",
53 | "def add_and_minus():\n",
54 | " \"\"\"A sample pipeline showing running tasks in parallel.\"\"\"\n",
55 | " with dsl.ParallelFor([{'a':2, 'b': 3}, {'a': 20, 'b': 30}]) as item:\n",
56 | " add_task = add_op(item.a, item.b)\n",
57 | " minus_task = minus_op(item.a, item.b)"
58 | ]
59 | },
60 | {
61 | "cell_type": "code",
62 | "execution_count": null,
63 | "id": "0d830f86",
64 | "metadata": {},
65 | "outputs": [],
66 | "source": [
67 | "session_cookie = get_session_cookie()\n",
68 | "client = kfp.Client(\n",
69 | " host=f\"{HOST}/pipeline\",\n",
70 | " cookies=f\"authservice_session={session_cookie}\",\n",
71 | " namespace=NAMESPACE,\n",
72 | ")"
73 | ]
74 | },
75 | {
76 | "cell_type": "code",
77 | "execution_count": null,
78 | "id": "3041e9d1",
79 | "metadata": {},
80 | "outputs": [],
81 | "source": [
82 | "client.create_run_from_pipeline_func(add_and_minus, \n",
83 | " arguments={}, \n",
84 | " experiment_name=EXPERIMENT_NAME\n",
85 | ")"
86 | ]
87 | }
88 | ],
89 | "metadata": {
90 | "kernelspec": {
91 | "display_name": "Python 3",
92 | "language": "python",
93 | "name": "python3"
94 | },
95 | "language_info": {
96 | "codemirror_mode": {
97 | "name": "ipython",
98 | "version": 3
99 | },
100 | "file_extension": ".py",
101 | "mimetype": "text/x-python",
102 | "name": "python",
103 | "nbconvert_exporter": "python",
104 | "pygments_lexer": "ipython3",
105 | "version": "3.8.8"
106 | }
107 | },
108 | "nbformat": 4,
109 | "nbformat_minor": 5
110 | }
111 |
--------------------------------------------------------------------------------
/2-data-passing/data-passing.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": null,
6 | "id": "cbca6ac9",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "import kfp\n",
11 | "from kfp.components import load_component_from_url, create_component_from_func\n",
12 | "from kfp.components import InputPath, OutputPath\n",
13 | "\n",
14 | "import sys\n",
15 | "sys.path.insert(0, \"..\")\n",
16 | "from constants import NAMESPACE, HOST\n",
17 | "from utils.auth import get_session_cookie"
18 | ]
19 | },
20 | {
21 | "cell_type": "code",
22 | "execution_count": null,
23 | "id": "0c9d836e",
24 | "metadata": {},
25 | "outputs": [],
26 | "source": [
27 | "web_downloader_op = load_component_from_url(\n",
28 | " 'https://raw.githubusercontent.com/kubeflow/pipelines/1.7.1/components/web/Download/component.yaml')"
29 | ]
30 | },
31 | {
32 | "cell_type": "code",
33 | "execution_count": null,
34 | "id": "5d6ddc9f",
35 | "metadata": {},
36 | "outputs": [],
37 | "source": [
38 | "def merge_csv(file_path: InputPath('Tarball'),\n",
39 | " output_csv: OutputPath('CSV')):\n",
40 | " import glob\n",
41 | " import pandas as pd\n",
42 | " import tarfile\n",
43 | "\n",
44 | " tarfile.open(name=file_path, mode=\"r|gz\").extractall('data')\n",
45 | " df = pd.concat(\n",
46 | " [pd.read_csv(csv_file, header=None) \n",
47 | " for csv_file in glob.glob('data/*.csv')])\n",
48 | " df.to_csv(output_csv, index=False, header=False)\n",
49 | " \n",
50 | "create_step_merge_csv = create_component_from_func(\n",
51 | " func=merge_csv,\n",
52 | " output_component_file='../components/merge_csv/component.yaml', # This is optional. It saves the component spec for future use.\n",
53 | " base_image='python:3.7',\n",
54 | " packages_to_install=['pandas==1.1.4'])"
55 | ]
56 | },
57 | {
58 | "cell_type": "code",
59 | "execution_count": null,
60 | "id": "3cc5e747",
61 | "metadata": {},
62 | "outputs": [],
63 | "source": [
64 | "def get_csv_info(input_csv: InputPath('CSV')) -> tuple:\n",
65 | " import pandas as pd\n",
66 | " \n",
67 | " df = pd.read_csv(input_csv, header=None)\n",
68 | " print(f\"[Debug] df.shape: {df.shape}\")\n",
69 | " return df.shape\n",
70 | " \n",
71 | "get_csv_info_op = create_component_from_func(\n",
72 | " func=get_csv_info,\n",
73 | " output_component_file='../components/get_csv_info/component.yaml', # This is optional. It saves the component spec for future use.\n",
74 | " base_image='python:3.7',\n",
75 | " packages_to_install=['pandas==1.1.4'])"
76 | ]
77 | },
78 | {
79 | "cell_type": "code",
80 | "execution_count": null,
81 | "id": "a39aa3f8",
82 | "metadata": {},
83 | "outputs": [],
84 | "source": [
85 | "# Define a pipeline and create a task from a component:\n",
86 | "def my_pipeline(url):\n",
87 | " web_downloader_task = web_downloader_op(url=url)\n",
88 | " merge_csv_task = create_step_merge_csv(file=web_downloader_task.outputs['Data'])\n",
89 | " get_csv_info_task = get_csv_info_op(input_csv=merge_csv_task.outputs['output_csv'])"
90 | ]
91 | },
92 | {
93 | "cell_type": "code",
94 | "execution_count": null,
95 | "id": "db1dc61f",
96 | "metadata": {},
97 | "outputs": [],
98 | "source": [
99 | "session_cookie = get_session_cookie()\n",
100 | "client = kfp.Client(\n",
101 | " host=f\"{HOST}/pipeline\",\n",
102 | " cookies=f\"authservice_session={session_cookie}\",\n",
103 | " namespace=NAMESPACE,\n",
104 | ")\n",
105 | "client.create_run_from_pipeline_func(\n",
106 | " my_pipeline,\n",
107 | " arguments={\n",
108 | " 'url': 'https://storage.googleapis.com/ml-pipeline-playground/iris-csv-files.tar.gz'\n",
109 | " })"
110 | ]
111 | }
112 | ],
113 | "metadata": {
114 | "kernelspec": {
115 | "display_name": "Python 3",
116 | "language": "python",
117 | "name": "python3"
118 | },
119 | "language_info": {
120 | "codemirror_mode": {
121 | "name": "ipython",
122 | "version": 3
123 | },
124 | "file_extension": ".py",
125 | "mimetype": "text/x-python",
126 | "name": "python",
127 | "nbconvert_exporter": "python",
128 | "pygments_lexer": "ipython3",
129 | "version": "3.8.8"
130 | }
131 | },
132 | "nbformat": 4,
133 | "nbformat_minor": 5
134 | }
135 |
--------------------------------------------------------------------------------
/3-visualize/html.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": null,
6 | "id": "eb917a14",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "import kfp\n",
11 | "from kfp.components import load_component_from_url, create_component_from_func\n",
12 | "from kfp.components import InputPath, OutputPath\n",
13 | "\n",
14 | "import sys\n",
15 | "sys.path.insert(0, \"..\")\n",
16 | "from constants import NAMESPACE, HOST\n",
17 | "from utils.auth import get_session_cookie"
18 | ]
19 | },
20 | {
21 | "cell_type": "code",
22 | "execution_count": null,
23 | "id": "29a4ef25",
24 | "metadata": {},
25 | "outputs": [],
26 | "source": [
27 | "# Ref: https://www.kubeflow.org/docs/components/pipelines/sdk/output-viewer/#web-app\n",
28 | "def produce_html(mlpipeline_ui_metadata_path: kfp.components.OutputPath()):\n",
29 | " import json\n",
30 | " import os\n",
31 | "\n",
32 | " metadata = {\n",
33 | " 'outputs' : [{\n",
34 | " 'type': 'web-app',\n",
35 | " 'storage': 'inline',\n",
36 | " 'source': '
Hello, World!
',\n",
37 | " }]\n",
38 | " }\n",
39 | "\n",
40 | " with open(mlpipeline_ui_metadata_path, 'w') as metadata_file:\n",
41 | " json.dump(metadata, metadata_file)\n",
42 | " \n",
43 | "produce_html_op = create_component_from_func(\n",
44 | " produce_html,\n",
45 | " base_image='python:3.7',\n",
46 | " packages_to_install=[],\n",
47 | " output_component_file='../components/visualize_html/component.yaml',\n",
48 | ")"
49 | ]
50 | },
51 | {
52 | "cell_type": "code",
53 | "execution_count": null,
54 | "id": "6c8521ab",
55 | "metadata": {},
56 | "outputs": [],
57 | "source": [
58 | "# Define a pipeline and create a task from a component:\n",
59 | "def my_pipeline(url):\n",
60 | " produce_html_op()"
61 | ]
62 | },
63 | {
64 | "cell_type": "code",
65 | "execution_count": null,
66 | "id": "c3096a43",
67 | "metadata": {},
68 | "outputs": [],
69 | "source": [
70 | "session_cookie = get_session_cookie()\n",
71 | "client = kfp.Client(\n",
72 | " host=f\"{HOST}/pipeline\",\n",
73 | " cookies=f\"authservice_session={session_cookie}\",\n",
74 | " namespace=NAMESPACE,\n",
75 | ")\n",
76 | "client.create_run_from_pipeline_func(\n",
77 | " my_pipeline,\n",
78 | " arguments={}\n",
79 | ")"
80 | ]
81 | }
82 | ],
83 | "metadata": {
84 | "kernelspec": {
85 | "display_name": "Python 3",
86 | "language": "python",
87 | "name": "python3"
88 | },
89 | "language_info": {
90 | "codemirror_mode": {
91 | "name": "ipython",
92 | "version": 3
93 | },
94 | "file_extension": ".py",
95 | "mimetype": "text/x-python",
96 | "name": "python",
97 | "nbconvert_exporter": "python",
98 | "pygments_lexer": "ipython3",
99 | "version": "3.8.8"
100 | }
101 | },
102 | "nbformat": 4,
103 | "nbformat_minor": 5
104 | }
105 |
--------------------------------------------------------------------------------
/3-visualize/metrics.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "id": "b919c46f",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "import kfp\n",
11 | "from kfp.components import load_component_from_url, create_component_from_func\n",
12 | "from kfp.components import InputPath, OutputPath\n",
13 | "\n",
14 | "import sys\n",
15 | "sys.path.insert(0, \"..\")\n",
16 | "from constants import NAMESPACE, HOST\n",
17 | "from utils.auth import get_session_cookie"
18 | ]
19 | },
20 | {
21 | "cell_type": "code",
22 | "execution_count": 5,
23 | "id": "6eb506d2",
24 | "metadata": {},
25 | "outputs": [],
26 | "source": [
27 | "from typing import NamedTuple\n",
28 | "from kfp.components import InputPath, OutputPath, create_component_from_func\n",
29 | "\n",
30 | "# Ref: https://www.kubeflow.org/docs/components/pipelines/sdk/pipelines-metrics/\n",
31 | "def produce_metrics() -> NamedTuple('Outputs', [\n",
32 | " ('mlpipeline_metrics', 'Metrics'),\n",
33 | "]):\n",
34 | " import json\n",
35 | "\n",
36 | " accuracy = 0.8\n",
37 | " metrics = {\n",
38 | " 'metrics': [{\n",
39 | " 'name': 'accuracy-score', # The name of the metric. Visualized as the column name in the runs table.\n",
40 | " 'numberValue': accuracy, # The value of the metric. Must be a numeric value.\n",
41 | " 'format': \"PERCENTAGE\", # The optional format of the metric. Supported values are \"RAW\" (displayed in raw format) and \"PERCENTAGE\" (displayed in percentage format).\n",
42 | " }]\n",
43 | " }\n",
44 | " return [json.dumps(metrics)]\n",
45 | "\n",
46 | "produce_metrics_op = create_component_from_func(\n",
47 | " produce_metrics,\n",
48 | " base_image='python:3.7',\n",
49 | " packages_to_install=[],\n",
50 | " output_component_file='../components/visualize_metrics/component.yaml',\n",
51 | ")"
52 | ]
53 | },
54 | {
55 | "cell_type": "code",
56 | "execution_count": 3,
57 | "id": "7704b823",
58 | "metadata": {},
59 | "outputs": [],
60 | "source": [
61 | "# Define a pipeline and create a task from a component:\n",
62 | "def my_pipeline(url):\n",
63 | " produce_metrics_op()"
64 | ]
65 | },
66 | {
67 | "cell_type": "code",
68 | "execution_count": 4,
69 | "id": "c2da397d",
70 | "metadata": {},
71 | "outputs": [
72 | {
73 | "data": {
74 | "text/html": [
75 | "Experiment details."
76 | ],
77 | "text/plain": [
78 | ""
79 | ]
80 | },
81 | "metadata": {},
82 | "output_type": "display_data"
83 | },
84 | {
85 | "data": {
86 | "text/html": [
87 | "Run details."
88 | ],
89 | "text/plain": [
90 | ""
91 | ]
92 | },
93 | "metadata": {},
94 | "output_type": "display_data"
95 | },
96 | {
97 | "data": {
98 | "text/plain": [
99 | "RunPipelineResult(run_id=f6a2e21f-c395-4e3a-9629-aa25b61fb659)"
100 | ]
101 | },
102 | "execution_count": 4,
103 | "metadata": {},
104 | "output_type": "execute_result"
105 | }
106 | ],
107 | "source": [
108 | "session_cookie = get_session_cookie()\n",
109 | "client = kfp.Client(\n",
110 | " host=f\"{HOST}/pipeline\",\n",
111 | " cookies=f\"authservice_session={session_cookie}\",\n",
112 | " namespace=NAMESPACE,\n",
113 | ")\n",
114 | "client.create_run_from_pipeline_func(\n",
115 | " my_pipeline,\n",
116 | " arguments={}\n",
117 | ")"
118 | ]
119 | }
120 | ],
121 | "metadata": {
122 | "kernelspec": {
123 | "display_name": "Python 3",
124 | "language": "python",
125 | "name": "python3"
126 | },
127 | "language_info": {
128 | "codemirror_mode": {
129 | "name": "ipython",
130 | "version": 3
131 | },
132 | "file_extension": ".py",
133 | "mimetype": "text/x-python",
134 | "name": "python",
135 | "nbconvert_exporter": "python",
136 | "pygments_lexer": "ipython3",
137 | "version": "3.8.8"
138 | }
139 | },
140 | "nbformat": 4,
141 | "nbformat_minor": 5
142 | }
143 |
--------------------------------------------------------------------------------
/4-samples/linear_regression.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "id": "2cc06b44",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "# !pip install kfp==1.6.3"
11 | ]
12 | },
13 | {
14 | "cell_type": "code",
15 | "execution_count": 2,
16 | "id": "23f1e76c",
17 | "metadata": {},
18 | "outputs": [],
19 | "source": [
20 | "from typing import NamedTuple\n",
21 | "\n",
22 | "import kfp\n",
23 | "from kfp.components import InputPath, InputTextFile, OutputPath, OutputTextFile\n",
24 | "from kfp.components import func_to_container_op\n",
25 | "\n",
26 | "from datetime import datetime\n",
27 | "\n",
28 | "import sys\n",
29 | "sys.path.insert(0, \"..\")\n",
30 | "from constants import NAMESPACE, HOST\n",
31 | "from utils.auth import get_session_cookie\n",
32 | "from utils import helpers"
33 | ]
34 | },
35 | {
36 | "cell_type": "code",
37 | "execution_count": 3,
38 | "id": "5675f6cc",
39 | "metadata": {},
40 | "outputs": [],
41 | "source": [
42 | "import pandas as pd"
43 | ]
44 | },
45 | {
46 | "cell_type": "markdown",
47 | "id": "10b54257",
48 | "metadata": {},
49 | "source": [
50 | "### Define several constants"
51 | ]
52 | },
53 | {
54 | "cell_type": "code",
55 | "execution_count": 4,
56 | "id": "89d6a61e",
57 | "metadata": {},
58 | "outputs": [],
59 | "source": [
60 | "EXPERIMENT_NAME = \"tutorial\"\n",
61 | "PIPELINE_NAME = \"linear regression\"\n",
62 | "PIPELINE_VERSION = \"0.0.1\" # remember to change every run\n",
63 | "PIPELINE_DESCRIPTION = \"Using linear regression to predict house prices\"\n",
64 | "DATASET_URL = \"https://raw.githubusercontent.com/quan-dang/kubeflow-tutorials/master/data/housing.csv\""
65 | ]
66 | },
67 | {
68 | "cell_type": "markdown",
69 | "id": "850f9d26",
70 | "metadata": {},
71 | "source": [
72 | "### Create components from func"
73 | ]
74 | },
75 | {
76 | "cell_type": "code",
77 | "execution_count": 5,
78 | "id": "e77f01e5",
79 | "metadata": {},
80 | "outputs": [],
81 | "source": [
82 | "def prepare_data(\n",
83 | " url: str,\n",
84 | " X_train_path: OutputPath('PKL'),\n",
85 | " y_train_path: OutputPath('PKL'),\n",
86 | " X_val_path: OutputPath('PKL'),\n",
87 | " y_val_path: OutputPath('PKL'),\n",
88 | " X_test_path: OutputPath('PKL'),\n",
89 | " y_test_path: OutputPath('PKL'),\n",
90 | "):\n",
91 | " import pandas as pd\n",
92 | " import wget\n",
93 | " from sklearn.model_selection import train_test_split\n",
94 | " import joblib\n",
95 | " \n",
96 | " # download housing.csv to local\n",
97 | " wget.download(url)\n",
98 | "\n",
99 | " df = pd.read_csv(\"housing.csv\")\n",
100 | " X = df.drop(columns=[\"price\"])\n",
101 | " y = df[\"price\"]\n",
102 | "\n",
103 | " # create train and test set\n",
104 | " X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42)\n",
105 | "\n",
106 | " # continue to split train set into train and validation sets\n",
107 | " X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.1, random_state=42)\n",
108 | " \n",
109 | " # dump data to pkl\n",
110 | " joblib.dump(X_train, X_train_path)\n",
111 | " joblib.dump(y_train, y_train_path)\n",
112 | " joblib.dump(X_val, X_val_path)\n",
113 | " joblib.dump(y_val, y_val_path)\n",
114 | " joblib.dump(X_test, X_test_path)\n",
115 | " joblib.dump(y_test, y_test_path)\n",
116 | " \n",
117 | "prepare_data_op = func_to_container_op(\n",
118 | " func=prepare_data, \n",
119 | " packages_to_install=[\"scikit-learn==1.0.2\", \n",
120 | " \"joblib==1.1.0\",\n",
121 | " \"pandas==1.3.5\",\n",
122 | " \"wget==3.2\"]\n",
123 | ")"
124 | ]
125 | },
126 | {
127 | "cell_type": "code",
128 | "execution_count": 6,
129 | "id": "4a8c9509",
130 | "metadata": {},
131 | "outputs": [],
132 | "source": [
133 | "def train(\n",
134 | " X_train_path: InputPath('PKL'),\n",
135 | " y_train_path: InputPath('PKL'),\n",
136 | " X_val_path: InputPath('PKL'),\n",
137 | " y_val_path: InputPath('PKL'),\n",
138 | " clf_path: OutputPath('Model')\n",
139 | "):\n",
140 | " from sklearn.preprocessing import OneHotEncoder\n",
141 | " from sklearn.pipeline import Pipeline\n",
142 | " from sklearn.linear_model import LinearRegression\n",
143 | " from sklearn.compose import ColumnTransformer\n",
144 | " from sklearn.metrics import r2_score\n",
145 | " import joblib\n",
146 | "\n",
147 | " # load data\n",
148 | " X_train = joblib.load(X_train_path)\n",
149 | " y_train = joblib.load(y_train_path)\n",
150 | " X_val = joblib.load(X_val_path)\n",
151 | " y_val = joblib.load(y_val_path)\n",
152 | " \n",
153 | " categorical_features = X_train.loc[:, X_train.dtypes == object].columns\n",
154 | "\n",
155 | " categorical_transformer = OneHotEncoder()\n",
156 | "\n",
157 | " preprocessor = ColumnTransformer(\n",
158 | " transformers=[\n",
159 | " (\"cat\", categorical_transformer, categorical_features),\n",
160 | " ],\n",
161 | " remainder = 'passthrough'\n",
162 | " )\n",
163 | "\n",
164 | " clf = Pipeline(\n",
165 | " steps=[(\"preprocessor\", preprocessor), (\"regressor\", LinearRegression())]\n",
166 | " )\n",
167 | "\n",
168 | " clf.fit(X_train, y_train)\n",
169 | " \n",
170 | " # make prediction on the val data\n",
171 | " y_val_pred = clf.predict(X_val)\n",
172 | " # evaluate on the val data\n",
173 | " print(\"r2_score: \", r2_score(y_val, y_val_pred))\n",
174 | " \n",
175 | " joblib.dump(clf, clf_path)\n",
176 | " \n",
177 | "train_op = func_to_container_op(\n",
178 | " func=train, \n",
179 | " packages_to_install=[\"scikit-learn==1.0.2\", \n",
180 | " \"joblib==1.1.0\",\n",
181 | " \"pandas==1.3.5\"]\n",
182 | ")"
183 | ]
184 | },
185 | {
186 | "cell_type": "code",
187 | "execution_count": 7,
188 | "id": "33796c6f",
189 | "metadata": {},
190 | "outputs": [],
191 | "source": [
192 | "def evaluate(\n",
193 | " X_test_path: InputPath('PKL'),\n",
194 | " y_test_path: InputPath('PKL'),\n",
195 | " clf_path: InputPath('Model'),\n",
196 | " y_test_pred_path: OutputPath('PKL')\n",
197 | ") -> NamedTuple('Outputs', [\n",
198 | " ('mlpipeline_metrics', 'Metrics'),\n",
199 | "]):\n",
200 | " import joblib\n",
201 | " from sklearn.metrics import r2_score\n",
202 | " import json\n",
203 | " \n",
204 | " # load data\n",
205 | " X_test = joblib.load(X_test_path)\n",
206 | " y_test = joblib.load(y_test_path)\n",
207 | " \n",
208 | " # load model\n",
209 | " clf = joblib.load(clf_path)\n",
210 | " \n",
211 | " # make prediction on the test data\n",
212 | " y_test_pred = clf.predict(X_test)\n",
213 | " \n",
214 | " joblib.dump(y_test_pred, y_test_pred_path)\n",
215 | " \n",
216 | " # evaluate on the test data\n",
217 | " metrics = {\n",
218 | " 'metrics': [{\n",
219 | " 'name': 'r2_score', # The name of the metric. Visualized as the column name in the runs table.\n",
220 | " 'numberValue': r2_score(y_test, y_test_pred), # The value of the metric. Must be a numeric value.\n",
221 | " 'format': \"RAW\", # The optional format of the metric. Supported values are \"RAW\" (displayed in raw format) and \"PERCENTAGE\" (displayed in percentage format).\n",
222 | " }]\n",
223 | " }\n",
224 | " return [json.dumps(metrics)]\n",
225 | " \n",
226 | "evaluate_op = func_to_container_op(\n",
227 | " func=evaluate, \n",
228 | " packages_to_install=[\"scikit-learn==1.0.2\", \n",
229 | " \"joblib==1.1.0\",\n",
230 | " \"pandas==1.3.5\"]\n",
231 | ")"
232 | ]
233 | },
234 | {
235 | "cell_type": "code",
236 | "execution_count": 8,
237 | "id": "c3cdb19a",
238 | "metadata": {},
239 | "outputs": [],
240 | "source": [
241 | "def visualize(\n",
242 | " X_test_path: InputPath('PKL'),\n",
243 | " y_test_path: InputPath('PKL'),\n",
244 | " y_test_pred_path: InputPath('PKL'),\n",
245 | " mlpipeline_ui_metadata_path: kfp.components.OutputPath(),\n",
246 | "):\n",
247 | " import joblib\n",
248 | " import matplotlib.pyplot as plt\n",
249 | " import base64\n",
250 | " from io import BytesIO\n",
251 | " import json\n",
252 | " \n",
253 | " # load data\n",
254 | " X_test = joblib.load(X_test_path)\n",
255 | " y_test = joblib.load(y_test_path)\n",
256 | " y_test_pred = joblib.load(y_test_pred_path)\n",
257 | " \n",
258 | " ncols = 4\n",
259 | " nrows = 3\n",
260 | "\n",
261 | " fig, axs = plt.subplots(ncols=ncols, nrows=nrows, figsize=(10, 5),\n",
262 | " constrained_layout=True)\n",
263 | "\n",
264 | " for row in range(nrows):\n",
265 | " for col in range(ncols):\n",
266 | " # corresponding feature index to this subplot\n",
267 | " feature_index = row*nrows + col\n",
268 | " axs[row, col].scatter(X_test.iloc[:,feature_index], y_test, color=\"red\")\n",
269 | " axs[row, col].scatter(X_test.iloc[:,feature_index], y_test_pred, color=\"blue\")\n",
270 | " axs[row, col].set_title(X_test.columns[feature_index])\n",
271 | "\n",
272 | " fig.suptitle('Test data')\n",
273 | " \n",
274 | " # Ref: https://stackoverflow.com/questions/48717794/matplotlib-embed-figures-in-auto-generated-html\n",
275 | " tmpfile = BytesIO()\n",
276 | " fig.savefig(tmpfile, format='png')\n",
277 | " encoded = base64.b64encode(tmpfile.getvalue()).decode('utf-8')\n",
278 | " html = '
'.format(encoded)\n",
279 | "\n",
280 | " with open('test.html','w') as f:\n",
281 | " f.write(html)\n",
282 | "\n",
283 | " metadata = {\n",
284 | " 'outputs' : [{\n",
285 | " 'type': 'web-app',\n",
286 | " 'storage': 'inline',\n",
287 | " 'source': html,\n",
288 | " }]\n",
289 | " }\n",
290 | "\n",
291 | " with open(mlpipeline_ui_metadata_path, 'w') as metadata_file:\n",
292 | " json.dump(metadata, metadata_file)\n",
293 | " \n",
294 | " \n",
295 | "visualize_op = func_to_container_op(\n",
296 | " func=visualize,\n",
297 | " packages_to_install=[\"matplotlib==3.5.1\", \n",
298 | " \"joblib==1.1.0\",\n",
299 | " \"pandas==1.3.5\"]\n",
300 | ")"
301 | ]
302 | },
303 | {
304 | "cell_type": "code",
305 | "execution_count": 9,
306 | "id": "dd88bb30",
307 | "metadata": {},
308 | "outputs": [],
309 | "source": [
310 | "# Define a pipeline and create a task from a component:\n",
311 | "def my_pipeline(url):\n",
312 | " prepare_data_task = prepare_data_op(url=url)\n",
313 | " train_task = train_op(x_train=prepare_data_task.outputs['X_train'], \n",
314 | " y_train=prepare_data_task.outputs['y_train'],\n",
315 | " x_val=prepare_data_task.outputs['X_val'],\n",
316 | " y_val=prepare_data_task.outputs['y_val'],\n",
317 | " )\n",
318 | " evaluate_task = evaluate_op(x_test=prepare_data_task.outputs['X_test'], \n",
319 | " y_test=prepare_data_task.outputs['y_test'],\n",
320 | " clf=train_task.outputs['clf'])\n",
321 | " visualize_task = visualize_op(x_test=prepare_data_task.outputs['X_test'], \n",
322 | " y_test=prepare_data_task.outputs['y_test'],\n",
323 | " y_test_pred=evaluate_task.outputs['y_test_pred'])"
324 | ]
325 | },
326 | {
327 | "cell_type": "code",
328 | "execution_count": 10,
329 | "id": "a0a15d6d",
330 | "metadata": {},
331 | "outputs": [
332 | {
333 | "data": {
334 | "text/html": [
335 | "Experiment link here"
336 | ],
337 | "text/plain": [
338 | ""
339 | ]
340 | },
341 | "metadata": {},
342 | "output_type": "display_data"
343 | },
344 | {
345 | "data": {
346 | "text/html": [
347 | "Run link here"
348 | ],
349 | "text/plain": [
350 | ""
351 | ]
352 | },
353 | "metadata": {},
354 | "output_type": "display_data"
355 | },
356 | {
357 | "data": {
358 | "text/plain": [
359 | "RunPipelineResult(run_id=974d04c1-22df-41c9-addf-8a18ec45282e)"
360 | ]
361 | },
362 | "execution_count": 10,
363 | "metadata": {},
364 | "output_type": "execute_result"
365 | }
366 | ],
367 | "source": [
368 | "session_cookie = get_session_cookie()\n",
369 | "client = kfp.Client(\n",
370 | " host=f\"{HOST}/pipeline\",\n",
371 | " cookies=f\"authservice_session={session_cookie}\",\n",
372 | " namespace=NAMESPACE,\n",
373 | ")\n",
374 | "client.create_run_from_pipeline_func(\n",
375 | " my_pipeline,\n",
376 | " arguments={\n",
377 | " 'url': DATASET_URL\n",
378 | " })"
379 | ]
380 | }
381 | ],
382 | "metadata": {
383 | "kernelspec": {
384 | "display_name": "Python 3",
385 | "language": "python",
386 | "name": "python3"
387 | },
388 | "language_info": {
389 | "codemirror_mode": {
390 | "name": "ipython",
391 | "version": 3
392 | },
393 | "file_extension": ".py",
394 | "mimetype": "text/x-python",
395 | "name": "python",
396 | "nbconvert_exporter": "python",
397 | "pygments_lexer": "ipython3",
398 | "version": "3.8.8"
399 | }
400 | },
401 | "nbformat": 4,
402 | "nbformat_minor": 5
403 | }
404 |
--------------------------------------------------------------------------------
/4-samples/produce_and_consume.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": null,
6 | "id": "f8ac1efa",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "# !pip install kfp==1.6.3"
11 | ]
12 | },
13 | {
14 | "cell_type": "code",
15 | "execution_count": null,
16 | "id": "c62d7561",
17 | "metadata": {},
18 | "outputs": [],
19 | "source": [
20 | "from typing import NamedTuple\n",
21 | "\n",
22 | "import kfp\n",
23 | "from kfp.components import InputPath, InputTextFile, OutputPath, OutputTextFile\n",
24 | "from kfp.components import func_to_container_op\n",
25 | "\n",
26 | "from datetime import datetime\n",
27 | "\n",
28 | "import sys\n",
29 | "sys.path.insert(0, \"..\")\n",
30 | "from constants import NAMESPACE, HOST\n",
31 | "from utils.auth import get_session_cookie\n",
32 | "from utils import helpers"
33 | ]
34 | },
35 | {
36 | "cell_type": "markdown",
37 | "id": "1a0afd21",
38 | "metadata": {},
39 | "source": [
40 | "### Define several constants"
41 | ]
42 | },
43 | {
44 | "cell_type": "code",
45 | "execution_count": null,
46 | "id": "45b4ffec",
47 | "metadata": {},
48 | "outputs": [],
49 | "source": [
50 | "EXPERIMENT_NAME = \"tutorial\"\n",
51 | "PIPELINE_NAME = \"tutorial\"\n",
52 | "PIPELINE_VERSION = \"0.0.1\" # remember to change every run\n",
53 | "PIPELINE_DESCRIPTION = \"This is a tutorial pipeline\""
54 | ]
55 | },
56 | {
57 | "cell_type": "markdown",
58 | "id": "d36ba402",
59 | "metadata": {},
60 | "source": [
61 | "### Create components from func"
62 | ]
63 | },
64 | {
65 | "cell_type": "code",
66 | "execution_count": null,
67 | "id": "0b7eeb41",
68 | "metadata": {},
69 | "outputs": [],
70 | "source": [
71 | "@func_to_container_op\n",
72 | "def produce_one_small_output() -> str:\n",
73 | " return 'Hello world'\n",
74 | "\n",
75 | "@func_to_container_op\n",
76 | "def produce_two_small_outputs() -> NamedTuple('Outputs', [('text', str), ('number', int)]):\n",
77 | " return (\"data 1\", 42)\n",
78 | "\n",
79 | "@func_to_container_op\n",
80 | "def consume_two_arguments(text: str, number: int):\n",
81 | " print('Text={}'.format(text))\n",
82 | " print('Number={}'.format(str(number)))"
83 | ]
84 | },
85 | {
86 | "cell_type": "markdown",
87 | "id": "6184a6d9",
88 | "metadata": {},
89 | "source": [
90 | "### Create pipelines by connecting components"
91 | ]
92 | },
93 | {
94 | "cell_type": "code",
95 | "execution_count": null,
96 | "id": "63d7e511",
97 | "metadata": {},
98 | "outputs": [],
99 | "source": [
100 | "def producers_to_consumers_pipeline(text: str = \"Hello world\"):\n",
101 | " '''Pipeline that passes data from producer to consumer'''\n",
102 | " produce1_task = produce_one_small_output()\n",
103 | " produce2_task = produce_two_small_outputs()\n",
104 | "\n",
105 | " consume_task1 = consume_two_arguments(produce1_task.output, 42)\n",
106 | " consume_task2 = consume_two_arguments(text, produce2_task.outputs['number'])\n",
107 | " consume_task3 = consume_two_arguments(produce2_task.outputs['text'], produce2_task.outputs['number'])"
108 | ]
109 | },
110 | {
111 | "cell_type": "markdown",
112 | "id": "20a0da7b",
113 | "metadata": {},
114 | "source": [
115 | "### Run pipelines"
116 | ]
117 | },
118 | {
119 | "cell_type": "markdown",
120 | "id": "dd66bf23",
121 | "metadata": {},
122 | "source": [
123 | "1. First, we define the client to interact with kubeflow API. We use session cookie in this case for authentication."
124 | ]
125 | },
126 | {
127 | "cell_type": "code",
128 | "execution_count": null,
129 | "id": "c24fa0ab",
130 | "metadata": {},
131 | "outputs": [],
132 | "source": [
133 | "session_cookie = get_session_cookie()\n",
134 | "client = kfp.Client(\n",
135 | " host=f\"{HOST}/pipeline\",\n",
136 | " cookies=f\"authservice_session={session_cookie}\",\n",
137 | " namespace=NAMESPACE,\n",
138 | ")"
139 | ]
140 | },
141 | {
142 | "cell_type": "markdown",
143 | "id": "57b13967",
144 | "metadata": {},
145 | "source": [
146 | "2. Next, compile the pipeline into YAML, upload it to the pipeline store, and run"
147 | ]
148 | },
149 | {
150 | "cell_type": "code",
151 | "execution_count": null,
152 | "id": "5236bbd6",
153 | "metadata": {
154 | "tags": []
155 | },
156 | "outputs": [],
157 | "source": [
158 | "pipeline_package_path = f\"pipeline_{PIPELINE_VERSION}.yaml\"\n",
159 | "kfp.compiler.Compiler().compile(\n",
160 | " pipeline_func=producers_to_consumers_pipeline, package_path=pipeline_package_path\n",
161 | ")\n",
162 | "# get experiment ID\n",
163 | "experiment = helpers.get_or_create_experiment(client, name=EXPERIMENT_NAME)\n",
164 | "pipeline = helpers.get_or_create_pipeline(\n",
165 | " client,\n",
166 | " pipeline_name=PIPELINE_NAME,\n",
167 | " version=PIPELINE_VERSION,\n",
168 | " pipeline_description=PIPELINE_DESCRIPTION\n",
169 | ")\n",
170 | "now = datetime.now().strftime(\"%Y%m%d%H%M%S\")\n",
171 | "client.run_pipeline(\n",
172 | " experiment_id=experiment.id,\n",
173 | " job_name=f\"{PIPELINE_NAME} {PIPELINE_VERSION} {now}\",\n",
174 | " version_id=pipeline.id,\n",
175 | ")"
176 | ]
177 | },
178 | {
179 | "cell_type": "markdown",
180 | "id": "a07a0575",
181 | "metadata": {},
182 | "source": [
183 | "3. Another way is to run directly from notebook (not recommended for prod)"
184 | ]
185 | },
186 | {
187 | "cell_type": "code",
188 | "execution_count": null,
189 | "id": "4fa63bb3",
190 | "metadata": {},
191 | "outputs": [],
192 | "source": [
193 | "client.create_run_from_pipeline_func(producers_to_consumers_pipeline, \n",
194 | " arguments={}, \n",
195 | " experiment_name=EXPERIMENT_NAME\n",
196 | ")"
197 | ]
198 | },
199 | {
200 | "cell_type": "markdown",
201 | "id": "11a5a8a4",
202 | "metadata": {},
203 | "source": [
204 | "4. Create a recurring run with a single command"
205 | ]
206 | },
207 | {
208 | "cell_type": "code",
209 | "execution_count": null,
210 | "id": "8c3266ee",
211 | "metadata": {
212 | "tags": []
213 | },
214 | "outputs": [],
215 | "source": [
216 | "# Dont forget to disable recurring run in case you dont need anymore\n",
217 | "client.create_recurring_run(\n",
218 | " experiment_id=experiment.id,\n",
219 | " job_name=f\"{PIPELINE_NAME} {PIPELINE_VERSION} {now}\",\n",
220 | " cron_expression=\"0 0 * * * *\", # hourly\n",
221 | " version_id=pipeline.id,\n",
222 | ")"
223 | ]
224 | }
225 | ],
226 | "metadata": {
227 | "kernelspec": {
228 | "display_name": "Python 3",
229 | "language": "python",
230 | "name": "python3"
231 | },
232 | "language_info": {
233 | "codemirror_mode": {
234 | "name": "ipython",
235 | "version": 3
236 | },
237 | "file_extension": ".py",
238 | "mimetype": "text/x-python",
239 | "name": "python",
240 | "nbconvert_exporter": "python",
241 | "pygments_lexer": "ipython3",
242 | "version": "3.8.8"
243 | }
244 | },
245 | "nbformat": 4,
246 | "nbformat_minor": 5
247 | }
248 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | This tutorial includes the following contents:
2 | 1. Component operators
3 | 2. How to pass data between components
4 | 3. Visualize in runs
5 | 4. Pipeline samples
6 |
7 | The source code has been run successfully on MiniKF, which was installed according to this documentation (https://v1-1-branch.kubeflow.org/docs/started/workstation/getting-started-minikf/)
--------------------------------------------------------------------------------
/components/add/component.yaml:
--------------------------------------------------------------------------------
1 | name: Add
2 | description: Returns sum of two arguments
3 | inputs:
4 | - {name: a, type: Float}
5 | - {name: b, type: Float}
6 | outputs:
7 | - {name: Output, type: Float}
8 | implementation:
9 | container:
10 | image: python:3.7
11 | command:
12 | - sh
13 | - -c
14 | - (PIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet --no-warn-script-location
15 | 'pandas==0.24' || PIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet
16 | --no-warn-script-location 'pandas==0.24' --user) && "$0" "$@"
17 | - sh
18 | - -ec
19 | - |
20 | program_path=$(mktemp)
21 | printf "%s" "$0" > "$program_path"
22 | python3 -u "$program_path" "$@"
23 | - |
24 | def add(a, b):
25 | """Returns sum of two arguments"""
26 | return a + b
27 |
28 | def _serialize_float(float_value: float) -> str:
29 | if isinstance(float_value, str):
30 | return float_value
31 | if not isinstance(float_value, (float, int)):
32 | raise TypeError('Value "{}" has type "{}" instead of float.'.format(str(float_value), str(type(float_value))))
33 | return str(float_value)
34 |
35 | import argparse
36 | _parser = argparse.ArgumentParser(prog='Add', description='Returns sum of two arguments')
37 | _parser.add_argument("--a", dest="a", type=float, required=True, default=argparse.SUPPRESS)
38 | _parser.add_argument("--b", dest="b", type=float, required=True, default=argparse.SUPPRESS)
39 | _parser.add_argument("----output-paths", dest="_output_paths", type=str, nargs=1)
40 | _parsed_args = vars(_parser.parse_args())
41 | _output_files = _parsed_args.pop("_output_paths", [])
42 |
43 | _outputs = add(**_parsed_args)
44 |
45 | _outputs = [_outputs]
46 |
47 | _output_serializers = [
48 | _serialize_float,
49 |
50 | ]
51 |
52 | import os
53 | for idx, output_file in enumerate(_output_files):
54 | try:
55 | os.makedirs(os.path.dirname(output_file))
56 | except OSError:
57 | pass
58 | with open(output_file, 'w') as f:
59 | f.write(_output_serializers[idx](_outputs[idx]))
60 | args:
61 | - --a
62 | - {inputValue: a}
63 | - --b
64 | - {inputValue: b}
65 | - '----output-paths'
66 | - {outputPath: Output}
67 |
--------------------------------------------------------------------------------
/components/get_csv_info/component.yaml:
--------------------------------------------------------------------------------
1 | name: Get csv info
2 | inputs:
3 | - {name: input_csv, type: CSV}
4 | outputs:
5 | - {name: Output, type: tuple}
6 | implementation:
7 | container:
8 | image: python:3.7
9 | command:
10 | - sh
11 | - -c
12 | - (PIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet --no-warn-script-location
13 | 'pandas==1.1.4' || PIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet
14 | --no-warn-script-location 'pandas==1.1.4' --user) && "$0" "$@"
15 | - sh
16 | - -ec
17 | - |
18 | program_path=$(mktemp)
19 | printf "%s" "$0" > "$program_path"
20 | python3 -u "$program_path" "$@"
21 | - |
22 | def get_csv_info(input_csv):
23 | import pandas as pd
24 |
25 | df = pd.read_csv(input_csv, header=None)
26 | print(f"[Debug] df.shape: {df.shape}")
27 | return df.shape
28 |
29 | import argparse
30 | _parser = argparse.ArgumentParser(prog='Get csv info', description='')
31 | _parser.add_argument("--input-csv", dest="input_csv", type=str, required=True, default=argparse.SUPPRESS)
32 | _parser.add_argument("----output-paths", dest="_output_paths", type=str, nargs=1)
33 | _parsed_args = vars(_parser.parse_args())
34 | _output_files = _parsed_args.pop("_output_paths", [])
35 |
36 | _outputs = get_csv_info(**_parsed_args)
37 |
38 | _outputs = [_outputs]
39 |
40 | _output_serializers = [
41 | str,
42 |
43 | ]
44 |
45 | import os
46 | for idx, output_file in enumerate(_output_files):
47 | try:
48 | os.makedirs(os.path.dirname(output_file))
49 | except OSError:
50 | pass
51 | with open(output_file, 'w') as f:
52 | f.write(_output_serializers[idx](_outputs[idx]))
53 | args:
54 | - --input-csv
55 | - {inputPath: input_csv}
56 | - '----output-paths'
57 | - {outputPath: Output}
58 |
--------------------------------------------------------------------------------
/components/merge_csv/component.yaml:
--------------------------------------------------------------------------------
1 | name: Merge csv
2 | inputs:
3 | - {name: file, type: Tarball}
4 | outputs:
5 | - {name: output_csv, type: CSV}
6 | implementation:
7 | container:
8 | image: python:3.7
9 | command:
10 | - sh
11 | - -c
12 | - (PIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet --no-warn-script-location
13 | 'pandas==1.1.4' || PIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet
14 | --no-warn-script-location 'pandas==1.1.4' --user) && "$0" "$@"
15 | - sh
16 | - -ec
17 | - |
18 | program_path=$(mktemp)
19 | printf "%s" "$0" > "$program_path"
20 | python3 -u "$program_path" "$@"
21 | - "def _make_parent_dirs_and_return_path(file_path: str):\n import os\n \
22 | \ os.makedirs(os.path.dirname(file_path), exist_ok=True)\n return file_path\n\
23 | \ndef merge_csv(file_path,\n output_csv):\n import glob\n \
24 | \ import pandas as pd\n import tarfile\n\n tarfile.open(name=file_path,\
25 | \ mode=\"r|gz\").extractall('data')\n df = pd.concat(\n [pd.read_csv(csv_file,\
26 | \ header=None) \n for csv_file in glob.glob('data/*.csv')])\n df.to_csv(output_csv,\
27 | \ index=False, header=False)\n\nimport argparse\n_parser = argparse.ArgumentParser(prog='Merge\
28 | \ csv', description='')\n_parser.add_argument(\"--file\", dest=\"file_path\"\
29 | , type=str, required=True, default=argparse.SUPPRESS)\n_parser.add_argument(\"\
30 | --output-csv\", dest=\"output_csv\", type=_make_parent_dirs_and_return_path,\
31 | \ required=True, default=argparse.SUPPRESS)\n_parsed_args = vars(_parser.parse_args())\n\
32 | \n_outputs = merge_csv(**_parsed_args)\n"
33 | args:
34 | - --file
35 | - {inputPath: file}
36 | - --output-csv
37 | - {outputPath: output_csv}
38 |
--------------------------------------------------------------------------------
/components/minus/component.yaml:
--------------------------------------------------------------------------------
1 | name: Minus
2 | description: Returns minus of two arguments
3 | inputs:
4 | - {name: a, type: Float}
5 | - {name: b, type: Float}
6 | outputs:
7 | - {name: Output, type: Float}
8 | implementation:
9 | container:
10 | image: python:3.7
11 | command:
12 | - sh
13 | - -c
14 | - (PIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet --no-warn-script-location
15 | 'pandas==0.24' || PIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet
16 | --no-warn-script-location 'pandas==0.24' --user) && "$0" "$@"
17 | - sh
18 | - -ec
19 | - |
20 | program_path=$(mktemp)
21 | printf "%s" "$0" > "$program_path"
22 | python3 -u "$program_path" "$@"
23 | - |
24 | def minus(a, b):
25 | """Returns minus of two arguments"""
26 | print(a-b)
27 | return a - b
28 |
29 | def _serialize_float(float_value: float) -> str:
30 | if isinstance(float_value, str):
31 | return float_value
32 | if not isinstance(float_value, (float, int)):
33 | raise TypeError('Value "{}" has type "{}" instead of float.'.format(str(float_value), str(type(float_value))))
34 | return str(float_value)
35 |
36 | import argparse
37 | _parser = argparse.ArgumentParser(prog='Minus', description='Returns minus of two arguments')
38 | _parser.add_argument("--a", dest="a", type=float, required=True, default=argparse.SUPPRESS)
39 | _parser.add_argument("--b", dest="b", type=float, required=True, default=argparse.SUPPRESS)
40 | _parser.add_argument("----output-paths", dest="_output_paths", type=str, nargs=1)
41 | _parsed_args = vars(_parser.parse_args())
42 | _output_files = _parsed_args.pop("_output_paths", [])
43 |
44 | _outputs = minus(**_parsed_args)
45 |
46 | _outputs = [_outputs]
47 |
48 | _output_serializers = [
49 | _serialize_float,
50 |
51 | ]
52 |
53 | import os
54 | for idx, output_file in enumerate(_output_files):
55 | try:
56 | os.makedirs(os.path.dirname(output_file))
57 | except OSError:
58 | pass
59 | with open(output_file, 'w') as f:
60 | f.write(_output_serializers[idx](_outputs[idx]))
61 | args:
62 | - --a
63 | - {inputValue: a}
64 | - --b
65 | - {inputValue: b}
66 | - '----output-paths'
67 | - {outputPath: Output}
68 |
--------------------------------------------------------------------------------
/components/visualize_html/component.yaml:
--------------------------------------------------------------------------------
1 | name: Produce html
2 | outputs:
3 | - {name: mlpipeline_ui_metadata}
4 | implementation:
5 | container:
6 | image: python:3.7
7 | command:
8 | - sh
9 | - -ec
10 | - |
11 | program_path=$(mktemp)
12 | printf "%s" "$0" > "$program_path"
13 | python3 -u "$program_path" "$@"
14 | - |
15 | def _make_parent_dirs_and_return_path(file_path: str):
16 | import os
17 | os.makedirs(os.path.dirname(file_path), exist_ok=True)
18 | return file_path
19 |
20 | def produce_html(mlpipeline_ui_metadata_path):
21 | import json
22 | import os
23 |
24 | metadata = {
25 | 'outputs' : [{
26 | 'type': 'web-app',
27 | 'storage': 'inline',
28 | 'source': 'Hello, World!
',
29 | }]
30 | }
31 |
32 | with open(mlpipeline_ui_metadata_path, 'w') as metadata_file:
33 | json.dump(metadata, metadata_file)
34 |
35 | import argparse
36 | _parser = argparse.ArgumentParser(prog='Produce html', description='')
37 | _parser.add_argument("--mlpipeline-ui-metadata", dest="mlpipeline_ui_metadata_path", type=_make_parent_dirs_and_return_path, required=True, default=argparse.SUPPRESS)
38 | _parsed_args = vars(_parser.parse_args())
39 |
40 | _outputs = produce_html(**_parsed_args)
41 | args:
42 | - --mlpipeline-ui-metadata
43 | - {outputPath: mlpipeline_ui_metadata}
44 |
--------------------------------------------------------------------------------
/components/visualize_metrics/component.yaml:
--------------------------------------------------------------------------------
1 | name: Produce metrics
2 | outputs:
3 | - {name: mlpipeline_metrics, type: Metrics}
4 | implementation:
5 | container:
6 | image: python:3.7
7 | command:
8 | - sh
9 | - -ec
10 | - |
11 | program_path=$(mktemp)
12 | printf "%s" "$0" > "$program_path"
13 | python3 -u "$program_path" "$@"
14 | - |
15 | def produce_metrics():
16 | import json
17 |
18 | accuracy = 0.8
19 | metrics = {
20 | 'metrics': [{
21 | 'name': 'accuracy-score', # The name of the metric. Visualized as the column name in the runs table.
22 | 'numberValue': accuracy, # The value of the metric. Must be a numeric value.
23 | 'format': "PERCENTAGE", # The optional format of the metric. Supported values are "RAW" (displayed in raw format) and "PERCENTAGE" (displayed in percentage format).
24 | }]
25 | }
26 | return [json.dumps(metrics)]
27 |
28 | import argparse
29 | _parser = argparse.ArgumentParser(prog='Produce metrics', description='')
30 | _parser.add_argument("----output-paths", dest="_output_paths", type=str, nargs=1)
31 | _parsed_args = vars(_parser.parse_args())
32 | _output_files = _parsed_args.pop("_output_paths", [])
33 |
34 | _outputs = produce_metrics(**_parsed_args)
35 |
36 | _output_serializers = [
37 | str,
38 |
39 | ]
40 |
41 | import os
42 | for idx, output_file in enumerate(_output_files):
43 | try:
44 | os.makedirs(os.path.dirname(output_file))
45 | except OSError:
46 | pass
47 | with open(output_file, 'w') as f:
48 | f.write(_output_serializers[idx](_outputs[idx]))
49 | args:
50 | - '----output-paths'
51 | - {outputPath: mlpipeline_metrics}
52 |
--------------------------------------------------------------------------------
/constants.py:
--------------------------------------------------------------------------------
1 | USERNAME = "user"
2 | PASSWORD = "password"
3 | NAMESPACE = "kubeflow-user"
4 | HOST = "http://xxx.ngrok.io/"
--------------------------------------------------------------------------------
/data/housing.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 |
--------------------------------------------------------------------------------
/data/housing_features.csv:
--------------------------------------------------------------------------------
1 | id,area,bedrooms,bathrooms,stories,mainroad,guestroom,basement,hotwaterheating,airconditioning,parking,prefarea,furnishingstatus,event_timestamp
2 | 0,7420,4,2,3,yes,no,no,no,yes,2,yes,furnished,2022-03-11 14:10:43.556872
3 | 1,8960,4,4,4,yes,no,no,no,yes,3,no,furnished,2022-03-11 14:10:43.556872
4 | 2,9960,3,2,2,yes,no,yes,no,no,2,yes,semi-furnished,2022-03-11 14:10:43.556872
5 | 6,8580,4,3,4,yes,no,no,no,yes,2,yes,semi-furnished,2022-03-11 14:10:43.556872
6 | 9,5750,3,2,4,yes,yes,no,no,yes,1,yes,unfurnished,2022-03-11 14:10:43.556872
7 | 10,13200,3,1,2,yes,no,yes,no,yes,2,yes,furnished,2022-03-11 14:10:43.556872
8 | 12,6550,4,2,2,yes,no,no,no,yes,1,yes,semi-furnished,2022-03-11 14:10:43.556872
9 | 14,7800,3,2,2,yes,no,no,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
10 | 15,6000,4,1,2,yes,no,yes,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
11 | 16,6600,4,2,2,yes,yes,yes,no,yes,1,yes,unfurnished,2022-03-11 14:10:43.556872
12 | 17,8500,3,2,4,yes,no,no,no,yes,2,no,furnished,2022-03-11 14:10:43.556872
13 | 19,6420,3,2,2,yes,no,no,no,yes,1,yes,semi-furnished,2022-03-11 14:10:43.556872
14 | 20,4320,3,1,2,yes,no,yes,yes,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
15 | 21,7155,3,2,1,yes,yes,yes,no,yes,2,no,unfurnished,2022-03-11 14:10:43.556872
16 | 23,4560,3,2,2,yes,yes,yes,no,yes,1,no,furnished,2022-03-11 14:10:43.556872
17 | 24,8800,3,2,2,yes,no,no,no,yes,2,no,furnished,2022-03-11 14:10:43.556872
18 | 25,6540,4,2,2,yes,yes,yes,no,yes,2,yes,furnished,2022-03-11 14:10:43.556872
19 | 26,6000,3,2,4,yes,yes,yes,no,yes,0,yes,semi-furnished,2022-03-11 14:10:43.556872
20 | 27,8875,3,1,1,yes,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
21 | 28,7950,5,2,2,yes,no,yes,yes,no,2,no,unfurnished,2022-03-11 14:10:43.556872
22 | 29,5500,4,2,2,yes,no,yes,no,yes,1,yes,semi-furnished,2022-03-11 14:10:43.556872
23 | 30,7475,3,2,4,yes,no,no,no,yes,2,no,unfurnished,2022-03-11 14:10:43.556872
24 | 31,7000,3,1,4,yes,no,no,no,yes,2,no,semi-furnished,2022-03-11 14:10:43.556872
25 | 32,4880,4,2,2,yes,no,no,no,yes,1,yes,furnished,2022-03-11 14:10:43.556872
26 | 33,5960,3,3,2,yes,yes,yes,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
27 | 34,6840,5,1,2,yes,yes,yes,no,yes,1,no,furnished,2022-03-11 14:10:43.556872
28 | 35,7000,3,2,4,yes,no,no,no,yes,2,no,furnished,2022-03-11 14:10:43.556872
29 | 36,7482,3,2,3,yes,no,no,yes,no,1,yes,furnished,2022-03-11 14:10:43.556872
30 | 37,9000,4,2,4,yes,no,no,no,yes,2,no,furnished,2022-03-11 14:10:43.556872
31 | 39,6000,4,2,4,yes,no,no,no,yes,1,no,semi-furnished,2022-03-11 14:10:43.556872
32 | 41,6360,3,2,4,yes,no,no,no,yes,0,yes,furnished,2022-03-11 14:10:43.556872
33 | 42,6480,3,2,4,yes,no,no,no,yes,2,no,unfurnished,2022-03-11 14:10:43.556872
34 | 43,6000,4,2,4,yes,no,no,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
35 | 44,6000,4,2,4,yes,no,no,no,yes,1,no,furnished,2022-03-11 14:10:43.556872
36 | 45,6000,3,2,3,yes,no,no,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
37 | 47,6600,3,1,4,yes,no,no,no,yes,3,yes,furnished,2022-03-11 14:10:43.556872
38 | 48,4300,3,2,2,yes,no,yes,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
39 | 49,7440,3,2,1,yes,yes,yes,no,yes,0,yes,semi-furnished,2022-03-11 14:10:43.556872
40 | 50,7440,3,2,4,yes,no,no,no,no,1,yes,unfurnished,2022-03-11 14:10:43.556872
41 | 51,6325,3,1,4,yes,no,no,no,yes,1,no,unfurnished,2022-03-11 14:10:43.556872
42 | 56,11440,4,1,2,yes,no,yes,no,no,1,yes,semi-furnished,2022-03-11 14:10:43.556872
43 | 57,9000,4,2,4,yes,yes,no,no,yes,1,yes,furnished,2022-03-11 14:10:43.556872
44 | 58,7680,4,2,4,yes,yes,no,no,yes,1,no,semi-furnished,2022-03-11 14:10:43.556872
45 | 62,6240,4,2,2,yes,no,no,no,yes,1,no,furnished,2022-03-11 14:10:43.556872
46 | 63,6360,4,2,3,yes,no,no,no,yes,2,yes,furnished,2022-03-11 14:10:43.556872
47 | 67,7700,3,2,1,yes,no,no,no,no,2,no,unfurnished,2022-03-11 14:10:43.556872
48 | 70,4000,3,2,2,yes,no,yes,no,yes,0,yes,semi-furnished,2022-03-11 14:10:43.556872
49 | 72,5020,3,1,4,yes,no,no,no,yes,0,yes,unfurnished,2022-03-11 14:10:43.556872
50 | 73,6600,2,2,4,yes,no,yes,no,no,0,yes,furnished,2022-03-11 14:10:43.556872
51 | 74,4040,3,1,2,yes,no,yes,yes,no,1,no,furnished,2022-03-11 14:10:43.556872
52 | 75,4260,4,2,2,yes,no,no,yes,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
53 | 76,6420,3,2,3,yes,no,no,no,yes,0,yes,furnished,2022-03-11 14:10:43.556872
54 | 77,6500,3,2,3,yes,no,no,no,yes,0,yes,furnished,2022-03-11 14:10:43.556872
55 | 78,5700,3,1,1,yes,yes,yes,no,yes,2,yes,furnished,2022-03-11 14:10:43.556872
56 | 79,6000,3,2,3,yes,yes,no,no,yes,0,no,furnished,2022-03-11 14:10:43.556872
57 | 85,8250,3,2,3,yes,no,no,no,yes,0,no,furnished,2022-03-11 14:10:43.556872
58 | 86,6670,3,1,3,yes,no,yes,no,no,0,yes,unfurnished,2022-03-11 14:10:43.556872
59 | 87,3960,3,1,1,yes,no,yes,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
60 | 88,7410,3,1,1,yes,yes,yes,no,yes,2,yes,unfurnished,2022-03-11 14:10:43.556872
61 | 89,8580,5,3,2,yes,no,no,no,no,2,no,furnished,2022-03-11 14:10:43.556872
62 | 91,6750,2,1,1,yes,yes,yes,no,no,2,yes,furnished,2022-03-11 14:10:43.556872
63 | 92,4800,3,2,4,yes,yes,no,no,yes,0,no,furnished,2022-03-11 14:10:43.556872
64 | 93,7200,3,2,1,yes,no,yes,no,yes,3,no,semi-furnished,2022-03-11 14:10:43.556872
65 | 94,6000,4,2,4,yes,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
66 | 95,4100,3,2,3,yes,no,no,no,yes,2,no,semi-furnished,2022-03-11 14:10:43.556872
67 | 96,9000,3,1,1,yes,no,yes,no,no,1,yes,furnished,2022-03-11 14:10:43.556872
68 | 98,6600,3,2,3,yes,no,no,no,yes,0,yes,unfurnished,2022-03-11 14:10:43.556872
69 | 100,6600,3,2,1,yes,no,yes,no,yes,0,yes,unfurnished,2022-03-11 14:10:43.556872
70 | 101,5500,3,1,3,yes,no,no,no,no,1,yes,unfurnished,2022-03-11 14:10:43.556872
71 | 102,5500,3,2,4,yes,yes,no,no,yes,1,no,semi-furnished,2022-03-11 14:10:43.556872
72 | 103,6350,3,2,3,yes,yes,no,no,yes,0,no,furnished,2022-03-11 14:10:43.556872
73 | 105,4500,3,1,4,yes,no,no,no,yes,0,no,unfurnished,2022-03-11 14:10:43.556872
74 | 106,5450,4,2,1,yes,no,yes,no,yes,0,yes,semi-furnished,2022-03-11 14:10:43.556872
75 | 107,6420,3,1,3,yes,no,yes,no,no,0,yes,unfurnished,2022-03-11 14:10:43.556872
76 | 108,3240,4,1,3,yes,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
77 | 109,6615,4,2,2,yes,yes,no,yes,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
78 | 112,4300,6,2,2,yes,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
79 | 113,9620,3,1,1,yes,no,yes,no,no,2,yes,furnished,2022-03-11 14:10:43.556872
80 | 114,6800,2,1,1,yes,yes,yes,no,no,2,no,furnished,2022-03-11 14:10:43.556872
81 | 115,8000,3,1,1,yes,yes,yes,no,yes,2,yes,semi-furnished,2022-03-11 14:10:43.556872
82 | 118,6420,3,1,1,yes,no,yes,no,yes,0,yes,furnished,2022-03-11 14:10:43.556872
83 | 119,7020,3,1,1,yes,no,yes,no,yes,2,yes,semi-furnished,2022-03-11 14:10:43.556872
84 | 120,6540,3,1,1,yes,yes,yes,no,no,2,yes,furnished,2022-03-11 14:10:43.556872
85 | 121,7231,3,1,2,yes,yes,yes,no,yes,0,yes,semi-furnished,2022-03-11 14:10:43.556872
86 | 122,6254,4,2,1,yes,no,yes,no,no,1,yes,semi-furnished,2022-03-11 14:10:43.556872
87 | 123,7320,4,2,2,yes,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
88 | 124,6525,3,2,4,yes,no,no,no,no,1,no,furnished,2022-03-11 14:10:43.556872
89 | 125,15600,3,1,1,yes,no,no,no,yes,2,no,semi-furnished,2022-03-11 14:10:43.556872
90 | 126,7160,3,1,1,yes,no,yes,no,no,2,yes,unfurnished,2022-03-11 14:10:43.556872
91 | 129,11460,3,1,3,yes,no,no,no,no,2,yes,semi-furnished,2022-03-11 14:10:43.556872
92 | 135,6000,3,2,4,yes,no,no,no,yes,0,no,unfurnished,2022-03-11 14:10:43.556872
93 | 136,5400,4,2,2,yes,no,no,no,yes,2,no,unfurnished,2022-03-11 14:10:43.556872
94 | 137,4640,4,1,2,yes,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
95 | 138,5000,3,1,3,yes,no,no,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
96 | 139,6360,3,1,1,yes,yes,yes,no,yes,2,yes,furnished,2022-03-11 14:10:43.556872
97 | 141,6660,4,2,2,yes,yes,yes,no,no,1,yes,semi-furnished,2022-03-11 14:10:43.556872
98 | 143,4800,5,2,3,no,no,yes,yes,no,0,no,unfurnished,2022-03-11 14:10:43.556872
99 | 144,4700,4,1,2,yes,yes,yes,no,yes,1,no,furnished,2022-03-11 14:10:43.556872
100 | 146,10500,2,1,1,yes,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
101 | 147,5500,3,2,2,yes,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
102 | 148,6360,3,1,3,yes,no,no,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
103 | 149,6600,4,2,1,yes,no,yes,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
104 | 150,5136,3,1,2,yes,yes,yes,no,yes,0,yes,unfurnished,2022-03-11 14:10:43.556872
105 | 151,4400,4,1,2,yes,no,no,no,yes,2,yes,semi-furnished,2022-03-11 14:10:43.556872
106 | 152,5400,5,1,2,yes,yes,yes,no,yes,0,yes,furnished,2022-03-11 14:10:43.556872
107 | 154,3650,3,2,2,yes,no,no,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
108 | 155,6100,3,2,1,yes,no,yes,no,no,2,yes,furnished,2022-03-11 14:10:43.556872
109 | 156,6900,3,1,1,yes,yes,yes,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
110 | 159,3150,3,2,1,yes,yes,yes,no,yes,0,no,furnished,2022-03-11 14:10:43.556872
111 | 160,6210,4,1,4,yes,yes,no,no,yes,0,no,furnished,2022-03-11 14:10:43.556872
112 | 162,6600,4,2,2,yes,yes,yes,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
113 | 165,6450,3,2,1,yes,yes,yes,yes,no,0,no,unfurnished,2022-03-11 14:10:43.556872
114 | 166,7800,3,1,1,yes,no,yes,no,yes,2,yes,unfurnished,2022-03-11 14:10:43.556872
115 | 168,4260,4,1,2,yes,no,yes,no,yes,0,no,furnished,2022-03-11 14:10:43.556872
116 | 169,6540,4,2,2,no,no,no,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
117 | 171,10269,3,1,1,yes,no,no,no,no,1,yes,semi-furnished,2022-03-11 14:10:43.556872
118 | 173,5300,4,2,1,yes,no,no,no,yes,0,yes,unfurnished,2022-03-11 14:10:43.556872
119 | 174,3800,3,1,2,yes,yes,yes,no,no,1,yes,unfurnished,2022-03-11 14:10:43.556872
120 | 175,9800,4,2,2,yes,yes,no,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
121 | 177,6050,3,1,1,yes,no,yes,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
122 | 178,7085,3,1,1,yes,yes,yes,no,no,2,yes,semi-furnished,2022-03-11 14:10:43.556872
123 | 179,3180,3,2,2,yes,no,no,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
124 | 180,4500,4,2,1,no,no,yes,no,yes,2,no,semi-furnished,2022-03-11 14:10:43.556872
125 | 181,7200,3,1,2,yes,yes,yes,no,no,1,yes,furnished,2022-03-11 14:10:43.556872
126 | 182,3410,3,1,2,no,no,no,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
127 | 184,3000,3,2,2,yes,yes,yes,no,no,0,no,furnished,2022-03-11 14:10:43.556872
128 | 185,3000,3,1,2,yes,no,yes,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
129 | 187,6100,3,1,1,yes,no,yes,no,yes,0,yes,semi-furnished,2022-03-11 14:10:43.556872
130 | 188,5720,2,1,2,yes,no,no,no,yes,0,yes,unfurnished,2022-03-11 14:10:43.556872
131 | 190,7600,4,1,2,yes,no,no,no,yes,2,no,furnished,2022-03-11 14:10:43.556872
132 | 192,6600,3,1,1,yes,yes,yes,no,no,0,yes,furnished,2022-03-11 14:10:43.556872
133 | 193,4800,2,1,1,yes,yes,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
134 | 197,2800,3,2,2,no,no,yes,no,yes,1,no,semi-furnished,2022-03-11 14:10:43.556872
135 | 198,5948,3,1,2,yes,no,no,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
136 | 199,4200,3,1,2,yes,no,no,no,no,1,no,furnished,2022-03-11 14:10:43.556872
137 | 200,4520,3,1,2,yes,no,yes,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
138 | 201,4095,3,1,2,no,yes,yes,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
139 | 205,6300,3,1,1,yes,no,no,no,yes,2,no,semi-furnished,2022-03-11 14:10:43.556872
140 | 206,5800,2,1,1,yes,yes,yes,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
141 | 207,3000,3,1,2,yes,no,yes,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
142 | 208,2970,3,1,3,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
143 | 209,6720,3,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
144 | 211,12900,3,1,1,yes,no,no,no,no,2,no,furnished,2022-03-11 14:10:43.556872
145 | 212,3420,4,2,2,yes,no,yes,no,yes,2,no,semi-furnished,2022-03-11 14:10:43.556872
146 | 214,4350,2,1,1,yes,no,yes,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
147 | 215,4160,3,1,3,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
148 | 216,6040,3,1,1,yes,no,no,no,no,2,yes,semi-furnished,2022-03-11 14:10:43.556872
149 | 217,6862,3,1,2,yes,no,no,no,yes,2,yes,furnished,2022-03-11 14:10:43.556872
150 | 218,4815,2,1,1,yes,no,no,no,yes,0,yes,semi-furnished,2022-03-11 14:10:43.556872
151 | 219,7000,3,1,2,yes,no,yes,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
152 | 222,9166,2,1,1,yes,no,yes,no,yes,2,no,semi-furnished,2022-03-11 14:10:43.556872
153 | 223,6321,3,1,2,yes,no,yes,no,yes,1,no,furnished,2022-03-11 14:10:43.556872
154 | 224,10240,2,1,1,yes,no,no,no,yes,2,yes,unfurnished,2022-03-11 14:10:43.556872
155 | 225,6440,2,1,1,yes,no,no,no,yes,3,no,semi-furnished,2022-03-11 14:10:43.556872
156 | 226,5170,3,1,4,yes,no,no,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
157 | 227,6000,2,1,1,yes,no,yes,no,yes,1,no,furnished,2022-03-11 14:10:43.556872
158 | 228,3630,3,1,2,yes,no,no,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
159 | 229,9667,4,2,2,yes,yes,yes,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
160 | 230,5400,2,1,2,yes,no,no,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
161 | 232,3745,3,1,2,yes,no,yes,no,no,0,no,furnished,2022-03-11 14:10:43.556872
162 | 235,5680,3,1,2,yes,yes,no,no,yes,1,no,semi-furnished,2022-03-11 14:10:43.556872
163 | 236,2870,2,1,2,yes,yes,yes,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
164 | 238,4510,4,2,2,yes,no,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
165 | 239,4000,3,1,2,yes,no,no,no,no,1,no,furnished,2022-03-11 14:10:43.556872
166 | 240,3840,3,1,2,yes,no,no,no,no,1,yes,semi-furnished,2022-03-11 14:10:43.556872
167 | 241,3760,3,1,1,yes,no,no,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
168 | 242,3640,3,1,2,yes,no,no,no,yes,0,no,furnished,2022-03-11 14:10:43.556872
169 | 244,5320,3,1,2,yes,yes,yes,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
170 | 245,5360,3,1,2,yes,no,no,no,no,2,yes,unfurnished,2022-03-11 14:10:43.556872
171 | 246,3520,3,1,1,yes,no,no,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
172 | 247,8400,4,1,4,yes,no,no,no,no,3,no,unfurnished,2022-03-11 14:10:43.556872
173 | 248,4100,2,2,1,yes,yes,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
174 | 250,3510,3,1,3,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
175 | 251,3450,3,1,2,yes,no,yes,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
176 | 252,9860,3,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
177 | 253,3520,2,1,2,yes,no,no,no,no,0,yes,furnished,2022-03-11 14:10:43.556872
178 | 254,4510,4,1,2,yes,no,no,no,yes,2,no,semi-furnished,2022-03-11 14:10:43.556872
179 | 255,5885,2,1,1,yes,no,no,no,yes,1,no,unfurnished,2022-03-11 14:10:43.556872
180 | 256,4000,3,1,2,yes,no,no,no,no,2,no,furnished,2022-03-11 14:10:43.556872
181 | 257,8250,3,1,1,yes,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
182 | 258,4040,3,1,2,yes,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
183 | 259,6360,2,1,1,yes,no,yes,no,yes,1,no,furnished,2022-03-11 14:10:43.556872
184 | 260,3162,3,1,2,yes,no,no,no,yes,1,no,furnished,2022-03-11 14:10:43.556872
185 | 262,3750,2,1,1,yes,yes,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
186 | 263,3968,3,1,2,no,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
187 | 264,4900,2,1,2,yes,no,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
188 | 265,2880,3,1,2,yes,no,no,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
189 | 266,4880,3,1,1,yes,no,no,no,no,2,yes,unfurnished,2022-03-11 14:10:43.556872
190 | 267,4920,3,1,2,yes,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
191 | 268,4950,4,1,2,yes,no,no,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
192 | 270,4500,3,2,3,yes,no,no,yes,no,1,no,furnished,2022-03-11 14:10:43.556872
193 | 271,1905,5,1,2,no,no,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
194 | 272,4075,3,1,1,yes,yes,yes,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
195 | 273,3500,4,1,2,yes,no,no,no,no,2,no,furnished,2022-03-11 14:10:43.556872
196 | 274,6450,4,1,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
197 | 275,4032,2,1,1,yes,no,yes,no,no,0,no,furnished,2022-03-11 14:10:43.556872
198 | 276,4400,2,1,1,yes,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
199 | 277,10360,2,1,1,yes,no,no,no,no,1,yes,semi-furnished,2022-03-11 14:10:43.556872
200 | 279,6360,2,1,1,yes,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
201 | 280,6360,2,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
202 | 281,4500,2,1,1,yes,no,no,no,yes,2,no,furnished,2022-03-11 14:10:43.556872
203 | 282,2175,3,1,2,no,yes,yes,no,yes,0,no,unfurnished,2022-03-11 14:10:43.556872
204 | 283,4360,4,1,2,yes,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
205 | 284,7770,2,1,1,yes,no,no,no,no,1,no,furnished,2022-03-11 14:10:43.556872
206 | 285,6650,3,1,2,yes,yes,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
207 | 287,5500,3,1,2,yes,no,no,no,yes,0,no,unfurnished,2022-03-11 14:10:43.556872
208 | 288,5040,3,1,2,yes,no,yes,no,yes,0,no,unfurnished,2022-03-11 14:10:43.556872
209 | 289,5850,2,1,1,yes,yes,yes,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
210 | 290,2610,4,3,2,no,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
211 | 293,4410,2,1,1,no,no,no,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
212 | 296,4600,3,2,2,yes,no,no,no,yes,1,no,semi-furnished,2022-03-11 14:10:43.556872
213 | 298,5800,3,1,1,yes,no,no,yes,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
214 | 299,7000,3,1,1,yes,no,no,no,no,3,no,furnished,2022-03-11 14:10:43.556872
215 | 300,4079,3,1,3,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
216 | 301,3520,3,1,2,yes,no,no,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
217 | 304,8250,3,1,1,yes,no,yes,no,no,3,no,semi-furnished,2022-03-11 14:10:43.556872
218 | 305,3450,3,1,2,yes,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
219 | 307,4080,3,1,2,yes,no,no,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
220 | 309,4632,4,1,2,yes,no,no,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
221 | 310,5985,3,1,1,yes,no,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
222 | 311,6060,2,1,1,yes,no,yes,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
223 | 312,3600,3,1,1,yes,no,yes,no,yes,0,yes,furnished,2022-03-11 14:10:43.556872
224 | 316,5900,4,2,2,no,no,yes,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
225 | 318,4340,3,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
226 | 319,3000,4,1,3,yes,no,yes,no,yes,2,no,semi-furnished,2022-03-11 14:10:43.556872
227 | 320,4320,3,1,2,yes,no,no,no,no,2,yes,furnished,2022-03-11 14:10:43.556872
228 | 321,3630,3,2,2,yes,no,no,yes,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
229 | 322,3460,3,2,1,yes,no,yes,no,yes,1,no,furnished,2022-03-11 14:10:43.556872
230 | 325,3460,4,1,2,yes,no,no,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
231 | 327,6480,3,1,2,no,no,no,no,yes,1,no,semi-furnished,2022-03-11 14:10:43.556872
232 | 328,4500,3,2,2,no,no,yes,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
233 | 329,3960,3,1,2,yes,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
234 | 330,4050,2,1,2,yes,yes,yes,no,no,0,yes,unfurnished,2022-03-11 14:10:43.556872
235 | 331,7260,3,2,1,yes,yes,yes,no,no,3,no,furnished,2022-03-11 14:10:43.556872
236 | 332,5500,4,1,2,yes,yes,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
237 | 335,3816,2,1,1,yes,no,yes,no,yes,2,no,furnished,2022-03-11 14:10:43.556872
238 | 336,8080,3,1,1,yes,no,no,no,yes,2,no,semi-furnished,2022-03-11 14:10:43.556872
239 | 337,2145,4,2,1,yes,no,yes,no,no,0,yes,unfurnished,2022-03-11 14:10:43.556872
240 | 338,3780,2,1,2,yes,yes,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
241 | 339,3180,4,2,2,yes,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
242 | 340,5300,5,2,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
243 | 342,7152,3,1,2,yes,no,no,no,yes,0,no,furnished,2022-03-11 14:10:43.556872
244 | 343,4080,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
245 | 344,3850,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
246 | 345,2015,3,1,2,yes,no,yes,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
247 | 346,2176,2,1,2,yes,yes,no,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
248 | 348,3150,2,2,1,no,no,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
249 | 351,3600,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
250 | 352,5830,2,1,1,yes,no,no,no,no,2,no,unfurnished,2022-03-11 14:10:43.556872
251 | 353,2856,3,1,3,yes,no,no,no,no,0,yes,furnished,2022-03-11 14:10:43.556872
252 | 355,8250,3,1,1,yes,no,no,no,no,2,no,furnished,2022-03-11 14:10:43.556872
253 | 358,3480,2,1,1,yes,no,no,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
254 | 360,4040,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
255 | 361,6020,3,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
256 | 363,3584,2,1,1,yes,no,no,yes,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
257 | 368,5640,2,1,1,no,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
258 | 369,3600,2,1,1,yes,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
259 | 370,4280,2,1,1,yes,no,no,no,yes,2,no,semi-furnished,2022-03-11 14:10:43.556872
260 | 371,3570,3,1,2,yes,no,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
261 | 373,3000,2,1,2,yes,no,no,no,yes,0,no,furnished,2022-03-11 14:10:43.556872
262 | 374,3520,2,2,1,yes,no,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
263 | 375,5960,3,1,2,yes,yes,yes,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
264 | 376,4130,3,2,2,yes,no,no,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
265 | 377,2850,3,2,2,no,no,yes,no,no,0,yes,unfurnished,2022-03-11 14:10:43.556872
266 | 378,2275,3,1,3,yes,no,no,yes,yes,0,yes,semi-furnished,2022-03-11 14:10:43.556872
267 | 379,3520,3,1,1,yes,no,no,no,no,2,yes,unfurnished,2022-03-11 14:10:43.556872
268 | 380,4500,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
269 | 381,4000,2,1,1,yes,no,no,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
270 | 384,4500,2,1,1,no,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
271 | 385,3640,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
272 | 386,3850,3,1,1,yes,no,no,no,no,2,no,unfurnished,2022-03-11 14:10:43.556872
273 | 387,4240,3,1,2,yes,no,no,no,yes,0,no,semi-furnished,2022-03-11 14:10:43.556872
274 | 389,4600,4,1,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
275 | 390,2135,3,2,2,no,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
276 | 391,3036,3,1,2,yes,no,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
277 | 392,3990,3,1,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
278 | 393,7424,3,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
279 | 394,3480,3,1,1,no,no,no,no,yes,0,no,unfurnished,2022-03-11 14:10:43.556872
280 | 395,3600,6,1,2,yes,no,no,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
281 | 396,3640,2,1,1,yes,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
282 | 397,5900,2,1,1,yes,no,no,no,no,1,no,furnished,2022-03-11 14:10:43.556872
283 | 398,3120,3,1,2,yes,no,no,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
284 | 399,7350,2,1,1,yes,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
285 | 400,3512,2,1,1,yes,no,no,no,no,1,yes,unfurnished,2022-03-11 14:10:43.556872
286 | 401,9500,3,1,2,yes,no,no,no,no,3,yes,unfurnished,2022-03-11 14:10:43.556872
287 | 403,12944,3,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
288 | 405,3060,3,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
289 | 406,5320,2,1,1,yes,no,no,no,no,1,yes,unfurnished,2022-03-11 14:10:43.556872
290 | 407,2145,3,1,3,yes,no,no,no,no,0,yes,furnished,2022-03-11 14:10:43.556872
291 | 408,4000,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
292 | 409,3185,2,1,1,yes,no,no,no,no,2,no,unfurnished,2022-03-11 14:10:43.556872
293 | 412,2610,3,1,2,yes,no,yes,no,no,0,yes,unfurnished,2022-03-11 14:10:43.556872
294 | 413,1950,3,2,2,yes,no,yes,no,no,0,yes,unfurnished,2022-03-11 14:10:43.556872
295 | 415,4785,3,1,2,yes,yes,yes,no,yes,1,no,furnished,2022-03-11 14:10:43.556872
296 | 416,3450,3,1,1,yes,no,yes,no,no,2,no,unfurnished,2022-03-11 14:10:43.556872
297 | 422,3720,2,1,1,no,no,no,no,yes,0,no,unfurnished,2022-03-11 14:10:43.556872
298 | 423,3750,3,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
299 | 424,3100,3,1,2,no,no,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
300 | 426,2700,3,1,1,no,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
301 | 427,2145,3,1,2,yes,no,yes,no,no,0,yes,furnished,2022-03-11 14:10:43.556872
302 | 428,4040,2,1,1,yes,no,no,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
303 | 429,4775,4,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
304 | 430,2500,2,1,1,no,no,no,no,yes,0,no,unfurnished,2022-03-11 14:10:43.556872
305 | 431,3180,4,1,2,yes,no,yes,no,yes,0,no,unfurnished,2022-03-11 14:10:43.556872
306 | 432,6060,3,1,1,yes,yes,yes,no,no,0,no,furnished,2022-03-11 14:10:43.556872
307 | 433,3480,4,1,2,no,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
308 | 435,4040,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
309 | 437,5880,3,1,1,yes,no,no,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
310 | 439,3930,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
311 | 440,3640,4,1,2,yes,no,yes,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
312 | 441,4370,3,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
313 | 443,4320,3,1,1,no,no,no,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
314 | 445,3450,1,1,1,yes,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
315 | 446,3986,2,2,1,no,yes,yes,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
316 | 447,3500,2,1,1,no,no,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
317 | 448,4095,2,1,1,yes,no,no,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
318 | 451,6750,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
319 | 452,9000,3,1,2,yes,no,no,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
320 | 454,4500,3,1,2,yes,no,no,no,yes,0,no,unfurnished,2022-03-11 14:10:43.556872
321 | 456,2398,3,1,1,yes,no,no,no,no,0,yes,semi-furnished,2022-03-11 14:10:43.556872
322 | 457,3000,3,1,1,no,no,no,no,yes,0,no,unfurnished,2022-03-11 14:10:43.556872
323 | 459,3500,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
324 | 460,8100,2,1,1,yes,no,no,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
325 | 461,4960,2,1,1,yes,no,yes,no,yes,0,no,unfurnished,2022-03-11 14:10:43.556872
326 | 463,3090,2,1,1,yes,yes,yes,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
327 | 464,4500,2,1,2,yes,no,no,yes,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
328 | 466,3090,3,1,2,no,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
329 | 467,3240,3,1,2,yes,no,no,no,no,2,no,semi-furnished,2022-03-11 14:10:43.556872
330 | 468,2835,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
331 | 470,5076,3,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
332 | 471,3750,3,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
333 | 472,3630,4,1,2,yes,no,no,no,no,3,no,semi-furnished,2022-03-11 14:10:43.556872
334 | 473,8050,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
335 | 476,5850,3,1,2,yes,no,yes,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
336 | 477,4960,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
337 | 478,3600,3,1,2,no,no,no,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
338 | 479,3660,4,1,2,no,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
339 | 480,3480,3,1,2,no,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
340 | 481,2700,2,1,1,no,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
341 | 483,6615,3,1,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
342 | 486,6000,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
343 | 489,3300,3,1,2,no,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
344 | 491,2640,2,1,1,no,no,no,no,no,1,no,furnished,2022-03-11 14:10:43.556872
345 | 493,3960,3,1,1,yes,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
346 | 495,4000,3,1,2,yes,no,no,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
347 | 496,4000,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
348 | 497,3934,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
349 | 498,2000,2,1,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
350 | 499,3630,3,3,2,no,yes,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
351 | 500,2800,3,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
352 | 501,2430,3,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
353 | 502,3480,2,1,1,yes,no,no,no,no,1,no,semi-furnished,2022-03-11 14:10:43.556872
354 | 503,4000,3,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
355 | 504,3185,2,1,1,yes,no,no,no,yes,0,no,unfurnished,2022-03-11 14:10:43.556872
356 | 506,2910,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
357 | 507,3600,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
358 | 508,4400,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
359 | 510,2880,3,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
360 | 513,4400,3,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
361 | 515,3210,3,1,2,yes,no,yes,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
362 | 518,3500,2,1,1,yes,yes,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
363 | 519,4840,2,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
364 | 520,7700,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
365 | 521,3635,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
366 | 522,2475,3,1,2,yes,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
367 | 523,2787,4,2,2,yes,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
368 | 524,3264,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
369 | 525,3640,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
370 | 527,1836,2,1,1,no,no,yes,no,no,0,no,semi-furnished,2022-03-11 14:10:43.556872
371 | 528,3970,1,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
372 | 529,3970,3,1,2,yes,no,yes,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
373 | 530,1950,3,1,1,no,no,no,yes,no,0,no,unfurnished,2022-03-11 14:10:43.556872
374 | 532,3000,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
375 | 533,2400,3,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
376 | 534,3000,4,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
377 | 535,3360,2,1,1,yes,no,no,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
378 | 536,3420,5,1,2,no,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
379 | 538,3649,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
380 | 539,2990,2,1,1,no,no,no,no,no,1,no,unfurnished,2022-03-11 14:10:43.556872
381 | 540,3000,2,1,1,yes,no,yes,no,no,2,no,unfurnished,2022-03-11 14:10:43.556872
382 | 542,3620,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-11 14:10:43.556872
383 | 543,2910,3,1,1,no,no,no,no,no,0,no,furnished,2022-03-11 14:10:43.556872
384 | 0,7420,4,2,3,yes,no,no,no,yes,2,yes,furnished,2022-03-13 14:10:43.565999
385 | 2,9960,3,2,2,yes,no,yes,no,no,2,yes,semi-furnished,2022-03-13 14:10:43.565999
386 | 3,7500,4,2,2,yes,no,yes,no,yes,3,yes,furnished,2022-03-13 14:10:43.565999
387 | 4,7420,4,1,2,yes,yes,yes,no,yes,2,no,furnished,2022-03-13 14:10:43.565999
388 | 5,7500,3,3,1,no,no,yes,no,yes,2,yes,semi-furnished,2022-03-13 14:10:43.565999
389 | 10,13200,3,1,2,no,no,yes,no,yes,2,yes,furnished,2022-03-13 14:10:43.565999
390 | 11,6000,4,3,2,no,yes,yes,yes,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
391 | 12,6550,4,2,2,yes,no,no,no,yes,1,yes,semi-furnished,2022-03-13 14:10:43.565999
392 | 13,3500,4,2,2,no,no,no,yes,no,2,no,furnished,2022-03-13 14:10:43.565999
393 | 15,6000,4,1,2,no,no,yes,no,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
394 | 17,8500,3,2,4,no,no,no,no,yes,2,no,furnished,2022-03-13 14:10:43.565999
395 | 18,4600,3,2,2,yes,yes,no,no,yes,2,no,furnished,2022-03-13 14:10:43.565999
396 | 20,4320,3,1,2,yes,no,yes,yes,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
397 | 21,7155,3,2,1,yes,yes,yes,no,yes,2,no,unfurnished,2022-03-13 14:10:43.565999
398 | 22,8050,3,1,1,no,yes,yes,no,yes,1,no,furnished,2022-03-13 14:10:43.565999
399 | 24,8800,3,2,2,yes,no,no,no,yes,2,no,furnished,2022-03-13 14:10:43.565999
400 | 25,6540,4,2,2,yes,yes,yes,no,yes,2,yes,furnished,2022-03-13 14:10:43.565999
401 | 26,6000,3,2,4,yes,yes,yes,no,yes,0,yes,semi-furnished,2022-03-13 14:10:43.565999
402 | 27,8875,3,1,1,yes,no,no,no,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
403 | 28,7950,5,2,2,yes,no,yes,yes,no,2,no,unfurnished,2022-03-13 14:10:43.565999
404 | 30,7475,3,2,4,yes,no,no,no,yes,2,no,unfurnished,2022-03-13 14:10:43.565999
405 | 33,5960,3,3,2,no,yes,yes,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
406 | 34,6840,5,1,2,no,yes,yes,no,yes,1,no,furnished,2022-03-13 14:10:43.565999
407 | 38,6000,3,1,4,yes,yes,no,no,yes,2,no,unfurnished,2022-03-13 14:10:43.565999
408 | 40,6550,3,1,2,yes,no,yes,no,yes,0,yes,furnished,2022-03-13 14:10:43.565999
409 | 41,6360,3,2,4,no,no,no,no,yes,0,yes,furnished,2022-03-13 14:10:43.565999
410 | 43,6000,4,2,4,no,no,no,no,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
411 | 44,6000,4,2,4,no,no,no,no,yes,1,no,furnished,2022-03-13 14:10:43.565999
412 | 45,6000,3,2,3,no,no,no,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
413 | 46,6000,3,2,4,no,no,no,no,yes,1,no,furnished,2022-03-13 14:10:43.565999
414 | 51,6325,3,1,4,no,no,no,no,yes,1,no,unfurnished,2022-03-13 14:10:43.565999
415 | 53,5150,3,2,4,no,no,no,no,yes,2,no,semi-furnished,2022-03-13 14:10:43.565999
416 | 55,6000,3,1,2,no,no,no,no,yes,1,no,unfurnished,2022-03-13 14:10:43.565999
417 | 56,11440,4,1,2,yes,no,yes,no,no,1,yes,semi-furnished,2022-03-13 14:10:43.565999
418 | 57,9000,4,2,4,no,yes,no,no,yes,1,yes,furnished,2022-03-13 14:10:43.565999
419 | 58,7680,4,2,4,no,yes,no,no,yes,1,no,semi-furnished,2022-03-13 14:10:43.565999
420 | 59,6000,3,2,4,yes,yes,no,no,yes,1,no,furnished,2022-03-13 14:10:43.565999
421 | 60,6000,3,2,2,no,yes,no,no,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
422 | 61,8880,2,1,1,yes,no,no,no,yes,1,no,semi-furnished,2022-03-13 14:10:43.565999
423 | 64,11175,3,1,1,yes,no,yes,no,yes,1,yes,furnished,2022-03-13 14:10:43.565999
424 | 65,8880,3,2,2,no,no,yes,no,yes,1,no,furnished,2022-03-13 14:10:43.565999
425 | 66,13200,2,1,1,no,no,yes,yes,no,1,no,furnished,2022-03-13 14:10:43.565999
426 | 67,7700,3,2,1,no,no,no,no,no,2,no,unfurnished,2022-03-13 14:10:43.565999
427 | 69,12090,4,2,2,yes,no,no,no,no,2,yes,furnished,2022-03-13 14:10:43.565999
428 | 70,4000,3,2,2,no,no,yes,no,yes,0,yes,semi-furnished,2022-03-13 14:10:43.565999
429 | 71,6000,4,2,4,yes,no,no,no,yes,0,no,unfurnished,2022-03-13 14:10:43.565999
430 | 72,5020,3,1,4,no,no,no,no,yes,0,yes,unfurnished,2022-03-13 14:10:43.565999
431 | 74,4040,3,1,2,yes,no,yes,yes,no,1,no,furnished,2022-03-13 14:10:43.565999
432 | 76,6420,3,2,3,no,no,no,no,yes,0,yes,furnished,2022-03-13 14:10:43.565999
433 | 78,5700,3,1,1,yes,yes,yes,no,yes,2,yes,furnished,2022-03-13 14:10:43.565999
434 | 79,6000,3,2,3,yes,yes,no,no,yes,0,no,furnished,2022-03-13 14:10:43.565999
435 | 81,4000,3,2,2,yes,no,yes,no,yes,1,no,semi-furnished,2022-03-13 14:10:43.565999
436 | 82,10500,3,2,1,yes,no,yes,no,yes,1,yes,furnished,2022-03-13 14:10:43.565999
437 | 84,3760,3,1,2,yes,no,no,yes,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
438 | 87,3960,3,1,1,no,no,yes,no,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
439 | 88,7410,3,1,1,no,yes,yes,no,yes,2,yes,unfurnished,2022-03-13 14:10:43.565999
440 | 89,8580,5,3,2,yes,no,no,no,no,2,no,furnished,2022-03-13 14:10:43.565999
441 | 91,6750,2,1,1,yes,yes,yes,no,no,2,yes,furnished,2022-03-13 14:10:43.565999
442 | 92,4800,3,2,4,no,yes,no,no,yes,0,no,furnished,2022-03-13 14:10:43.565999
443 | 93,7200,3,2,1,no,no,yes,no,yes,3,no,semi-furnished,2022-03-13 14:10:43.565999
444 | 94,6000,4,2,4,yes,no,no,no,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
445 | 95,4100,3,2,3,no,no,no,no,yes,2,no,semi-furnished,2022-03-13 14:10:43.565999
446 | 99,6000,4,1,3,no,yes,yes,no,no,0,yes,unfurnished,2022-03-13 14:10:43.565999
447 | 101,5500,3,1,3,no,no,no,no,no,1,yes,unfurnished,2022-03-13 14:10:43.565999
448 | 102,5500,3,2,4,yes,yes,no,no,yes,1,no,semi-furnished,2022-03-13 14:10:43.565999
449 | 105,4500,3,1,4,yes,no,no,no,yes,0,no,unfurnished,2022-03-13 14:10:43.565999
450 | 106,5450,4,2,1,yes,no,yes,no,yes,0,yes,semi-furnished,2022-03-13 14:10:43.565999
451 | 107,6420,3,1,3,yes,no,yes,no,no,0,yes,unfurnished,2022-03-13 14:10:43.565999
452 | 108,3240,4,1,3,yes,no,no,no,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
453 | 109,6615,4,2,2,no,yes,no,yes,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
454 | 111,8372,3,1,3,no,no,no,no,yes,2,no,unfurnished,2022-03-13 14:10:43.565999
455 | 115,8000,3,1,1,yes,yes,yes,no,yes,2,yes,semi-furnished,2022-03-13 14:10:43.565999
456 | 118,6420,3,1,1,yes,no,yes,no,yes,0,yes,furnished,2022-03-13 14:10:43.565999
457 | 119,7020,3,1,1,yes,no,yes,no,yes,2,yes,semi-furnished,2022-03-13 14:10:43.565999
458 | 121,7231,3,1,2,no,yes,yes,no,yes,0,yes,semi-furnished,2022-03-13 14:10:43.565999
459 | 122,6254,4,2,1,no,no,yes,no,no,1,yes,semi-furnished,2022-03-13 14:10:43.565999
460 | 125,15600,3,1,1,no,no,no,no,yes,2,no,semi-furnished,2022-03-13 14:10:43.565999
461 | 128,5500,3,1,3,no,yes,no,no,yes,1,no,furnished,2022-03-13 14:10:43.565999
462 | 129,11460,3,1,3,no,no,no,no,no,2,yes,semi-furnished,2022-03-13 14:10:43.565999
463 | 130,4800,3,1,1,no,yes,yes,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
464 | 132,5200,3,1,3,yes,no,no,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
465 | 134,7000,3,1,1,no,no,yes,no,no,2,yes,semi-furnished,2022-03-13 14:10:43.565999
466 | 138,5000,3,1,3,yes,no,no,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
467 | 139,6360,3,1,1,yes,yes,yes,no,yes,2,yes,furnished,2022-03-13 14:10:43.565999
468 | 140,5800,3,2,4,no,no,no,no,yes,0,no,unfurnished,2022-03-13 14:10:43.565999
469 | 142,10500,4,2,2,yes,no,no,no,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
470 | 146,10500,2,1,1,no,no,no,no,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
471 | 148,6360,3,1,3,yes,no,no,no,no,0,yes,semi-furnished,2022-03-13 14:10:43.565999
472 | 151,4400,4,1,2,no,no,no,no,yes,2,yes,semi-furnished,2022-03-13 14:10:43.565999
473 | 152,5400,5,1,2,no,yes,yes,no,yes,0,yes,furnished,2022-03-13 14:10:43.565999
474 | 154,3650,3,2,2,yes,no,no,no,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
475 | 156,6900,3,1,1,yes,yes,yes,no,no,0,yes,semi-furnished,2022-03-13 14:10:43.565999
476 | 159,3150,3,2,1,yes,yes,yes,no,yes,0,no,furnished,2022-03-13 14:10:43.565999
477 | 162,6600,4,2,2,yes,yes,yes,no,no,0,yes,semi-furnished,2022-03-13 14:10:43.565999
478 | 165,6450,3,2,1,no,yes,yes,yes,no,0,no,unfurnished,2022-03-13 14:10:43.565999
479 | 166,7800,3,1,1,yes,no,yes,no,yes,2,yes,unfurnished,2022-03-13 14:10:43.565999
480 | 167,4600,2,2,1,yes,no,no,no,yes,2,no,semi-furnished,2022-03-13 14:10:43.565999
481 | 168,4260,4,1,2,no,no,yes,no,yes,0,no,furnished,2022-03-13 14:10:43.565999
482 | 169,6540,4,2,2,yes,no,no,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
483 | 170,5500,3,2,1,yes,no,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
484 | 171,10269,3,1,1,no,no,no,no,no,1,yes,semi-furnished,2022-03-13 14:10:43.565999
485 | 172,8400,3,1,2,no,yes,yes,no,yes,2,yes,unfurnished,2022-03-13 14:10:43.565999
486 | 173,5300,4,2,1,no,no,no,no,yes,0,yes,unfurnished,2022-03-13 14:10:43.565999
487 | 174,3800,3,1,2,no,yes,yes,no,no,1,yes,unfurnished,2022-03-13 14:10:43.565999
488 | 176,8520,3,1,1,no,no,no,no,yes,2,no,furnished,2022-03-13 14:10:43.565999
489 | 179,3180,3,2,2,yes,no,no,no,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
490 | 181,7200,3,1,2,yes,yes,yes,no,no,1,yes,furnished,2022-03-13 14:10:43.565999
491 | 182,3410,3,1,2,no,no,no,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
492 | 186,11410,2,1,2,no,no,no,no,no,0,yes,furnished,2022-03-13 14:10:43.565999
493 | 187,6100,3,1,1,yes,no,yes,no,yes,0,yes,semi-furnished,2022-03-13 14:10:43.565999
494 | 189,3540,2,1,1,no,yes,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
495 | 190,7600,4,1,2,no,no,no,no,yes,2,no,furnished,2022-03-13 14:10:43.565999
496 | 191,10700,3,1,2,no,yes,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
497 | 195,4410,4,3,2,yes,no,yes,no,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
498 | 199,4200,3,1,2,yes,no,no,no,no,1,no,furnished,2022-03-13 14:10:43.565999
499 | 200,4520,3,1,2,yes,no,yes,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
500 | 201,4095,3,1,2,no,yes,yes,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
501 | 203,5400,4,1,2,no,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
502 | 204,4770,3,1,1,no,yes,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
503 | 206,5800,2,1,1,yes,yes,yes,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
504 | 208,2970,3,1,3,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
505 | 211,12900,3,1,1,yes,no,no,no,no,2,no,furnished,2022-03-13 14:10:43.565999
506 | 214,4350,2,1,1,no,no,yes,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
507 | 215,4160,3,1,3,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
508 | 217,6862,3,1,2,no,no,no,no,yes,2,yes,furnished,2022-03-13 14:10:43.565999
509 | 219,7000,3,1,2,no,no,yes,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
510 | 220,8100,4,1,4,yes,no,yes,no,yes,2,no,semi-furnished,2022-03-13 14:10:43.565999
511 | 221,3420,4,2,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
512 | 225,6440,2,1,1,no,no,no,no,yes,3,no,semi-furnished,2022-03-13 14:10:43.565999
513 | 226,5170,3,1,4,yes,no,no,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
514 | 227,6000,2,1,1,no,no,yes,no,yes,1,no,furnished,2022-03-13 14:10:43.565999
515 | 229,9667,4,2,2,yes,yes,yes,no,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
516 | 231,4320,3,1,1,yes,no,no,no,no,0,yes,semi-furnished,2022-03-13 14:10:43.565999
517 | 233,4160,3,1,1,no,yes,yes,no,yes,0,no,unfurnished,2022-03-13 14:10:43.565999
518 | 239,4000,3,1,2,no,no,no,no,no,1,no,furnished,2022-03-13 14:10:43.565999
519 | 240,3840,3,1,2,no,no,no,no,no,1,yes,semi-furnished,2022-03-13 14:10:43.565999
520 | 241,3760,3,1,1,yes,no,no,no,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
521 | 243,2550,3,1,2,no,no,yes,no,no,0,no,furnished,2022-03-13 14:10:43.565999
522 | 244,5320,3,1,2,yes,yes,yes,no,no,0,yes,semi-furnished,2022-03-13 14:10:43.565999
523 | 245,5360,3,1,2,no,no,no,no,no,2,yes,unfurnished,2022-03-13 14:10:43.565999
524 | 248,4100,2,2,1,no,yes,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
525 | 249,4990,4,2,2,no,yes,yes,no,no,0,yes,furnished,2022-03-13 14:10:43.565999
526 | 250,3510,3,1,3,no,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
527 | 252,9860,3,1,1,no,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
528 | 253,3520,2,1,2,yes,no,no,no,no,0,yes,furnished,2022-03-13 14:10:43.565999
529 | 254,4510,4,1,2,no,no,no,no,yes,2,no,semi-furnished,2022-03-13 14:10:43.565999
530 | 255,5885,2,1,1,yes,no,no,no,yes,1,no,unfurnished,2022-03-13 14:10:43.565999
531 | 258,4040,3,1,2,yes,no,no,no,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
532 | 259,6360,2,1,1,yes,no,yes,no,yes,1,no,furnished,2022-03-13 14:10:43.565999
533 | 260,3162,3,1,2,no,no,no,no,yes,1,no,furnished,2022-03-13 14:10:43.565999
534 | 261,3510,3,1,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
535 | 263,3968,3,1,2,no,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
536 | 264,4900,2,1,2,yes,no,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
537 | 265,2880,3,1,2,no,no,no,no,no,0,yes,semi-furnished,2022-03-13 14:10:43.565999
538 | 266,4880,3,1,1,yes,no,no,no,no,2,yes,unfurnished,2022-03-13 14:10:43.565999
539 | 267,4920,3,1,2,no,no,no,no,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
540 | 268,4950,4,1,2,no,no,no,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
541 | 269,3900,3,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
542 | 270,4500,3,2,3,no,no,no,yes,no,1,no,furnished,2022-03-13 14:10:43.565999
543 | 271,1905,5,1,2,no,no,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
544 | 272,4075,3,1,1,no,yes,yes,no,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
545 | 274,6450,4,1,2,no,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
546 | 275,4032,2,1,1,yes,no,yes,no,no,0,no,furnished,2022-03-13 14:10:43.565999
547 | 276,4400,2,1,1,yes,no,no,no,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
548 | 278,3400,3,1,2,yes,no,yes,no,no,2,yes,semi-furnished,2022-03-13 14:10:43.565999
549 | 280,6360,2,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
550 | 284,7770,2,1,1,no,no,no,no,no,1,no,furnished,2022-03-13 14:10:43.565999
551 | 285,6650,3,1,2,yes,yes,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
552 | 291,2953,3,1,2,yes,no,yes,no,yes,0,no,unfurnished,2022-03-13 14:10:43.565999
553 | 292,2747,4,2,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
554 | 293,4410,2,1,1,yes,no,no,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
555 | 294,4000,4,2,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
556 | 296,4600,3,2,2,yes,no,no,no,yes,1,no,semi-furnished,2022-03-13 14:10:43.565999
557 | 297,3640,3,2,2,yes,no,yes,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
558 | 302,2145,3,1,3,yes,no,no,no,no,1,yes,unfurnished,2022-03-13 14:10:43.565999
559 | 303,4500,3,1,1,yes,no,yes,no,no,0,no,furnished,2022-03-13 14:10:43.565999
560 | 304,8250,3,1,1,yes,no,yes,no,no,3,no,semi-furnished,2022-03-13 14:10:43.565999
561 | 307,4080,3,1,2,no,no,no,no,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
562 | 308,4046,3,1,2,yes,no,yes,no,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
563 | 311,6060,2,1,1,no,no,yes,no,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
564 | 313,3680,3,2,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
565 | 315,5600,2,1,1,yes,no,no,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
566 | 317,4992,3,2,2,yes,no,no,no,no,2,no,unfurnished,2022-03-13 14:10:43.565999
567 | 322,3460,3,2,1,no,no,yes,no,yes,1,no,furnished,2022-03-13 14:10:43.565999
568 | 323,5400,3,1,1,yes,no,no,no,no,3,no,semi-furnished,2022-03-13 14:10:43.565999
569 | 325,3460,4,1,2,no,no,no,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
570 | 326,4100,4,1,1,no,no,yes,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
571 | 327,6480,3,1,2,yes,no,no,no,yes,1,no,semi-furnished,2022-03-13 14:10:43.565999
572 | 328,4500,3,2,2,yes,no,yes,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
573 | 331,7260,3,2,1,no,yes,yes,no,no,3,no,furnished,2022-03-13 14:10:43.565999
574 | 334,3290,2,1,1,no,no,no,yes,no,1,no,furnished,2022-03-13 14:10:43.565999
575 | 336,8080,3,1,1,no,no,no,no,yes,2,no,semi-furnished,2022-03-13 14:10:43.565999
576 | 338,3780,2,1,2,yes,yes,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
577 | 340,5300,5,2,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
578 | 341,3180,2,2,1,yes,no,yes,no,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
579 | 342,7152,3,1,2,yes,no,no,no,yes,0,no,furnished,2022-03-13 14:10:43.565999
580 | 343,4080,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
581 | 344,3850,2,1,1,no,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
582 | 345,2015,3,1,2,no,no,yes,no,no,0,yes,semi-furnished,2022-03-13 14:10:43.565999
583 | 347,3350,3,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
584 | 349,4820,3,1,2,no,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
585 | 351,3600,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
586 | 354,8400,2,1,1,no,no,no,no,no,1,no,furnished,2022-03-13 14:10:43.565999
587 | 355,8250,3,1,1,no,no,no,no,no,2,no,furnished,2022-03-13 14:10:43.565999
588 | 356,2520,5,2,1,no,no,yes,no,yes,1,no,furnished,2022-03-13 14:10:43.565999
589 | 358,3480,2,1,1,yes,no,no,no,no,0,yes,semi-furnished,2022-03-13 14:10:43.565999
590 | 360,4040,2,1,1,no,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
591 | 362,4050,2,1,1,yes,no,no,no,no,0,no,furnished,2022-03-13 14:10:43.565999
592 | 363,3584,2,1,1,yes,no,no,yes,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
593 | 366,3630,2,1,1,no,no,yes,no,no,0,no,furnished,2022-03-13 14:10:43.565999
594 | 367,3630,2,1,1,no,no,no,no,yes,0,no,unfurnished,2022-03-13 14:10:43.565999
595 | 368,5640,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
596 | 369,3600,2,1,1,no,no,no,no,no,0,no,furnished,2022-03-13 14:10:43.565999
597 | 370,4280,2,1,1,yes,no,no,no,yes,2,no,semi-furnished,2022-03-13 14:10:43.565999
598 | 372,3180,3,1,2,no,no,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
599 | 373,3000,2,1,2,no,no,no,no,yes,0,no,furnished,2022-03-13 14:10:43.565999
600 | 375,5960,3,1,2,yes,yes,yes,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
601 | 376,4130,3,2,2,no,no,no,no,no,2,no,semi-furnished,2022-03-13 14:10:43.565999
602 | 378,2275,3,1,3,yes,no,no,yes,yes,0,yes,semi-furnished,2022-03-13 14:10:43.565999
603 | 379,3520,3,1,1,yes,no,no,no,no,2,yes,unfurnished,2022-03-13 14:10:43.565999
604 | 380,4500,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
605 | 382,3150,3,1,2,no,no,yes,no,no,0,no,furnished,2022-03-13 14:10:43.565999
606 | 383,4500,4,2,2,yes,no,yes,no,no,2,no,furnished,2022-03-13 14:10:43.565999
607 | 384,4500,2,1,1,yes,no,no,no,no,0,no,furnished,2022-03-13 14:10:43.565999
608 | 385,3640,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
609 | 386,3850,3,1,1,no,no,no,no,no,2,no,unfurnished,2022-03-13 14:10:43.565999
610 | 387,4240,3,1,2,no,no,no,no,yes,0,no,semi-furnished,2022-03-13 14:10:43.565999
611 | 388,3650,3,1,2,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
612 | 389,4600,4,1,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
613 | 390,2135,3,2,2,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
614 | 392,3990,3,1,2,no,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
615 | 393,7424,3,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
616 | 394,3480,3,1,1,no,no,no,no,yes,0,no,unfurnished,2022-03-13 14:10:43.565999
617 | 395,3600,6,1,2,no,no,no,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
618 | 397,5900,2,1,1,yes,no,no,no,no,1,no,furnished,2022-03-13 14:10:43.565999
619 | 398,3120,3,1,2,no,no,no,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
620 | 400,3512,2,1,1,no,no,no,no,no,1,yes,unfurnished,2022-03-13 14:10:43.565999
621 | 401,9500,3,1,2,yes,no,no,no,no,3,yes,unfurnished,2022-03-13 14:10:43.565999
622 | 402,5880,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
623 | 405,3060,3,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
624 | 406,5320,2,1,1,no,no,no,no,no,1,yes,unfurnished,2022-03-13 14:10:43.565999
625 | 407,2145,3,1,3,yes,no,no,no,no,0,yes,furnished,2022-03-13 14:10:43.565999
626 | 408,4000,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
627 | 409,3185,2,1,1,yes,no,no,no,no,2,no,unfurnished,2022-03-13 14:10:43.565999
628 | 410,3850,3,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
629 | 412,2610,3,1,2,yes,no,yes,no,no,0,yes,unfurnished,2022-03-13 14:10:43.565999
630 | 415,4785,3,1,2,no,yes,yes,no,yes,1,no,furnished,2022-03-13 14:10:43.565999
631 | 417,3640,2,1,1,no,no,no,no,no,0,no,furnished,2022-03-13 14:10:43.565999
632 | 419,4960,4,1,3,no,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
633 | 420,4120,2,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
634 | 421,4750,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
635 | 424,3100,3,1,2,no,no,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
636 | 425,3185,2,1,1,no,no,yes,no,no,2,no,furnished,2022-03-13 14:10:43.565999
637 | 426,2700,3,1,1,no,no,no,no,no,0,no,furnished,2022-03-13 14:10:43.565999
638 | 429,4775,4,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
639 | 430,2500,2,1,1,no,no,no,no,yes,0,no,unfurnished,2022-03-13 14:10:43.565999
640 | 431,3180,4,1,2,yes,no,yes,no,yes,0,no,unfurnished,2022-03-13 14:10:43.565999
641 | 434,3792,4,1,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
642 | 435,4040,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
643 | 437,5880,3,1,1,yes,no,no,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
644 | 438,4500,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
645 | 440,3640,4,1,2,yes,no,yes,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
646 | 441,4370,3,1,2,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
647 | 442,2684,2,1,1,yes,no,no,no,yes,1,no,unfurnished,2022-03-13 14:10:43.565999
648 | 444,3120,3,1,2,no,no,no,no,no,0,no,furnished,2022-03-13 14:10:43.565999
649 | 446,3986,2,2,1,no,yes,yes,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
650 | 447,3500,2,1,1,no,no,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
651 | 450,3450,3,1,2,yes,no,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
652 | 453,3069,2,1,1,yes,no,no,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
653 | 455,5495,3,1,1,no,no,yes,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
654 | 456,2398,3,1,1,no,no,no,no,no,0,yes,semi-furnished,2022-03-13 14:10:43.565999
655 | 458,3850,3,1,2,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
656 | 460,8100,2,1,1,no,no,no,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
657 | 461,4960,2,1,1,yes,no,yes,no,yes,0,no,unfurnished,2022-03-13 14:10:43.565999
658 | 462,2160,3,1,2,yes,no,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
659 | 463,3090,2,1,1,yes,yes,yes,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
660 | 464,4500,2,1,2,no,no,no,yes,no,1,no,semi-furnished,2022-03-13 14:10:43.565999
661 | 465,3800,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
662 | 468,2835,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
663 | 470,5076,3,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
664 | 471,3750,3,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
665 | 473,8050,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
666 | 475,3000,2,1,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
667 | 476,5850,3,1,2,yes,no,yes,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
668 | 478,3600,3,1,2,no,no,no,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
669 | 481,2700,2,1,1,yes,no,no,no,no,0,no,furnished,2022-03-13 14:10:43.565999
670 | 483,6615,3,1,2,no,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
671 | 484,3040,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
672 | 485,3630,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
673 | 487,5400,4,1,2,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
674 | 488,5200,4,1,3,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
675 | 490,4350,3,1,2,no,no,no,yes,no,1,no,unfurnished,2022-03-13 14:10:43.565999
676 | 492,2650,3,1,2,yes,no,yes,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
677 | 493,3960,3,1,1,no,no,no,no,no,0,no,furnished,2022-03-13 14:10:43.565999
678 | 494,6800,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
679 | 495,4000,3,1,2,no,no,no,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
680 | 497,3934,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
681 | 498,2000,2,1,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
682 | 499,3630,3,3,2,no,yes,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
683 | 501,2430,3,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
684 | 503,4000,3,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
685 | 504,3185,2,1,1,yes,no,no,no,yes,0,no,unfurnished,2022-03-13 14:10:43.565999
686 | 505,4000,3,1,2,yes,no,no,no,yes,0,no,unfurnished,2022-03-13 14:10:43.565999
687 | 506,2910,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
688 | 507,3600,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
689 | 510,2880,3,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
690 | 511,3180,3,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
691 | 512,3000,2,1,2,no,no,no,no,no,0,no,furnished,2022-03-13 14:10:43.565999
692 | 513,4400,3,1,2,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
693 | 514,3000,3,1,2,no,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
694 | 517,3000,2,1,1,no,no,no,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
695 | 518,3500,2,1,1,yes,yes,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
696 | 519,4840,2,1,2,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
697 | 523,2787,4,2,2,no,no,no,no,no,0,no,furnished,2022-03-13 14:10:43.565999
698 | 524,3264,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
699 | 526,3180,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
700 | 527,1836,2,1,1,yes,no,yes,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
701 | 529,3970,3,1,2,no,no,yes,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
702 | 532,3000,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
703 | 534,3000,4,1,2,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
704 | 535,3360,2,1,1,no,no,no,no,no,1,no,unfurnished,2022-03-13 14:10:43.565999
705 | 536,3420,5,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
706 | 537,1700,3,1,2,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
707 | 540,3000,2,1,1,yes,no,yes,no,no,2,no,unfurnished,2022-03-13 14:10:43.565999
708 | 541,2400,3,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-13 14:10:43.565999
709 | 542,3620,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
710 | 544,3850,3,1,2,no,no,no,no,no,0,no,unfurnished,2022-03-13 14:10:43.565999
711 | 4,7420,4,1,2,yes,no,yes,no,yes,2,no,furnished,2022-03-16 14:10:43.570701
712 | 5,7500,3,3,1,yes,yes,yes,no,yes,2,yes,semi-furnished,2022-03-16 14:10:43.570701
713 | 6,8580,4,3,4,yes,yes,no,no,yes,2,yes,semi-furnished,2022-03-16 14:10:43.570701
714 | 10,13200,3,1,2,yes,yes,yes,no,yes,2,yes,furnished,2022-03-16 14:10:43.570701
715 | 15,6000,4,1,2,yes,yes,yes,no,no,2,no,semi-furnished,2022-03-16 14:10:43.570701
716 | 19,6420,3,2,2,yes,no,no,no,yes,1,yes,semi-furnished,2022-03-16 14:10:43.570701
717 | 20,4320,3,1,2,yes,yes,yes,yes,no,2,no,semi-furnished,2022-03-16 14:10:43.570701
718 | 21,7155,3,2,1,yes,yes,yes,no,yes,2,no,unfurnished,2022-03-16 14:10:43.570701
719 | 22,8050,3,1,1,yes,yes,yes,no,yes,1,no,furnished,2022-03-16 14:10:43.570701
720 | 23,4560,3,2,2,yes,yes,yes,no,yes,1,no,furnished,2022-03-16 14:10:43.570701
721 | 27,8875,3,1,1,yes,no,no,no,no,1,no,semi-furnished,2022-03-16 14:10:43.570701
722 | 28,7950,5,2,2,yes,yes,yes,yes,no,2,no,unfurnished,2022-03-16 14:10:43.570701
723 | 29,5500,4,2,2,yes,yes,yes,no,yes,1,yes,semi-furnished,2022-03-16 14:10:43.570701
724 | 30,7475,3,2,4,yes,no,no,no,yes,2,no,unfurnished,2022-03-16 14:10:43.570701
725 | 31,7000,3,1,4,yes,no,no,no,yes,2,no,semi-furnished,2022-03-16 14:10:43.570701
726 | 33,5960,3,3,2,yes,yes,yes,no,no,1,no,unfurnished,2022-03-16 14:10:43.570701
727 | 34,6840,5,1,2,yes,no,yes,no,yes,1,no,furnished,2022-03-16 14:10:43.570701
728 | 35,7000,3,2,4,yes,no,no,no,yes,2,no,furnished,2022-03-16 14:10:43.570701
729 | 39,6000,4,2,4,yes,yes,no,no,yes,1,no,semi-furnished,2022-03-16 14:10:43.570701
730 | 40,6550,3,1,2,yes,yes,yes,no,yes,0,yes,furnished,2022-03-16 14:10:43.570701
731 | 41,6360,3,2,4,yes,no,no,no,yes,0,yes,furnished,2022-03-16 14:10:43.570701
732 | 42,6480,3,2,4,yes,yes,no,no,yes,2,no,unfurnished,2022-03-16 14:10:43.570701
733 | 44,6000,4,2,4,yes,yes,no,no,yes,1,no,furnished,2022-03-16 14:10:43.570701
734 | 46,6000,3,2,4,yes,yes,no,no,yes,1,no,furnished,2022-03-16 14:10:43.570701
735 | 47,6600,3,1,4,yes,no,no,no,yes,3,yes,furnished,2022-03-16 14:10:43.570701
736 | 49,7440,3,2,1,yes,yes,yes,no,yes,0,yes,semi-furnished,2022-03-16 14:10:43.570701
737 | 53,5150,3,2,4,yes,no,no,no,yes,2,no,semi-furnished,2022-03-16 14:10:43.570701
738 | 55,6000,3,1,2,yes,yes,no,no,yes,1,no,unfurnished,2022-03-16 14:10:43.570701
739 | 59,6000,3,2,4,yes,no,no,no,yes,1,no,furnished,2022-03-16 14:10:43.570701
740 | 61,8880,2,1,1,yes,no,no,no,yes,1,no,semi-furnished,2022-03-16 14:10:43.570701
741 | 62,6240,4,2,2,yes,no,no,no,yes,1,no,furnished,2022-03-16 14:10:43.570701
742 | 64,11175,3,1,1,yes,yes,yes,no,yes,1,yes,furnished,2022-03-16 14:10:43.570701
743 | 66,13200,2,1,1,yes,yes,yes,yes,no,1,no,furnished,2022-03-16 14:10:43.570701
744 | 69,12090,4,2,2,yes,no,no,no,no,2,yes,furnished,2022-03-16 14:10:43.570701
745 | 71,6000,4,2,4,yes,no,no,no,yes,0,no,unfurnished,2022-03-16 14:10:43.570701
746 | 73,6600,2,2,4,yes,yes,yes,no,no,0,yes,furnished,2022-03-16 14:10:43.570701
747 | 78,5700,3,1,1,yes,no,yes,no,yes,2,yes,furnished,2022-03-16 14:10:43.570701
748 | 79,6000,3,2,3,yes,no,no,no,yes,0,no,furnished,2022-03-16 14:10:43.570701
749 | 82,10500,3,2,1,yes,yes,yes,no,yes,1,yes,furnished,2022-03-16 14:10:43.570701
750 | 83,6000,3,2,4,yes,no,no,no,yes,0,no,semi-furnished,2022-03-16 14:10:43.570701
751 | 84,3760,3,1,2,yes,yes,no,yes,no,2,no,semi-furnished,2022-03-16 14:10:43.570701
752 | 87,3960,3,1,1,yes,yes,yes,no,no,2,no,semi-furnished,2022-03-16 14:10:43.570701
753 | 88,7410,3,1,1,yes,yes,yes,no,yes,2,yes,unfurnished,2022-03-16 14:10:43.570701
754 | 90,5000,3,1,2,yes,no,no,no,yes,0,no,semi-furnished,2022-03-16 14:10:43.570701
755 | 94,6000,4,2,4,yes,no,no,no,no,1,no,semi-furnished,2022-03-16 14:10:43.570701
756 | 95,4100,3,2,3,yes,yes,no,no,yes,2,no,semi-furnished,2022-03-16 14:10:43.570701
757 | 96,9000,3,1,1,yes,yes,yes,no,no,1,yes,furnished,2022-03-16 14:10:43.570701
758 | 97,6400,3,1,1,yes,yes,yes,no,yes,1,yes,semi-furnished,2022-03-16 14:10:43.570701
759 | 98,6600,3,2,3,yes,yes,no,no,yes,0,yes,unfurnished,2022-03-16 14:10:43.570701
760 | 99,6000,4,1,3,yes,yes,yes,no,no,0,yes,unfurnished,2022-03-16 14:10:43.570701
761 | 102,5500,3,2,4,yes,no,no,no,yes,1,no,semi-furnished,2022-03-16 14:10:43.570701
762 | 103,6350,3,2,3,yes,yes,no,no,yes,0,no,furnished,2022-03-16 14:10:43.570701
763 | 105,4500,3,1,4,yes,no,no,no,yes,0,no,unfurnished,2022-03-16 14:10:43.570701
764 | 106,5450,4,2,1,yes,no,yes,no,yes,0,yes,semi-furnished,2022-03-16 14:10:43.570701
765 | 107,6420,3,1,3,yes,no,yes,no,no,0,yes,unfurnished,2022-03-16 14:10:43.570701
766 | 112,4300,6,2,2,yes,yes,no,no,no,0,no,furnished,2022-03-16 14:10:43.570701
767 | 113,9620,3,1,1,yes,yes,yes,no,no,2,yes,furnished,2022-03-16 14:10:43.570701
768 | 114,6800,2,1,1,yes,no,yes,no,no,2,no,furnished,2022-03-16 14:10:43.570701
769 | 115,8000,3,1,1,yes,no,yes,no,yes,2,yes,semi-furnished,2022-03-16 14:10:43.570701
770 | 116,6900,3,2,1,yes,no,yes,no,no,0,yes,unfurnished,2022-03-16 14:10:43.570701
771 | 117,3700,4,1,2,yes,no,no,no,yes,0,no,furnished,2022-03-16 14:10:43.570701
772 | 122,6254,4,2,1,yes,no,yes,no,no,1,yes,semi-furnished,2022-03-16 14:10:43.570701
773 | 125,15600,3,1,1,yes,yes,no,no,yes,2,no,semi-furnished,2022-03-16 14:10:43.570701
774 | 126,7160,3,1,1,yes,yes,yes,no,no,2,yes,unfurnished,2022-03-16 14:10:43.570701
775 | 127,6500,3,2,3,yes,yes,no,no,yes,0,no,unfurnished,2022-03-16 14:10:43.570701
776 | 131,5828,4,1,4,yes,no,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
777 | 133,4800,3,1,3,yes,no,no,no,yes,0,no,unfurnished,2022-03-16 14:10:43.570701
778 | 134,7000,3,1,1,yes,yes,yes,no,no,2,yes,semi-furnished,2022-03-16 14:10:43.570701
779 | 137,4640,4,1,2,yes,yes,no,no,no,1,no,semi-furnished,2022-03-16 14:10:43.570701
780 | 138,5000,3,1,3,yes,no,no,no,yes,0,no,semi-furnished,2022-03-16 14:10:43.570701
781 | 142,10500,4,2,2,yes,yes,no,no,no,1,no,semi-furnished,2022-03-16 14:10:43.570701
782 | 143,4800,5,2,3,no,no,yes,yes,no,0,no,unfurnished,2022-03-16 14:10:43.570701
783 | 144,4700,4,1,2,yes,yes,yes,no,yes,1,no,furnished,2022-03-16 14:10:43.570701
784 | 148,6360,3,1,3,yes,no,no,no,no,0,yes,semi-furnished,2022-03-16 14:10:43.570701
785 | 149,6600,4,2,1,yes,yes,yes,no,no,0,yes,semi-furnished,2022-03-16 14:10:43.570701
786 | 150,5136,3,1,2,yes,no,yes,no,yes,0,yes,unfurnished,2022-03-16 14:10:43.570701
787 | 151,4400,4,1,2,yes,yes,no,no,yes,2,yes,semi-furnished,2022-03-16 14:10:43.570701
788 | 152,5400,5,1,2,yes,yes,yes,no,yes,0,yes,furnished,2022-03-16 14:10:43.570701
789 | 154,3650,3,2,2,yes,no,no,no,no,2,no,semi-furnished,2022-03-16 14:10:43.570701
790 | 157,2817,4,2,2,no,no,yes,no,no,1,no,furnished,2022-03-16 14:10:43.570701
791 | 159,3150,3,2,1,yes,yes,yes,no,yes,0,no,furnished,2022-03-16 14:10:43.570701
792 | 162,6600,4,2,2,yes,no,yes,no,no,0,yes,semi-furnished,2022-03-16 14:10:43.570701
793 | 163,6825,3,1,1,yes,no,yes,no,yes,0,yes,semi-furnished,2022-03-16 14:10:43.570701
794 | 166,7800,3,1,1,yes,yes,yes,no,yes,2,yes,unfurnished,2022-03-16 14:10:43.570701
795 | 170,5500,3,2,1,yes,yes,yes,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
796 | 171,10269,3,1,1,yes,no,no,no,no,1,yes,semi-furnished,2022-03-16 14:10:43.570701
797 | 172,8400,3,1,2,yes,no,yes,no,yes,2,yes,unfurnished,2022-03-16 14:10:43.570701
798 | 173,5300,4,2,1,yes,no,no,no,yes,0,yes,unfurnished,2022-03-16 14:10:43.570701
799 | 177,6050,3,1,1,yes,no,yes,no,no,0,yes,semi-furnished,2022-03-16 14:10:43.570701
800 | 182,3410,3,1,2,no,yes,no,no,yes,0,no,semi-furnished,2022-03-16 14:10:43.570701
801 | 183,7980,3,1,1,yes,no,no,no,no,1,yes,semi-furnished,2022-03-16 14:10:43.570701
802 | 185,3000,3,1,2,yes,no,yes,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
803 | 193,4800,2,1,1,yes,yes,yes,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
804 | 198,5948,3,1,2,yes,yes,no,no,yes,0,no,semi-furnished,2022-03-16 14:10:43.570701
805 | 199,4200,3,1,2,yes,no,no,no,no,1,no,furnished,2022-03-16 14:10:43.570701
806 | 200,4520,3,1,2,yes,yes,yes,no,yes,0,no,semi-furnished,2022-03-16 14:10:43.570701
807 | 202,4120,2,1,1,yes,yes,yes,no,no,1,no,semi-furnished,2022-03-16 14:10:43.570701
808 | 203,5400,4,1,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
809 | 205,6300,3,1,1,yes,no,no,no,yes,2,no,semi-furnished,2022-03-16 14:10:43.570701
810 | 206,5800,2,1,1,yes,no,yes,no,yes,0,no,semi-furnished,2022-03-16 14:10:43.570701
811 | 207,3000,3,1,2,yes,yes,yes,no,yes,0,no,semi-furnished,2022-03-16 14:10:43.570701
812 | 208,2970,3,1,3,yes,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
813 | 209,6720,3,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
814 | 210,4646,3,1,2,yes,yes,yes,no,no,2,no,semi-furnished,2022-03-16 14:10:43.570701
815 | 219,7000,3,1,2,yes,yes,yes,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
816 | 222,9166,2,1,1,yes,no,yes,no,yes,2,no,semi-furnished,2022-03-16 14:10:43.570701
817 | 227,6000,2,1,1,yes,yes,yes,no,yes,1,no,furnished,2022-03-16 14:10:43.570701
818 | 228,3630,3,1,2,yes,yes,no,no,no,2,no,semi-furnished,2022-03-16 14:10:43.570701
819 | 230,5400,2,1,2,yes,yes,no,no,no,0,yes,semi-furnished,2022-03-16 14:10:43.570701
820 | 233,4160,3,1,1,yes,yes,yes,no,yes,0,no,unfurnished,2022-03-16 14:10:43.570701
821 | 234,3880,3,2,2,yes,no,yes,no,no,2,no,semi-furnished,2022-03-16 14:10:43.570701
822 | 236,2870,2,1,2,yes,yes,yes,no,no,0,yes,semi-furnished,2022-03-16 14:10:43.570701
823 | 237,5010,3,1,2,yes,no,yes,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
824 | 241,3760,3,1,1,yes,no,no,no,no,2,no,semi-furnished,2022-03-16 14:10:43.570701
825 | 242,3640,3,1,2,yes,yes,no,no,yes,0,no,furnished,2022-03-16 14:10:43.570701
826 | 243,2550,3,1,2,yes,no,yes,no,no,0,no,furnished,2022-03-16 14:10:43.570701
827 | 245,5360,3,1,2,yes,yes,no,no,no,2,yes,unfurnished,2022-03-16 14:10:43.570701
828 | 246,3520,3,1,1,yes,no,no,no,no,0,yes,semi-furnished,2022-03-16 14:10:43.570701
829 | 249,4990,4,2,2,yes,no,yes,no,no,0,yes,furnished,2022-03-16 14:10:43.570701
830 | 250,3510,3,1,3,yes,no,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
831 | 251,3450,3,1,2,yes,no,yes,no,no,1,no,semi-furnished,2022-03-16 14:10:43.570701
832 | 253,3520,2,1,2,yes,no,no,no,no,0,yes,furnished,2022-03-16 14:10:43.570701
833 | 254,4510,4,1,2,yes,no,no,no,yes,2,no,semi-furnished,2022-03-16 14:10:43.570701
834 | 256,4000,3,1,2,yes,yes,no,no,no,2,no,furnished,2022-03-16 14:10:43.570701
835 | 257,8250,3,1,1,yes,no,no,no,no,0,no,furnished,2022-03-16 14:10:43.570701
836 | 260,3162,3,1,2,yes,no,no,no,yes,1,no,furnished,2022-03-16 14:10:43.570701
837 | 261,3510,3,1,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
838 | 263,3968,3,1,2,no,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
839 | 265,2880,3,1,2,yes,no,no,no,no,0,yes,semi-furnished,2022-03-16 14:10:43.570701
840 | 266,4880,3,1,1,yes,no,no,no,no,2,yes,unfurnished,2022-03-16 14:10:43.570701
841 | 267,4920,3,1,2,yes,yes,no,no,no,1,no,semi-furnished,2022-03-16 14:10:43.570701
842 | 268,4950,4,1,2,yes,yes,no,no,yes,0,no,semi-furnished,2022-03-16 14:10:43.570701
843 | 269,3900,3,1,2,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
844 | 270,4500,3,2,3,yes,no,no,yes,no,1,no,furnished,2022-03-16 14:10:43.570701
845 | 273,3500,4,1,2,yes,no,no,no,no,2,no,furnished,2022-03-16 14:10:43.570701
846 | 275,4032,2,1,1,yes,yes,yes,no,no,0,no,furnished,2022-03-16 14:10:43.570701
847 | 279,6360,2,1,1,yes,no,no,no,no,0,no,furnished,2022-03-16 14:10:43.570701
848 | 280,6360,2,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
849 | 281,4500,2,1,1,yes,no,no,no,yes,2,no,furnished,2022-03-16 14:10:43.570701
850 | 282,2175,3,1,2,no,no,yes,no,yes,0,no,unfurnished,2022-03-16 14:10:43.570701
851 | 286,2787,3,1,1,yes,yes,yes,no,no,0,yes,furnished,2022-03-16 14:10:43.570701
852 | 287,5500,3,1,2,yes,yes,no,no,yes,0,no,unfurnished,2022-03-16 14:10:43.570701
853 | 288,5040,3,1,2,yes,yes,yes,no,yes,0,no,unfurnished,2022-03-16 14:10:43.570701
854 | 290,2610,4,3,2,no,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
855 | 292,2747,4,2,2,no,no,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
856 | 294,4000,4,2,2,no,no,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
857 | 295,2325,3,1,2,no,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
858 | 296,4600,3,2,2,yes,yes,no,no,yes,1,no,semi-furnished,2022-03-16 14:10:43.570701
859 | 299,7000,3,1,1,yes,yes,no,no,no,3,no,furnished,2022-03-16 14:10:43.570701
860 | 300,4079,3,1,3,yes,no,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
861 | 303,4500,3,1,1,yes,no,yes,no,no,0,no,furnished,2022-03-16 14:10:43.570701
862 | 304,8250,3,1,1,yes,yes,yes,no,no,3,no,semi-furnished,2022-03-16 14:10:43.570701
863 | 307,4080,3,1,2,yes,yes,no,no,no,2,no,semi-furnished,2022-03-16 14:10:43.570701
864 | 309,4632,4,1,2,yes,no,no,no,yes,0,no,semi-furnished,2022-03-16 14:10:43.570701
865 | 318,4340,3,1,1,yes,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
866 | 321,3630,3,2,2,yes,yes,no,yes,no,2,no,semi-furnished,2022-03-16 14:10:43.570701
867 | 322,3460,3,2,1,yes,yes,yes,no,yes,1,no,furnished,2022-03-16 14:10:43.570701
868 | 323,5400,3,1,1,yes,yes,no,no,no,3,no,semi-furnished,2022-03-16 14:10:43.570701
869 | 324,4500,3,1,2,no,no,yes,no,yes,0,no,semi-furnished,2022-03-16 14:10:43.570701
870 | 325,3460,4,1,2,yes,no,no,no,yes,0,no,semi-furnished,2022-03-16 14:10:43.570701
871 | 327,6480,3,1,2,no,yes,no,no,yes,1,no,semi-furnished,2022-03-16 14:10:43.570701
872 | 329,3960,3,1,2,yes,no,no,no,no,0,no,furnished,2022-03-16 14:10:43.570701
873 | 330,4050,2,1,2,yes,yes,yes,no,no,0,yes,unfurnished,2022-03-16 14:10:43.570701
874 | 331,7260,3,2,1,yes,yes,yes,no,no,3,no,furnished,2022-03-16 14:10:43.570701
875 | 332,5500,4,1,2,yes,no,yes,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
876 | 333,3000,3,1,2,yes,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
877 | 334,3290,2,1,1,yes,yes,no,yes,no,1,no,furnished,2022-03-16 14:10:43.570701
878 | 337,2145,4,2,1,yes,no,yes,no,no,0,yes,unfurnished,2022-03-16 14:10:43.570701
879 | 338,3780,2,1,2,yes,no,yes,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
880 | 339,3180,4,2,2,yes,no,no,no,no,0,no,furnished,2022-03-16 14:10:43.570701
881 | 340,5300,5,2,2,yes,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
882 | 343,4080,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
883 | 344,3850,2,1,1,yes,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
884 | 346,2176,2,1,2,yes,no,no,no,no,0,yes,semi-furnished,2022-03-16 14:10:43.570701
885 | 347,3350,3,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
886 | 349,4820,3,1,2,yes,no,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
887 | 350,3420,2,1,2,yes,yes,no,yes,no,1,no,semi-furnished,2022-03-16 14:10:43.570701
888 | 351,3600,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
889 | 352,5830,2,1,1,yes,no,no,no,no,2,no,unfurnished,2022-03-16 14:10:43.570701
890 | 357,6930,4,1,2,no,no,no,no,no,1,no,furnished,2022-03-16 14:10:43.570701
891 | 358,3480,2,1,1,yes,yes,no,no,no,0,yes,semi-furnished,2022-03-16 14:10:43.570701
892 | 363,3584,2,1,1,yes,yes,no,yes,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
893 | 366,3630,2,1,1,yes,yes,yes,no,no,0,no,furnished,2022-03-16 14:10:43.570701
894 | 371,3570,3,1,2,yes,no,yes,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
895 | 373,3000,2,1,2,yes,yes,no,no,yes,0,no,furnished,2022-03-16 14:10:43.570701
896 | 375,5960,3,1,2,yes,yes,yes,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
897 | 379,3520,3,1,1,yes,no,no,no,no,2,yes,unfurnished,2022-03-16 14:10:43.570701
898 | 381,4000,2,1,1,yes,no,no,no,no,0,yes,semi-furnished,2022-03-16 14:10:43.570701
899 | 383,4500,4,2,2,yes,no,yes,no,no,2,no,furnished,2022-03-16 14:10:43.570701
900 | 384,4500,2,1,1,no,no,no,no,no,0,no,furnished,2022-03-16 14:10:43.570701
901 | 388,3650,3,1,2,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
902 | 390,2135,3,2,2,no,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
903 | 391,3036,3,1,2,yes,no,yes,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
904 | 392,3990,3,1,2,yes,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
905 | 395,3600,6,1,2,yes,yes,no,no,no,1,no,unfurnished,2022-03-16 14:10:43.570701
906 | 396,3640,2,1,1,yes,no,no,no,no,1,no,semi-furnished,2022-03-16 14:10:43.570701
907 | 397,5900,2,1,1,yes,no,no,no,no,1,no,furnished,2022-03-16 14:10:43.570701
908 | 398,3120,3,1,2,yes,yes,no,no,no,1,no,unfurnished,2022-03-16 14:10:43.570701
909 | 399,7350,2,1,1,yes,no,no,no,no,1,no,semi-furnished,2022-03-16 14:10:43.570701
910 | 401,9500,3,1,2,yes,yes,no,no,no,3,yes,unfurnished,2022-03-16 14:10:43.570701
911 | 405,3060,3,1,1,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
912 | 406,5320,2,1,1,yes,yes,no,no,no,1,yes,unfurnished,2022-03-16 14:10:43.570701
913 | 407,2145,3,1,3,yes,no,no,no,no,0,yes,furnished,2022-03-16 14:10:43.570701
914 | 409,3185,2,1,1,yes,yes,no,no,no,2,no,unfurnished,2022-03-16 14:10:43.570701
915 | 410,3850,3,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
916 | 411,2145,3,1,3,yes,no,no,no,no,0,yes,furnished,2022-03-16 14:10:43.570701
917 | 412,2610,3,1,2,yes,no,yes,no,no,0,yes,unfurnished,2022-03-16 14:10:43.570701
918 | 415,4785,3,1,2,yes,no,yes,no,yes,1,no,furnished,2022-03-16 14:10:43.570701
919 | 416,3450,3,1,1,yes,no,yes,no,no,2,no,unfurnished,2022-03-16 14:10:43.570701
920 | 417,3640,2,1,1,yes,no,no,no,no,0,no,furnished,2022-03-16 14:10:43.570701
921 | 420,4120,2,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
922 | 423,3750,3,1,1,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
923 | 424,3100,3,1,2,no,yes,yes,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
924 | 427,2145,3,1,2,yes,yes,yes,no,no,0,yes,furnished,2022-03-16 14:10:43.570701
925 | 428,4040,2,1,1,yes,no,no,no,no,1,no,unfurnished,2022-03-16 14:10:43.570701
926 | 430,2500,2,1,1,no,yes,no,no,yes,0,no,unfurnished,2022-03-16 14:10:43.570701
927 | 433,3480,4,1,2,no,yes,no,no,no,1,no,semi-furnished,2022-03-16 14:10:43.570701
928 | 435,4040,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
929 | 444,3120,3,1,2,no,no,no,no,no,0,no,furnished,2022-03-16 14:10:43.570701
930 | 445,3450,1,1,1,yes,no,no,no,no,0,no,furnished,2022-03-16 14:10:43.570701
931 | 446,3986,2,2,1,no,yes,yes,no,no,1,no,unfurnished,2022-03-16 14:10:43.570701
932 | 447,3500,2,1,1,no,yes,yes,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
933 | 449,1650,3,1,2,no,yes,yes,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
934 | 451,6750,2,1,1,yes,no,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
935 | 452,9000,3,1,2,yes,yes,no,no,no,2,no,semi-furnished,2022-03-16 14:10:43.570701
936 | 455,5495,3,1,1,yes,yes,yes,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
937 | 456,2398,3,1,1,yes,yes,no,no,no,0,yes,semi-furnished,2022-03-16 14:10:43.570701
938 | 457,3000,3,1,1,no,yes,no,no,yes,0,no,unfurnished,2022-03-16 14:10:43.570701
939 | 458,3850,3,1,2,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
940 | 459,3500,2,1,1,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
941 | 460,8100,2,1,1,yes,yes,no,no,no,1,no,unfurnished,2022-03-16 14:10:43.570701
942 | 462,2160,3,1,2,no,no,yes,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
943 | 465,3800,2,1,1,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
944 | 468,2835,2,1,1,yes,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
945 | 469,4600,2,1,1,yes,no,no,no,no,0,no,furnished,2022-03-16 14:10:43.570701
946 | 472,3630,4,1,2,yes,yes,no,no,no,3,no,semi-furnished,2022-03-16 14:10:43.570701
947 | 474,4352,4,1,2,no,no,no,no,no,1,no,unfurnished,2022-03-16 14:10:43.570701
948 | 475,3000,2,1,2,yes,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
949 | 479,3660,4,1,2,no,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
950 | 480,3480,3,1,2,no,yes,no,no,no,1,no,semi-furnished,2022-03-16 14:10:43.570701
951 | 481,2700,2,1,1,no,no,no,no,no,0,no,furnished,2022-03-16 14:10:43.570701
952 | 483,6615,3,1,2,yes,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
953 | 484,3040,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
954 | 485,3630,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
955 | 489,3300,3,1,2,no,no,no,no,no,1,no,semi-furnished,2022-03-16 14:10:43.570701
956 | 494,6800,2,1,1,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
957 | 503,4000,3,1,1,yes,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
958 | 504,3185,2,1,1,yes,no,no,no,yes,0,no,unfurnished,2022-03-16 14:10:43.570701
959 | 505,4000,3,1,2,yes,no,no,no,yes,0,no,unfurnished,2022-03-16 14:10:43.570701
960 | 506,2910,2,1,1,no,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
961 | 510,2880,3,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
962 | 513,4400,3,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
963 | 514,3000,3,1,2,no,no,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
964 | 515,3210,3,1,2,yes,yes,yes,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
965 | 516,3240,2,1,1,no,yes,no,no,no,1,no,unfurnished,2022-03-16 14:10:43.570701
966 | 518,3500,2,1,1,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
967 | 519,4840,2,1,2,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
968 | 522,2475,3,1,2,yes,no,no,no,no,0,no,furnished,2022-03-16 14:10:43.570701
969 | 524,3264,2,1,1,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
970 | 526,3180,2,1,1,yes,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
971 | 527,1836,2,1,1,no,yes,yes,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
972 | 528,3970,1,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
973 | 529,3970,3,1,2,yes,no,yes,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
974 | 530,1950,3,1,1,no,yes,no,yes,no,0,no,unfurnished,2022-03-16 14:10:43.570701
975 | 532,3000,2,1,1,no,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
976 | 533,2400,3,1,2,yes,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
977 | 534,3000,4,1,2,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
978 | 535,3360,2,1,1,yes,yes,no,no,no,1,no,unfurnished,2022-03-16 14:10:43.570701
979 | 536,3420,5,1,2,no,no,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
980 | 538,3649,2,1,1,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
981 | 540,3000,2,1,1,yes,yes,yes,no,no,2,no,unfurnished,2022-03-16 14:10:43.570701
982 | 541,2400,3,1,1,no,yes,no,no,no,0,no,semi-furnished,2022-03-16 14:10:43.570701
983 | 542,3620,2,1,1,yes,yes,no,no,no,0,no,unfurnished,2022-03-16 14:10:43.570701
984 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | kfp==1.6.3
--------------------------------------------------------------------------------
/utils/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quan-dang/kubeflow-tutorials/20624db3e035081085e05edc858d52183247dbb7/utils/__init__.py
--------------------------------------------------------------------------------
/utils/auth.py:
--------------------------------------------------------------------------------
1 | from constants import USERNAME, PASSWORD, NAMESPACE, HOST
2 | import requests
3 |
4 | def get_session_cookie():
5 | session = requests.Session()
6 | response = session.get(HOST)
7 |
8 | headers = {
9 | "Content-Type": "application/x-www-form-urlencoded",
10 | }
11 |
12 | data = {"login": USERNAME, "password": PASSWORD}
13 | session.post(response.url, headers=headers, data=data)
14 | session_cookie = session.cookies.get_dict()["authservice_session"]
15 |
16 | return session_cookie
--------------------------------------------------------------------------------
/utils/helpers.py:
--------------------------------------------------------------------------------
1 | import logging
2 |
3 | def get_or_create_pipeline(client,
4 | pipeline_name: str,
5 | pipeline_description: str,
6 | version: str
7 | ):
8 | pipeline_package_path = f"pipeline_{version}.yaml"
9 | pipeline_id = client.get_pipeline_id(pipeline_name)
10 |
11 | # If no pipeline found by name, create a new pipeline
12 | # Else get the latest pipeline version
13 | if pipeline_id is None:
14 | logging.info(f"Creating a new pipeline: {pipeline_name}")
15 | pipeline = client.upload_pipeline(
16 | pipeline_package_path=pipeline_package_path,
17 | pipeline_name=pipeline_name,
18 | description=pipeline_description
19 | )
20 | else:
21 | pipeline = client.get_pipeline(pipeline_id)
22 |
23 | # Always try to upload a pipeline version.
24 | pipeline_version = client.upload_pipeline_version(
25 | pipeline_package_path=pipeline_package_path,
26 | pipeline_version_name=f"{pipeline_name} {version}",
27 | pipeline_id=pipeline_id
28 | )
29 |
30 | return pipeline_version
31 |
32 |
33 | def get_or_create_experiment(client,
34 | name: str
35 | ):
36 | try:
37 | experiment = client.get_experiment(
38 | experiment_name=name
39 | )
40 | except Exception:
41 | logging.info(f"Creating new experiment: {name}")
42 | experiment = client.create_experiment(name)
43 |
44 | return experiment
45 |
--------------------------------------------------------------------------------