diff --git a/Scattertext_contractors.ipynb b/Scattertext_contractors.ipynb new file mode 100644 index 0000000..3ae7531 --- /dev/null +++ b/Scattertext_contractors.ipynb @@ -0,0 +1,8658 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 75, + "resources": { + "http://localhost:8080/nbextensions/google.colab/files.js": { + "data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7Ci8vIE1heCBhbW91bnQgb2YgdGltZSB0byBibG9jayB3YWl0aW5nIGZvciB0aGUgdXNlci4KY29uc3QgRklMRV9DSEFOR0VfVElNRU9VVF9NUyA9IDMwICogMTAwMDsKCmZ1bmN0aW9uIF91cGxvYWRGaWxlcyhpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IHN0ZXBzID0gdXBsb2FkRmlsZXNTdGVwKGlucHV0SWQsIG91dHB1dElkKTsKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIC8vIENhY2hlIHN0ZXBzIG9uIHRoZSBvdXRwdXRFbGVtZW50IHRvIG1ha2UgaXQgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBjYWxsCiAgLy8gdG8gdXBsb2FkRmlsZXNDb250aW51ZSBmcm9tIFB5dGhvbi4KICBvdXRwdXRFbGVtZW50LnN0ZXBzID0gc3RlcHM7CgogIHJldHVybiBfdXBsb2FkRmlsZXNDb250aW51ZShvdXRwdXRJZCk7Cn0KCi8vIFRoaXMgaXMgcm91Z2hseSBhbiBhc3luYyBnZW5lcmF0b3IgKG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGJyb3dzZXIgeWV0KSwKLy8gd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlIGFzeW5jaHJvbm91cyBzdGVwcyBhbmQgdGhlIFB5dGhvbiBzaWRlIGlzIGdvaW5nCi8vIHRvIHBvbGwgZm9yIGNvbXBsZXRpb24gb2YgZWFjaCBzdGVwLgovLyBUaGlzIHVzZXMgYSBQcm9taXNlIHRvIGJsb2NrIHRoZSBweXRob24gc2lkZSBvbiBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcCwKLy8gdGhlbiBwYXNzZXMgdGhlIHJlc3VsdCBvZiB0aGUgcHJldmlvdXMgc3RlcCBhcyB0aGUgaW5wdXQgdG8gdGhlIG5leHQgc3RlcC4KZnVuY3Rpb24gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpIHsKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIGNvbnN0IHN0ZXBzID0gb3V0cHV0RWxlbWVudC5zdGVwczsKCiAgY29uc3QgbmV4dCA9IHN0ZXBzLm5leHQob3V0cHV0RWxlbWVudC5sYXN0UHJvbWlzZVZhbHVlKTsKICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5leHQudmFsdWUucHJvbWlzZSkudGhlbigodmFsdWUpID0+IHsKICAgIC8vIENhY2hlIHRoZSBsYXN0IHByb21pc2UgdmFsdWUgdG8gbWFrZSBpdCBhdmFpbGFibGUgdG8gdGhlIG5leHQKICAgIC8vIHN0ZXAgb2YgdGhlIGdlbmVyYXRvci4KICAgIG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSA9IHZhbHVlOwogICAgcmV0dXJuIG5leHQudmFsdWUucmVzcG9uc2U7CiAgfSk7Cn0KCi8qKgogKiBHZW5lcmF0b3IgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGJldHdlZW4gZWFjaCBhc3luYyBzdGVwIG9mIHRoZSB1cGxvYWQKICogcHJvY2Vzcy4KICogQHBhcmFtIHtzdHJpbmd9IGlucHV0SWQgRWxlbWVudCBJRCBvZiB0aGUgaW5wdXQgZmlsZSBwaWNrZXIgZWxlbWVudC4KICogQHBhcmFtIHtzdHJpbmd9IG91dHB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIG91dHB1dCBkaXNwbGF5LgogKiBAcmV0dXJuIHshSXRlcmFibGU8IU9iamVjdD59IEl0ZXJhYmxlIG9mIG5leHQgc3RlcHMuCiAqLwpmdW5jdGlvbiogdXBsb2FkRmlsZXNTdGVwKGlucHV0SWQsIG91dHB1dElkKSB7CiAgY29uc3QgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5wdXRJZCk7CiAgaW5wdXRFbGVtZW50LmRpc2FibGVkID0gZmFsc2U7CgogIGNvbnN0IG91dHB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvdXRwdXRJZCk7CiAgb3V0cHV0RWxlbWVudC5pbm5lckhUTUwgPSAnJzsKCiAgY29uc3QgcGlja2VkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICBpbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHsKICAgICAgcmVzb2x2ZShlLnRhcmdldC5maWxlcyk7CiAgICB9KTsKICB9KTsKCiAgY29uc3QgY2FuY2VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgaW5wdXRFbGVtZW50LnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2FuY2VsKTsKICBjYW5jZWwudGV4dENvbnRlbnQgPSAnQ2FuY2VsIHVwbG9hZCc7CiAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICBjYW5jZWwub25jbGljayA9ICgpID0+IHsKICAgICAgcmVzb2x2ZShudWxsKTsKICAgIH07CiAgfSk7CgogIC8vIENhbmNlbCB1cGxvYWQgaWYgdXNlciBoYXNuJ3QgcGlja2VkIGFueXRoaW5nIGluIHRpbWVvdXQuCiAgY29uc3QgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9LCBGSUxFX0NIQU5HRV9USU1FT1VUX01TKTsKICB9KTsKCiAgLy8gV2FpdCBmb3IgdGhlIHVzZXIgdG8gcGljayB0aGUgZmlsZXMuCiAgY29uc3QgZmlsZXMgPSB5aWVsZCB7CiAgICBwcm9taXNlOiBQcm9taXNlLnJhY2UoW3BpY2tlZFByb21pc2UsIHRpbWVvdXRQcm9taXNlLCBjYW5jZWxQcm9taXNlXSksCiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdzdGFydGluZycsCiAgICB9CiAgfTsKCiAgaWYgKCFmaWxlcykgewogICAgcmV0dXJuIHsKICAgICAgcmVzcG9uc2U6IHsKICAgICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICAgIH0KICAgIH07CiAgfQoKICBjYW5jZWwucmVtb3ZlKCk7CgogIC8vIERpc2FibGUgdGhlIGlucHV0IGVsZW1lbnQgc2luY2UgZnVydGhlciBwaWNrcyBhcmUgbm90IGFsbG93ZWQuCiAgaW5wdXRFbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKCiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7CiAgICBjb25zdCBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CiAgICBsaS5hcHBlbmQoc3BhbihmaWxlLm5hbWUsIHtmb250V2VpZ2h0OiAnYm9sZCd9KSk7CiAgICBsaS5hcHBlbmQoc3BhbigKICAgICAgICBgKCR7ZmlsZS50eXBlIHx8ICduL2EnfSkgLSAke2ZpbGUuc2l6ZX0gYnl0ZXMsIGAgKwogICAgICAgIGBsYXN0IG1vZGlmaWVkOiAkewogICAgICAgICAgICBmaWxlLmxhc3RNb2RpZmllZERhdGUgPyBmaWxlLmxhc3RNb2RpZmllZERhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbi9hJ30gLSBgKSk7CiAgICBjb25zdCBwZXJjZW50ID0gc3BhbignMCUgZG9uZScpOwogICAgbGkuYXBwZW5kQ2hpbGQocGVyY2VudCk7CgogICAgb3V0cHV0RWxlbWVudC5hcHBlbmRDaGlsZChsaSk7CgogICAgY29uc3QgZmlsZURhdGFQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7CiAgICAgICAgcmVzb2x2ZShlLnRhcmdldC5yZXN1bHQpOwogICAgICB9OwogICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7CiAgICB9KTsKICAgIC8vIFdhaXQgZm9yIHRoZSBkYXRhIHRvIGJlIHJlYWR5LgogICAgbGV0IGZpbGVEYXRhID0geWllbGQgewogICAgICBwcm9taXNlOiBmaWxlRGF0YVByb21pc2UsCiAgICAgIHJlc3BvbnNlOiB7CiAgICAgICAgYWN0aW9uOiAnY29udGludWUnLAogICAgICB9CiAgICB9OwoKICAgIC8vIFVzZSBhIGNodW5rZWQgc2VuZGluZyB0byBhdm9pZCBtZXNzYWdlIHNpemUgbGltaXRzLiBTZWUgYi82MjExNTY2MC4KICAgIGxldCBwb3NpdGlvbiA9IDA7CiAgICB3aGlsZSAocG9zaXRpb24gPCBmaWxlRGF0YS5ieXRlTGVuZ3RoKSB7CiAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWluKGZpbGVEYXRhLmJ5dGVMZW5ndGggLSBwb3NpdGlvbiwgTUFYX1BBWUxPQURfU0laRSk7CiAgICAgIGNvbnN0IGNodW5rID0gbmV3IFVpbnQ4QXJyYXkoZmlsZURhdGEsIHBvc2l0aW9uLCBsZW5ndGgpOwogICAgICBwb3NpdGlvbiArPSBsZW5ndGg7CgogICAgICBjb25zdCBiYXNlNjQgPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgY2h1bmspKTsKICAgICAgeWllbGQgewogICAgICAgIHJlc3BvbnNlOiB7CiAgICAgICAgICBhY3Rpb246ICdhcHBlbmQnLAogICAgICAgICAgZmlsZTogZmlsZS5uYW1lLAogICAgICAgICAgZGF0YTogYmFzZTY0LAogICAgICAgIH0sCiAgICAgIH07CiAgICAgIHBlcmNlbnQudGV4dENvbnRlbnQgPQogICAgICAgICAgYCR7TWF0aC5yb3VuZCgocG9zaXRpb24gLyBmaWxlRGF0YS5ieXRlTGVuZ3RoKSAqIDEwMCl9JSBkb25lYDsKICAgIH0KICB9CgogIC8vIEFsbCBkb25lLgogIHlpZWxkIHsKICAgIHJlc3BvbnNlOiB7CiAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgIH0KICB9Owp9CgpzY29wZS5nb29nbGUgPSBzY29wZS5nb29nbGUgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYiA9IHNjb3BlLmdvb2dsZS5jb2xhYiB8fCB7fTsKc2NvcGUuZ29vZ2xlLmNvbGFiLl9maWxlcyA9IHsKICBfdXBsb2FkRmlsZXMsCiAgX3VwbG9hZEZpbGVzQ29udGludWUsCn07Cn0pKHNlbGYpOwo=", + "headers": [ + [ + "content-type", + "application/javascript" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + } + } + }, + "colab_type": "code", + "id": "K5g9s2N9J2DM", + "outputId": "61350282-ad8c-4f19-b1fe-0c59fcdf6174" + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "df = pd.read_csv(r'C:\\Users\\macky\\BuildWeek\\20. Contractors_AZ.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 107 + }, + "colab_type": "code", + "id": "wcBQkYqAP4tJ", + "outputId": "ba7de79b-902d-4cae-c637-dfd74f640655" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: squarify in c:\\programdata\\anaconda3\\lib\\site-packages (0.4.3)\n" + ] + } + ], + "source": [ + "!pip install squarify" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 169 + }, + "colab_type": "code", + "id": "5WiT5-XYQLyC", + "outputId": "4a9232cd-5673-4f92-9e5c-0f77ac61cc1d" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
business_idcategoriescitystarsstatecooldatefunnyreview_starstextuseful
22454sYLXNuVy_xaZmkpYu3MHMQContractorsPhoenix4.0AZ12014-06-15 22:35:0904I saw 'another' two rebar stains in my plaster...8
\n", + "
" + ], + "text/plain": [ + " business_id categories city stars state cool \\\n", + "22454 sYLXNuVy_xaZmkpYu3MHMQ Contractors Phoenix 4.0 AZ 1 \n", + "\n", + " date funny review_stars \\\n", + "22454 2014-06-15 22:35:09 0 4 \n", + "\n", + " text useful \n", + "22454 I saw 'another' two rebar stains in my plaster... 8 " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.sample()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 551 + }, + "colab_type": "code", + "id": "cLKa-yMhZxvy", + "outputId": "ef54cebd-11a7-4a4f-d554-cb820b1c538d" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
addressattributesbusiness_idcategoriescityhoursis_openlatitudelongitudenamepostal_codereview_countstarsstate
02818 E Camino Acequia Drive{'GoodForKids': 'False'}1SWheh84yJXfytovILXOAQGolf, Active LifePhoenixNone033.522143-112.018481Arizona Biltmore Golf Club8501653.0AZ
130 Eglinton Avenue W{'RestaurantsReservations': 'True', 'GoodForMe...QXAEGFB4oINsVuTFxEYKFQSpecialty Food, Restaurants, Dim Sum, Imported...Mississauga{'Monday': '9:0-0:0', 'Tuesday': '9:0-0:0', 'W...143.605499-79.652289Emerald Chinese RestaurantL5R 3E71282.5ON
210110 Johnston Rd, Ste 15{'GoodForKids': 'True', 'NoiseLevel': 'u'avera...gnKjwL_1w79qoiV3IC_xQQSushi Bars, Restaurants, JapaneseCharlotte{'Monday': '17:30-21:30', 'Wednesday': '17:30-...135.092564-80.859132Musashi Japanese Restaurant282101704.0NC
315655 W Roosevelt St, Ste 237NonexvX2CttrVhyG2z1dFg_0xwInsurance, Financial ServicesGoodyear{'Monday': '8:0-17:0', 'Tuesday': '8:0-17:0', ...133.455613-112.395596Farmers Insurance - Paul Lorenz8533835.0AZ
44209 Stuart Andrew Blvd, Ste F{'BusinessAcceptsBitcoin': 'False', 'ByAppoint...HhyxOkGAM07SRYtlQ4wMFQPlumbing, Shopping, Local Services, Home Servi...Charlotte{'Monday': '7:0-23:0', 'Tuesday': '7:0-23:0', ...135.190012-80.887223Queen City Plumbing2821744.0NC
\n", + "
" + ], + "text/plain": [ + " address \\\n", + "0 2818 E Camino Acequia Drive \n", + "1 30 Eglinton Avenue W \n", + "2 10110 Johnston Rd, Ste 15 \n", + "3 15655 W Roosevelt St, Ste 237 \n", + "4 4209 Stuart Andrew Blvd, Ste F \n", + "\n", + " attributes business_id \\\n", + "0 {'GoodForKids': 'False'} 1SWheh84yJXfytovILXOAQ \n", + "1 {'RestaurantsReservations': 'True', 'GoodForMe... QXAEGFB4oINsVuTFxEYKFQ \n", + "2 {'GoodForKids': 'True', 'NoiseLevel': 'u'avera... gnKjwL_1w79qoiV3IC_xQQ \n", + "3 None xvX2CttrVhyG2z1dFg_0xw \n", + "4 {'BusinessAcceptsBitcoin': 'False', 'ByAppoint... HhyxOkGAM07SRYtlQ4wMFQ \n", + "\n", + " categories city \\\n", + "0 Golf, Active Life Phoenix \n", + "1 Specialty Food, Restaurants, Dim Sum, Imported... Mississauga \n", + "2 Sushi Bars, Restaurants, Japanese Charlotte \n", + "3 Insurance, Financial Services Goodyear \n", + "4 Plumbing, Shopping, Local Services, Home Servi... Charlotte \n", + "\n", + " hours is_open latitude \\\n", + "0 None 0 33.522143 \n", + "1 {'Monday': '9:0-0:0', 'Tuesday': '9:0-0:0', 'W... 1 43.605499 \n", + "2 {'Monday': '17:30-21:30', 'Wednesday': '17:30-... 1 35.092564 \n", + "3 {'Monday': '8:0-17:0', 'Tuesday': '8:0-17:0', ... 1 33.455613 \n", + "4 {'Monday': '7:0-23:0', 'Tuesday': '7:0-23:0', ... 1 35.190012 \n", + "\n", + " longitude name postal_code review_count \\\n", + "0 -112.018481 Arizona Biltmore Golf Club 85016 5 \n", + "1 -79.652289 Emerald Chinese Restaurant L5R 3E7 128 \n", + "2 -80.859132 Musashi Japanese Restaurant 28210 170 \n", + "3 -112.395596 Farmers Insurance - Paul Lorenz 85338 3 \n", + "4 -80.887223 Queen City Plumbing 28217 4 \n", + "\n", + " stars state \n", + "0 3.0 AZ \n", + "1 2.5 ON \n", + "2 4.0 NC \n", + "3 5.0 AZ \n", + "4 4.0 NC " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import json\n", + "from pandas.io.json import json_normalize\n", + "business = pd.read_json(r'C:\\Users\\macky\\BuildWeek\\yelp_dataset\\business.json', lines=True)\n", + "business.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "J1tehpYShNXj" + }, + "outputs": [], + "source": [ + "business.to_csv('business.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 569 + }, + "colab_type": "code", + "id": "2rIrRqImhll5", + "outputId": "ba006a62-617d-4bfe-f03f-03aafbe00870" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0addressattributesbusiness_idcategoriescityhoursis_openlatitudelongitudenamepostal_codereview_countstarsstate
002818 E Camino Acequia Drive{'GoodForKids': 'False'}1SWheh84yJXfytovILXOAQGolf, Active LifePhoenixNaN033.522143-112.018481Arizona Biltmore Golf Club8501653.0AZ
1130 Eglinton Avenue W{'RestaurantsReservations': 'True', 'GoodForMe...QXAEGFB4oINsVuTFxEYKFQSpecialty Food, Restaurants, Dim Sum, Imported...Mississauga{'Monday': '9:0-0:0', 'Tuesday': '9:0-0:0', 'W...143.605499-79.652289Emerald Chinese RestaurantL5R 3E71282.5ON
2210110 Johnston Rd, Ste 15{'GoodForKids': 'True', 'NoiseLevel': \"u'avera...gnKjwL_1w79qoiV3IC_xQQSushi Bars, Restaurants, JapaneseCharlotte{'Monday': '17:30-21:30', 'Wednesday': '17:30-...135.092564-80.859132Musashi Japanese Restaurant282101704.0NC
3315655 W Roosevelt St, Ste 237NaNxvX2CttrVhyG2z1dFg_0xwInsurance, Financial ServicesGoodyear{'Monday': '8:0-17:0', 'Tuesday': '8:0-17:0', ...133.455613-112.395596Farmers Insurance - Paul Lorenz8533835.0AZ
444209 Stuart Andrew Blvd, Ste F{'BusinessAcceptsBitcoin': 'False', 'ByAppoint...HhyxOkGAM07SRYtlQ4wMFQPlumbing, Shopping, Local Services, Home Servi...Charlotte{'Monday': '7:0-23:0', 'Tuesday': '7:0-23:0', ...135.190012-80.887223Queen City Plumbing2821744.0NC
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 address \\\n", + "0 0 2818 E Camino Acequia Drive \n", + "1 1 30 Eglinton Avenue W \n", + "2 2 10110 Johnston Rd, Ste 15 \n", + "3 3 15655 W Roosevelt St, Ste 237 \n", + "4 4 4209 Stuart Andrew Blvd, Ste F \n", + "\n", + " attributes business_id \\\n", + "0 {'GoodForKids': 'False'} 1SWheh84yJXfytovILXOAQ \n", + "1 {'RestaurantsReservations': 'True', 'GoodForMe... QXAEGFB4oINsVuTFxEYKFQ \n", + "2 {'GoodForKids': 'True', 'NoiseLevel': \"u'avera... gnKjwL_1w79qoiV3IC_xQQ \n", + "3 NaN xvX2CttrVhyG2z1dFg_0xw \n", + "4 {'BusinessAcceptsBitcoin': 'False', 'ByAppoint... HhyxOkGAM07SRYtlQ4wMFQ \n", + "\n", + " categories city \\\n", + "0 Golf, Active Life Phoenix \n", + "1 Specialty Food, Restaurants, Dim Sum, Imported... Mississauga \n", + "2 Sushi Bars, Restaurants, Japanese Charlotte \n", + "3 Insurance, Financial Services Goodyear \n", + "4 Plumbing, Shopping, Local Services, Home Servi... Charlotte \n", + "\n", + " hours is_open latitude \\\n", + "0 NaN 0 33.522143 \n", + "1 {'Monday': '9:0-0:0', 'Tuesday': '9:0-0:0', 'W... 1 43.605499 \n", + "2 {'Monday': '17:30-21:30', 'Wednesday': '17:30-... 1 35.092564 \n", + "3 {'Monday': '8:0-17:0', 'Tuesday': '8:0-17:0', ... 1 33.455613 \n", + "4 {'Monday': '7:0-23:0', 'Tuesday': '7:0-23:0', ... 1 35.190012 \n", + "\n", + " longitude name postal_code review_count \\\n", + "0 -112.018481 Arizona Biltmore Golf Club 85016 5 \n", + "1 -79.652289 Emerald Chinese Restaurant L5R 3E7 128 \n", + "2 -80.859132 Musashi Japanese Restaurant 28210 170 \n", + "3 -112.395596 Farmers Insurance - Paul Lorenz 85338 3 \n", + "4 -80.887223 Queen City Plumbing 28217 4 \n", + "\n", + " stars state \n", + "0 3.0 AZ \n", + "1 2.5 ON \n", + "2 4.0 NC \n", + "3 5.0 AZ \n", + "4 4.0 NC " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "business = pd.read_csv('business.csv')\n", + "business.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "BUis8Qj-h6SS", + "outputId": "f2ab84eb-7dc4-44fc-b1dc-9dc0e3729a29" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(56686, 15)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "biz = business[business['state']=='AZ']\n", + "biz.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 202 + }, + "colab_type": "code", + "id": "gNudKm4Xil9p", + "outputId": "fb4d6fbf-5517-44a7-9be4-6b8805d1efa7" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
business_idnamereview_countstars
01SWheh84yJXfytovILXOAQArizona Biltmore Golf Club53.0
3xvX2CttrVhyG2z1dFg_0xwFarmers Insurance - Paul Lorenz35.0
8Y6iyemLX_oylRpnr38vgMAVita Bella Fine Day Spa85.0
111Dfx3zM-rW4n-31KeC8sJgTaco Bell183.0
16giC3pVVFxCRR89rApqklywKnot Salon55.0
\n", + "
" + ], + "text/plain": [ + " business_id name review_count \\\n", + "0 1SWheh84yJXfytovILXOAQ Arizona Biltmore Golf Club 5 \n", + "3 xvX2CttrVhyG2z1dFg_0xw Farmers Insurance - Paul Lorenz 3 \n", + "8 Y6iyemLX_oylRpnr38vgMA Vita Bella Fine Day Spa 8 \n", + "11 1Dfx3zM-rW4n-31KeC8sJg Taco Bell 18 \n", + "16 giC3pVVFxCRR89rApqklyw Knot Salon 5 \n", + "\n", + " stars \n", + "0 3.0 \n", + "3 5.0 \n", + "8 5.0 \n", + "11 3.0 \n", + "16 5.0 " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "biz = biz[['business_id', 'name', 'review_count', 'stars']]\n", + "biz.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 549 + }, + "colab_type": "code", + "id": "JG1En1rKjVKw", + "outputId": "2cbdfc56-f9be-4ade-813a-a71bcdc5c3e0" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
business_idcategoriescitystarsstatecooldatefunnyreview_starstextuseful
0HYunM2pknhIh8lbiMa7THwContractorsPhoenix3.0AZ02015-03-18 18:19:2401Went out of my way to get paint at this store ...1
1HYunM2pknhIh8lbiMa7THwContractorsPhoenix3.0AZ12015-05-12 22:30:4502Took the contractor's label off of the paint t...1
2HYunM2pknhIh8lbiMa7THwContractorsPhoenix3.0AZ02018-08-05 23:14:2405We are remodeling & had already picked a diffe...0
3HYunM2pknhIh8lbiMa7THwContractorsPhoenix3.0AZ02016-05-22 18:23:5205Everyone is so friendly here! Can't say the sa...0
4HYunM2pknhIh8lbiMa7THwContractorsPhoenix3.0AZ02016-06-25 16:05:1301Terrible cust service. Wanted to buy a machine...2
\n", + "
" + ], + "text/plain": [ + " business_id categories city stars state cool \\\n", + "0 HYunM2pknhIh8lbiMa7THw Contractors Phoenix 3.0 AZ 0 \n", + "1 HYunM2pknhIh8lbiMa7THw Contractors Phoenix 3.0 AZ 1 \n", + "2 HYunM2pknhIh8lbiMa7THw Contractors Phoenix 3.0 AZ 0 \n", + "3 HYunM2pknhIh8lbiMa7THw Contractors Phoenix 3.0 AZ 0 \n", + "4 HYunM2pknhIh8lbiMa7THw Contractors Phoenix 3.0 AZ 0 \n", + "\n", + " date funny review_stars \\\n", + "0 2015-03-18 18:19:24 0 1 \n", + "1 2015-05-12 22:30:45 0 2 \n", + "2 2018-08-05 23:14:24 0 5 \n", + "3 2016-05-22 18:23:52 0 5 \n", + "4 2016-06-25 16:05:13 0 1 \n", + "\n", + " text useful \n", + "0 Went out of my way to get paint at this store ... 1 \n", + "1 Took the contractor's label off of the paint t... 1 \n", + "2 We are remodeling & had already picked a diffe... 0 \n", + "3 Everyone is so friendly here! Can't say the sa... 0 \n", + "4 Terrible cust service. Wanted to buy a machine... 2 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 603 + }, + "colab_type": "code", + "id": "FNczsf5tjbZ_", + "outputId": "1d69e9f3-546e-4837-b209-c9d2c266f312" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
business_idcategoriescitystars_xstatecooldatefunnyreview_starstextusefulnamereview_countstars_y
25856MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ12018-01-05 22:15:2305I recently had Phoenix Pavers install pavers a...4Phoenix Pavers144.5
25857MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ02018-10-06 16:02:5804Last year we had The Flagstone Yard install ou...0Phoenix Pavers144.5
25858MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ02015-06-17 04:29:4705If you need great paver work done and in a ver...0Phoenix Pavers144.5
25859MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ02015-02-27 01:40:5505I hired Phx Pavers to remodel my pool deck and...0Phoenix Pavers144.5
25860MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ12017-03-08 01:01:2711Phoenix pavers installed 3300 square feet of t...10Phoenix Pavers144.5
\n", + "
" + ], + "text/plain": [ + " business_id categories city stars_x state cool \\\n", + "25856 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 1 \n", + "25857 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 0 \n", + "25858 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 0 \n", + "25859 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 0 \n", + "25860 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 1 \n", + "\n", + " date funny review_stars \\\n", + "25856 2018-01-05 22:15:23 0 5 \n", + "25857 2018-10-06 16:02:58 0 4 \n", + "25858 2015-06-17 04:29:47 0 5 \n", + "25859 2015-02-27 01:40:55 0 5 \n", + "25860 2017-03-08 01:01:27 1 1 \n", + "\n", + " text useful \\\n", + "25856 I recently had Phoenix Pavers install pavers a... 4 \n", + "25857 Last year we had The Flagstone Yard install ou... 0 \n", + "25858 If you need great paver work done and in a ver... 0 \n", + "25859 I hired Phx Pavers to remodel my pool deck and... 0 \n", + "25860 Phoenix pavers installed 3300 square feet of t... 10 \n", + "\n", + " name review_count stars_y \n", + "25856 Phoenix Pavers 14 4.5 \n", + "25857 Phoenix Pavers 14 4.5 \n", + "25858 Phoenix Pavers 14 4.5 \n", + "25859 Phoenix Pavers 14 4.5 \n", + "25860 Phoenix Pavers 14 4.5 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fast_biz = pd.merge(df, biz, on='business_id')\n", + "fast_biz.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
business_idcategoriescitystars_xstatecooldatefunnyreview_starstextusefulnamereview_countstars_ytokenslemmaslemmastr
25761M5l_PO80RpTsgLnQY4kCjAContractorsPhoenix3.5AZ02015-12-03 16:24:4005Larry and his tech from Option One cleared our...0Option One Plumbing & Rooter713.5[larry, tech, option, one, cleared, lines, out...[larry, tech, option, clear, line, outfit, twi...larry tech option clear line outfit twice reso...
25762M5l_PO80RpTsgLnQY4kCjAContractorsPhoenix3.5AZ02018-07-05 10:18:2805Best service from any company in awhile. Reque...0Option One Plumbing & Rooter713.5[best, service, company, awhile., requested, 3...[good, service, company, awhile, request, 3, 5...good service company awhile request 3 5pm time...
257636kHsWCPAFhwAcN3DSQKDSAContractorsScottsdale3.5AZ02017-08-02 17:33:0905I want to give a HUGE thanks to everyone over ...0Good Guys Remodeling33.5[want, huge, thanks, good, guys, remodeling!, ...[want, huge, thank, good, guys, remodeling, re...want huge thank good guys remodeling recently ...
257646kHsWCPAFhwAcN3DSQKDSAContractorsScottsdale3.5AZ02017-03-22 21:22:0205I can't say enough great things about this tea...1Good Guys Remodeling33.5[can't, great, things, team!, \\n\\n, we, needed...[great, thing, team, \\n\\n, need, lot, help, ki...great thing team \\n\\n need lot help kitchen ba...
257656kHsWCPAFhwAcN3DSQKDSAContractorsScottsdale3.5AZ02016-09-28 23:02:5411We had to terminate the Good Guys and hire ano...2Good Guys Remodeling33.5[we, terminate, good, guys, hire, contractor, ...[terminate, good, guys, hire, contractor, subs...terminate good guys hire contractor substandar...
25766hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02016-10-02 23:03:5005Very satisfied with their service. Leonard cam...0Pool Barrier of Arizona164.5[very, satisfied, service., leonard, came, ide...[satisfied, service, leonard, come, idea, pool...satisfied service leonard come idea pool fence...
25767hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02017-09-01 21:46:5805I needed a pool fence to safeguard for a new p...0Pool Barrier of Arizona164.5[needed, pool, fence, safeguard, new, puppy., ...[need, pool, fence, safeguard, new, puppy, , ...need pool fence safeguard new puppy speak po...
25768hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ12014-10-02 14:41:4615We needed to get a fence installed since we ar...1Pool Barrier of Arizona164.5[we, needed, fence, installed, going, start, h...[need, fence, instal, go, start, have, child, ...need fence instal go start have child house fo...
25769hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02017-07-02 16:35:4405We had a fence installed around our pool two y...0Pool Barrier of Arizona164.5[we, fence, installed, pool, years, ago., rece...[fence, instal, pool, year, ago, recently, lat...fence instal pool year ago recently latch clos...
25770hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02016-11-01 23:23:0005The service is amazing! We had an issue with o...0Pool Barrier of Arizona164.5[the, service, amazing!, we, issue, gate, latc...[service, amazing, issue, gate, latch, leonard...service amazing issue gate latch leonard come ...
25771hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ12017-05-18 14:54:4805We got estimates from three different pool fen...1Pool Barrier of Arizona164.5[we, got, estimates, different, pool, fence, c...[get, estimate, different, pool, fence, compan...get estimate different pool fence company ulti...
25772hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02017-06-01 11:56:3205Pool barriers came out to my home on Saturday ...0Pool Barrier of Arizona164.5[pool, barriers, came, home, saturday, gave, e...[pool, barrier, come, home, saturday, give, es...pool barrier come home saturday give estimate ...
25773hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02017-11-03 21:11:3205We started out and the installer was a no show...1Pool Barrier of Arizona164.5[we, started, installer, monday, morning., of,...[start, installer, monday, morning, course, up...start installer monday morning course upset ta...
25774hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02016-08-12 19:48:4205I bought my fence years ago and loved it. Most...0Pool Barrier of Arizona164.5[bought, fence, years, ago, loved, most, recen...[buy, fence, year, ago, love, recently, want, ...buy fence year ago love recently want help leo...
25775hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02017-02-16 18:02:2805Pool barriers came to my home to add sections ...0Pool Barrier of Arizona164.5[pool, barriers, came, home, add, sections, ex...[pool, barrier, come, home, add, section, exsi...pool barrier come home add section exsiste fen...
25776hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02016-08-03 20:39:3205Cannot say enough positive things about this c...0Pool Barrier of Arizona164.5[cannot, positive, things, company!, the, cust...[positive, thing, company, customer, service, ...positive thing company customer service family...
25777hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02016-12-31 07:08:5905Bought our pool barrier fence 4 years ago. Mag...0Pool Barrier of Arizona164.5[bought, pool, barrier, fence, 4, years, ago.,...[buy, pool, barrier, fence, 4, year, ago, magn...buy pool barrier fence 4 year ago magna latch ...
25778hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02016-08-05 01:31:0805My existing pool barrier had a worn out double...0Pool Barrier of Arizona164.5[my, existing, pool, barrier, worn, double, si...[exist, pool, barrier, wear, double, sided, bo...exist pool barrier wear double sided bolt snap...
25779hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02016-02-27 04:03:4801Sales guy was all for selling us on the produc...3Pool Barrier of Arizona164.5[sales, guy, selling, product., came, time, in...[sale, guy, sell, product, come, time, install...sale guy sell product come time install team f...
25780hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02018-01-19 18:17:2005Called for an estimate and they came out that ...0Pool Barrier of Arizona164.5[called, estimate, came, week,, showed, option...[call, estimate, come, week, show, option, giv...call estimate come week show option give estim...
25781hns5EQ1vSosP6n9nUdG41QContractorsScottsdale4.5AZ02017-03-03 19:03:1505I highly recommend Pool Barrier of AZ and they...0Pool Barrier of Arizona164.5[highly, recommend, pool, barrier, az, fantast...[highly, recommend, pool, barrier, az, fantast...highly recommend pool barrier az fantastic job...
25782YEgPa75QzIo63zfPbs-9sQContractorsYoungtown2.5AZ02017-09-11 23:32:2901They insist on prepaid service,and then suspen...0Parks & Sons of Sun City142.5[they, insist, prepaid, service,and, suspend, ...[insist, prepaid, service, suspend, trash, pic...insist prepaid service suspend trash pickup un...
25783YEgPa75QzIo63zfPbs-9sQContractorsYoungtown2.5AZ02015-06-26 14:13:0615Best trash collection company I've ever had! ...1Parks & Sons of Sun City142.5[best, trash, collection, company, i've, had!,...[good, trash, collection, company, , crew, fr...good trash collection company crew friendly ...
25784YEgPa75QzIo63zfPbs-9sQContractorsYoungtown2.5AZ02013-06-29 17:20:4111Worst customer service. Always makes excuses ...3Parks & Sons of Sun City142.5[worst, customer, service., always, makes, exc...[bad, customer, service, , make, excuse, pick...bad customer service make excuse pick trash ...
25785YEgPa75QzIo63zfPbs-9sQContractorsYoungtown2.5AZ02015-09-07 04:33:5715parks and sons has been hauling my trash for 1...0Parks & Sons of Sun City142.5[parks, sons, hauling, trash, 15, years!, frie...[park, son, haul, trash, 15, year, friendly, p...park son haul trash 15 year friendly professio...
25786YEgPa75QzIo63zfPbs-9sQContractorsYoungtown2.5AZ02018-08-30 17:10:3701Setup for automatic payments months back and i...0Parks & Sons of Sun City142.5[setup, automatic, payments, months, went, eff...[setup, automatic, payment, month, go, effect,...setup automatic payment month go effect discov...
25787YEgPa75QzIo63zfPbs-9sQContractorsYoungtown2.5AZ02014-10-06 15:04:4601I agree with Jessica. The worst customer servi...5Parks & Sons of Sun City142.5[agree, jessica., the, worst, customer, servic...[agree, jessica, bad, customer, service, stay,...agree jessica bad customer service stay away c...
25788YEgPa75QzIo63zfPbs-9sQContractorsYoungtown2.5AZ02018-04-02 00:48:4805Great service and prompt. We needed a bunch of...0Parks & Sons of Sun City142.5[great, service, prompt., we, needed, bunch, e...[great, service, prompt, need, bunch, excavate...great service prompt need bunch excavate bush ...
25789YEgPa75QzIo63zfPbs-9sQContractorsYoungtown2.5AZ02016-12-29 17:09:4101It has been a week since last pick up, I am sc...2Parks & Sons of Sun City142.5[it, week, pick, up,, scheduled, 3, pick, ups,...[week, pick, schedule, 3, pick, up, week, \\n, ...week pick schedule 3 pick up week \\n call call...
25790YEgPa75QzIo63zfPbs-9sQContractorsYoungtown2.5AZ02018-09-13 20:00:2205Cheapest dumpster in Town! Very nice people wo...0Parks & Sons of Sun City142.5[cheapest, dumpster, town!, very, nice, people...[cheap, dumpster, town, nice, people, work, fa...cheap dumpster town nice people work fast time...
......................................................
25831ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ12017-09-28 17:35:4005I can't say enough about what a great experien...0Phend Plumbing & Rooter475.0[can't, great, experience, had., we, referred,...[great, experience, , refer, phend, neighbor,...great experience refer phend neighbor phone ...
25832ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02016-01-28 20:54:2705Can't say enough good things about Phend and C...0Phend Plumbing & Rooter475.0[can't, good, things, phend, clint., clint, ca...[good, thing, phend, clint, clint, come, fix, ...good thing phend clint clint come fix clanking...
25833ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02016-12-30 21:05:2805Pete was awesome. Super friendly and on time. ...1Phend Plumbing & Rooter475.0[pete, awesome., super, friendly, time., got, ...[pete, awesome, super, friendly, time, got, dr...pete awesome super friendly time got drain wor...
25834ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02018-10-23 22:50:4005Gino came when he said he'd come with a phone ...0Phend Plumbing & Rooter475.0[gino, came, said, he'd, come, phone, beforeha...[gino, come, say, come, phone, fast, efficient...gino come say come phone fast efficient except...
25835ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02016-10-06 16:40:2005I called Phend when a pipe burst. They were ve...2Phend Plumbing & Rooter475.0[called, phend, pipe, burst., they, quick, res...[call, phend, pipe, burst, quick, respond, arr...call phend pipe burst quick respond arrange dr...
25836ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02015-04-22 18:39:0605We own several properties - commercial and res...0Phend Plumbing & Rooter475.0[we, properties, commercial, residential., we,...[property, commercial, residential, phend, plu...property commercial residential phend plumbing...
25837ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02017-07-19 19:43:0605We just had a new water softener installed at ...0Phend Plumbing & Rooter475.0[we, new, water, softener, installed, home., p...[new, water, softener, instal, home, phend, pl...new water softener instal home phend plumbing ...
25838ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02018-11-13 18:02:2005Technician Gino was timely and provided us opt...0Phend Plumbing & Rooter475.0[technician, gino, timely, provided, options, ...[technician, gino, timely, provide, option, wo...technician gino timely provide option work bes...
25839ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02017-09-29 20:52:4705Great job, friendly knowledgeable plumber and...0Phend Plumbing & Rooter475.0[great, job,, friendly, knowledgeable, plumber...[great, job, friendly, knowledgeable, , plumb...great job friendly knowledgeable plumber gre...
25840ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02018-07-06 21:36:4205We had new countertops installed and noticed t...0Phend Plumbing & Rooter475.0[we, new, countertops, installed, noticed, val...[new, countertop, instal, notice, valve, sink,...new countertop instal notice valve sink rusted...
25841ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02017-06-10 06:46:1201absolutely the worst of the worst!!!!!!! can't...4Phend Plumbing & Rooter475.0[absolutely, worst, worst!!!!!!!, can't, wait,...[absolutely, bad, bad, wait, court, job, right...absolutely bad bad wait court job right clearl...
25842ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02016-01-03 00:24:5905Phend came out to my house on New Years Eve to...0Phend Plumbing & Rooter475.0[phend, came, house, new, years, eve, replace,...[phend, come, house, new, years, eve, replace,...phend come house new years eve replace shower ...
25843ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02017-04-12 21:16:1005Great plumbing company! They arrived at the sc...1Phend Plumbing & Rooter475.0[great, plumbing, company!, they, arrived, sch...[great, plumbing, company, arrive, schedule, t...great plumbing company arrive schedule time ab...
25844ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02015-09-08 22:53:5205Only good things to say about Phend Plumbing! ...0Phend Plumbing & Rooter475.0[only, good, things, phend, plumbing!, we've, ...[good, thing, phend, plumbing, couple, guy, ho...good thing phend plumbing couple guy house rep...
25845ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ02014-12-15 20:09:0805Great service! Honest and nice plumber. I will...0Phend Plumbing & Rooter475.0[great, service!, honest, nice, plumber., use,...[great, service, honest, nice, plumber, use, c...great service honest nice plumber use company
25846ABjONdA5Fw8XBOM65tmW4wContractorsGilbert5.0AZ12017-06-27 17:35:0905I needed a plumber to replace a bad shower val...1Phend Plumbing & Rooter475.0[needed, plumber, replace, bad, shower, valve....[need, plumber, replace, bad, shower, valve, i...need plumber replace bad shower valve impress ...
25847MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ12017-10-24 21:31:2505PHX pavers just completed a 2700 square foot d...3Phoenix Pavers144.5[phx, pavers, completed, 2700, square, foot, d...[phx, paver, complete, 2700, square, foot, dri...phx paver complete 2700 square foot driveway w...
25848MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ12016-03-18 17:22:3905We had Chris Shaffer and his team do 2500 squa...3Phoenix Pavers144.5[we, chris, shaffer, team, 2500, square, feet,...[chris, shaffer, team, 2500, square, foot, tra...chris shaffer team 2500 square foot travertine...
25849MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ12018-04-06 14:35:5305My patio was completely transformed! Alec gave...3Phoenix Pavers144.5[my, patio, completely, transformed!, alec, ga...[patio, completely, transform, alec, give, fai...patio completely transform alec give fair bid ...
25850MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ42010-01-21 02:55:2215About 3 weeks ago I set out to find someone to...13Phoenix Pavers144.5[about, 3, weeks, ago, set, find, pave, 5,000,...[3, week, ago, set, find, pave, 5,000, square,...3 week ago set find pave 5,000 square foot dri...
25851MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ12018-03-25 21:03:0605Phoenix Pavers recently constructed an incredi...4Phoenix Pavers144.5[phoenix, pavers, recently, constructed, incre...[phoenix, pavers, recently, construct, incredi...phoenix pavers recently construct incredible b...
25852MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ02015-03-10 15:35:5805Phoenix Pavers has been doing all of our paver...2Phoenix Pavers144.5[phoenix, pavers, paver, work, past, 6, 7, yea...[phoenix, pavers, paver, work, past, 6, 7, yea...phoenix pavers paver work past 6 7 year fantas...
25853MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ12018-05-12 02:01:2205I wanted a full back yard remodel (pool deck ...2Phoenix Pavers144.5[wanted, yard, remodel, (pool, deck, remodel,,...[want, yard, remodel, , pool, deck, remodel, ...want yard remodel pool deck remodel bar buil...
25854MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ02015-11-10 17:59:0505Chris and his team installed our 600 sq foot p...2Phoenix Pavers144.5[chris, team, installed, 600, sq, foot, patio,...[chris, team, instal, 600, sq, foot, patio, ha...chris team instal 600 sq foot patio half day ...
25855MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ12014-10-07 16:00:4011I called Phoenix Pavers for a backyard project...7Phoenix Pavers144.5[called, phoenix, pavers, backyard, project,, ...[call, phoenix, pavers, backyard, project, app...call phoenix pavers backyard project approx 40...
25856MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ12018-01-05 22:15:2305I recently had Phoenix Pavers install pavers a...4Phoenix Pavers144.5[recently, phoenix, pavers, install, pavers, h...[recently, phoenix, pavers, install, paver, ho...recently phoenix pavers install paver home out...
25857MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ02018-10-06 16:02:5805Last year we had The Flagstone Yard install ou...0Phoenix Pavers144.5[last, year, the, flagstone, yard, install, ph...[year, flagstone, yard, install, phoenix, pave...year flagstone yard install phoenix pavers wal...
25858MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ02015-06-17 04:29:4705If you need great paver work done and in a ver...0Phoenix Pavers144.5[if, need, great, paver, work, timely-professi...[need, great, paver, work, timely, professiona...need great paver work timely professional mann...
25859MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ02015-02-27 01:40:5505I hired Phx Pavers to remodel my pool deck and...0Phoenix Pavers144.5[hired, phx, pavers, remodel, pool, deck, pati...[hire, phx, pavers, remodel, pool, deck, patio...hire phx pavers remodel pool deck patio call...
25860MiEyUDKTjeci5TMfxVZPpgContractorsPhoenix4.5AZ12017-03-08 01:01:2711Phoenix pavers installed 3300 square feet of t...10Phoenix Pavers144.5[phoenix, pavers, installed, 3300, square, fee...[phoenix, paver, instal, 3300, square, foot, t...phoenix paver instal 3300 square foot traverti...
\n", + "

100 rows × 17 columns

\n", + "
" + ], + "text/plain": [ + " business_id categories city stars_x state cool \\\n", + "25761 M5l_PO80RpTsgLnQY4kCjA Contractors Phoenix 3.5 AZ 0 \n", + "25762 M5l_PO80RpTsgLnQY4kCjA Contractors Phoenix 3.5 AZ 0 \n", + "25763 6kHsWCPAFhwAcN3DSQKDSA Contractors Scottsdale 3.5 AZ 0 \n", + "25764 6kHsWCPAFhwAcN3DSQKDSA Contractors Scottsdale 3.5 AZ 0 \n", + "25765 6kHsWCPAFhwAcN3DSQKDSA Contractors Scottsdale 3.5 AZ 0 \n", + "25766 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25767 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25768 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 1 \n", + "25769 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25770 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25771 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 1 \n", + "25772 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25773 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25774 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25775 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25776 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25777 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25778 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25779 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25780 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25781 hns5EQ1vSosP6n9nUdG41Q Contractors Scottsdale 4.5 AZ 0 \n", + "25782 YEgPa75QzIo63zfPbs-9sQ Contractors Youngtown 2.5 AZ 0 \n", + "25783 YEgPa75QzIo63zfPbs-9sQ Contractors Youngtown 2.5 AZ 0 \n", + "25784 YEgPa75QzIo63zfPbs-9sQ Contractors Youngtown 2.5 AZ 0 \n", + "25785 YEgPa75QzIo63zfPbs-9sQ Contractors Youngtown 2.5 AZ 0 \n", + "25786 YEgPa75QzIo63zfPbs-9sQ Contractors Youngtown 2.5 AZ 0 \n", + "25787 YEgPa75QzIo63zfPbs-9sQ Contractors Youngtown 2.5 AZ 0 \n", + "25788 YEgPa75QzIo63zfPbs-9sQ Contractors Youngtown 2.5 AZ 0 \n", + "25789 YEgPa75QzIo63zfPbs-9sQ Contractors Youngtown 2.5 AZ 0 \n", + "25790 YEgPa75QzIo63zfPbs-9sQ Contractors Youngtown 2.5 AZ 0 \n", + "... ... ... ... ... ... ... \n", + "25831 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 1 \n", + "25832 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25833 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25834 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25835 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25836 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25837 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25838 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25839 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25840 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25841 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25842 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25843 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25844 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25845 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 0 \n", + "25846 ABjONdA5Fw8XBOM65tmW4w Contractors Gilbert 5.0 AZ 1 \n", + "25847 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 1 \n", + "25848 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 1 \n", + "25849 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 1 \n", + "25850 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 4 \n", + "25851 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 1 \n", + "25852 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 0 \n", + "25853 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 1 \n", + "25854 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 0 \n", + "25855 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 1 \n", + "25856 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 1 \n", + "25857 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 0 \n", + "25858 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 0 \n", + "25859 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 0 \n", + "25860 MiEyUDKTjeci5TMfxVZPpg Contractors Phoenix 4.5 AZ 1 \n", + "\n", + " date funny review_stars \\\n", + "25761 2015-12-03 16:24:40 0 5 \n", + "25762 2018-07-05 10:18:28 0 5 \n", + "25763 2017-08-02 17:33:09 0 5 \n", + "25764 2017-03-22 21:22:02 0 5 \n", + "25765 2016-09-28 23:02:54 1 1 \n", + "25766 2016-10-02 23:03:50 0 5 \n", + "25767 2017-09-01 21:46:58 0 5 \n", + "25768 2014-10-02 14:41:46 1 5 \n", + "25769 2017-07-02 16:35:44 0 5 \n", + "25770 2016-11-01 23:23:00 0 5 \n", + "25771 2017-05-18 14:54:48 0 5 \n", + "25772 2017-06-01 11:56:32 0 5 \n", + "25773 2017-11-03 21:11:32 0 5 \n", + "25774 2016-08-12 19:48:42 0 5 \n", + "25775 2017-02-16 18:02:28 0 5 \n", + "25776 2016-08-03 20:39:32 0 5 \n", + "25777 2016-12-31 07:08:59 0 5 \n", + "25778 2016-08-05 01:31:08 0 5 \n", + "25779 2016-02-27 04:03:48 0 1 \n", + "25780 2018-01-19 18:17:20 0 5 \n", + "25781 2017-03-03 19:03:15 0 5 \n", + "25782 2017-09-11 23:32:29 0 1 \n", + "25783 2015-06-26 14:13:06 1 5 \n", + "25784 2013-06-29 17:20:41 1 1 \n", + "25785 2015-09-07 04:33:57 1 5 \n", + "25786 2018-08-30 17:10:37 0 1 \n", + "25787 2014-10-06 15:04:46 0 1 \n", + "25788 2018-04-02 00:48:48 0 5 \n", + "25789 2016-12-29 17:09:41 0 1 \n", + "25790 2018-09-13 20:00:22 0 5 \n", + "... ... ... ... \n", + "25831 2017-09-28 17:35:40 0 5 \n", + "25832 2016-01-28 20:54:27 0 5 \n", + "25833 2016-12-30 21:05:28 0 5 \n", + "25834 2018-10-23 22:50:40 0 5 \n", + "25835 2016-10-06 16:40:20 0 5 \n", + "25836 2015-04-22 18:39:06 0 5 \n", + "25837 2017-07-19 19:43:06 0 5 \n", + "25838 2018-11-13 18:02:20 0 5 \n", + "25839 2017-09-29 20:52:47 0 5 \n", + "25840 2018-07-06 21:36:42 0 5 \n", + "25841 2017-06-10 06:46:12 0 1 \n", + "25842 2016-01-03 00:24:59 0 5 \n", + "25843 2017-04-12 21:16:10 0 5 \n", + "25844 2015-09-08 22:53:52 0 5 \n", + "25845 2014-12-15 20:09:08 0 5 \n", + "25846 2017-06-27 17:35:09 0 5 \n", + "25847 2017-10-24 21:31:25 0 5 \n", + "25848 2016-03-18 17:22:39 0 5 \n", + "25849 2018-04-06 14:35:53 0 5 \n", + "25850 2010-01-21 02:55:22 1 5 \n", + "25851 2018-03-25 21:03:06 0 5 \n", + "25852 2015-03-10 15:35:58 0 5 \n", + "25853 2018-05-12 02:01:22 0 5 \n", + "25854 2015-11-10 17:59:05 0 5 \n", + "25855 2014-10-07 16:00:40 1 1 \n", + "25856 2018-01-05 22:15:23 0 5 \n", + "25857 2018-10-06 16:02:58 0 5 \n", + "25858 2015-06-17 04:29:47 0 5 \n", + "25859 2015-02-27 01:40:55 0 5 \n", + "25860 2017-03-08 01:01:27 1 1 \n", + "\n", + " text useful \\\n", + "25761 Larry and his tech from Option One cleared our... 0 \n", + "25762 Best service from any company in awhile. Reque... 0 \n", + "25763 I want to give a HUGE thanks to everyone over ... 0 \n", + "25764 I can't say enough great things about this tea... 1 \n", + "25765 We had to terminate the Good Guys and hire ano... 2 \n", + "25766 Very satisfied with their service. Leonard cam... 0 \n", + "25767 I needed a pool fence to safeguard for a new p... 0 \n", + "25768 We needed to get a fence installed since we ar... 1 \n", + "25769 We had a fence installed around our pool two y... 0 \n", + "25770 The service is amazing! We had an issue with o... 0 \n", + "25771 We got estimates from three different pool fen... 1 \n", + "25772 Pool barriers came out to my home on Saturday ... 0 \n", + "25773 We started out and the installer was a no show... 1 \n", + "25774 I bought my fence years ago and loved it. Most... 0 \n", + "25775 Pool barriers came to my home to add sections ... 0 \n", + "25776 Cannot say enough positive things about this c... 0 \n", + "25777 Bought our pool barrier fence 4 years ago. Mag... 0 \n", + "25778 My existing pool barrier had a worn out double... 0 \n", + "25779 Sales guy was all for selling us on the produc... 3 \n", + "25780 Called for an estimate and they came out that ... 0 \n", + "25781 I highly recommend Pool Barrier of AZ and they... 0 \n", + "25782 They insist on prepaid service,and then suspen... 0 \n", + "25783 Best trash collection company I've ever had! ... 1 \n", + "25784 Worst customer service. Always makes excuses ... 3 \n", + "25785 parks and sons has been hauling my trash for 1... 0 \n", + "25786 Setup for automatic payments months back and i... 0 \n", + "25787 I agree with Jessica. The worst customer servi... 5 \n", + "25788 Great service and prompt. We needed a bunch of... 0 \n", + "25789 It has been a week since last pick up, I am sc... 2 \n", + "25790 Cheapest dumpster in Town! Very nice people wo... 0 \n", + "... ... ... \n", + "25831 I can't say enough about what a great experien... 0 \n", + "25832 Can't say enough good things about Phend and C... 0 \n", + "25833 Pete was awesome. Super friendly and on time. ... 1 \n", + "25834 Gino came when he said he'd come with a phone ... 0 \n", + "25835 I called Phend when a pipe burst. They were ve... 2 \n", + "25836 We own several properties - commercial and res... 0 \n", + "25837 We just had a new water softener installed at ... 0 \n", + "25838 Technician Gino was timely and provided us opt... 0 \n", + "25839 Great job, friendly knowledgeable plumber and... 0 \n", + "25840 We had new countertops installed and noticed t... 0 \n", + "25841 absolutely the worst of the worst!!!!!!! can't... 4 \n", + "25842 Phend came out to my house on New Years Eve to... 0 \n", + "25843 Great plumbing company! They arrived at the sc... 1 \n", + "25844 Only good things to say about Phend Plumbing! ... 0 \n", + "25845 Great service! Honest and nice plumber. I will... 0 \n", + "25846 I needed a plumber to replace a bad shower val... 1 \n", + "25847 PHX pavers just completed a 2700 square foot d... 3 \n", + "25848 We had Chris Shaffer and his team do 2500 squa... 3 \n", + "25849 My patio was completely transformed! Alec gave... 3 \n", + "25850 About 3 weeks ago I set out to find someone to... 13 \n", + "25851 Phoenix Pavers recently constructed an incredi... 4 \n", + "25852 Phoenix Pavers has been doing all of our paver... 2 \n", + "25853 I wanted a full back yard remodel (pool deck ... 2 \n", + "25854 Chris and his team installed our 600 sq foot p... 2 \n", + "25855 I called Phoenix Pavers for a backyard project... 7 \n", + "25856 I recently had Phoenix Pavers install pavers a... 4 \n", + "25857 Last year we had The Flagstone Yard install ou... 0 \n", + "25858 If you need great paver work done and in a ver... 0 \n", + "25859 I hired Phx Pavers to remodel my pool deck and... 0 \n", + "25860 Phoenix pavers installed 3300 square feet of t... 10 \n", + "\n", + " name review_count stars_y \\\n", + "25761 Option One Plumbing & Rooter 71 3.5 \n", + "25762 Option One Plumbing & Rooter 71 3.5 \n", + "25763 Good Guys Remodeling 3 3.5 \n", + "25764 Good Guys Remodeling 3 3.5 \n", + "25765 Good Guys Remodeling 3 3.5 \n", + "25766 Pool Barrier of Arizona 16 4.5 \n", + "25767 Pool Barrier of Arizona 16 4.5 \n", + "25768 Pool Barrier of Arizona 16 4.5 \n", + "25769 Pool Barrier of Arizona 16 4.5 \n", + "25770 Pool Barrier of Arizona 16 4.5 \n", + "25771 Pool Barrier of Arizona 16 4.5 \n", + "25772 Pool Barrier of Arizona 16 4.5 \n", + "25773 Pool Barrier of Arizona 16 4.5 \n", + "25774 Pool Barrier of Arizona 16 4.5 \n", + "25775 Pool Barrier of Arizona 16 4.5 \n", + "25776 Pool Barrier of Arizona 16 4.5 \n", + "25777 Pool Barrier of Arizona 16 4.5 \n", + "25778 Pool Barrier of Arizona 16 4.5 \n", + "25779 Pool Barrier of Arizona 16 4.5 \n", + "25780 Pool Barrier of Arizona 16 4.5 \n", + "25781 Pool Barrier of Arizona 16 4.5 \n", + "25782 Parks & Sons of Sun City 14 2.5 \n", + "25783 Parks & Sons of Sun City 14 2.5 \n", + "25784 Parks & Sons of Sun City 14 2.5 \n", + "25785 Parks & Sons of Sun City 14 2.5 \n", + "25786 Parks & Sons of Sun City 14 2.5 \n", + "25787 Parks & Sons of Sun City 14 2.5 \n", + "25788 Parks & Sons of Sun City 14 2.5 \n", + "25789 Parks & Sons of Sun City 14 2.5 \n", + "25790 Parks & Sons of Sun City 14 2.5 \n", + "... ... ... ... \n", + "25831 Phend Plumbing & Rooter 47 5.0 \n", + "25832 Phend Plumbing & Rooter 47 5.0 \n", + "25833 Phend Plumbing & Rooter 47 5.0 \n", + "25834 Phend Plumbing & Rooter 47 5.0 \n", + "25835 Phend Plumbing & Rooter 47 5.0 \n", + "25836 Phend Plumbing & Rooter 47 5.0 \n", + "25837 Phend Plumbing & Rooter 47 5.0 \n", + "25838 Phend Plumbing & Rooter 47 5.0 \n", + "25839 Phend Plumbing & Rooter 47 5.0 \n", + "25840 Phend Plumbing & Rooter 47 5.0 \n", + "25841 Phend Plumbing & Rooter 47 5.0 \n", + "25842 Phend Plumbing & Rooter 47 5.0 \n", + "25843 Phend Plumbing & Rooter 47 5.0 \n", + "25844 Phend Plumbing & Rooter 47 5.0 \n", + "25845 Phend Plumbing & Rooter 47 5.0 \n", + "25846 Phend Plumbing & Rooter 47 5.0 \n", + "25847 Phoenix Pavers 14 4.5 \n", + "25848 Phoenix Pavers 14 4.5 \n", + "25849 Phoenix Pavers 14 4.5 \n", + "25850 Phoenix Pavers 14 4.5 \n", + "25851 Phoenix Pavers 14 4.5 \n", + "25852 Phoenix Pavers 14 4.5 \n", + "25853 Phoenix Pavers 14 4.5 \n", + "25854 Phoenix Pavers 14 4.5 \n", + "25855 Phoenix Pavers 14 4.5 \n", + "25856 Phoenix Pavers 14 4.5 \n", + "25857 Phoenix Pavers 14 4.5 \n", + "25858 Phoenix Pavers 14 4.5 \n", + "25859 Phoenix Pavers 14 4.5 \n", + "25860 Phoenix Pavers 14 4.5 \n", + "\n", + " tokens \\\n", + "25761 [larry, tech, option, one, cleared, lines, out... \n", + "25762 [best, service, company, awhile., requested, 3... \n", + "25763 [want, huge, thanks, good, guys, remodeling!, ... \n", + "25764 [can't, great, things, team!, \\n\\n, we, needed... \n", + "25765 [we, terminate, good, guys, hire, contractor, ... \n", + "25766 [very, satisfied, service., leonard, came, ide... \n", + "25767 [needed, pool, fence, safeguard, new, puppy., ... \n", + "25768 [we, needed, fence, installed, going, start, h... \n", + "25769 [we, fence, installed, pool, years, ago., rece... \n", + "25770 [the, service, amazing!, we, issue, gate, latc... \n", + "25771 [we, got, estimates, different, pool, fence, c... \n", + "25772 [pool, barriers, came, home, saturday, gave, e... \n", + "25773 [we, started, installer, monday, morning., of,... \n", + "25774 [bought, fence, years, ago, loved, most, recen... \n", + "25775 [pool, barriers, came, home, add, sections, ex... \n", + "25776 [cannot, positive, things, company!, the, cust... \n", + "25777 [bought, pool, barrier, fence, 4, years, ago.,... \n", + "25778 [my, existing, pool, barrier, worn, double, si... \n", + "25779 [sales, guy, selling, product., came, time, in... \n", + "25780 [called, estimate, came, week,, showed, option... \n", + "25781 [highly, recommend, pool, barrier, az, fantast... \n", + "25782 [they, insist, prepaid, service,and, suspend, ... \n", + "25783 [best, trash, collection, company, i've, had!,... \n", + "25784 [worst, customer, service., always, makes, exc... \n", + "25785 [parks, sons, hauling, trash, 15, years!, frie... \n", + "25786 [setup, automatic, payments, months, went, eff... \n", + "25787 [agree, jessica., the, worst, customer, servic... \n", + "25788 [great, service, prompt., we, needed, bunch, e... \n", + "25789 [it, week, pick, up,, scheduled, 3, pick, ups,... \n", + "25790 [cheapest, dumpster, town!, very, nice, people... \n", + "... ... \n", + "25831 [can't, great, experience, had., we, referred,... \n", + "25832 [can't, good, things, phend, clint., clint, ca... \n", + "25833 [pete, awesome., super, friendly, time., got, ... \n", + "25834 [gino, came, said, he'd, come, phone, beforeha... \n", + "25835 [called, phend, pipe, burst., they, quick, res... \n", + "25836 [we, properties, commercial, residential., we,... \n", + "25837 [we, new, water, softener, installed, home., p... \n", + "25838 [technician, gino, timely, provided, options, ... \n", + "25839 [great, job,, friendly, knowledgeable, plumber... \n", + "25840 [we, new, countertops, installed, noticed, val... \n", + "25841 [absolutely, worst, worst!!!!!!!, can't, wait,... \n", + "25842 [phend, came, house, new, years, eve, replace,... \n", + "25843 [great, plumbing, company!, they, arrived, sch... \n", + "25844 [only, good, things, phend, plumbing!, we've, ... \n", + "25845 [great, service!, honest, nice, plumber., use,... \n", + "25846 [needed, plumber, replace, bad, shower, valve.... \n", + "25847 [phx, pavers, completed, 2700, square, foot, d... \n", + "25848 [we, chris, shaffer, team, 2500, square, feet,... \n", + "25849 [my, patio, completely, transformed!, alec, ga... \n", + "25850 [about, 3, weeks, ago, set, find, pave, 5,000,... \n", + "25851 [phoenix, pavers, recently, constructed, incre... \n", + "25852 [phoenix, pavers, paver, work, past, 6, 7, yea... \n", + "25853 [wanted, yard, remodel, (pool, deck, remodel,,... \n", + "25854 [chris, team, installed, 600, sq, foot, patio,... \n", + "25855 [called, phoenix, pavers, backyard, project,, ... \n", + "25856 [recently, phoenix, pavers, install, pavers, h... \n", + "25857 [last, year, the, flagstone, yard, install, ph... \n", + "25858 [if, need, great, paver, work, timely-professi... \n", + "25859 [hired, phx, pavers, remodel, pool, deck, pati... \n", + "25860 [phoenix, pavers, installed, 3300, square, fee... \n", + "\n", + " lemmas \\\n", + "25761 [larry, tech, option, clear, line, outfit, twi... \n", + "25762 [good, service, company, awhile, request, 3, 5... \n", + "25763 [want, huge, thank, good, guys, remodeling, re... \n", + "25764 [great, thing, team, \\n\\n, need, lot, help, ki... \n", + "25765 [terminate, good, guys, hire, contractor, subs... \n", + "25766 [satisfied, service, leonard, come, idea, pool... \n", + "25767 [need, pool, fence, safeguard, new, puppy, , ... \n", + "25768 [need, fence, instal, go, start, have, child, ... \n", + "25769 [fence, instal, pool, year, ago, recently, lat... \n", + "25770 [service, amazing, issue, gate, latch, leonard... \n", + "25771 [get, estimate, different, pool, fence, compan... \n", + "25772 [pool, barrier, come, home, saturday, give, es... \n", + "25773 [start, installer, monday, morning, course, up... \n", + "25774 [buy, fence, year, ago, love, recently, want, ... \n", + "25775 [pool, barrier, come, home, add, section, exsi... \n", + "25776 [positive, thing, company, customer, service, ... \n", + "25777 [buy, pool, barrier, fence, 4, year, ago, magn... \n", + "25778 [exist, pool, barrier, wear, double, sided, bo... \n", + "25779 [sale, guy, sell, product, come, time, install... \n", + "25780 [call, estimate, come, week, show, option, giv... \n", + "25781 [highly, recommend, pool, barrier, az, fantast... \n", + "25782 [insist, prepaid, service, suspend, trash, pic... \n", + "25783 [good, trash, collection, company, , crew, fr... \n", + "25784 [bad, customer, service, , make, excuse, pick... \n", + "25785 [park, son, haul, trash, 15, year, friendly, p... \n", + "25786 [setup, automatic, payment, month, go, effect,... \n", + "25787 [agree, jessica, bad, customer, service, stay,... \n", + "25788 [great, service, prompt, need, bunch, excavate... \n", + "25789 [week, pick, schedule, 3, pick, up, week, \\n, ... \n", + "25790 [cheap, dumpster, town, nice, people, work, fa... \n", + "... ... \n", + "25831 [great, experience, , refer, phend, neighbor,... \n", + "25832 [good, thing, phend, clint, clint, come, fix, ... \n", + "25833 [pete, awesome, super, friendly, time, got, dr... \n", + "25834 [gino, come, say, come, phone, fast, efficient... \n", + "25835 [call, phend, pipe, burst, quick, respond, arr... \n", + "25836 [property, commercial, residential, phend, plu... \n", + "25837 [new, water, softener, instal, home, phend, pl... \n", + "25838 [technician, gino, timely, provide, option, wo... \n", + "25839 [great, job, friendly, knowledgeable, , plumb... \n", + "25840 [new, countertop, instal, notice, valve, sink,... \n", + "25841 [absolutely, bad, bad, wait, court, job, right... \n", + "25842 [phend, come, house, new, years, eve, replace,... \n", + "25843 [great, plumbing, company, arrive, schedule, t... \n", + "25844 [good, thing, phend, plumbing, couple, guy, ho... \n", + "25845 [great, service, honest, nice, plumber, use, c... \n", + "25846 [need, plumber, replace, bad, shower, valve, i... \n", + "25847 [phx, paver, complete, 2700, square, foot, dri... \n", + "25848 [chris, shaffer, team, 2500, square, foot, tra... \n", + "25849 [patio, completely, transform, alec, give, fai... \n", + "25850 [3, week, ago, set, find, pave, 5,000, square,... \n", + "25851 [phoenix, pavers, recently, construct, incredi... \n", + "25852 [phoenix, pavers, paver, work, past, 6, 7, yea... \n", + "25853 [want, yard, remodel, , pool, deck, remodel, ... \n", + "25854 [chris, team, instal, 600, sq, foot, patio, ha... \n", + "25855 [call, phoenix, pavers, backyard, project, app... \n", + "25856 [recently, phoenix, pavers, install, paver, ho... \n", + "25857 [year, flagstone, yard, install, phoenix, pave... \n", + "25858 [need, great, paver, work, timely, professiona... \n", + "25859 [hire, phx, pavers, remodel, pool, deck, patio... \n", + "25860 [phoenix, paver, instal, 3300, square, foot, t... \n", + "\n", + " lemmastr \n", + "25761 larry tech option clear line outfit twice reso... \n", + "25762 good service company awhile request 3 5pm time... \n", + "25763 want huge thank good guys remodeling recently ... \n", + "25764 great thing team \\n\\n need lot help kitchen ba... \n", + "25765 terminate good guys hire contractor substandar... \n", + "25766 satisfied service leonard come idea pool fence... \n", + "25767 need pool fence safeguard new puppy speak po... \n", + "25768 need fence instal go start have child house fo... \n", + "25769 fence instal pool year ago recently latch clos... \n", + "25770 service amazing issue gate latch leonard come ... \n", + "25771 get estimate different pool fence company ulti... \n", + "25772 pool barrier come home saturday give estimate ... \n", + "25773 start installer monday morning course upset ta... \n", + "25774 buy fence year ago love recently want help leo... \n", + "25775 pool barrier come home add section exsiste fen... \n", + "25776 positive thing company customer service family... \n", + "25777 buy pool barrier fence 4 year ago magna latch ... \n", + "25778 exist pool barrier wear double sided bolt snap... \n", + "25779 sale guy sell product come time install team f... \n", + "25780 call estimate come week show option give estim... \n", + "25781 highly recommend pool barrier az fantastic job... \n", + "25782 insist prepaid service suspend trash pickup un... \n", + "25783 good trash collection company crew friendly ... \n", + "25784 bad customer service make excuse pick trash ... \n", + "25785 park son haul trash 15 year friendly professio... \n", + "25786 setup automatic payment month go effect discov... \n", + "25787 agree jessica bad customer service stay away c... \n", + "25788 great service prompt need bunch excavate bush ... \n", + "25789 week pick schedule 3 pick up week \\n call call... \n", + "25790 cheap dumpster town nice people work fast time... \n", + "... ... \n", + "25831 great experience refer phend neighbor phone ... \n", + "25832 good thing phend clint clint come fix clanking... \n", + "25833 pete awesome super friendly time got drain wor... \n", + "25834 gino come say come phone fast efficient except... \n", + "25835 call phend pipe burst quick respond arrange dr... \n", + "25836 property commercial residential phend plumbing... \n", + "25837 new water softener instal home phend plumbing ... \n", + "25838 technician gino timely provide option work bes... \n", + "25839 great job friendly knowledgeable plumber gre... \n", + "25840 new countertop instal notice valve sink rusted... \n", + "25841 absolutely bad bad wait court job right clearl... \n", + "25842 phend come house new years eve replace shower ... \n", + "25843 great plumbing company arrive schedule time ab... \n", + "25844 good thing phend plumbing couple guy house rep... \n", + "25845 great service honest nice plumber use company \n", + "25846 need plumber replace bad shower valve impress ... \n", + "25847 phx paver complete 2700 square foot driveway w... \n", + "25848 chris shaffer team 2500 square foot travertine... \n", + "25849 patio completely transform alec give fair bid ... \n", + "25850 3 week ago set find pave 5,000 square foot dri... \n", + "25851 phoenix pavers recently construct incredible b... \n", + "25852 phoenix pavers paver work past 6 7 year fantas... \n", + "25853 want yard remodel pool deck remodel bar buil... \n", + "25854 chris team instal 600 sq foot patio half day ... \n", + "25855 call phoenix pavers backyard project approx 40... \n", + "25856 recently phoenix pavers install paver home out... \n", + "25857 year flagstone yard install phoenix pavers wal... \n", + "25858 need great paver work timely professional mann... \n", + "25859 hire phx pavers remodel pool deck patio call... \n", + "25860 phoenix paver instal 3300 square foot traverti... \n", + "\n", + "[100 rows x 17 columns]" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fast_biz['review_stars'] = fast_biz['review_stars'].astype('str')\n", + "fast_biz['review_stars'] = fast_biz['review_stars'].replace('4', '5')\n", + "fast_biz['review_stars'] = fast_biz['review_stars'].replace('3', '1')\n", + "fast_biz['review_stars'] = fast_biz['review_stars'].replace('2', '1')\n", + "\n", + "fast_biz.tail(100)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 245 + }, + "colab_type": "code", + "id": "xZnn_99XSUO4", + "outputId": "b4fc5a6d-1ce9-4394-ff33-25fc2fb59d31" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: en_core_web_md==2.1.0 from https://github.com/explosion/spacy-models/releases/download/en_core_web_md-2.1.0/en_core_web_md-2.1.0.tar.gz#egg=en_core_web_md==2.1.0 in c:\\programdata\\anaconda3\\lib\\site-packages (2.1.0)\n", + "[+] Download and installation successful\n", + "You can now load the model via spacy.load('en_core_web_md')\n" + ] + } + ], + "source": [ + "import spacy\n", + "!python -m spacy download en_core_web_md" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "qBBy4KP4WC_l" + }, + "outputs": [], + "source": [ + "import en_core_web_md" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "colab_type": "code", + "id": "R4K2YKznJ2DQ", + "outputId": "f1756c93-2835-4908-a596-ca324fa76601" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{' ',\n", + " ' the',\n", + " \"'d\",\n", + " \"'ll\",\n", + " \"'m\",\n", + " \"'re\",\n", + " \"'s\",\n", + " \"'ve\",\n", + " '-',\n", + " '1 check',\n", + " 'I',\n", + " 'a',\n", + " 'about',\n", + " 'above',\n", + " 'across',\n", + " 'after',\n", + " 'afterwards',\n", + " 'again',\n", + " 'against',\n", + " 'all',\n", + " 'almost',\n", + " 'alone',\n", + " 'along',\n", + " 'already',\n", + " 'also',\n", + " 'although',\n", + " 'always',\n", + " 'am',\n", + " 'among',\n", + " 'amongst',\n", + " 'amount',\n", + " 'an',\n", + " 'and',\n", + " 'another',\n", + " 'any',\n", + " 'anyhow',\n", + " 'anyone',\n", + " 'anything',\n", + " 'anyway',\n", + " 'anywhere',\n", + " 'are',\n", + " 'around',\n", + " 'as',\n", + " 'at',\n", + " 'back',\n", + " 'be',\n", + " 'became',\n", + " 'because',\n", + " 'become',\n", + " 'becomes',\n", + " 'becoming',\n", + " 'been',\n", + " 'before',\n", + " 'beforehand',\n", + " 'behind',\n", + " 'being',\n", + " 'below',\n", + " 'beside',\n", + " 'besides',\n", + " 'between',\n", + " 'beyond',\n", + " 'both',\n", + " 'bottom',\n", + " 'but',\n", + " 'by',\n", + " 'ca',\n", + " 'call',\n", + " 'can',\n", + " 'cannot',\n", + " 'coffee',\n", + " 'could',\n", + " 'deaf',\n", + " 'did',\n", + " 'do',\n", + " 'does',\n", + " 'doing',\n", + " 'don\"t',\n", + " 'done',\n", + " 'down',\n", + " 'due',\n", + " 'during',\n", + " 'each',\n", + " 'eight',\n", + " 'either',\n", + " 'eleven',\n", + " 'else',\n", + " 'elsewhere',\n", + " 'empty',\n", + " 'enough',\n", + " 'even',\n", + " 'ever',\n", + " 'every',\n", + " 'everyone',\n", + " 'everything',\n", + " 'everywhere',\n", + " 'except',\n", + " 'few',\n", + " 'fifteen',\n", + " 'fifty',\n", + " 'first',\n", + " 'five',\n", + " 'for',\n", + " 'former',\n", + " 'formerly',\n", + " 'forty',\n", + " 'four',\n", + " 'from',\n", + " 'front',\n", + " 'full',\n", + " 'further',\n", + " 'get',\n", + " 'give',\n", + " 'go',\n", + " 'had',\n", + " 'has',\n", + " 'have',\n", + " 'he',\n", + " 'hence',\n", + " 'her',\n", + " 'here',\n", + " 'hereafter',\n", + " 'hereby',\n", + " 'herein',\n", + " 'hereupon',\n", + " 'hers',\n", + " 'herself',\n", + " 'him',\n", + " 'himself',\n", + " 'his',\n", + " 'how',\n", + " 'however',\n", + " 'hundred',\n", + " 'i',\n", + " 'i\"m',\n", + " 'i\"ve',\n", + " 'if',\n", + " 'in',\n", + " 'indeed',\n", + " 'ins',\n", + " 'into',\n", + " 'is',\n", + " 'it',\n", + " \"it's\",\n", + " 'it.',\n", + " 'its',\n", + " 'itself',\n", + " 'just',\n", + " 'keep',\n", + " 'l',\n", + " 'last',\n", + " 'latter',\n", + " 'latterly',\n", + " 'least',\n", + " 'less',\n", + " 'made',\n", + " 'make',\n", + " 'many',\n", + " 'may',\n", + " 'me',\n", + " 'meanwhile',\n", + " 'might',\n", + " 'mine',\n", + " 'more',\n", + " 'moreover',\n", + " 'most',\n", + " 'mostly',\n", + " 'move',\n", + " 'much',\n", + " 'must',\n", + " 'my',\n", + " 'myself',\n", + " \"n't\",\n", + " 'name',\n", + " 'namely',\n", + " 'neither',\n", + " 'never',\n", + " 'nevertheless',\n", + " 'next',\n", + " 'nine',\n", + " 'no',\n", + " 'nobody',\n", + " 'none',\n", + " 'noone',\n", + " 'nor',\n", + " 'not',\n", + " 'nothing',\n", + " 'now',\n", + " 'nowhere',\n", + " 'n‘t',\n", + " 'n’t',\n", + " 'of',\n", + " 'off',\n", + " 'often',\n", + " 'on',\n", + " 'once',\n", + " 'one',\n", + " 'only',\n", + " 'onto',\n", + " 'or',\n", + " 'other',\n", + " 'others',\n", + " 'otherwise',\n", + " 'our',\n", + " 'ours',\n", + " 'ourselves',\n", + " 'out',\n", + " 'over',\n", + " 'own',\n", + " 'part',\n", + " 'per',\n", + " 'perhaps',\n", + " 'place',\n", + " 'please',\n", + " 'put',\n", + " 'quite',\n", + " 'rather',\n", + " 're',\n", + " 'really',\n", + " 'regarding',\n", + " 'same',\n", + " 'say',\n", + " 'see',\n", + " 'seem',\n", + " 'seemed',\n", + " 'seeming',\n", + " 'seems',\n", + " 'serious',\n", + " 'several',\n", + " 'she',\n", + " 'should',\n", + " 'show',\n", + " 'side',\n", + " 'since',\n", + " 'six',\n", + " 'sixty',\n", + " 'so',\n", + " 'some',\n", + " 'somehow',\n", + " 'someone',\n", + " 'something',\n", + " 'sometime',\n", + " 'sometimes',\n", + " 'somewhere',\n", + " 'still',\n", + " 'such',\n", + " 'take',\n", + " 'ten',\n", + " 'than',\n", + " 'that',\n", + " 'the',\n", + " 'the ',\n", + " 'their',\n", + " 'them',\n", + " 'themselves',\n", + " 'then',\n", + " 'thence',\n", + " 'there',\n", + " 'thereafter',\n", + " 'thereby',\n", + " 'therefore',\n", + " 'therein',\n", + " 'thereupon',\n", + " 'these',\n", + " 'they',\n", + " 'third',\n", + " 'this',\n", + " 'those',\n", + " 'though',\n", + " 'three',\n", + " 'through',\n", + " 'throughout',\n", + " 'thru',\n", + " 'thus',\n", + " 'to',\n", + " 'together',\n", + " 'told',\n", + " 'told him',\n", + " 'too',\n", + " 'top',\n", + " 'toward',\n", + " 'towards',\n", + " 'twelve',\n", + " 'twenty',\n", + " 'two',\n", + " 'under',\n", + " 'unless',\n", + " 'until',\n", + " 'up',\n", + " 'upon',\n", + " 'us',\n", + " 'used',\n", + " 'using',\n", + " 'various',\n", + " 'very',\n", + " 'via',\n", + " 'was',\n", + " 'we',\n", + " 'well',\n", + " 'were',\n", + " 'what',\n", + " 'whatever',\n", + " 'when',\n", + " 'whence',\n", + " 'whenever',\n", + " 'where',\n", + " 'whereafter',\n", + " 'whereas',\n", + " 'whereby',\n", + " 'wherein',\n", + " 'whereupon',\n", + " 'wherever',\n", + " 'whether',\n", + " 'which',\n", + " 'while',\n", + " 'whither',\n", + " 'who',\n", + " 'whoever',\n", + " 'whole',\n", + " 'whom',\n", + " 'whose',\n", + " 'why',\n", + " 'will',\n", + " 'with',\n", + " 'within',\n", + " 'without',\n", + " 'would',\n", + " 'yet',\n", + " 'you',\n", + " 'your',\n", + " 'yours',\n", + " 'yourself',\n", + " 'yourselves',\n", + " '‘d',\n", + " '‘ll',\n", + " '‘m',\n", + " '‘re',\n", + " '‘s',\n", + " '‘ve',\n", + " '’d',\n", + " '’ll',\n", + " '’m',\n", + " '’re',\n", + " '’s',\n", + " '’ve'}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "Import Statements\n", + "\"\"\"\n", + "\n", + "# Base\n", + "from collections import Counter\n", + "import re\n", + "\n", + "import pandas as pd\n", + "\n", + "# Plotting\n", + "import squarify\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "# NLP Libraries\n", + "import spacy\n", + "from spacy.tokenizer import Tokenizer\n", + "from nltk.stem import PorterStemmer\n", + "\n", + "nlp = en_core_web_md.load()\n", + "tokenizer = Tokenizer(nlp.vocab)#breaks text, it creates character indexes instead of splitting words up\n", + "\n", + "STOP_WORDS = nlp.Defaults.stop_words.union(['him', 'deaf', 'her','told','told him','ins', '1 check','I', 'i\"m', 'i', ' ', 'it', \"it's\", 'it.','they','coffee','place','they', 'the', 'this','its', 'l','-','they','this','don\"t','the ', ' the', 'it', 'i\"ve', 'i\"m'])\n", + "\n", + "STOP_WORDS" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Kf_dwAqjJ2DR" + }, + "outputs": [], + "source": [ + "tokens = []\n", + "\n", + "for doc in tokenizer.pipe(df['text'], batch_size=800):\n", + " \n", + " doc_tokens = []\n", + " \n", + " for token in doc: \n", + " if token.text not in STOP_WORDS:\n", + " doc_tokens.append(token.text.lower()) \n", + " tokens.append(doc_tokens)\n", + " \n", + "fast_biz['tokens'] = tokens" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 269 + }, + "colab_type": "code", + "id": "yo0M-e17J2DT", + "outputId": "5a222322-5836-4061-ad18-a093279b70ad" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def count(docs):\n", + "\n", + " word_counts = Counter()\n", + " appears_in = Counter()\n", + " \n", + " total_docs = len(docs)\n", + "\n", + " for doc in docs:\n", + " word_counts.update(doc)\n", + " appears_in.update(set(doc))\n", + "\n", + " temp = zip(word_counts.keys(), word_counts.values())\n", + " \n", + " wc = pd.DataFrame(temp, columns = ['word', 'count'])\n", + "\n", + " wc['rank'] = wc['count'].rank(method='first', ascending=False)\n", + " total = wc['count'].sum()\n", + "\n", + " wc['pct_total'] = wc['count'].apply(lambda x: x / total)\n", + " \n", + " wc = wc.sort_values(by='rank')\n", + " wc['cul_pct_total'] = wc['pct_total'].cumsum()\n", + "\n", + " t2 = zip(appears_in.keys(), appears_in.values())\n", + " ac = pd.DataFrame(t2, columns=['word', 'appears_in'])\n", + " wc = ac.merge(wc, on='word')\n", + "\n", + " wc['appears_in_pct'] = wc['appears_in'].apply(lambda x: x / total_docs)\n", + " \n", + " return wc.sort_values(by='rank')\n", + "\n", + "wc = count(fast_biz['tokens'])\n", + "wc_top20 = wc[wc['rank'] <= 20]\n", + "\n", + "squarify.plot(sizes=wc_top20['pct_total'], label=wc_top20['word'], alpha=.8 )\n", + "plt.axis('off')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "TScSsEs3J2DU" + }, + "outputs": [], + "source": [ + "# extract pronouns \n", + "def get_lemmas(text):\n", + "\n", + " lemmas = []\n", + " \n", + " doc = nlp(text)\n", + " \n", + " # Something goes here :P\n", + " for token in doc:\n", + " if ((token.is_stop == False) and (token.is_punct == False)) and (token.pos_!= 'PRON') and (token not in STOP_WORDS):#exclude pronounds\n", + " lemmas.append(token.lemma_)\n", + " \n", + " return lemmas\n", + "fast_biz['lemmas'] = fast_biz['text'].apply(get_lemmas)" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 269 + }, + "colab_type": "code", + "id": "zRWzh_tJJ2DW", + "outputId": "c6002028-b6c1-4bfa-d299-cdb8bf342ff8" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "wc = count(fast_biz['lemmas'])\n", + "wc_top20 = wc[wc['rank'] <= 20]\n", + "\n", + "squarify.plot(sizes=wc_top20['pct_total'], label=wc_top20['word'], alpha=.8 )\n", + "plt.axis('off')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Glb4RV3cJ2DZ" + }, + "outputs": [], + "source": [ + "fast_biz['lemmas'] = [[word.lower() for word in text] for text in fast_biz['lemmas']]" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 338 + }, + "colab_type": "code", + "id": "sFfB8MeoJ2Db", + "outputId": "10dc3c07-dca1-47d6-e713-52635a89906b" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
business_idcategoriescitystars_xstatecooldatefunnyreview_starstextusefulnamereview_countstars_ytokenslemmaslemmastr
0HYunM2pknhIh8lbiMa7THwContractorsPhoenix3.0AZ02015-03-18 18:19:2401Went out of my way to get paint at this store ...1Dunn-Edwards Paints163.0[went, way, paint, store, carpenter, buy, spec...[go, way, paint, store, carpenter, tell, buy, ...go way paint store carpenter tell buy specific...
1HYunM2pknhIh8lbiMa7THwContractorsPhoenix3.0AZ12015-05-12 22:30:4501Took the contractor's label off of the paint t...1Dunn-Edwards Paints163.0[took, contractor's, label, paint, constructio...[take, contractor, label, paint, construction,...take contractor label paint construction home ...
\n", + "
" + ], + "text/plain": [ + " business_id categories city stars_x state cool \\\n", + "0 HYunM2pknhIh8lbiMa7THw Contractors Phoenix 3.0 AZ 0 \n", + "1 HYunM2pknhIh8lbiMa7THw Contractors Phoenix 3.0 AZ 1 \n", + "\n", + " date funny review_stars \\\n", + "0 2015-03-18 18:19:24 0 1 \n", + "1 2015-05-12 22:30:45 0 1 \n", + "\n", + " text useful \\\n", + "0 Went out of my way to get paint at this store ... 1 \n", + "1 Took the contractor's label off of the paint t... 1 \n", + "\n", + " name review_count stars_y \\\n", + "0 Dunn-Edwards Paints 16 3.0 \n", + "1 Dunn-Edwards Paints 16 3.0 \n", + "\n", + " tokens \\\n", + "0 [went, way, paint, store, carpenter, buy, spec... \n", + "1 [took, contractor's, label, paint, constructio... \n", + "\n", + " lemmas \\\n", + "0 [go, way, paint, store, carpenter, tell, buy, ... \n", + "1 [take, contractor, label, paint, construction,... \n", + "\n", + " lemmastr \n", + "0 go way paint store carpenter tell buy specific... \n", + "1 take contractor label paint construction home ... " + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fast_biz['lemmastr'] = fast_biz['lemmas'].str.join(' ')\n", + "fast_biz.head(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 176 + }, + "colab_type": "code", + "id": "N4ykpWvvJ2Dc", + "outputId": "afa727d8-f464-44e9-ef0e-94c437f2e8a7" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['go way paint store carpenter tell buy specific type paint buy 300 dollar worth paint have spray find paint wrong color attempt help suituation basically spend triple money paint point finger carpenter time carpenter',\n", + " 'take contractor label paint construction home exact match long story short get wrong today remake wait hour gallon paint mix like quality paint customer service lack thereof mark list',\n", + " 'remodel pick different brand paint color contractor tell dunn edward paint run compare color swatch lucke meet kimberly paint consultant super help find de option explain different sheen quality include low zero voc option important minimize toxin sustainable possible guide play w/ swatch different part house w/ shadow time day etc assure like original pick color match explain dunn edwards southwest paint company design work sw heat sun entire staff extremely pleasant helpful especially store close line impressive courteous service hope paint color nice',\n", + " ...,\n", + " 'need great paver work timely professional manner use chris phoenix pavers 3000 sq ft paver drive way happy work great customer service thank chris phoenix paver job',\n", + " 'hire phx pavers remodel pool deck patio call schedule appoitnment estimate chris promptly return come early day look project estimate 3 4 day entire job complete half time entire crew especially antonio boni skilled helpful friendly go ensure satisfied work chris alec available answer question ensure work complete timely professional manner exceptionally pleased project plan manage execute highly recommend phx pavers',\n", + " 'phoenix paver instal 3300 square foot travertine paver backyard 4 week work quality work atrocious settle problem 3 week cause need paver remove company dispute concern provide low level customer service recommend company backyard forever hold scar ordeal mention add 2 month delay completion contact want detail'],\n", + " dtype=object)" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fast_biz['lemmastr'].values" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 139 + }, + "colab_type": "code", + "id": "aKl2R1BzJ2De", + "outputId": "83a00999-700c-45ff-9107-fa67fcf27018" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "matrix([[0, 0, 0, ..., 0, 0, 0],\n", + " [0, 0, 0, ..., 0, 0, 0],\n", + " [0, 0, 0, ..., 0, 0, 0],\n", + " ...,\n", + " [0, 0, 0, ..., 0, 0, 0],\n", + " [0, 0, 0, ..., 0, 0, 0],\n", + " [0, 0, 0, ..., 0, 0, 0]], dtype=int64)" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.feature_extraction.text import CountVectorizer\n", + "\n", + "data= fast_biz['lemmastr'].values\n", + "\n", + "vectorizer = CountVectorizer(stop_words='english')\n", + "\n", + "# tokenize and build vocab\n", + "vectorizer.fit_transform(data)\n", + "\n", + "\n", + "# Create a Vocabulary\n", + "# The vocabulary establishes all of the possible words that we might use.\n", + "vectorizer.vocabulary_\n", + "\n", + "# The vocabulary dictionary does not represent the counts of words!!\n", + "dtm = vectorizer.transform(data)\n", + "dtm.todense() " + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "J_tGyW3jJ2Df" + }, + "outputs": [], + "source": [ + "dtm = pd.DataFrame(dtm.todense(), columns = vectorizer.get_feature_names())" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "CZ-OHX0wJ2Dh" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
000000000000btu000sqft0020033008800a00am...zoningzoozoologistzrzr1zuckerbergzuluzwavezwe_bj1_aqudoafqvt276gzx
00000000000...0000000000
10000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000000
\n", + "

5 rows × 22590 columns

\n", + "
" + ], + "text/plain": [ + " 00 000 0000 000btu 000sqft 002 0033 0088 00a 00am ... zoning \\\n", + "0 0 0 0 0 0 0 0 0 0 0 ... 0 \n", + "1 0 0 0 0 0 0 0 0 0 0 ... 0 \n", + "2 0 0 0 0 0 0 0 0 0 0 ... 0 \n", + "3 0 0 0 0 0 0 0 0 0 0 ... 0 \n", + "4 0 0 0 0 0 0 0 0 0 0 ... 0 \n", + "\n", + " zoo zoologist zr zr1 zuckerberg zulu zwave zwe_bj1_aqudoafqvt276g \\\n", + "0 0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 0 \n", + "\n", + " zx \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "\n", + "[5 rows x 22590 columns]" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dtm.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "i_-NE8Q4J2Dj" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
00896
000442
00001
000btu1
000sqft1
0021
00331
00881
00a3
00am42
00pm54
0121
01551
01961
0211
0241
0310
03am1
0412
04001
0517
0503
05081
05pm1
0614
06001
06301
06451
06am1
0722
......
zilch1
zillion1
zillow2
zimmerman20
zimmermanphotos1
zinc1
zinfandal1
zinfandel4
zip15
zipcode1
ziploc1
zipper17
zippered1
zippy1
zo1
zombie2
zona91
zonarestoration1
zonas1
zone57
zoning2
zoo5
zoologist1
zr4
zr11
zuckerberg1
zulu1
zwave2
zwe_bj1_aqudoafqvt276g1
zx1
\n", + "

22590 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " 0\n", + "00 896\n", + "000 442\n", + "0000 1\n", + "000btu 1\n", + "000sqft 1\n", + "002 1\n", + "0033 1\n", + "0088 1\n", + "00a 3\n", + "00am 42\n", + "00pm 54\n", + "01 21\n", + "0155 1\n", + "0196 1\n", + "02 11\n", + "024 1\n", + "03 10\n", + "03am 1\n", + "04 12\n", + "0400 1\n", + "05 17\n", + "050 3\n", + "0508 1\n", + "05pm 1\n", + "06 14\n", + "0600 1\n", + "0630 1\n", + "0645 1\n", + "06am 1\n", + "07 22\n", + "... ...\n", + "zilch 1\n", + "zillion 1\n", + "zillow 2\n", + "zimmerman 20\n", + "zimmermanphotos 1\n", + "zinc 1\n", + "zinfandal 1\n", + "zinfandel 4\n", + "zip 15\n", + "zipcode 1\n", + "ziploc 1\n", + "zipper 17\n", + "zippered 1\n", + "zippy 1\n", + "zo 1\n", + "zombie 2\n", + "zona 91\n", + "zonarestoration 1\n", + "zonas 1\n", + "zone 57\n", + "zoning 2\n", + "zoo 5\n", + "zoologist 1\n", + "zr 4\n", + "zr1 1\n", + "zuckerberg 1\n", + "zulu 1\n", + "zwave 2\n", + "zwe_bj1_aqudoafqvt276g 1\n", + "zx 1\n", + "\n", + "[22590 rows x 1 columns]" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dtmcount = pd.DataFrame(dtm.sum(axis = 0, skipna = True))\n", + "dtmcount" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "bQGXXnLlJ2Dk" + }, + "outputs": [], + "source": [ + "dtmsort = dtmcount.sort_values(by = 0, ascending = False)\n", + "dh = dtmsort.head(50)" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "8vBWo4_AJ2Dm" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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g0kOzrMfAAAAAAAAzm1zf+cXAAAAAAAA7BTzPvYQAAAAOFvM+71jie8eAwBgx3PyCwAAAAAAgGGIXwAAAAAAAAxD/AIAAAAAAGAY4hcAAAAAAADDEL8AAAAAAAAYhvgFAAAAAADAMBa2ewMAAADAOebw8nz371vamn0AADAk8QsAAAA498wb4BIRDgBghxK/AAAAALaLU3AAAFvOd34BAAAAAAAwDCe/AAAAAM5lO+URkE7BAQBbRPwCAAAAgGTnhEAAYC7iFwAAAADsFDslwO2UfQDAJohfAAAAAMDOI8ABsEnP2O4NAAAAAAAAwMejpoMAACAASURBVFYRvwAAAAAAABiG+AUAAAAAAMAwfOcXAAAAAMBafPcYwFlH/AIAAAAA2MkEOIAN8dhDAAAAAAAAhiF+AQAAAAAAMAyPPQQAAAAAYH0evwicJcQvAAAAAADODjslwO2UfQCrEr8AAAAAAOBsI8DBmsQvAAAAAABgc3ZChNsJe2BHecZ2bwAAAAAAAAC2ipNfAAAAAAAA85r3BJrTZ1vGyS8AAAAAAACGIX4BAAAAAAAwDPELAAAAAACA/8/encfrOtb9/3+9zTMp30aEqCRknkq6K0mUzKFuGoiiu9KdJqVvdafpJ5UQO6mIJkMKyZxxs83coUmzMiWz9++P47j2utbaa2++2es4T2u9n4/Hfux1nWst58fa6zrP4zyOz/H5TBpZ/IqIiIiIiIiIiIiIiIhJI4tfERERERERERERERERMWlk8SsiIiIiIiIiIiIiIiImjSx+RURERERERERERERExKQxX9cBRERERERERERERERExFxw7uVP/L+x6TpP/L/RsSx+RURERERERERERERExNzzRBfhnuACXMoeRkRERERERERERERExKSRxa+IiIiIiIiIiIiIiIiYNLL4FREREREREREREREREZNGFr8iIiIiIiIiIiIiIiJi0sjiV0REREREREREREREREwaWfyKiIiIiIiIiIiIiIiISSOLXxERERERERERERERETFpZPErIiIiIiIiIiIiIiIiJo0sfkVERERERERERERERMSkkcWviIiIiIiIiIiIiIiImDSy+BURERERERERERERERGTRha/IiIiIiIiIiIiIiIiYtLI4ldERERERERERERERERMGln8ioiIiIiIiIiIiIiIiEkji18RERERERERERERERExaWTxKyIiIiIiIiIiIiIiIiaNLH5FRERERERERERERETEpJHFr4iIiIiIiIiIiIiIiJg0svgVERERERERERERERERk0YWvyIiIiIiIiIiIiIiImLSyOJXRERERERERERERERETBr/9uKXpGUlnS3pBknXSdqvHv+4pD9ImlH/vHboew6QdLOkmyRtPnT8NfXYzZI++MT+lyIiIiIiIiIiIiIiImKqmu8JfO/DwPtsXyFpcWC6pDPr575k+/PDXyxpVWAn4EXAs4CfS1qlfvqrwKuA24DLJJ1s+/onEFtERERERERERERERERMQf/24pftPwF/qh/fI+kG4Nlz+JbXA8fbfgD4taSbgfXq5262fSuApOPr12bxKyIiIiIiIiIiIiIiIv6fzJWeX5KeC7wEuKQeepekqyUdLekp9dizgd8Pfdtt9djsjo93nndIulzS5X/729/mRugRERERERERERERERExiTzhxS9JiwE/AN5j+27gMGAlYE3KzrAvDL50nG/3HI7PetA+wvY6ttdZZpllnmjoERERERERERERERERMck8kZ5fSJqfsvD1Hds/BLD9l6HPHwmcWl/eBiw79O3PAf5YP57d8YiIiIiIiIiIiIiIiIjH7d/e+SVJwFHADba/OHT8mUNftg1wbf34ZGAnSQtKWgFYGbgUuAxYWdIKkhYAdqpfGxEREREREREREREREfH/5Ins/NoY2A24RtKMeuxDwM6S1qSULvwNsCeA7esknQBcDzwM7GP7EQBJ7wJOB+YFjrZ93ROIKyIiIiIiIiIiIiIiIqaof3vxy/YFjN+v67Q5fM+ngE+Nc/y0OX1fRERERERERERERERExOPxb5c9jIiIiIiIiIiIiIiIiOibLH5FRERERERERERERETEpJHFr4iIiIiIiIiIiIiIiJg0svgVERERERERERERERERk0YWvyIiIiIiIiIiIiIiImLSyOJXRERERERERERERERETBpZ/IqIiIiIiIiIiIiIiIhJI4tfERERERERERERERERMWlk8SsiIiIiIiIiIiIiIiImjSx+RURERERERERERERExKSRxa+IiIiIiIiIiIiIiIiYNLL4FREREREREREREREREZNGFr8iIiIiIiIiIiIiIiJi0sjiV0REREREREREREREREwaWfyKiIiIiIiIiIiIiIiISSOLXxERERERERERERERETFpZPErIiIiIiIiIiIiIiIiJo0sfkVERERERERERERERMSkkcWviIiIiIiIiIiIiIiImDSy+BURERERERERERERERGTRha/IiIiIiIiIiIiIiIiYtLI4ldERERERERERERERERMGln8ioiIiIiIiIiIiIiIiEkji18RERERERERERERERExaWTxKyIiIiIiIiIiIiIiIiaNLH5FRERERERERERERETEpJHFr4iIiIiIiIiIiIiIiJg0svgVERERERERERERERERk0YWvyIiIiIiIiIiIiIiImLSyOJXRERERERERERERERETBpZ/IqIiIiIiIiIiIiIiIhJI4tfERERERERERERERERMWlk8SsiIiIiIiIiIiIiIiImjSx+RURERERERERERERExKSRxa+IiIiIiIiIiIiIiIiYNLL4FREREREREREREREREZNGFr8iIiIiIiIiIiIiIiJi0sjiV0REREREREREREREREwaWfyKiIiIiIiIiIiIiIiISSOLXxERERERERERERERETFpZPErIiIiIiIiIiIiIiIiJo0sfkVERERERERERERERMSkkcWviIiIiIiIiIiIiIiImDSy+BURERERERERERERERGTRha/IiIiIiIiIiIiIiIiYtLI4ldERERERERERERERERMGln8ioiIiIiIiIiIiIiIiEkji18RERERERERERERERExaWTxKyIiIiIiIiIiIiIiIiaNLH5FRERERERERERERETEpJHFr4iIiIiIiIiIiIiIiJg0svgVERERERERERERERERk0YWvyIiIiIiIiIiIiIiImLSyOJXRERERERERERERERETBpZ/IqIiIiIiIiIiIiIiIhJI4tfERERERERERERERERMWlk8SsiIiIiIiIiIiIiIiImjSx+RURERERERERERERExKSRxa+IiIiIiIiIiIiIiIiYNHqz+CXpNZJuknSzpA92HU9EREREREREREREREQ8+fRi8UvSvMBXgS2AVYGdJa3abVQRERERERERERERERHxZNOLxS9gPeBm27fafhA4Hnh9xzFFRERERERERERERETEk8x8XQdQPRv4/dDr24D1x36RpHcA76gv/ynppid43qcBtz/B/8YT1YcYoB9xJIYRfYijDzFAP+LoQwzQjzj6EAP0I44+xAD9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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "dh.plot.bar(figsize = (30,10), color = 'pink')" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: scattertext in c:\\programdata\\anaconda3\\lib\\site-packages (0.0.2.52)\n", + "Requirement already satisfied: mock in c:\\programdata\\anaconda3\\lib\\site-packages (from scattertext) (3.0.5)\n", + "Requirement already satisfied: numpy in c:\\programdata\\anaconda3\\lib\\site-packages (from scattertext) (1.16.4)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from scattertext) (0.21.2)\n", + "Requirement already satisfied: six in c:\\programdata\\anaconda3\\lib\\site-packages (from scattertext) (1.12.0)\n", + "Requirement already satisfied: statsmodels in c:\\programdata\\anaconda3\\lib\\site-packages (from scattertext) (0.10.0)\n", + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (from scattertext) (0.24.2)\n", + "Requirement already satisfied: scipy in c:\\programdata\\anaconda3\\lib\\site-packages (from scattertext) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->scattertext) (0.13.2)\n", + "Requirement already satisfied: patsy>=0.4.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from statsmodels->scattertext) (0.5.1)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas->scattertext) (2.8.0)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas->scattertext) (2019.1)\n" + ] + } + ], + "source": [ + "!pip install scattertext" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "-opehSj4J2Dn" + }, + "outputs": [], + "source": [ + "import scattertext as st\n", + "import spacy\n", + "from pprint import pprint\n", + "\n", + "# convention_df = st.SampleCorpora.ConventionData2012.get_data() \n", + "# convention_df.iloc[0]\n", + "nlp = spacy.load(\"en_core_web_md\")\n", + "corpus = st.CorpusFromPandas(fast_biz, \n", + " category_col='review_stars', \n", + " text_col='text',\n", + " nlp=nlp).build()" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "7bqaBZGEJ2Dp" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['yelp',\n", + " 'courteous',\n", + " 'remodel',\n", + " 'knowledgeable',\n", + " 'plumber',\n", + " 'garage',\n", + " 'drywall',\n", + " 'plumbing',\n", + " 'cleaned',\n", + " 'oneguard']\n" + ] + } + ], + "source": [ + "pprint(list(corpus.get_scaled_f_scores_vs_background().index[:10]))" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "AeOoGcbpJ2Dq" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['highly recommend',\n", + " 'will definitely',\n", + " 'i highly',\n", + " 'would highly',\n", + " 'his team',\n", + " 'highly',\n", + " 'efficient',\n", + " 'amazing',\n", + " 'definitely recommend',\n", + " 'did an']\n" + ] + } + ], + "source": [ + "term_freq_df = corpus.get_term_freq_df()\n", + "term_freq_df['highratingscore'] = corpus.get_scaled_f_scores('5')\n", + "pprint(list(term_freq_df.sort_values(by='highratingscore', ascending=False).index[:10]))" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "F_jcFHH5J2Ds" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
1 freq5 freqhighratingscore
term
went112124900.911835
out6444103820.877457
of14115238150.883005
my11771225910.897391
way106219800.894294
\n", + "
" + ], + "text/plain": [ + " 1 freq 5 freq highratingscore\n", + "term \n", + "went 1121 2490 0.911835\n", + "out 6444 10382 0.877457\n", + "of 14115 23815 0.883005\n", + "my 11771 22591 0.897391\n", + "way 1062 1980 0.894294" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "term_freq_df.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "fmEqpy8DJ2Du" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['rude',\n", + " 'unprofessional',\n", + " 'worst',\n", + " 'beware',\n", + " 'poor',\n", + " 'was told',\n", + " 'horrible',\n", + " 'terrible',\n", + " 'do not',\n", + " 'should have']\n" + ] + } + ], + "source": [ + "term_freq_df['poorratingscore'] = corpus.get_scaled_f_scores('1')\n", + "pprint(list(term_freq_df.sort_values(by='poorratingscore', ascending=False).index[:10]))" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "I6QrAuOYJ2Dw", + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
1 freq5 freqhighratingscorepoorratingscore
term
a new72915630.9085150.091485
saved623700.9085350.091465
spring1714830.9087280.091272
maintenance1454540.9090110.090989
look91619750.9090500.090950
reasonable price103280.9093980.090602
good151132760.9095750.090425
me a50210890.9096180.090382
remodeling773860.9096630.090337
and i187340650.9096710.090329
stell43240.9097300.090270
appreciate964050.9099830.090017
tile65614300.9100850.089915
things68214870.9101050.089895
you need1244340.9101210.089879
through84818500.9101590.089841
of my74216210.9102900.089710
big3467670.9105610.089439
and a54311930.9108180.089182
turned out863970.9108300.089170
over the4309470.9109520.089048
my house64914280.9109580.089042
kind2405830.9109900.089010
valley1214330.9110280.088972
overall1614780.9110930.088907
came to2846560.9113450.088655
and he94020770.9113480.088652
again for473620.9113910.088609
us a1955220.9115970.088403
better60913500.9116490.088351
decided45710140.9117030.088297
went112124900.9118350.088165
and courteous203400.9118450.088155
did the1815050.9119210.088079
showed82118260.9119550.088045
will be51111390.9121520.087848
than137930850.9124920.087508
manner793940.9126360.087364
floor3678280.9127680.087232
quick and93330.9128550.087145
built1644870.9129260.087074
be using383570.9129350.087065
need100022500.9130170.086983
doing57412920.9130520.086948
am very403590.9130780.086922
efficient and73320.9131800.086820
electric914070.9131880.086812
great work173400.9132430.086757
start4399950.9136380.086362
great to173410.9138180.086182
decided to3417820.9138320.086168
with his1014190.9139900.086010
less than2886830.9146970.085303
some143132810.9147210.085279
house and2355920.9147310.085269
i found2406000.9147440.085256
and was70416160.9148240.085176
finish3588300.9152260.084774
and the169039010.9153220.084678
we wanted1494770.9156830.084317
could n't51712010.9158850.084115
installing1194430.9159300.084070
repaired2175710.9162700.083730
jason713940.9163240.083676
my home51712100.9165440.083456
job was1825220.9165720.083428
water heater1975430.9166180.083382
house208448870.9167170.083283
arrived on183470.9167460.083254
he gave503750.9167610.083239
installed99523400.9169690.083031
installers1454760.9169880.083012
a pleasure63380.9171300.082870
really96322690.9171330.082867
lot3829020.9171410.082859
our garage633880.9171480.082852
we are54112750.9171540.082846
experience104024560.9173310.082669
with9168216510.9173330.082667
also136632270.9173620.082638
what he1444760.9173990.082601
a little2556390.9174280.082572
in a71616990.9177480.082252
couple of2065610.9178300.082170
little4089710.9179390.082061
was professional273570.9180610.081939
felt3077460.9183510.081649
personable193510.9184910.081509
replaced60514490.9185500.081450
i will77118480.9186170.081383
all323377710.9188580.081142
home and1865360.9188810.081119
forward1675100.9189140.081086
his work653940.9190700.080930
looks great273590.9191250.080875
couple42210190.9192200.080780
helpful and303620.9193260.080674
needed123429980.9197700.080230
at my3087610.9199910.080009
to detail273610.9201770.079823
friends and273610.9201770.079823
the install1524950.9203160.079684
for your1254620.9204410.079559
and35118861070.9205460.079454
were4886119870.9205940.079406
used72917890.9206180.079382
phoenix1935540.9208460.079154
well121329910.9210180.078982
showed up55413670.9210770.078923
working74618410.9210870.078913
with me2286120.9211960.078804
the installation1925540.9212100.078790
extra2797100.9213900.078610
the work91922770.9214200.078580
yard2907340.9215030.078497
a1854200.9215460.078454
with the155238570.9216710.078329
time350487320.9218980.078102
opener1915560.9220530.077947
fixed67316890.9224800.077520
few85521490.9226040.077396
each3188060.9226110.077389
within a744110.9226230.077377
great company113520.9226460.077354
moved1965670.9228120.077188
such2747100.9228370.077163
bathroom2897430.9229360.077064
system64716330.9229460.077054
care59715090.9230650.076935
water109527710.9231600.076840
for my3478820.9232770.076723
done in1004410.9233630.076637
small3448760.9234070.076593
made100825600.9234520.076548
yelp53313540.9234730.076527
sure83821290.9234800.076520
pools3368590.9236540.076346
air50412870.9238940.076106
we had104426710.9240470.075953
patient383790.9242290.075771
roof70018010.9245000.075500
lot of2306340.9245660.075434
with their1815530.9249750.075025
and efficient83540.9250400.074960
a lot3268490.9250840.074916
how to1855610.9253860.074614
all the58815330.9255550.074445
installation60115670.9255600.074440
came210554890.9255690.074431
he also1044520.9257230.074277
patio2116060.9257310.074269
through the1715410.9257480.074252
and we60515820.9257890.074211
throughout the584020.9258460.074154
and had3028000.9260680.073932
up on2787440.9261050.073895
i needed3118230.9261810.073819
nice62716480.9261950.073805
kept2216270.9262620.073738
an hour2597040.9263770.073623
help48712860.9265590.073441
making2286440.9268930.073107
a few73319440.9268980.073102
done185449220.9269760.073024
a couple3529370.9270750.072925
night2717380.9273200.072680
we could2256410.9273540.072646
enough40110710.9274300.072570
room2947940.9274980.072502
the project2516970.9277720.072228
work3792102200.9281410.071859
they were150640720.9283880.071612
amazing job83620.9291690.070831
right103328240.9292240.070776
day and2266550.9292740.070726
steve544060.9293470.070653
granite2346720.9293500.070650
years79221710.9294280.070572
new201655540.9298050.070195
was on2376850.9302870.069713
product36510130.9303220.069678
was extremely744310.9307400.069260
wood1445220.9310890.068911
polite and323880.9311120.068888
very helpful383940.9311690.068831
old55915700.9312370.068763
entire38310800.9315190.068481
experience with2236640.9315590.068441
the way2848100.9317050.068295
custom884500.9317580.068242
the time41511740.9317640.068236
the job91325830.9317710.068229
on yelp1936060.9317770.068223
found67919330.9322260.067774
them for2036280.9322890.067711
fair price263850.9323720.067628
whole3279370.9325860.067414
project69319870.9327420.067258
both46513410.9331580.066842
so much1475350.9332090.066791
immediately2407150.9332990.066701
with my3159130.9333590.066641
in our3459990.9334060.066594
fantastic job93720.9336500.066350
the most1525450.9337170.066283
had a86525500.9347160.065284
had the2657910.9347390.065261
and will2186760.9347830.065217
questions and183830.9349220.065078
came out80123720.9350310.064969
all of39311680.9352800.064720
everything was814520.9353780.064622
clean and213870.9354390.064561
promptly804510.9354510.064549
most47114060.9355880.064412
area33610070.9358250.064175
our pool2347220.9358490.064151
anyone58117480.9361280.063872
to finish1665820.9365130.063487
the price3149530.9366380.063362
scott1074900.9367400.063260
az2146820.9367900.063210
excellent job93790.9369290.063071
early1966440.9370540.062946
our4939150970.9372080.062792
&73922600.9372410.062759
the whole1966480.9376440.062356
and got1415460.9379730.062027
arizona1956500.9382490.061751
for me2708440.9382830.061717
his224569780.9383290.061671
cleaning2658330.9385820.061418
he was127239710.9386190.061381
to our3039580.9393700.060630
better than514280.9393930.060607
appreciated534310.9396590.060341
on our2578240.9398050.060195
make sure2578250.9398900.060110
at a2096950.9399090.060091
n't be2708640.9399120.060088
working with1065000.9399160.060084
backyard1465660.9403900.059610
using34010910.9404010.059599
the entire2397900.9414230.058577
to help1676120.9414800.058520
the crew1375560.9415670.058433
quality of1636050.9416590.058341
gave70723190.9418070.058193
made sure244050.9418280.058172
our house2658770.9420960.057904
carpet2708970.9424020.057598
every52717490.9425410.057459
we will1816500.9426440.057356
remodel2327840.9427150.057285
time to31910620.9427190.057281
and made914890.9427680.057232
quotes2027020.9427820.057218
and fixed694600.9429400.057060
hard2859580.9432460.056754
attention to564450.9433380.056662
knew2448290.9434590.056541
services30410290.9437270.056273
highly recommended144000.9439500.056050
looking44415080.9439610.056039
finished32010900.9441260.055874
my new804790.9442740.055726
he came1455850.9443190.055681
hesitate to144010.9443580.055642
work was1846710.9444630.055537
my garage2017150.9445010.055499
met1315600.9445220.055478
attention1285560.9447920.055208
companies58120080.9450090.054991
garage door51017650.9450890.054911
windows31911070.9452440.054756
was so1566130.9452740.054726
the quality1536070.9453210.054679
chris744750.9454930.054507
their work1856820.9454930.054507
and even1045190.9454940.054506
drywall1636330.9459730.054027
top34612210.9462370.053763
work and2488830.9465050.053495
and friendly234160.9465390.053461
staff2197890.9465450.053455
pleasant604600.9465700.053430
our home32811650.9466110.053389
well as1165440.9466480.053352
completed37913480.9466940.053306
joe584580.9467510.053249
guys are664690.9469050.053095
other companies1095350.9472780.052722
from start154100.9475130.052487
was done2639510.9475490.052451
kitchen41314920.9475880.052412
great and434420.9476300.052370
garage87231580.9477290.052271
plumbing44716240.9479100.052090
job and1746750.9479760.052024
very knowledgeable204170.9481370.051863
he is2428890.9483020.051698
went above44010.9484220.051578
job done714830.9489360.051064
absolutely2107910.9490460.050954
truly744880.9491270.050873
design2268460.9491560.050844
explained33812590.9493030.050697
took the915160.9496640.050336
reliable574680.9501720.049828
arrived32212190.9501880.049812
and were1366060.9508050.049195
have used634790.9509500.049050
of our37614460.9510360.048964
budget815060.9510430.048957
looking for1877420.9510650.048935
for us1616680.9510930.048907
clean46017720.9511250.048875
job219084690.9513300.048670
price93636410.9516420.048358
recommend him114170.9517520.048248
very friendly414530.9519750.048025
provided2278960.9521950.047805
throughout995440.9527840.047216
for our1937840.9529160.047084
care of2178720.9530300.046970
service and25610250.9531110.046889
painting1877680.9532490.046751
use them2369590.9538080.046192
guys70928910.9540640.045936
and did36014800.9544730.045527
for all644950.9547690.045231
flooring1426520.9550430.044957
able to51321540.9555120.044488
floors1336330.9555330.044467
able51721770.9556510.044349
prices2369980.9558110.044189
job on514800.9558530.044147
my questions164350.9560490.043951
as well30412920.9560970.043903
quality56224150.9566240.043376
is very1115960.9575960.042404
a very25711290.9576540.042346
a fantastic124360.9579260.042074
with our1456910.9582820.041718
answered1878460.9585740.041426
process44519960.9586150.041385
say enough54300.9586390.041361
everything63028370.9587940.041206
professionalism695220.9591160.040884
gave me25211440.9591530.040847
these guys33815350.9591740.040826
hesitate164450.9592440.040756
time and34015700.9599130.040087
start to274640.9606390.039361
everyone1939180.9610400.038960
exactly what495000.9615760.038424
needs30414710.9619210.038079
recently1547790.9626950.037305
recommend this1869280.9630470.036953
gave us815660.9630540.036946
not only1718610.9632000.036800
right away815700.9636940.036306
will use124550.9637340.036266
pricing1929740.9637830.036217
and gave1106530.9649510.035049
within38119970.9651290.034871
looks26614100.9655590.034441
options1508130.9657190.034281
very2287124480.9665510.033449
the process1709330.9667290.033271
affordable284920.9673980.032602
extremely26114620.9675950.032405
family23112970.9676790.032321
recommended19110900.9682450.031755
glad986500.9682820.031718
them again19210980.9683200.031680
pleasure84670.9684940.031506
roofing1719940.9688460.031154
top notch164800.9688860.031114
same day1408320.9691200.030880
to work33719880.9693990.030601
results485370.9694710.030529
expectations405220.9694720.030528
notch174850.9697250.030275
crew38222920.9699690.030031
matt525490.9701580.029842
ron625710.9702190.029781
fast18811440.9704300.029570
an excellent114790.9704380.029562
worked30318620.9707540.029246
our new836370.9715440.028456
was very47329820.9715730.028427
for any826360.9717490.028251
always32620950.9721710.027829
were able565710.9722030.027797
competitive435430.9722190.027781
all my665980.9725320.027468
satisfied886640.9725450.027455
responsive676020.9726970.027303
great experience305220.9729480.027052
timely896730.9730000.027000
priced585820.9730660.026934
exactly1389420.9738660.026134
to anyone17412160.9746500.025350
happy34924830.9751520.024848
work with22316000.9753850.024615
courteous and255270.9755700.024430
worked with736510.9758470.024153
questions20715190.9759960.024004
projects596090.9760090.023991
honest and285390.9766100.023390
super1239310.9766810.023319
was great1088360.9768800.023120
are very776820.9771190.022881
best32825320.9773190.022681
beyond1158980.9773940.022606
friends1199310.9775240.022476
cleaned16112620.9777040.022296
above1038370.9780860.021914
an amazing65080.9784750.021525
detail877540.9786140.021386
perfect827310.9787610.021239
polite877780.9796850.020315
price was747130.9799140.020086
fair16014090.9804400.019560
was able12010590.9804690.019531
impressed with305700.9805000.019500
mike16014150.9805340.019466
definitely use25140.9809400.019060
did a26624370.9812950.018705
beautiful11310590.9817510.018249
recommend74369590.9817560.018244
love11511040.9822510.017749
happy with12712280.9824030.017597
quickly18818380.9826230.017377
were very11711450.9826380.017362
helpful13813540.9826930.017307
very pleased145510.9830220.016978
quick14414380.9830360.016964
quickly and145520.9831640.016836
easy12613030.9836980.016302
future14615180.9837980.016202
honest16817890.9842350.015765
friendly20622960.9850370.014963
thanks17819870.9850630.014937
recommend them14616610.9853850.014615
the best16318630.9854620.014538
great86599970.9856470.014353
thorough497080.9863330.013667
team16620380.9866140.013386
and beyond216040.9870790.012921
impressed8210780.9876230.012377
above and155930.9877910.012209
friendly and7510040.9878500.012150
helped608370.9879520.012048
the future638860.9883130.011687
on time20328620.9886070.011393
wonderful527910.9886430.011357
reasonable11416200.9887120.011288
definitely17024190.9887300.011270
professional38254760.9888280.011172
great service296600.9891170.010883
thank16724620.9891910.010809
be happier65810.9892370.010763
a great20530520.9893150.010685
knowledgeable and226350.9893900.010610
knowledgeable9414820.9900180.009982
easy to367170.9901280.009872
and his12820890.9904210.009579
pleased with437780.9904280.009572
pleased7111620.9904500.009550
and very508560.9905590.009441
prompt488650.9911490.008851
courteous6711990.9914270.008573
very reasonable96150.9915560.008444
outstanding256880.9917240.008276
cleaned up287160.9921380.007862
thank you11622410.9921940.007806
and professional499650.9922950.007705
very happy357870.9925450.007455
happier96290.9926280.007372
his crew418670.9926800.007320
would definitely166770.9935770.006423
very professional6715170.9935990.006401
awesome6114140.9937880.006212
would recommend4610880.9939350.006065
fantastic4911690.9940110.005989
excellent8620660.9940670.005933
professional and8420180.9940670.005933
great job6417010.9948010.005199
did an299050.9956190.004381
definitely recommend36500.9956290.004371
amazing7221870.9956610.004339
efficient3210250.9959390.004061
highly12943530.9962590.003741
his team177790.9965600.003440
would highly2210840.9979360.002064
i highly2313870.9986150.001385
will definitely129020.9989910.001009
highly recommend3135121.0000000.000000
\n", + "
" + ], + "text/plain": [ + " 1 freq 5 freq highratingscore poorratingscore\n", + "term \n", + "a new 729 1563 0.908515 0.091485\n", + "saved 62 370 0.908535 0.091465\n", + "spring 171 483 0.908728 0.091272\n", + "maintenance 145 454 0.909011 0.090989\n", + "look 916 1975 0.909050 0.090950\n", + "reasonable price 10 328 0.909398 0.090602\n", + "good 1511 3276 0.909575 0.090425\n", + "me a 502 1089 0.909618 0.090382\n", + "remodeling 77 386 0.909663 0.090337\n", + "and i 1873 4065 0.909671 0.090329\n", + "stell 4 324 0.909730 0.090270\n", + "appreciate 96 405 0.909983 0.090017\n", + "tile 656 1430 0.910085 0.089915\n", + "things 682 1487 0.910105 0.089895\n", + "you need 124 434 0.910121 0.089879\n", + "through 848 1850 0.910159 0.089841\n", + "of my 742 1621 0.910290 0.089710\n", + "big 346 767 0.910561 0.089439\n", + "and a 543 1193 0.910818 0.089182\n", + "turned out 86 397 0.910830 0.089170\n", + "over the 430 947 0.910952 0.089048\n", + "my house 649 1428 0.910958 0.089042\n", + "kind 240 583 0.910990 0.089010\n", + "valley 121 433 0.911028 0.088972\n", + "overall 161 478 0.911093 0.088907\n", + "came to 284 656 0.911345 0.088655\n", + "and he 940 2077 0.911348 0.088652\n", + "again for 47 362 0.911391 0.088609\n", + "us a 195 522 0.911597 0.088403\n", + "better 609 1350 0.911649 0.088351\n", + "decided 457 1014 0.911703 0.088297\n", + "went 1121 2490 0.911835 0.088165\n", + "and courteous 20 340 0.911845 0.088155\n", + "did the 181 505 0.911921 0.088079\n", + "showed 821 1826 0.911955 0.088045\n", + "will be 511 1139 0.912152 0.087848\n", + "than 1379 3085 0.912492 0.087508\n", + "manner 79 394 0.912636 0.087364\n", + "floor 367 828 0.912768 0.087232\n", + "quick and 9 333 0.912855 0.087145\n", + "built 164 487 0.912926 0.087074\n", + "be using 38 357 0.912935 0.087065\n", + "need 1000 2250 0.913017 0.086983\n", + "doing 574 1292 0.913052 0.086948\n", + "am very 40 359 0.913078 0.086922\n", + "efficient and 7 332 0.913180 0.086820\n", + "electric 91 407 0.913188 0.086812\n", + "great work 17 340 0.913243 0.086757\n", + "start 439 995 0.913638 0.086362\n", + "great to 17 341 0.913818 0.086182\n", + "decided to 341 782 0.913832 0.086168\n", + "with his 101 419 0.913990 0.086010\n", + "less than 288 683 0.914697 0.085303\n", + "some 1431 3281 0.914721 0.085279\n", + "house and 235 592 0.914731 0.085269\n", + "i found 240 600 0.914744 0.085256\n", + "and was 704 1616 0.914824 0.085176\n", + "finish 358 830 0.915226 0.084774\n", + "and the 1690 3901 0.915322 0.084678\n", + "we wanted 149 477 0.915683 0.084317\n", + "could n't 517 1201 0.915885 0.084115\n", + "installing 119 443 0.915930 0.084070\n", + "repaired 217 571 0.916270 0.083730\n", + "jason 71 394 0.916324 0.083676\n", + "my home 517 1210 0.916544 0.083456\n", + "job was 182 522 0.916572 0.083428\n", + "water heater 197 543 0.916618 0.083382\n", + "house 2084 4887 0.916717 0.083283\n", + "arrived on 18 347 0.916746 0.083254\n", + "he gave 50 375 0.916761 0.083239\n", + "installed 995 2340 0.916969 0.083031\n", + "installers 145 476 0.916988 0.083012\n", + "a pleasure 6 338 0.917130 0.082870\n", + "really 963 2269 0.917133 0.082867\n", + "lot 382 902 0.917141 0.082859\n", + "our garage 63 388 0.917148 0.082852\n", + "we are 541 1275 0.917154 0.082846\n", + "experience 1040 2456 0.917331 0.082669\n", + "with 9168 21651 0.917333 0.082667\n", + "also 1366 3227 0.917362 0.082638\n", + "what he 144 476 0.917399 0.082601\n", + "a little 255 639 0.917428 0.082572\n", + "in a 716 1699 0.917748 0.082252\n", + "couple of 206 561 0.917830 0.082170\n", + "little 408 971 0.917939 0.082061\n", + "was professional 27 357 0.918061 0.081939\n", + "felt 307 746 0.918351 0.081649\n", + "personable 19 351 0.918491 0.081509\n", + "replaced 605 1449 0.918550 0.081450\n", + "i will 771 1848 0.918617 0.081383\n", + "all 3233 7771 0.918858 0.081142\n", + "home and 186 536 0.918881 0.081119\n", + "forward 167 510 0.918914 0.081086\n", + "his work 65 394 0.919070 0.080930\n", + "looks great 27 359 0.919125 0.080875\n", + "couple 422 1019 0.919220 0.080780\n", + "helpful and 30 362 0.919326 0.080674\n", + "needed 1234 2998 0.919770 0.080230\n", + "at my 308 761 0.919991 0.080009\n", + "to detail 27 361 0.920177 0.079823\n", + "friends and 27 361 0.920177 0.079823\n", + "the install 152 495 0.920316 0.079684\n", + "for your 125 462 0.920441 0.079559\n", + "and 35118 86107 0.920546 0.079454\n", + "were 4886 11987 0.920594 0.079406\n", + "used 729 1789 0.920618 0.079382\n", + "phoenix 193 554 0.920846 0.079154\n", + "well 1213 2991 0.921018 0.078982\n", + "showed up 554 1367 0.921077 0.078923\n", + "working 746 1841 0.921087 0.078913\n", + "with me 228 612 0.921196 0.078804\n", + "the installation 192 554 0.921210 0.078790\n", + "extra 279 710 0.921390 0.078610\n", + "the work 919 2277 0.921420 0.078580\n", + "yard 290 734 0.921503 0.078497\n", + "a1 85 420 0.921546 0.078454\n", + "with the 1552 3857 0.921671 0.078329\n", + "time 3504 8732 0.921898 0.078102\n", + "opener 191 556 0.922053 0.077947\n", + "fixed 673 1689 0.922480 0.077520\n", + "few 855 2149 0.922604 0.077396\n", + "each 318 806 0.922611 0.077389\n", + "within a 74 411 0.922623 0.077377\n", + "great company 11 352 0.922646 0.077354\n", + "moved 196 567 0.922812 0.077188\n", + "such 274 710 0.922837 0.077163\n", + "bathroom 289 743 0.922936 0.077064\n", + "system 647 1633 0.922946 0.077054\n", + "care 597 1509 0.923065 0.076935\n", + "water 1095 2771 0.923160 0.076840\n", + "for my 347 882 0.923277 0.076723\n", + "done in 100 441 0.923363 0.076637\n", + "small 344 876 0.923407 0.076593\n", + "made 1008 2560 0.923452 0.076548\n", + "yelp 533 1354 0.923473 0.076527\n", + "sure 838 2129 0.923480 0.076520\n", + "pools 336 859 0.923654 0.076346\n", + "air 504 1287 0.923894 0.076106\n", + "we had 1044 2671 0.924047 0.075953\n", + "patient 38 379 0.924229 0.075771\n", + "roof 700 1801 0.924500 0.075500\n", + "lot of 230 634 0.924566 0.075434\n", + "with their 181 553 0.924975 0.075025\n", + "and efficient 8 354 0.925040 0.074960\n", + "a lot 326 849 0.925084 0.074916\n", + "how to 185 561 0.925386 0.074614\n", + "all the 588 1533 0.925555 0.074445\n", + "installation 601 1567 0.925560 0.074440\n", + "came 2105 5489 0.925569 0.074431\n", + "he also 104 452 0.925723 0.074277\n", + "patio 211 606 0.925731 0.074269\n", + "through the 171 541 0.925748 0.074252\n", + "and we 605 1582 0.925789 0.074211\n", + "throughout the 58 402 0.925846 0.074154\n", + "and had 302 800 0.926068 0.073932\n", + "up on 278 744 0.926105 0.073895\n", + "i needed 311 823 0.926181 0.073819\n", + "nice 627 1648 0.926195 0.073805\n", + "kept 221 627 0.926262 0.073738\n", + "an hour 259 704 0.926377 0.073623\n", + "help 487 1286 0.926559 0.073441\n", + "making 228 644 0.926893 0.073107\n", + "a few 733 1944 0.926898 0.073102\n", + "done 1854 4922 0.926976 0.073024\n", + "a couple 352 937 0.927075 0.072925\n", + "night 271 738 0.927320 0.072680\n", + "we could 225 641 0.927354 0.072646\n", + "enough 401 1071 0.927430 0.072570\n", + "room 294 794 0.927498 0.072502\n", + "the project 251 697 0.927772 0.072228\n", + "work 3792 10220 0.928141 0.071859\n", + "they were 1506 4072 0.928388 0.071612\n", + "amazing job 8 362 0.929169 0.070831\n", + "right 1033 2824 0.929224 0.070776\n", + "day and 226 655 0.929274 0.070726\n", + "steve 54 406 0.929347 0.070653\n", + "granite 234 672 0.929350 0.070650\n", + "years 792 2171 0.929428 0.070572\n", + "new 2016 5554 0.929805 0.070195\n", + "was on 237 685 0.930287 0.069713\n", + "product 365 1013 0.930322 0.069678\n", + "was extremely 74 431 0.930740 0.069260\n", + "wood 144 522 0.931089 0.068911\n", + "polite and 32 388 0.931112 0.068888\n", + "very helpful 38 394 0.931169 0.068831\n", + "old 559 1570 0.931237 0.068763\n", + "entire 383 1080 0.931519 0.068481\n", + "experience with 223 664 0.931559 0.068441\n", + "the way 284 810 0.931705 0.068295\n", + "custom 88 450 0.931758 0.068242\n", + "the time 415 1174 0.931764 0.068236\n", + "the job 913 2583 0.931771 0.068229\n", + "on yelp 193 606 0.931777 0.068223\n", + "found 679 1933 0.932226 0.067774\n", + "them for 203 628 0.932289 0.067711\n", + "fair price 26 385 0.932372 0.067628\n", + "whole 327 937 0.932586 0.067414\n", + "project 693 1987 0.932742 0.067258\n", + "both 465 1341 0.933158 0.066842\n", + "so much 147 535 0.933209 0.066791\n", + "immediately 240 715 0.933299 0.066701\n", + "with my 315 913 0.933359 0.066641\n", + "in our 345 999 0.933406 0.066594\n", + "fantastic job 9 372 0.933650 0.066350\n", + "the most 152 545 0.933717 0.066283\n", + "had a 865 2550 0.934716 0.065284\n", + "had the 265 791 0.934739 0.065261\n", + "and will 218 676 0.934783 0.065217\n", + "questions and 18 383 0.934922 0.065078\n", + "came out 801 2372 0.935031 0.064969\n", + "all of 393 1168 0.935280 0.064720\n", + "everything was 81 452 0.935378 0.064622\n", + "clean and 21 387 0.935439 0.064561\n", + "promptly 80 451 0.935451 0.064549\n", + "most 471 1406 0.935588 0.064412\n", + "area 336 1007 0.935825 0.064175\n", + "our pool 234 722 0.935849 0.064151\n", + "anyone 581 1748 0.936128 0.063872\n", + "to finish 166 582 0.936513 0.063487\n", + "the price 314 953 0.936638 0.063362\n", + "scott 107 490 0.936740 0.063260\n", + "az 214 682 0.936790 0.063210\n", + "excellent job 9 379 0.936929 0.063071\n", + "early 196 644 0.937054 0.062946\n", + "our 4939 15097 0.937208 0.062792\n", + "& 739 2260 0.937241 0.062759\n", + "the whole 196 648 0.937644 0.062356\n", + "and got 141 546 0.937973 0.062027\n", + "arizona 195 650 0.938249 0.061751\n", + "for me 270 844 0.938283 0.061717\n", + "his 2245 6978 0.938329 0.061671\n", + "cleaning 265 833 0.938582 0.061418\n", + "he was 1272 3971 0.938619 0.061381\n", + "to our 303 958 0.939370 0.060630\n", + "better than 51 428 0.939393 0.060607\n", + "appreciated 53 431 0.939659 0.060341\n", + "on our 257 824 0.939805 0.060195\n", + "make sure 257 825 0.939890 0.060110\n", + "at a 209 695 0.939909 0.060091\n", + "n't be 270 864 0.939912 0.060088\n", + "working with 106 500 0.939916 0.060084\n", + "backyard 146 566 0.940390 0.059610\n", + "using 340 1091 0.940401 0.059599\n", + "the entire 239 790 0.941423 0.058577\n", + "to help 167 612 0.941480 0.058520\n", + "the crew 137 556 0.941567 0.058433\n", + "quality of 163 605 0.941659 0.058341\n", + "gave 707 2319 0.941807 0.058193\n", + "made sure 24 405 0.941828 0.058172\n", + "our house 265 877 0.942096 0.057904\n", + "carpet 270 897 0.942402 0.057598\n", + "every 527 1749 0.942541 0.057459\n", + "we will 181 650 0.942644 0.057356\n", + "remodel 232 784 0.942715 0.057285\n", + "time to 319 1062 0.942719 0.057281\n", + "and made 91 489 0.942768 0.057232\n", + "quotes 202 702 0.942782 0.057218\n", + "and fixed 69 460 0.942940 0.057060\n", + "hard 285 958 0.943246 0.056754\n", + "attention to 56 445 0.943338 0.056662\n", + "knew 244 829 0.943459 0.056541\n", + "services 304 1029 0.943727 0.056273\n", + "highly recommended 14 400 0.943950 0.056050\n", + "looking 444 1508 0.943961 0.056039\n", + "finished 320 1090 0.944126 0.055874\n", + "my new 80 479 0.944274 0.055726\n", + "he came 145 585 0.944319 0.055681\n", + "hesitate to 14 401 0.944358 0.055642\n", + "work was 184 671 0.944463 0.055537\n", + "my garage 201 715 0.944501 0.055499\n", + "met 131 560 0.944522 0.055478\n", + "attention 128 556 0.944792 0.055208\n", + "companies 581 2008 0.945009 0.054991\n", + "garage door 510 1765 0.945089 0.054911\n", + "windows 319 1107 0.945244 0.054756\n", + "was so 156 613 0.945274 0.054726\n", + "the quality 153 607 0.945321 0.054679\n", + "chris 74 475 0.945493 0.054507\n", + "their work 185 682 0.945493 0.054507\n", + "and even 104 519 0.945494 0.054506\n", + "drywall 163 633 0.945973 0.054027\n", + "top 346 1221 0.946237 0.053763\n", + "work and 248 883 0.946505 0.053495\n", + "and friendly 23 416 0.946539 0.053461\n", + "staff 219 789 0.946545 0.053455\n", + "pleasant 60 460 0.946570 0.053430\n", + "our home 328 1165 0.946611 0.053389\n", + "well as 116 544 0.946648 0.053352\n", + "completed 379 1348 0.946694 0.053306\n", + "joe 58 458 0.946751 0.053249\n", + "guys are 66 469 0.946905 0.053095\n", + "other companies 109 535 0.947278 0.052722\n", + "from start 15 410 0.947513 0.052487\n", + "was done 263 951 0.947549 0.052451\n", + "kitchen 413 1492 0.947588 0.052412\n", + "great and 43 442 0.947630 0.052370\n", + "garage 872 3158 0.947729 0.052271\n", + "plumbing 447 1624 0.947910 0.052090\n", + "job and 174 675 0.947976 0.052024\n", + "very knowledgeable 20 417 0.948137 0.051863\n", + "he is 242 889 0.948302 0.051698\n", + "went above 4 401 0.948422 0.051578\n", + "job done 71 483 0.948936 0.051064\n", + "absolutely 210 791 0.949046 0.050954\n", + "truly 74 488 0.949127 0.050873\n", + "design 226 846 0.949156 0.050844\n", + "explained 338 1259 0.949303 0.050697\n", + "took the 91 516 0.949664 0.050336\n", + "reliable 57 468 0.950172 0.049828\n", + "arrived 322 1219 0.950188 0.049812\n", + "and were 136 606 0.950805 0.049195\n", + "have used 63 479 0.950950 0.049050\n", + "of our 376 1446 0.951036 0.048964\n", + "budget 81 506 0.951043 0.048957\n", + "looking for 187 742 0.951065 0.048935\n", + "for us 161 668 0.951093 0.048907\n", + "clean 460 1772 0.951125 0.048875\n", + "job 2190 8469 0.951330 0.048670\n", + "price 936 3641 0.951642 0.048358\n", + "recommend him 11 417 0.951752 0.048248\n", + "very friendly 41 453 0.951975 0.048025\n", + "provided 227 896 0.952195 0.047805\n", + "throughout 99 544 0.952784 0.047216\n", + "for our 193 784 0.952916 0.047084\n", + "care of 217 872 0.953030 0.046970\n", + "service and 256 1025 0.953111 0.046889\n", + "painting 187 768 0.953249 0.046751\n", + "use them 236 959 0.953808 0.046192\n", + "guys 709 2891 0.954064 0.045936\n", + "and did 360 1480 0.954473 0.045527\n", + "for all 64 495 0.954769 0.045231\n", + "flooring 142 652 0.955043 0.044957\n", + "able to 513 2154 0.955512 0.044488\n", + "floors 133 633 0.955533 0.044467\n", + "able 517 2177 0.955651 0.044349\n", + "prices 236 998 0.955811 0.044189\n", + "job on 51 480 0.955853 0.044147\n", + "my questions 16 435 0.956049 0.043951\n", + "as well 304 1292 0.956097 0.043903\n", + "quality 562 2415 0.956624 0.043376\n", + "is very 111 596 0.957596 0.042404\n", + "a very 257 1129 0.957654 0.042346\n", + "a fantastic 12 436 0.957926 0.042074\n", + "with our 145 691 0.958282 0.041718\n", + "answered 187 846 0.958574 0.041426\n", + "process 445 1996 0.958615 0.041385\n", + "say enough 5 430 0.958639 0.041361\n", + "everything 630 2837 0.958794 0.041206\n", + "professionalism 69 522 0.959116 0.040884\n", + "gave me 252 1144 0.959153 0.040847\n", + "these guys 338 1535 0.959174 0.040826\n", + "hesitate 16 445 0.959244 0.040756\n", + "time and 340 1570 0.959913 0.040087\n", + "start to 27 464 0.960639 0.039361\n", + "everyone 193 918 0.961040 0.038960\n", + "exactly what 49 500 0.961576 0.038424\n", + "needs 304 1471 0.961921 0.038079\n", + "recently 154 779 0.962695 0.037305\n", + "recommend this 186 928 0.963047 0.036953\n", + "gave us 81 566 0.963054 0.036946\n", + "not only 171 861 0.963200 0.036800\n", + "right away 81 570 0.963694 0.036306\n", + "will use 12 455 0.963734 0.036266\n", + "pricing 192 974 0.963783 0.036217\n", + "and gave 110 653 0.964951 0.035049\n", + "within 381 1997 0.965129 0.034871\n", + "looks 266 1410 0.965559 0.034441\n", + "options 150 813 0.965719 0.034281\n", + "very 2287 12448 0.966551 0.033449\n", + "the process 170 933 0.966729 0.033271\n", + "affordable 28 492 0.967398 0.032602\n", + "extremely 261 1462 0.967595 0.032405\n", + "family 231 1297 0.967679 0.032321\n", + "recommended 191 1090 0.968245 0.031755\n", + "glad 98 650 0.968282 0.031718\n", + "them again 192 1098 0.968320 0.031680\n", + "pleasure 8 467 0.968494 0.031506\n", + "roofing 171 994 0.968846 0.031154\n", + "top notch 16 480 0.968886 0.031114\n", + "same day 140 832 0.969120 0.030880\n", + "to work 337 1988 0.969399 0.030601\n", + "results 48 537 0.969471 0.030529\n", + "expectations 40 522 0.969472 0.030528\n", + "notch 17 485 0.969725 0.030275\n", + "crew 382 2292 0.969969 0.030031\n", + "matt 52 549 0.970158 0.029842\n", + "ron 62 571 0.970219 0.029781\n", + "fast 188 1144 0.970430 0.029570\n", + "an excellent 11 479 0.970438 0.029562\n", + "worked 303 1862 0.970754 0.029246\n", + "our new 83 637 0.971544 0.028456\n", + "was very 473 2982 0.971573 0.028427\n", + "for any 82 636 0.971749 0.028251\n", + "always 326 2095 0.972171 0.027829\n", + "were able 56 571 0.972203 0.027797\n", + "competitive 43 543 0.972219 0.027781\n", + "all my 66 598 0.972532 0.027468\n", + "satisfied 88 664 0.972545 0.027455\n", + "responsive 67 602 0.972697 0.027303\n", + "great experience 30 522 0.972948 0.027052\n", + "timely 89 673 0.973000 0.027000\n", + "priced 58 582 0.973066 0.026934\n", + "exactly 138 942 0.973866 0.026134\n", + "to anyone 174 1216 0.974650 0.025350\n", + "happy 349 2483 0.975152 0.024848\n", + "work with 223 1600 0.975385 0.024615\n", + "courteous and 25 527 0.975570 0.024430\n", + "worked with 73 651 0.975847 0.024153\n", + "questions 207 1519 0.975996 0.024004\n", + "projects 59 609 0.976009 0.023991\n", + "honest and 28 539 0.976610 0.023390\n", + "super 123 931 0.976681 0.023319\n", + "was great 108 836 0.976880 0.023120\n", + "are very 77 682 0.977119 0.022881\n", + "best 328 2532 0.977319 0.022681\n", + "beyond 115 898 0.977394 0.022606\n", + "friends 119 931 0.977524 0.022476\n", + "cleaned 161 1262 0.977704 0.022296\n", + "above 103 837 0.978086 0.021914\n", + "an amazing 6 508 0.978475 0.021525\n", + "detail 87 754 0.978614 0.021386\n", + "perfect 82 731 0.978761 0.021239\n", + "polite 87 778 0.979685 0.020315\n", + "price was 74 713 0.979914 0.020086\n", + "fair 160 1409 0.980440 0.019560\n", + "was able 120 1059 0.980469 0.019531\n", + "impressed with 30 570 0.980500 0.019500\n", + "mike 160 1415 0.980534 0.019466\n", + "definitely use 2 514 0.980940 0.019060\n", + "did a 266 2437 0.981295 0.018705\n", + "beautiful 113 1059 0.981751 0.018249\n", + "recommend 743 6959 0.981756 0.018244\n", + "love 115 1104 0.982251 0.017749\n", + "happy with 127 1228 0.982403 0.017597\n", + "quickly 188 1838 0.982623 0.017377\n", + "were very 117 1145 0.982638 0.017362\n", + "helpful 138 1354 0.982693 0.017307\n", + "very pleased 14 551 0.983022 0.016978\n", + "quick 144 1438 0.983036 0.016964\n", + "quickly and 14 552 0.983164 0.016836\n", + "easy 126 1303 0.983698 0.016302\n", + "future 146 1518 0.983798 0.016202\n", + "honest 168 1789 0.984235 0.015765\n", + "friendly 206 2296 0.985037 0.014963\n", + "thanks 178 1987 0.985063 0.014937\n", + "recommend them 146 1661 0.985385 0.014615\n", + "the best 163 1863 0.985462 0.014538\n", + "great 865 9997 0.985647 0.014353\n", + "thorough 49 708 0.986333 0.013667\n", + "team 166 2038 0.986614 0.013386\n", + "and beyond 21 604 0.987079 0.012921\n", + "impressed 82 1078 0.987623 0.012377\n", + "above and 15 593 0.987791 0.012209\n", + "friendly and 75 1004 0.987850 0.012150\n", + "helped 60 837 0.987952 0.012048\n", + "the future 63 886 0.988313 0.011687\n", + "on time 203 2862 0.988607 0.011393\n", + "wonderful 52 791 0.988643 0.011357\n", + "reasonable 114 1620 0.988712 0.011288\n", + "definitely 170 2419 0.988730 0.011270\n", + "professional 382 5476 0.988828 0.011172\n", + "great service 29 660 0.989117 0.010883\n", + "thank 167 2462 0.989191 0.010809\n", + "be happier 6 581 0.989237 0.010763\n", + "a great 205 3052 0.989315 0.010685\n", + "knowledgeable and 22 635 0.989390 0.010610\n", + "knowledgeable 94 1482 0.990018 0.009982\n", + "easy to 36 717 0.990128 0.009872\n", + "and his 128 2089 0.990421 0.009579\n", + "pleased with 43 778 0.990428 0.009572\n", + "pleased 71 1162 0.990450 0.009550\n", + "and very 50 856 0.990559 0.009441\n", + "prompt 48 865 0.991149 0.008851\n", + "courteous 67 1199 0.991427 0.008573\n", + "very reasonable 9 615 0.991556 0.008444\n", + "outstanding 25 688 0.991724 0.008276\n", + "cleaned up 28 716 0.992138 0.007862\n", + "thank you 116 2241 0.992194 0.007806\n", + "and professional 49 965 0.992295 0.007705\n", + "very happy 35 787 0.992545 0.007455\n", + "happier 9 629 0.992628 0.007372\n", + "his crew 41 867 0.992680 0.007320\n", + "would definitely 16 677 0.993577 0.006423\n", + "very professional 67 1517 0.993599 0.006401\n", + "awesome 61 1414 0.993788 0.006212\n", + "would recommend 46 1088 0.993935 0.006065\n", + "fantastic 49 1169 0.994011 0.005989\n", + "excellent 86 2066 0.994067 0.005933\n", + "professional and 84 2018 0.994067 0.005933\n", + "great job 64 1701 0.994801 0.005199\n", + "did an 29 905 0.995619 0.004381\n", + "definitely recommend 3 650 0.995629 0.004371\n", + "amazing 72 2187 0.995661 0.004339\n", + "efficient 32 1025 0.995939 0.004061\n", + "highly 129 4353 0.996259 0.003741\n", + "his team 17 779 0.996560 0.003440\n", + "would highly 22 1084 0.997936 0.002064\n", + "i highly 23 1387 0.998615 0.001385\n", + "will definitely 12 902 0.998991 0.001009\n", + "highly recommend 31 3512 1.000000 0.000000" + ] + }, + "execution_count": 126, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.set_option('display.max_rows', None)\n", + "term_freq_df.sort_values(by= 'highratingscore', ascending = True).tail(500)" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
termpoorratingscore
0oneguard0.9696
1guard0.9636
2message0.9346
3warranty0.9191
4monday0.9122
5the contract0.9117
6friday0.9047
7tech0.9023
8rep0.9019
9invoice0.9019
\n", + "
" + ], + "text/plain": [ + " term poorratingscore\n", + "0 oneguard 0.9696\n", + "1 guard 0.9636\n", + "2 message 0.9346\n", + "3 warranty 0.9191\n", + "4 monday 0.9122\n", + "5 the contract 0.9117\n", + "6 friday 0.9047\n", + "7 tech 0.9023\n", + "8 rep 0.9019\n", + "9 invoice 0.9019" + ] + }, + "execution_count": 125, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "worst_words = pd.DataFrame({'term': ['oneguard', 'guard', 'message', 'warranty', 'monday', 'the contract', 'friday', 'tech', 'rep', 'invoice'],\n", + " 'poorratingscore': [0.9696, 0.9636, .9346, .9191, .9122, .9117, .9047, .9023, .9019, .9019]})\n", + "worst_words.head(10)" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "machine_shape": "hm", + "name": "Scattertext.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc-autonumbering": false + }, + "nbformat": 4, + "nbformat_minor": 1 +}