|
61 | 61 | "cell_type": "markdown",
|
62 | 62 | "metadata": {},
|
63 | 63 | "source": [
|
64 |
| - "## Selling your home" |
| 64 | + "## Selling your home\n", |
| 65 | + "\n", |
| 66 | + "Execute the following command to install the openpyxl library if not already:\n", |
| 67 | + "```\n", |
| 68 | + "!pip install openpyxl\n", |
| 69 | + "```" |
| 70 | + ] |
| 71 | + }, |
| 72 | + { |
| 73 | + "cell_type": "markdown", |
| 74 | + "metadata": {}, |
| 75 | + "source": [ |
| 76 | + "Also, when `matplotlib` is not present, run the following command to have it install:\n", |
| 77 | + "```\n", |
| 78 | + "import sys \n", |
| 79 | + "!{sys.executable} -m pip install matplotlib\n", |
| 80 | + "```" |
65 | 81 | ]
|
66 | 82 | },
|
67 | 83 | {
|
|
186 | 202 | "gis = GIS('home')"
|
187 | 203 | ]
|
188 | 204 | },
|
| 205 | + { |
| 206 | + "cell_type": "markdown", |
| 207 | + "metadata": {}, |
| 208 | + "source": [ |
| 209 | + "Use the boolean `has_arcpy` to flag whether `arcpy` is present on the local environement:" |
| 210 | + ] |
| 211 | + }, |
| 212 | + { |
| 213 | + "cell_type": "code", |
| 214 | + "execution_count": 2, |
| 215 | + "metadata": {}, |
| 216 | + "outputs": [], |
| 217 | + "source": [ |
| 218 | + "has_arcpy = False" |
| 219 | + ] |
| 220 | + }, |
| 221 | + { |
| 222 | + "cell_type": "code", |
| 223 | + "execution_count": 4, |
| 224 | + "metadata": {}, |
| 225 | + "outputs": [ |
| 226 | + { |
| 227 | + "name": "stdout", |
| 228 | + "output_type": "stream", |
| 229 | + "text": [ |
| 230 | + "arcpy not present\n" |
| 231 | + ] |
| 232 | + } |
| 233 | + ], |
| 234 | + "source": [ |
| 235 | + "import importlib\n", |
| 236 | + "try:\n", |
| 237 | + " if importlib.find_module('arcpy'):\n", |
| 238 | + " has_arcpy = True\n", |
| 239 | + " print(\"arcpy present\")\n", |
| 240 | + "except:\n", |
| 241 | + " print(\"arcpy not present\")" |
| 242 | + ] |
| 243 | + }, |
189 | 244 | {
|
190 | 245 | "cell_type": "markdown",
|
191 | 246 | "metadata": {},
|
|
2700 | 2755 | " tags='datascience')"
|
2701 | 2756 | ]
|
2702 | 2757 | },
|
| 2758 | + { |
| 2759 | + "cell_type": "markdown", |
| 2760 | + "metadata": {}, |
| 2761 | + "source": [ |
| 2762 | + "When arcpy is present, the `import_data` will upload the local SeDF as a FGDB to your organization, and publish to a hosted feature layer; On the ther hand, when arcpy is not present, then the `import_data` method would have the local SeDF upload to your organization as a shapefile, and then publish as a hosted Feature Layer. This minor difference will result in column/property name differences from what's defined in the original SeDF.\n", |
| 2763 | + "\n", |
| 2764 | + "The `has_arcpy` flag is to be used in determine which naming convention the newly created Feature Layer would be conforming to, when we are adding the Feature Layer for display based on variables." |
| 2765 | + ] |
| 2766 | + }, |
2703 | 2767 | {
|
2704 | 2768 | "cell_type": "markdown",
|
2705 | 2769 | "metadata": {},
|
|
2740 | 2804 | "m1"
|
2741 | 2805 | ]
|
2742 | 2806 | },
|
| 2807 | + { |
| 2808 | + "cell_type": "code", |
| 2809 | + "execution_count": 6, |
| 2810 | + "metadata": {}, |
| 2811 | + "outputs": [], |
| 2812 | + "source": [ |
| 2813 | + "cur_field_name = \"BuyerSellerIndex\"\n", |
| 2814 | + "if has_arcpy:\n", |
| 2815 | + " if cur_field_name not in mergd_lyr.layers[0].properties.fields:\n", |
| 2816 | + " cur_field_name = \"buyer_seller_index\"\n", |
| 2817 | + "else:\n", |
| 2818 | + " cur_field_name = \"BuyerSelle\"" |
| 2819 | + ] |
| 2820 | + }, |
2743 | 2821 | {
|
2744 | 2822 | "cell_type": "code",
|
2745 | 2823 | "execution_count": 68,
|
2746 | 2824 | "metadata": {},
|
2747 | 2825 | "outputs": [],
|
2748 | 2826 | "source": [
|
2749 | 2827 | "m1.add_layer(mergd_lyr, {\"renderer\":\"ClassedColorRenderer\",\n",
|
2750 |
| - " \"field_name\":\"BuyerSellerIndex\",\n", |
| 2828 | + " \"field_name\":cur_field_name,\n", |
2751 | 2829 | " \"opacity\":0.7\n",
|
2752 |
| - " })" |
| 2830 | + " })" |
2753 | 2831 | ]
|
2754 | 2832 | },
|
2755 | 2833 | {
|
|
2785 | 2863 | "m2"
|
2786 | 2864 | ]
|
2787 | 2865 | },
|
| 2866 | + { |
| 2867 | + "cell_type": "code", |
| 2868 | + "execution_count": 7, |
| 2869 | + "metadata": {}, |
| 2870 | + "outputs": [], |
| 2871 | + "source": [ |
| 2872 | + "cur_field_name = \"DaysOnMarket\"\n", |
| 2873 | + "if has_arcpy:\n", |
| 2874 | + " if cur_field_name not in mergd_lyr.layers[0].properties.fields:\n", |
| 2875 | + " cur_field_name = \"days_on_market\"\n", |
| 2876 | + "else:\n", |
| 2877 | + " cur_field_name = \"DaysOnMark\"" |
| 2878 | + ] |
| 2879 | + }, |
2788 | 2880 | {
|
2789 | 2881 | "cell_type": "code",
|
2790 | 2882 | "execution_count": 70,
|
2791 | 2883 | "metadata": {},
|
2792 | 2884 | "outputs": [],
|
2793 | 2885 | "source": [
|
2794 | 2886 | "m2.add_layer(mergd_lyr, {\"renderer\":\"ClassedSizeRenderer\",\n",
|
2795 |
| - " \"field_name\":\"DaysOnMarket\",\n", |
| 2887 | + " \"field_name\":cur_field_name,\n", |
2796 | 2888 | " \"opacity\":0.7\n",
|
2797 | 2889 | " })"
|
2798 | 2890 | ]
|
|
4222 | 4314 | "m4"
|
4223 | 4315 | ]
|
4224 | 4316 | },
|
| 4317 | + { |
| 4318 | + "cell_type": "code", |
| 4319 | + "execution_count": 8, |
| 4320 | + "metadata": {}, |
| 4321 | + "outputs": [], |
| 4322 | + "source": [ |
| 4323 | + "cur_field_name = \"MarketHealthIndex\"\n", |
| 4324 | + "if has_arcpy:\n", |
| 4325 | + " if cur_field_name not in hlth_lyr.layers[0].properties.fields:\n", |
| 4326 | + " cur_field_name = \"market_health_index\"\n", |
| 4327 | + "else:\n", |
| 4328 | + " cur_field_name = \"MarketHeal\"" |
| 4329 | + ] |
| 4330 | + }, |
4225 | 4331 | {
|
4226 | 4332 | "cell_type": "code",
|
4227 | 4333 | "execution_count": 104,
|
4228 | 4334 | "metadata": {},
|
4229 | 4335 | "outputs": [],
|
4230 | 4336 | "source": [
|
4231 | 4337 | "m4.add_layer(hlth_lyr, {\"renderer\":\"ClassedColorRenderer\",\n",
|
4232 |
| - " \"field_name\":\"MarketHealthIndex\",\n", |
| 4338 | + " \"field_name\":cur_field_name,\n", |
4233 | 4339 | " \"classificationMethod\":'quantile',\n",
|
4234 |
| - " \"opacity\":0.7\n", |
4235 |
| - " })" |
| 4340 | + " \"opacity\":0.7\n", |
| 4341 | + " })" |
4236 | 4342 | ]
|
4237 | 4343 | },
|
4238 | 4344 | {
|
|
4398 | 4504 | "outputs": [],
|
4399 | 4505 | "source": [
|
4400 | 4506 | "m5.add_layer(hlth_lyr, {\"renderer\":\"ClassedColorRenderer\",\n",
|
4401 |
| - " \"field_name\":\"MarketHealthIndex\",\n", |
| 4507 | + " \"field_name\":cur_field_name,\n", |
4402 | 4508 | " \"classificationMethod\":'quantile',\n",
|
4403 |
| - " \"opacity\":0.7\n", |
4404 |
| - " })\n", |
| 4509 | + " \"opacity\":0.7\n", |
| 4510 | + " })\n", |
4405 | 4511 | "m5.add_layer(drive_time_lyr)"
|
4406 | 4512 | ]
|
4407 | 4513 | },
|
|
4451 | 4557 | "metadata": {},
|
4452 | 4558 | "outputs": [],
|
4453 | 4559 | "source": [
|
4454 |
| - "m6.add_layer(hlth_lyr, {\"renderer\":\"ClassedColorRenderer\",\n", |
| 4560 | + "m6.add_layer(hlth_lyr, { \"renderer\":\"ClassedColorRenderer\",\n", |
4455 | 4561 | " \"field_name\":\"ZHVI\",\n",
|
4456 |
| - " \"classificationMethod\":'quantile',\n", |
| 4562 | + " \"classificationMethod\":'quantile',\n", |
4457 | 4563 | " \"opacity\":0.7\n",
|
4458 | 4564 | " })\n",
|
4459 | 4565 | "m6.add_layer(drive_time_lyr)"
|
|
4499 | 4605 | "m7"
|
4500 | 4606 | ]
|
4501 | 4607 | },
|
| 4608 | + { |
| 4609 | + "cell_type": "code", |
| 4610 | + "execution_count": 10, |
| 4611 | + "metadata": {}, |
| 4612 | + "outputs": [], |
| 4613 | + "source": [ |
| 4614 | + "cur_field_name = \"ForecastYoYPctChange\"\n", |
| 4615 | + "if has_arcpy:\n", |
| 4616 | + " if cur_field_name not in hlth_lyr.layers[0].properties.fields:\n", |
| 4617 | + " cur_field_name = \"forecase_yo_y_pct_change\"\n", |
| 4618 | + "else:\n", |
| 4619 | + " cur_field_name = \"ForecastYo\"" |
| 4620 | + ] |
| 4621 | + }, |
4502 | 4622 | {
|
4503 | 4623 | "cell_type": "code",
|
4504 | 4624 | "execution_count": 119,
|
4505 | 4625 | "metadata": {},
|
4506 | 4626 | "outputs": [],
|
4507 | 4627 | "source": [
|
4508 | 4628 | "m7.add_layer(hlth_lyr, {\"renderer\":\"ClassedColorRenderer\",\n",
|
4509 |
| - " \"field_name\":\"ForecastYoYPctChange\",\n", |
| 4629 | + " \"field_name\":cur_field_name,\n", |
4510 | 4630 | " \"classificationMethod\":'quantile',\n",
|
4511 |
| - " \"opacity\":0.7\n", |
| 4631 | + " \"opacity\":0.7\n", |
4512 | 4632 | " })\n",
|
4513 | 4633 | "m7.add_layer(drive_time_lyr)"
|
4514 | 4634 | ]
|
|
4855 | 4975 | }
|
4856 | 4976 | ],
|
4857 | 4977 | "source": [
|
4858 |
| - "zip_hlth_intersect.query(where='((ZHVI > 350000) AND (ZHVI < 600000) AND (MarketHealthIndex > 8) AND (ForecastYoYPctChange> 0.06)) AND (1=1)').sdf" |
| 4978 | + "if has_arcpy:\n", |
| 4979 | + " zip_hlth_intersect_df = zip_hlth_intersect.query(where='((ZHVI > 350000) AND (ZHVI < 600000) AND (MarketHealthIndex > 8) AND (ForecastYoYPctChange> 0.06)) AND (1=1)').sdf\n", |
| 4980 | + "else:\n", |
| 4981 | + " zip_hlth_intersect_df = zip_hlth_intersect.query(where='((ZHVI > 350000) AND (ZHVI < 600000) AND (MarketHeal > 8) AND (ForecastYo> 0.06)) AND (1=1)').sdf\n", |
| 4982 | + "zip_hlth_intersect_df" |
4859 | 4983 | ]
|
4860 | 4984 | },
|
4861 | 4985 | {
|
|
4890 | 5014 | "metadata": {},
|
4891 | 5015 | "outputs": [],
|
4892 | 5016 | "source": [
|
4893 |
| - "m9.add_layer(zip_hlth_intersect,\n", |
| 5017 | + "if has_arcpy:\n", |
| 5018 | + " m9.add_layer(zip_hlth_intersect,\n", |
4894 | 5019 | " {\"definition_expression\": '((ZHVI > 350000) AND (ZHVI < 600000) AND (MarketHealthIndex > 8) AND (ForecastYoYPctChange > 0.06)) AND (1=1)',\n",
|
4895 | 5020 | " \"classificationMethod\":'quantile'})\n",
|
| 5021 | + "else:\n", |
| 5022 | + " m9.add_layer(zip_hlth_intersect,\n", |
| 5023 | + " {\"definition_expression\": '((ZHVI > 350000) AND (ZHVI < 600000) AND (MarketHeal > 8) AND (ForecastYo> 0.06)) AND (1=1)',\n", |
| 5024 | + " \"classificationMethod\":'quantile'})\n", |
4896 | 5025 | "m9.zoom_to_layer(zip_hlth_intersect)"
|
4897 | 5026 | ]
|
4898 | 5027 | },
|
|
4938 | 5067 | "name": "python",
|
4939 | 5068 | "nbconvert_exporter": "python",
|
4940 | 5069 | "pygments_lexer": "ipython3",
|
4941 |
| - "version": "3.9.15" |
| 5070 | + "version": "3.9.16" |
4942 | 5071 | }
|
4943 | 5072 | },
|
4944 | 5073 | "nbformat": 4,
|
|
0 commit comments