探索性数据分析教程:分析班加罗尔的饮食文化

0
12341
该图片由Gerd Altmann在Pixabay上发布

探索性数据分析是一种通过使用图形,图表和表格来揭示变量之间重要关系的方法。探索性数据分析(EDA)是一项非常有用的技术,尤其是在处理大型未知数据集时。它可以让你 调查变量之间有趣的关系,研究数据的不同子集以解锁数据中的不同模式。

在这篇博客文章中,我们将讨论如何通过使用matplotlib创建超棒的可视化文件以及如何通过获取真实数据集来实现Seaborn来进行探索性数据分析。

导入库

为了进行数据可视化,我们将使用以下两个库:

广告Coursera Plus标语,包含约翰·霍普金斯大学,谷歌和密歇根大学的课程,突出显示数据科学职业发展的内容
  • matplotlib –Matplotlib是一个Python 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。
  • 海生的 –Seaborn是基于以下内容的Python数据可视化库 matplotlib。它提供了用于绘制引人入胜且内容丰富的统计图形的高级界面。
#import the libraries
import matplotlib.pyplot as plt
import 海生的 as sns
%matplotlib inline #to display graphs inline of jupyter notebook

数据集

对于此分析,我们将使用 佐马托 Bangalore餐厅 kaggle中存在的数据集。数据集包含截至2019年3月15日在Zomato网站上列出的餐厅的所有详细信息。

关于佐马托

佐马托 是一家印度餐厅搜索和发现服务,由Deepinder Goyal和Pankaj Chaddah于2008年成立。目前,它在24个国家/地区运营。它提供餐厅的信息和评论,包括餐厅没有自己的网站的菜单图像以及在线交付。

资源: 佐马托

数据语境

分析Zomato数据集的基本思想是对影响班加罗尔不同地方不同类型餐馆的建立因素有一个公正的认识。该Zomato数据旨在分析该位置的人口统计学。最重要的是,它将帮助新餐厅确定特定位置的主题,菜单,美食,成本等。它还旨在根据食物发现班加罗尔居民区之间的相似性。

1.加载数据

We will use pandas to read the dataset.

import pandas as pd
#load the data
zomato_data = pd.read_csv("../input/zomato.csv")
zomato_data.head() #looking at first five rows of the data

2.基本数据理解

让’首先,通过检查我们感兴趣的列的数据类型来了解基本数据。

#get the datatypes of the columns
zomato_data.dtypes

Only the variable votes is read as an integer, remaining 16 columns are read as objects. So the variables like rating, approx_cost(for two people) should be changed to integer if we want to perform any analysis on them.

如果要获取数据集中存在的所有列的列表:

zomato_data.columns #get the list of all the columns

3.数据清理& Data Manipulation

在本节中,我们将讨论一些基本的数据清除技术,例如检查重复值&处理缺失值。除了数据清理外,我们还将讨论一些操作技术,例如更改变量的数据类型,删除不需要的变量以及为方便重命名列。

#check for any duplicate values
zomato_data.duplicated().sum()

此数据集中没有重复的值。

#check for missing values
pd.DataFrame(round(zomato_data.isnull().sum()/zomato_data.shape[0] * 100,3), columns = ["Missing"])
缺少百分比数据。

变量 dish_liked as more than 54 % of missing data. If we drop the missing data, we would lose more than 50% of the data. To simplify the analysis, we will drop some of the columns that are not very useful like url, addressphone.

zomato_data.drop(["url", "address",  "phone"], axis = 1, inplace = True)

重命名几列以方便使用

zomato_data.rename(columns={"approx_cost(for two people)": "cost_two", "listed_in(type)":"service_type", "listed_in(city)":"serve_to"}, inplace = True)

As we have seen earlier that the variable cost_two has data type object which we need to convert to integer so that we can analyze the variable.

#converting the cost_two variable to int.
zomato_data.cost_two = zomato_data.cost_two.apply(lambda x: int(x.replace(',','')))
zomato_data.cost_two = zomato_data.cost_two.astype('int') 

To convert the variable to an integer we could simply use astype('int') but in this scenario, this method would not work because of the presence of a comma in between the numbers, eg. 2,500. To avoid this kind of problem, we are using lambdareplace function to replace comma (,) with nothing 和 then convert to integer.

4.可视化

在本节中,我们将通过使用seaborn和matplotlib创建多个可视化文件来分析数据。本文讨论的整个代码都存在于此 kaggle内核.

一种。计数图

Countplot本质上与barplot相同,不同之处在于它使用条形图显示每个类别分类中的观察计数。在我们的数据集中,让’检查存在的每个等级类别的计数。

#plot the count of rating.
plt.rcParams['figure.figsize'] = 14,7
sns.countplot(zomato_data["rate"], palette="Set1")
plt.title("Count plot of rate variable")
plt.show()

速率变量接近 正态分布,均值等于3.7。大多数餐厅的评分在3.5-4.2之间。很少有餐厅(〜350)的评分超过4.8。

b。联合图

Jointplot允许我们比较两个不同的变量,并查看这两个变量之间是否存在任何关系。通过使用联合图,我们可以通过在单个绘图网格中绘制两个不同变量的散点图(双变量)和分布图(单变量)来进行双变量和单变量分析。

#joint plot for 'rate' 和 'votes'
sns.jointplot(x = "rate", y = "votes", data = zomato_data, height=8, ratio=4, color="g")
plt.show()

From the scatter plot, we can infer that the restaurant with a high rating has more votes. The distribution plot of the variable votes on the right side indicates that the majority of votes pooled lie in the bucket of 1000-2500.

C。条形图

Barplot is one of the most commonly used graphic to represent the data. Barplot represents data in rectangular bars with length of the bar proportional to the value of the variable. We will analyze the variable location 和 see in which area most of the restaurants are located in Bangalore.

#analyze the number of restaurants in a location
zomato_data.location.value_counts().nlargest(10).plot(kind = "barh")
plt.title("Number of restaurants by location")
plt.xlabel("Count")
plt.show()

大多数餐厅都位于 BTM 布局面积使其成为班加罗尔最受欢迎的住宅和商业场所之一。

d。关联热图

相关性描述一对变量之间相互关联的强度。

#seaborn heatmap function to plot the correlation grid
sns.heatmap(zomato_data.corr(), annot = True, cmap = "viridis",linecolor='white',linewidths=1)
plt.show()

The correlation function corr calculates the 皮尔逊相关 在数值变量之间,它的值介于+1和-1之间,其中1是总的线性正相关性,0是没有线性的相关性,-1是总的负的线性相关性。

  • 具有在线订购设施的餐厅与平均成本成反比。
  • 提供提前预订桌的餐厅的平均费用较高。

进一步分析

在上一节中,我们已经看到了如何通过创建简单的可视化文件来执行基本数据分析。让’根据数据上下文进行进一步分析。

列出餐厅

让s see to in which area most of the restaurants are listed in or deliver to.

#restaurants serve to
zomato_data.serve_to.value_counts().nlargest(10).plot(kind = "barh")
plt.title("Number of restaurants listed in a particular location")
plt.xlabel("Count")
plt.show()

如预期的那样,大多数列出的餐厅都在(送达) BTM布局 因为该地区拥有4750多家餐厅。即使 科拉曼加拉第七街区 doesn’有许多餐厅,在送达该地点的餐厅数量方面排名第二。

网上订购

根据在线订购设施的可用性分析餐厅

#count plot for online_order analysis
sns.countplot(zomato_data["online_order"], palette = "Set2")
plt.show()

zomato中超过60%的餐厅提供在线订购选项,其余餐厅只能选择就餐。

在线订购设施是否会影响餐厅的评分?

sns.countplot(hue = zomato_data["online_order"], palette = "Set1", x = zomato_data["rate"])
plt.title("Distribution of restaurant rating over online order facility")
plt.show()

提供在线点菜设施的餐厅比传统餐厅的评分更高。这是有道理的,因为许多软件员工都留在班加罗尔,他们倾向于通过在线订购大量食品。

最大的连锁餐厅和最佳的连锁餐厅

plt.rcParams['figure.figsize'] = 14,7
plt.subplot(1,2,1)
zomato_data.name.value_counts().head().plot(kind = "barh", color = sns.color_palette("hls", 5))
plt.xlabel("Number of restaurants")
plt.title("Biggest Restaurant Chain (Top 5)")

plt.subplot(1,2,2)
zomato_data[zomato_data['rate']>=4.5]['name'].value_counts().nlargest(5).plot(kind = "barh", color = sns.color_palette("Paired"))
plt.xlabel("Number of restaurants")
plt.title("Best Restaurant Chain (Top 5) - Rating More than 4.5")
plt.tight_layout()

咖啡馆咖啡日连锁店(CaféCoffee Day)在整个城市有超过90家咖啡馆,它们在Zomato中列出。另一方面,松露–汉堡连锁店拥有最好的快餐店(百分之4.5以上),质量胜于数量。

下次访问班加罗尔时,或者如果您想在周末退房,请不要错过’别忘了在这里尝试食物 松露, 锤打中国大陆.

本文中讨论的代码位于 kaggle内核。分叉此内核,并尝试在同一数据集或另一个数据集上创建出色的可视化效果。

推荐读物

结论

在本文中,我们讨论了如何利用matplotlib和seaborn API创建漂亮的可视化文件来探索变量之间的关系。除此之外,我们了解了几种不同类型的图,可用于在项目讨论中向利益相关者展示您的发现。如果您在执行上述代码时遇到任何问题或疑问,请随时在下面的评论部分中提问或向我发送消息 领英 citing this 文章.


注意: 这是一个来宾帖子,本文中的观点属于来宾作者。如果您对发布的任何文章有任何疑问 请访问www.marktechpost.com,网址为: [电子邮件 protected]m  

广告

发表评论

请输入您的评论!
请在这里输入您的名字

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.