pyecharts实现星巴克门店分布可视化分析
AwesomeTang 人气:2项目介绍
使用pyecharts对星巴克门店分布进行可视化分析:
- 全球门店分布/拥有星巴克门店最多的10个国家或地区;
- 拥有星巴克门店最多的10个城市;
- 门店所有权占比;
- 中国地区门店分布热点图。
数据背景
该数据集来源Kaggle,囊括了截至2017/2月份全球星巴克门店的基础信息,其中包括品牌名称、门牌地址、所在国家、经纬度等一系列详细的信息。
数据说明
字段名称 | 类型 | 解释说明 |
---|---|---|
Brand | Object | 品牌名称,数据字典中包含了星巴克旗下的子品牌 |
Store Number | Object | 门店编号,独立且唯一 |
Store Name | Object | 门店名称,示例:“北京建国门内大街店” |
Ownership Type | Object | 门店所有权类型,如:Company Owned |
Street Address | Object | 门店所在的街道地址 |
City | Object | 门店所在的城市名称 |
State/Province | Object | 门店所在的省份地区 |
Country | Object | 门店所在的国家或地区,如:US,代表美国 |
Postcode | Object | 门店所在地址的邮政编码 |
Phone Number | Object | 门店的联系电话 |
Timezone | Object | 门店所在地的时区 |
Longitude | Float64 | 门店地址的经度 |
Latitude | Float64 | 门店地址的纬度 |
可视化
- 导入包以及数据
import pyecharts
import pandas as pd
import warnings
warnings.filterwarnings("ignore")
data = pd.read_csv('directory.csv')
#读取文件
Country = pd.read_csv('Country.csv')
#用于替换星巴克门店信息中Country字段简写
data = pd.merge(data,Country,left_on='Country',right_on='国际域名缩写',how = 'left')
星巴克门店全球分布
- 截止数据采集时间,目前星巴克总共在全球73个国家和地区设有门店,合计25249家。
temp = data.groupby('Countries and Regions')['Brand'].count().reset_index()
temp.columns = ['国家或地区','计数']
Map = pyecharts.Map("世界地图 - 不带标记点")
Map.add("国家或地区",temp['国家或地区'], temp['计数'], maptype="world", is_visualmap=True,style='heatmap',
is_map_symbol_show=False, visual_text_color='#000')
Map
- 我们可以看见,门店主要还是集中在美洲,亚洲,欧洲,非洲目前只有摩洛哥,埃及和南非设有门店。
- 另外有意思的一点,整个澳大利亚只有22家星巴克门店,难道是澳大利亚人不爱喝咖啡吗,其实正好相反,因为澳大利亚人太钟爱咖啡了,澳大利亚人对咖啡的讲究,就像中国人对茶的挑剔一样,对于星巴克这种过于商业化的连锁品牌有些难以生存。
- 其实除了澳大利亚其实还有一个国家更过分,只是由于面积小不容易被注意到,那就是意大利,一家星巴克也没有(查了一下新闻,星巴克似乎17年3月在意大利开设了一家)。
拥有星巴克门店最多的10个国家或地区
temp = data.groupby('City')['Brand'].count().reset_index()
temp = temp.nlargest(10,'Brand')
temp.columns = ['城市','计数']
bar = pyecharts.Bar("星巴克门店数量TOP10城市", "来源:kaggle",width=1200,height=600)
bar.add("门店数量", temp['城市'], temp['计数'],mark_point=['max'])
bar
- 毕竟是美国的品牌,美国星巴克门店数量还是远多于其他国家,其次是我们国家,总计2734家,目前应该更多了。
拥有星巴克门店最多10个城市
- 看到上面的统计,我们可能会想到拥有星巴克门店最多的城市应该是纽约或者洛杉矶这些美国的超级城市,其实最后统计结果还有点意外。
temp = data.groupby('City')['Brand'].count().reset_index()
temp = temp.nlargest(10,'Brand')
temp.columns = ['城市','计数']
bar = pyecharts.Bar("星巴克门店数量TOP10城市", "来源:kaggle",width=1200,height=600)
#bar.use_theme('vintage')
bar.add("门店数量", temp['城市'], temp['计数'],mark_point=['max'])
bar
- 排名第一的既不是纽约也不是洛杉矶,而是上海,拥有542家星巴克门店远远领先其他城市;
- 第二是首尔,韩国5000W人口拥有近1000家星巴克门店,首尔出现在第二的位置不算意外,第三是北京,第四才是美国的纽约。
- 第10名西雅图,是星巴克总部所在地,除了这个原因,也许西雅图程序员也贡献了不少营业额。
所有权分布
这个需要提前解释一下,目前星巴克门店的经营方式氛围如下4类:
- Company Owned:公司独资直营,这也是星巴克门店最多的经营方式
- Licensed: 许可经营
- Joint Venture: 合资经营,比如:国内江浙沪地区的星巴克最早就是由星巴克与统一集团联手经营,17年7月的时候星巴克已收回所有权
- Franchise:授权经营,类似麦当劳的经营模式
temp = data.groupby('Ownership Type')['Brand'].count().reset_index()
temp = temp.nlargest(10,'Brand')
temp.columns = ['Ownership Type','计数']
chart = pyecharts.Pie("星巴克门店所有权分布", "来源:kaggle", title_pos='center')
chart.add("占比", temp['Ownership Type'], temp['计数'], is_random=True,
radius=[30, 75], rosetype='radius',
is_legend_show=False, is_label_show=True)
chart
中国区分布
- 我们接下来通过热点图看下星巴克门店在中国区内的分布情况;
temp = data[data['Country']=='CN'].groupby('City')['Brand'].count().reset_index()
#防坑,门店信息中城市格式不统一,无法使用pyecharts自带的经纬度,自定义添加门店文件自带的经纬度
position = dict(zip(data['City'].values,data[['Longitude','Latitude']].values.tolist()))
chart = pyecharts.Geo("全国门店分布热点图", "来源:Kaggle", title_color="#fff", title_pos="center",
width=800, height=600, background_color='#404a59')
chart.add("", temp['City'], temp['Brand'], visual_range=[0, 80], type='heatmap',
visual_text_color="#fff", is_visualmap=True,is_legend_show=False,
geo_cities_coords = position)
chart
- 毫无意外的最红的三个区域——长三角,珠三角和北京;
- 中部城市以成都/武汉为首。
- TOP20榜单,看看有没有你所在的城市:
城市 | 数量 |
---|---|
上海市 | 542 |
北京市 | 234 |
杭州市 | 117 |
深圳市 | 113 |
广州市 | 106 |
香港 | 104 |
成都市 | 98 |
苏州市 | 90 |
南京市 | 73 |
武汉市 | 67 |
宁波市 | 59 |
天津市 | 58 |
重庆市 | 41 |
无锡市 | 40 |
西安市 | 40 |
佛山市 | 33 |
东莞市 | 31 |
厦门市 | 31 |
青岛市 | 28 |
常州市 | 26 |
最后
总体来说,星巴克门店主要还是分布在发达国家和地区,当然也与不同国家地区的文化有关,我们还是不能武断地因为哪个城市,哪个国家星巴克更多就断定更发达。
另外echarts是由百度团队开发的JavaScript可视化图表库,目前python中可以直接通过pyecharts调用,除了丰富的图表还具有传统图表不具有的交互性,强烈推荐各位使用。
---
skr~skr~~~
加载全部内容