数据集下载

链接:https://pan.baidu.com/s/1rUfj7NYYAnM3NuFWCHyPpA 密码:ux8z

在昨天发的文章里提到了yelp数据集,官网显示"Yelp数据集是我们用于个人,教育和学术目的的业务,评论和用户数据的子集。 以JSON文件形式提供,可用于在学习如何制作移动应用程序的同时,向学生介绍数据库,学习NLP或提供示例生产数据。"

yelp官网显示,这个数据集亮点如下:

  • 668+w条评论
  • 19+w个商业机构
  • 20w张图片
  • 10个都市区域
  • 字段包括:营业时间、是否泊车、可用性和环境

在kaggle上也能看到使用这个数据集的案例,说不定有你需要的分析方法。

我已经从yelp官网下载了数据, 参照kaggle的很多例子,咱们也在自己电脑上跑跑简单的分析

business数据读取

kaggle中的数据是csv文件,咱这里是json,略有不同,但读取都可以用pandas读取

import pandas as pd

#一开始用注释掉的代码,有bug,经过百度找到lines=True解决方案
#business = pd.read_json('yelp_dataset/business.json')
business = pd.read_json('yelp_dataset/business.json', lines=True)
business.head()

评分分布

import seaborn as sns
sns.color_palette()
[(0.12156862745098039, 0.4666666666666667, 0.7058823529411765),
 (1.0, 0.4980392156862745, 0.054901960784313725),
 (0.17254901960784313, 0.6274509803921569, 0.17254901960784313),
 (0.8392156862745098, 0.15294117647058825, 0.1568627450980392),
 (0.5803921568627451, 0.403921568627451, 0.7411764705882353),
 (0.5490196078431373, 0.33725490196078434, 0.29411764705882354),
 (0.8901960784313725, 0.4666666666666667, 0.7607843137254902),
 (0.4980392156862745, 0.4980392156862745, 0.4980392156862745),
 (0.7372549019607844, 0.7411764705882353, 0.13333333333333333),
 (0.09019607843137255, 0.7450980392156863, 0.8117647058823529)]
import matplotlib.pyplot as plt
import seaborn as sns

colors = sns.color_palette()
rating = business['stars'].value_counts()
rating.sort_index(inplace=True)
rating.plot(kind='bar', 
            figsize=(10, 5),
            color=colors[:9],
            rot=0) #字体倾斜角度
plt.title('Rating Distribution of Yelp',fontweight='bold')
plt.show()

行业统计

查看行业店家数量分布

import numpy as np

business['categories'] = business['categories'].apply(lambda x: x if x else ' ')
category_str = ','.join(business['categories'])
category_list = category_str.split(',')
category_df = pd.DataFrame(category_list, columns=['category'])
top15_category = category_df['category'].value_counts()[:15]
top15_category
top15_category.plot(kind='bar',
                    color=colors[:20],
                    figsize=(20, 10), 
                    rot=30,
                    fontsize=20)
plt.title('Top 20 Category in Yelp',
          fontsize=25, 
          fontweight='bold')
plt.show()

城市分布

显示yelp中Top20城

citys = business['city'].value_counts()[:20]
citys.sort_values(ascending=True, inplace=True)#降序,原地修改原始数据
citys.plot(kind='barh',   #水平条形图
           figsize=(10, 15),
           fontsize=20,
           color=colors[:20])
plt.title('Top 20 city in the Yelp', 
          fontsize=20, 
          fontweight='bold')
plt.show()



广而告之