CDA数据分析师出品:米卡、振达数据:振达后期:泽龙【导读】今天我们用数据来说说虾的味道。给我看数据,用数据说话。今天我们就来说说虾的味道。说起湖南这个地方,大家一定会想到各种美食。最常听到的就是臭豆腐,外焦里嫩。闻起来臭,吃起来香,咬一口回味无穷。还有香甜软糯的糖油糕,糯米炸至金黄,裹上糖水。还有香辣虾,也叫麻辣小龙虾。夏天约上三五好友,来几盘香喷喷的虾,配上啤酒,肥宅的生活就这么幸福开始了,味道麻辣爽口,吃一口还想再吃一口!在湖南,没有美味虾的夏天是不完整的。那么湖南吃货喜欢吃什么口味的虾呢?今天我们就用数据来看一下。我们使用Python获取了大众点评长沙虾仁店的相关信息,并进行了数据分析。整体流程如下:网络数据获取、数据读取、数据探索与可视化K-means聚类分析01数据读取,首先导入需要的包,读入到抓取的数据集中。`#importpackageimportnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportseabornassnsimportjiebafrompyecharts.chartsimportBar,Pie,Pagefrompyechartsimportoptionsasoptsfrompyecharts.globalhowTypeWarningTypeWarningTypeWarningSymb=Falseimportplotly.expressaspximportplotly.graph_objectsasgo这个数据集总共包含来自50个搜索页面的745条数据。字段包括:餐厅名称、星级、星级、评论数、人均消费、推荐菜品、口味、环境和服务评分。数据预览如下:`#读取数据df=pd.read_excel('../data/长沙小龙虾数据.xlsx')df.drop('detail_url',axis=1,inplace=True)df.head()`02数据预处理这里我们对数据进行如下处理,以供后面分析。title:去除前后符号star:提取星级score:提取值并转化为类别comment_list:提取口味、环境、服务评分,删除多余的行和列`#star转换transform_star={20:'二星级',30:'三星级',35:'准四星级',40:'四星级',45:'准五星级',50:'五星级'}处理titledf['title']=df['title'].str.replace(r"\[\'|\'\]","")star进程df['star']=df.star.str.extract(r'(\d+)')[0].astype('int')df['star_label']=df.star.map(transform_star)处理scoredf['score']=df['score']。str.replace(r"\[\'|\'\]","").replace("[]",np.nan)df['score']=df['score'].astype('float')味道df['taste']=df.comment_list.str.split(',').str[0].str.extract(r'(\d+\.*\d+)').astype('float')环境df['environment']=df.comment_list.str.split(',').str[1].str.extract(r'(\d+\.*\d+)').astype('float')服务df['服务']=df.comment_list.str.split(',').str[1].str.extract(r'(\d+\.*\d+)').astype('float')删除列df.drop('comment_list',axis=1,inplace=True)删除行df.dropna(subset=['taste'],axis=0,inplace=True)Deletedfwithfewrecords=df[df.star!=20]`处理后的数据如下,分析样本为560条。df.head()03数据可视化以下为部分可视化代码:1.不同星级的店铺数量分布准四星商户数量最多,占比高达65%,准四星商户占比18%四星级及以上的商户。其中,五星级商户数量最少。只有10个。`#生成数据star_num=df.star.value_counts().sort_index(ascending=True)x_data=star_num.index.map(transform_star).tolist()y_data=star_num.values.tolist()条形图bar1=Bar(init_opts=opts.InitOpts(width='1350px',height='750px'))bar1.add_xaxis(x_data)bar1.add_yaxis('',y_data)bar1.set_global_opts(title_opts=opts.TitleOpts(title='不同星级的商户数量分布'),visualmap_opts=opts.VisualMapOpts(max_=365)bar1.render()`2店铺评论的分布我们假设评论的数量是店铺的受欢迎程度,即越热就是,消费者越多,评论数越多。从直方图可以看出,数据呈现出比较严重的右偏分布,只有两家评论超过10000条。长沙网红查-到位,国庆一天16000+人次的超级网红龙虾餐厅,难怪人气这么高。`#Histogrampx.histogram(data_frame=df,x='review_num',color='star_label',histfunc='sum',title='不同星级的评论数',nbins=20,width=1150,height=750)`3人均价格区间分布我们画了一个各店口味虾的人均消费价格分布直方图,发现价格分布在20-180元之间,人均消费的大部分是在67-111元范围内。推而广之,人均消费和商家的星级有关系吗?`#直方图px.histogram(data_frame=df,x='mean_price',color='star_label',histfunc='sum',title='小龙虾人均消费价格分布',nbins=20,width=1150,height=750)`4不同星级店铺与价格等因素的关系数据。从图中可以看出,不同星级和价格的分布存在显着差异,星级越高,平均消费价格越高。`#小提琴图plt.figure(figsize=(15,8))sns.violinplot(x='star_label',y='mean_price',data=df,Order=['five-star','quasi-five-星级','四星级','准四星级','三星级']);plt.title('不同星级与价格的关系',fontsize=20)plt.show()`我们期望不同星级与其他打分项之间的关系,星级越高,得分越高品味、环境和服务,人气越高。绘制的箱线图也可以验证我们的假设。那么店铺评分与口味、环境、服务、评论数、均价有关系吗?接下来我们画个多元图看看。4数值变量关系多元图用于探究数值变量之间的关系。从多变量图中可以看出,店铺评分与口味、环境、服务评分呈显着线性相关,这也与前面的验证一致。;店铺评分与人均消费价格、点评数量无显着关系;口味、环境、服务评分之间存在显着的正相关关系,三者均相同。`#多元图sns.pairplot(data=df[['score','review_num','mean_price','taste','environment','service','star_label']],hue='star_label')plt.show()`数值变量之间的相关系数为了验证上述可视化结果,我们通过Python计算数值变量之间的皮尔逊相关系数。根据经验,当|r|>=0.8时,可以认为是高相关。从热力图中也可以得出上述结论。`#相关系数data_corr=df[['score','review_num','mean_price','taste','environment','service']].corr()热图plt.figure(figsize=(15,10))sns.heatmap(data_corr,linewidths=0.1,cmap='tab20c_r',annot=True)plt.title('数值变量之间的相关系数',fontdict={'fontsize':'xx-large','fontweight':'heavy'})plt.xticks(fontsize=12)plt.yticks(fontsize=12)plt.show()`5推荐菜品词云图假设该店的推荐菜品是不同店家的热门菜品,我们用jieba对推荐菜品进行分割,绘制词云图:发现“卤虾”、“入味虾”、“油炸虾”是大家喜欢点的热门菜品。此外,点风味虾时,还喜欢点“风味花甲”、“凤爪”、“酥油”等菜品。6K-meansClusterAnalysisClusterProportion聚类分析用于对样本进行聚类。同一簇内成员的相似性越高越好,不同簇间成员的相异性越高越好。我们使用Python进行K-means聚类,并对数值变量进行聚类:评分、评论数、平均价格、口味、环境和服务评论。这里K为3,以上三组中,强烈推荐的公司有3家,一般推荐的公司有459家,不推荐的公司有97家。我们来看看这三组的描述性统计:K-means聚类分析分布上面是不同聚类的直方图分布。通过集群分布图,可以总结如下:强烈推荐:评分最高,评论数最多,价格最高一般推荐:评分居中,评论数居中,价格在中间。非常不推荐:评分最低,评论数最低,价格最低。因为聚类分析的时候去掉了一个评论数为30509.0的异常样本。加上这个样本,我们得到了最终推荐的四家店铺:最后附上大众点评上人气最高的10家虾店。看看有没有你种草的店。想要获取完整数据,可以私信或留言。.
