{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "import os\nfrom pathlib import Path\n\nPY_FIG_DIR = Path(\"artifacts/py/figures\")\nPY_TAB_DIR = Path(\"artifacts/py/tables\")\nPY_FIG_DIR.mkdir(parents=True, exist_ok=True)\nPY_TAB_DIR.mkdir(parents=True, exist_ok=True)\nprint(\"Artifact directories ready.\")\n" }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "LqEg38a305oW" }, "outputs": [], "source": [ "import pandas as pd\n", "import plotly.express as px\n", "\n", "df = pd.read_csv(\"FINAL_merged_clean_synthetic.csv\")\n", "df[\"city\"] = df[\"city\"].astype(str).str.strip().str.lower()" ] }, { "cell_type": "code", "source": [ "rating_city = (\n", " df.groupby(\"city\", as_index=False)[\"guest_satisfaction_overall\"]\n", " .mean()\n", " .rename(columns={\"guest_satisfaction_overall\": \"avg_rating\"})\n", " .sort_values(\"avg_rating\", ascending=False)\n", ")\n", "\n", "fig = px.bar(\n", " rating_city,\n", " x=\"city\",\n", " y=\"avg_rating\",\n", " text=rating_city[\"avg_rating\"].round(2),\n", " title=\"Average Rating by City\"\n", ")\n", "\n", "fig.update_layout(xaxis_tickangle=-45)\n", "fig.update_traces(textposition=\"outside\")\n", "fig.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 542 }, "id": "kFbGxd9w248V", "outputId": "ab77c8a9-cafa-44ef-c685-d24f3626f403" }, "execution_count": 3, "outputs": [ { "output_type": "display_data", "data": { "text/html": [ "\n", "
\n", "\n", "