{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import json\n", "from collections import Counter\n", "import pandas as pd\n", "import numpy as np\n", "from pandas.io.json import json_normalize\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import shelve" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Data Cleaning and Exploratory Data Analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The original data is too large to be uploaded onto GitHub. Thus, the pre-processing and extracting of data were conducted locally with the following code. The original data can be retrived from [Yelp Dataset](https://www.yelp.com/dataset/challenge). We extract a subset from it and save the data we worked with in the \"data\" folder in this repository. If you’d like to replicate the data cleaning and extraction process for this project, please download the raw JSON data, this notebook and run the process locally from your computer. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Extract Restaurants Data" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# the local path of JSON files that needed\n", "json_business_path='./data/business.json'\n", "json_review_path='./data/review.json'" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# extract business information\n", "business_contents=[]\n", "with open(json_business_path) as fin:\n", " for line in fin:\n", " line=json.loads(line)\n", " business_contents.append(line)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see below, the Yelp Dataset Challenge contains business information from different states and different business types. Among the most popular locations and business types, we focus on restaurants at Ohio.\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('AZ', 47376),\n", " ('NV', 30571),\n", " ('ON', 26520),\n", " ('NC', 11299),\n", " ('OH', 10930),\n", " ('PA', 8916),\n", " ('QC', 7273),\n", " ('WI', 4190),\n", " ('EDH', 3561),\n", " ('BW', 3071)]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# In order to control the scope the project, we take OH state, 10930 businesses\n", "state=[]\n", "for line in business_contents:\n", " state.append(line['state']) \n", "# the 10 most popular locations\n", "Counter(state).most_common(10)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('Restaurants', 4513),\n", " ('Food', 1916),\n", " ('Shopping', 1628),\n", " ('Nightlife', 1180),\n", " ('Bars', 1083),\n", " ('Beauty & Spas', 930),\n", " ('American (Traditional)', 891),\n", " ('Automotive', 738),\n", " ('Pizza', 706),\n", " ('Sandwiches', 677)]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# we focus on Restaurants in OH, around 4513 businesses\n", "cat_of_business=[]\n", "for line in business_contents:\n", " if line['state']=='OH':\n", " try:\n", " cat_of_business.extend(line['categories'])\n", " except:\n", " next \n", " \n", "# The 10 most popular business types,focus on 'Restaurants'\n", "Counter(cat_of_business).most_common(10)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "we will research 4513 restaurants in OH\n" ] } ], "source": [ "# we have 4513 restaurants in OH to be reseaerched\n", "OH_Restaurants=[]\n", "for line in business_contents:\n", " if (line['state']=='OH') and ('Restaurants' in line['categories']):\n", " OH_Restaurants.append(line)\n", "print('we will research %d restaurants in OH'%len(OH_Restaurants))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the convenience of research and reproducibility, we will save the data that extracted from the original JSON data into data frames, put them in ‘data’ folder and use them for future analysis and statistical modeling. Note that we convert the restaurant data into csv file called ‘restaurant.csv’. We will subset it and use part of all restaurant information in the following steps." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# we need to keep those columns and convert to csv\n", "res_col=['state','city','address','name','business_id','stars','review_count','categories']\n", "restaurants=json_normalize(OH_Restaurants)[res_col]" ] }, { "cell_type": "code", "execution_count": 6, "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", "
statecityaddressnamebusiness_idstarsreview_countcategories
0OHPainesville1 S State StSidewalk Cafe PainesvilleBl7Y-ATTzXytQnCceg5k6w3.026[American (Traditional), Breakfast & Brunch, R...
1OHNorthfield10430 Northfield RdZeppe's Pizzeria7HFRdxVttyY9GiMpywhhYw3.07[Pizza, Caterers, Italian, Wraps, Event Planni...
2OHMentor9209 Mentor AveFirehouse SubslXcxSdPa2m__LqhsaL9t9A3.59[Restaurants, Sandwiches, Delis, Fast Food]
3OHCleveland13181 Cedar RdRichie Chan's Chinese RestaurantPawavw9U8rjxWVPU-RB7LA3.522[Chinese, Restaurants]
4OHNorthfield134 E Aurora RdRomeo's PizzaRzVHK8Jfcy8RvXjn_z3OBw4.04[Restaurants, Pizza]
\n", "
" ], "text/plain": [ " state city address name \\\n", "0 OH Painesville 1 S State St Sidewalk Cafe Painesville \n", "1 OH Northfield 10430 Northfield Rd Zeppe's Pizzeria \n", "2 OH Mentor 9209 Mentor Ave Firehouse Subs \n", "3 OH Cleveland 13181 Cedar Rd Richie Chan's Chinese Restaurant \n", "4 OH Northfield 134 E Aurora Rd Romeo's Pizza \n", "\n", " business_id stars review_count \\\n", "0 Bl7Y-ATTzXytQnCceg5k6w 3.0 26 \n", "1 7HFRdxVttyY9GiMpywhhYw 3.0 7 \n", "2 lXcxSdPa2m__LqhsaL9t9A 3.5 9 \n", "3 Pawavw9U8rjxWVPU-RB7LA 3.5 22 \n", "4 RzVHK8Jfcy8RvXjn_z3OBw 4.0 4 \n", "\n", " categories \n", "0 [American (Traditional), Breakfast & Brunch, R... \n", "1 [Pizza, Caterers, Italian, Wraps, Event Planni... \n", "2 [Restaurants, Sandwiches, Delis, Fast Food] \n", "3 [Chinese, Restaurants] \n", "4 [Restaurants, Pizza] " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# a glimpse of the restaurant\n", "restaurants.head()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(4513, 8)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "restaurants.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Extract Reviews for Restaurants" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After extracting the restaurants information, we move to extract the reviews for those restaurants. There are a lot of reviews, when we extract them from JSON file, we only extract those reviews which are for the restaurants we keep in our sample." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "# extract review information\n", "review_contents=[]\n", "with open(json_review_path) as fin:\n", " for line in fin:\n", " line=json.loads(line)\n", " if line['business_id'] in list(restaurants.business_id):\n", " review_contents.append(line)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# save all the reviews for restaurants in Ohio. It's around 600Mb, so\n", "# just store them locally\n", "with shelve.open('./result/ohio_all_reviews') as db:\n", " db['reviews'] = review_contents" ] }, { "cell_type": "code", "execution_count": 178, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "154764" ] }, "execution_count": 178, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# total 154764 reviews on 4513 restaurants\n", "len(review_contents)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# convert into data frame\n", "reviews=json_normalize(review_contents)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'd like to remove restaurant with too few reviews. We see that there are some restaurants which have few reviews, so we only keep restaurants which have more than 100 reviews. Below, we can find the summary statistics for number of reviews for restaurants." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "count 4513.000000\n", "mean 34.292932\n", "std 57.777458\n", "min 3.000000\n", "25% 6.000000\n", "50% 15.000000\n", "75% 39.000000\n", "max 896.000000\n", "Name: business_id, dtype: float64" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "reviews.business_id.value_counts().describe()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# only keep the restaurants which have more than 100 reviews\n", "keep_busID=reviews.business_id.value_counts().index[reviews.business_id.value_counts()>100]\n", "reviews_keep=reviews.loc[reviews.business_id.isin(keep_busID),:]" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 316.000000\n", "mean 190.575949\n", "std 122.290224\n", "min 101.000000\n", "25% 117.750000\n", "50% 149.000000\n", "75% 206.250000\n", "max 896.000000\n", "Name: business_id, dtype: float64" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# we can find the summary statistics for number of reviews for restaurants\n", "# after we exclude some restaurants with few reviews.\n", "reviews_keep.business_id.value_counts().describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We only keep 316 restaurants after we exclude some restaurants with few reviews. As we can see in the follow plot, the range of reviews per restaurant is [100,900] after we filter the data set. " ] }, { "cell_type": "code", "execution_count": 176, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfIAAAFVCAYAAAAUiG2GAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt8k+X9//HXnaRJ2zQ9QQuUUqBAQXAF5DywDDzgiUOd\nVunGPG1zqHMwDxQnsA2VKRv6db/N03RqEboqMg9zc4IHFLEiKicBsZyPLYeWJKXpKb8/CgFGQzil\nadr38/HY1ty5c+WTq2XvXNd939dteL1eLyIiIhKWTKEuQERERM6eglxERCSMKchFRETCmIJcREQk\njCnIRUREwpiCXEREJIwpyCUs7dixg+7du/Pqq6+esP35558nLy/vvL3PyJEjWb169Xlr71RcLhc3\n3ngjV199Ne++++4Jz/35z39m8ODBjB07lrFjxzJmzBhGjhzJrFmzONsrSFevXs3dd999Pko/LRMm\nTGDkyJGMHTuWcePGcfXVVzNlyhQOHz58Tu3m5eVx8cUX+/pm9OjRXHLJJTz33HNn3abT6eQnP/nJ\nOdV1PjSVOqRps4S6AJGzZTKZePTRR+nfvz+dO3cOdTnnbN26dezfv5/33nuvweevuuoqpk+f7ntc\nXl7OmDFjGDZsGBdffPEZv9/3vvc9nnzyybOu92zcf//9XHHFFQB4vV5+9atf8eSTTzJlypRzavfm\nm2/mtttu8z3etWsXV111FSNHjqRLly5n3F55eXmjfYELhzqkadOIXMJWZGQkt9xyC/fccw9VVVUn\nPZ+Xl8fzzz/f4OORI0cyZ84cxowZQ1ZWFq+++ipTp05lzJgxXHvttezdu9f3unnz5pGdnc3VV1/N\na6+95tv+/vvvc/311zNu3DhuvPFGvvrqK6B+9HzbbbcxevRo7r333pPqWrRoEePGjWP06NGMHz+e\nVatWsWnTJh544AH27t3L2LFjqaysDPj59+3bR2VlJXFxcQAUFxdz6623cu211zJ27Fhfrffcc88J\n/TB//nwmTZpEUVER11xzDQBVVVU88sgjZGdnM2bMGPLy8nC5XLz00ku+z1BdXc1FF13ka3fFihVc\nd911uN1u7r77bsaOHUt2djYPPvggdXV1Aes3DINBgwaxadOmU9ZfVFTEmDFjuPHGGxkzZkyDv+v/\ntWfPHgBiYmIA+PLLL8nNzSU7O5trr72WDz74AIDS0lJuvfVWsrOzyc7O5oknngBg6tSpVFZWMnbs\nWGpra3nttdd8v+sRI0Ywb948AF5//XVuv/123/se/zgvL49f/OIXXH311cyePZvNmzdzyy23cMMN\nNzBixAgmTpyIx+MB6r9U/fnPf+bGG29k5MiRvPjiiw3WIdIQjcglrE2cOJFPP/2Uxx9//IxHdR6P\nhzfffJN33nmHe+65h4ULF9KjRw/uvPNOFi5cyC9+8QsAbDYbCxcuZO/evYwbN47evXsTERHB448/\nzssvv0xCQgIbN27klltu4b///S8AO3fu5O2338ZiOfGfWHFxMTNmzKCgoIAOHTqwbNky7rjjDv7z\nn//w0EMPMXPmTN54440G633nnXdYsWIFlZWVlJWV0bNnT373u9+RmZlJTU0Nd999N4899hi9evXC\n6XRyww030LVrV66//noefvhh34j19ddfZ/LkySe0/eyzz2I2m3n99dcxDIM5c+bwxz/+kZ/97Gc8\n88wzeL1evvzyS6Kjo1m2bBnXXXcdixcvZtSoUbz33nu43W7eeOMNamtrmTFjBtu3b6djx46n7P/y\n8nL+/e9/M3LkyFPWD7Bx40YWLVpE+/btG2zrxRdf5M0338TtduN0OunXrx9PP/00bdq0oby8nKlT\np/L888+TmprK3r17ycnJoXv37ixcuJDU1FReeOEFKioq+M1vfoPT6WTWrFmMHj2aN954A7fbzauv\nvsqzzz5LQkICX3/9Nbfccgu5ubkB/sKgsrKSf/3rXwA8+uijjBs3jrFjx1JdXc21117Lhx9+yKhR\no6iqqiIhIYGCggLWrFnD+PHjGT9+/Al1iPijIJewZjKZmD17NtnZ2QwbNuyMXnv55ZcD0KFDB1q3\nbk2PHj0ASEtLo7y83LffjTfeCECbNm0YNmwYy5Ytw2w2U1JSws033+zbzzAMtm3bBkCfPn1OCnGA\nzz77jMGDB9OhQwcAhgwZQmJiImvWrMEwjFPWe3RqvaqqipkzZ7Jx40aysrIA2LJlC9u2beOBBx7w\n7V9ZWck333zD+PHj8Xg8rF69mqioKA4cOMCQIUP4/PPPfft++OGHOJ1OPv30U6B+9N2qVSvat29P\n27ZtWb16NR9//DE///nPefbZZ/F6vSxevJjnnnsOwzB4/PHHmTBhAt///ve56aab/Ib4Y489xlNP\nPeU7rj9ixAh+8pOfnLL+Ll260K5dO78hDsem1isqKpg8eTImk4kBAwYA8PXXX1NaWsqdd97p298w\n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\nunX07t2b4cOHB2z44MGD7Nq1i6effpodO3YwceJEvF4vhmEAYLfbcTqduFyuE0b4drsdl8t11h8o\nWiNyERFpQQIG+a9+9StGjBjBzTffzEUXXYTJdHr3WYmPjyc9PR2r1Up6ejo2m409e/b4nne73cTG\nxhITE4Pb7T5h++lM3Scl+d8nymbBU1N3yn2as5b6uU+H+sY/9Y1/6puGqV/8a8y+CRjkb731Fl98\n8QUbN24kMzOTlStXMmDAgIAN9+vXj5dffplbbrmFkpISDh8+zJAhQygqKmLQoEEsWbKEwYMHk5mZ\nyRNPPIHH46Gqqori4mIyMjICtl9a6vT7XLTNzCGX55T7NFdJSY4W+blPh/rGP/WNf+qbhqlf/AtG\n35zqi0HAIH/ppZdYtGgRJSUlXHHFFUyfPp3rrruO22677ZSvGzFiBMuXL+e6667D6/Uyffp0UlNT\nmTZtGnPmzCE9PZ1Ro0ZhNpuZMGECubm5eL1eJk+ejM1mO/NPeZzoyAhKyw6fUxsiIiLhIGCQL1y4\nkMLCQnJyckhISOC1117j+uuvDxjkAPfff/9J2+bOnXvStpycHHJyck6z5MDskRa2V9VSW1eH+TQP\nBYiIiISjgClnMpmwWq2+xzabDbPZHNSizpVd15KLiEgLEXBEPnDgQB599FEOHz7MokWL+Mc//sHg\nwYMbo7azdvwlaEdvoiIiItIcBRyR33///XTs2JHu3bvzz3/+k+HDhzNlypTGqO2sHR2RuzUiFxGR\nZs7viLy0tJSkpCT27NlDVlYWWVlZvudKSkp8d0Nrio6NyHUtuYiING9+g/zBBx/kmWee4cc//jGG\nYfgWczn6v4sXL27MOs/I0WVaXQpyERFp5vwG+TPPPAPAa6+9RmJiYqMVdD7oxikiItJSBDxGnp2d\nze23384777yDx+NpjJrO2bEbpyjIRUSkeQsY5B988AE33XQTn3zyCVdeeSV5eXksW7asMWo7a/ao\noyNyTa2LiEjzdlrXkX//+9/nkUceYdasWXz77bfcddddjVHbWYvWiFxERFqIgNeRr127lrfffptF\nixbRqVMnbrnlFi677LLGqO2saUEYERFpKQIG+bRp0xg7dizz58+ndevWjVHTOYu26fIzERFpGQJO\nrb/++utccsklrFmzhtraWrZv394YdZ0Tk8kgymbGdVgjchERad4CBvk777zDxIkTeeihhygrK+PG\n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\nuBCp4ocHAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot the restaurant on x axis and number of reviews on y axis\n", "reviews_keep.business_id.value_counts().plot()\n", "plt.xlabel('Restaurants')\n", "plt.ylabel('Number of Reviews')\n", "\n", "n_obs=len(reviews_keep.business_id.unique())\n", "sns.rugplot(np.arange(0,n_obs,1))\n", "\n", "plt.tick_params(axis='x',labelbottom='off')\n", "plt.title('Number of Reviews Per Restaurant')\n", "\n", "plt.savefig('./fig/NumberOfReviewsPerRestaurant.png')\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see in th following plot, the distribution of mean star rating for restaurants is skewed to the left with most restaurants having the mean star ratings in the range between 3 and 4. There are few restaurants which have earned mean ratings less than 2. " ] }, { "cell_type": "code", "execution_count": 177, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeEAAAFlCAYAAADca1DAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VNX9P/7XnT3JTPYFsgIhCbshuLCIIAqICojWAiJo\nbetS9fNRpPWDVWpRKRVad8Vvq/ZnW4W6VbAVFRVBEJBgEsKSANn3PZklySz3/P4IGcMSEiDJneX1\nfDx4kOTeufOeO0leOeeee44khBAgIiKiAadSugAiIiJ/xRAmIiJSCEOYiIhIIQxhIiIihTCEiYiI\nFMIQJiIiUghDmBRTVlaGtLQ0LFmy5IxtK1euRFpaGhoaGvq9DovFgscffxxz587FvHnzcNNNN+G9\n995zb3/vvffwz3/+86KeY+/evRg3bhzmz5/v/nfttdfi3nvvRWNjY4+Pf/zxx5GbmwsA+O1vf4vd\nu3dfVD09sVgsWLRoEW644QZ89tlnF3ycGTNmYPbs2Zg/fz5uuukmXH/99bjxxhuxY8eOCz5mTk4O\nVq1adcGP7yueUgd5N43SBZB/0+v1KCoqQnl5OeLi4gAANpsNmZmZA1bDn/70JwQGBmLz5s2QJAnV\n1dVYuHAhBg8ejCuvvBKZmZlISUm56OdJTEzExx9/7P7c5XLhwQcfxJtvvolHHnnknI/dvXs3Fi5c\nCAB45plnLrqWnhw5cgT19fX44osvLvpY69evx9ixY92fb926FY899hi+/fbbCzre8ePHUV1dfdF1\nXSxPqYO8G0OYFKVWqzFnzhxs2bIF9957LwDg888/xzXXXIM333zTvd9XX32F1157DQ6HAwaDAY8+\n+ijGjx+Puro6rFq1CvX19aitrUVcXByef/55REREYMaMGViwYAG+++47VFZWYs6cOfjNb35zRg21\ntbWIiIiAw+GATqdDTEwMXnrpJYSGhuKLL77AV199hV27dsFgMGD27NnnfL5x48YhLy8Py5cvx8yZ\nM8/52i0WCxoaGpCRkQEAyMrKwrp162C321FbW4vJkydjzZo1eO6551BTU4MVK1bg2Wefxfr167Fk\nyRKMGTMGd955J6ZNm4bs7Gw0Nzfj4YcfxvXXX4/W1lb87ne/Q3Z2NkwmE4YPHw4AWLt2Ld555x1s\n3LgRWq0Wer0eq1evdm8HgIKCAjz22GOorq7G/PnzsWnTJnz77bd4+eWX4XK5YDQasXLlSowbNw4v\nvfQSsrKyUFNTg7S0NKxfv/6cr1kIgbKyMoSEhLi/9t577+Hdd9+FLMsIDQ3FE088geTkZOzfvx9r\n166FLMsAgHvuuQfjxo3Diy++CLPZjJUrV+KZZ57BmjVrkJ2dDavVCiEEnn76aUyYMAH/93//h5SU\nFPz85z8HgFM+P/290mg0eP3112G329HQ0ICbbroJDz30EPbu3YvnnnsOCQkJOHbsGOx2O1atWoWk\npKRT6nj88cexcuVKFBcXQ6VSYfTo0Vi9ejVUKnY2Ug8EkUJKS0tFenq6OHjwoJgzZ47763fccYfI\ny8sTqampor6+XhQWFoobb7xRNDQ0CCGEyM/PF1OmTBFWq1X87W9/E6+//roQQghZlsUvfvEL8cYb\nbwghhLj66qvF2rVrhRBCVFVVibFjx4qSkpIz6jhy5IiYNWuWGD9+vLjrrrvEyy+/LAoKCtzbH330\nUfHXv/5VCCF6fL6XX375rK91z549YuzYsWLevHnihhtuEBMnThQ33XSTeP3114XdbhdCCPHwww+L\nPXv2CCGEsFgs4oorrhAHDx50HzsnJ0cIIcTtt98uPv30U1FaWipSU1PFV199JYQQYuvWrWL69OlC\nCCHWr18vli9fLlwulzCbzWLu3Lni0UcfFU6nU4wePVpUV1cLIYT46KOPxMaNG89a7w033CCEEOL4\n8eNi8uTJ7nO3e/duMWXKFGE2m8WLL74oZs+eLRwOx1lf99VXXy1mzZol5s2bJ6666ioxdepUsXLl\nSvex9u7dK2677TZhs9mEEELs3LnT/b2wbNky8cknn7jfoyeffFIIIcQHH3wg7r77biGEEAcOHBAP\nPvigcLlcQgghXn/9dXHPPfec8b6d/nnX90qWZXH77beLwsJCIUTH98rIkSNFfX292LNnjxg5cqQ4\nfPiwEEKIN954QyxZsuSMOj766CNx1113CSGEcDqd4re//a0oKio66zkh6ootYVLcmDFjoFKpkJub\ni4iICFitVqSmprq379q1CzU1NbjzzjvdX5MkCSUlJbjjjjuwf/9+vPXWWygqKsKxY8dwySWXuPe7\n5pprAAAxMTGIiIhAc3MzEhISTnn+ESNGYOvWrTh06BC+//577Nq1Cxs2bMALL7yAGTNmnLJvT893\n6aWXdvs6u3ZHf/DBB3juuedwzTXXQKvVAuhope7YsQMbNmxAQUEB2traYLPZznnutFotpk2bBgAY\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# the mean star rating for restaurants\n", "sns.distplot(reviews_keep.groupby('business_id').mean()['stars'],rug=True)\n", "plt.xlabel('Mean Star Ratings')\n", "plt.title('Mean Star Ratings for Restaurants')\n", "\n", "plt.savefig('./fig/MeanRatings.png')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# we save the restaurants data and reviews data into csv for future analysis\n", "reviews_keep.to_csv('./data/reviews.csv')\n", "restaurants.to_csv('./data/restaurant.csv')" ] } ], "metadata": { "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.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }