高血压专题网,内容丰富有趣,生活中的好帮手!
高血压专题网 > 基于pycharts星巴克门店分布可视化分析

基于pycharts星巴克门店分布可视化分析

时间:2022-01-11 08:29:54

相关推荐

基于pycharts星巴克门店分布可视化分析

# 导入项目所需的模块import pandas as pdfrom pyecharts.charts import *from pyecharts import options as opts

# 使用pandas读取数据df = pd.read_csv('directory.csv')df.head()

查看缺失值

df.isnull().sum()

del df['Phone Number']del df['Postcode']df.isnull().sum()

删除空值

df.dropna(inplace= True)

地理热力图

从热力图分布来看,星巴克门店主要还是集中于美国,其次在亚洲的日本,韩国,中国沿海地区也有不少分布;

非洲,大洋洲几乎看不到星巴克门店的存在,当然这其中的原因,有的是出于该地区的消费水平考虑,星巴克不愿去开设门店,比如非洲地区,有的是因为当地居民瞧不上星巴克这种“商业咖啡”,比如澳大利亚

#通过`pd.merge()`将数据进行关联,获取门店的所属国家信息;country_df = pd.read_excel('./abb_country.xlsx')df_new = pd.merge(df,country_df,left_on='Country',right_on='abb',how = 'left')# 数据分组计数,计算每个国家的门店数df_t = df_new.groupby(['Coun'])['Brand'].count().reset_index()df_t.head()df_t.columns = ['Coun', '计数']data_pair = [i for i in zip(df_t['Coun'],df_t['计数'])]

绘制星巴克全球门店

# 新建一个Mapchart = Map(init_opts=opts.InitOpts(theme='roma',width='680px',height='600px'))# # 添加数据chart.add("门店", # 系列名称data_pair,maptype = "world", # 地图类型——世界地图is_roam=False, # 关闭缩放,即不能通过滚轮放大缩小zoom=1.2, # 地图显示缩放比例is_map_symbol_show=False, # 不显示地图上的小红点label_opts=opts.LabelOpts(is_show=False) # 标签设置(国家的名称))chart.set_global_opts(# 标题设置title_opts=opts.TitleOpts(title="星巴克全球门店覆盖", # 主标题subtitle='数据截止日期:9月' # 副标题),# 图例设置legend_opts=opts.LegendOpts(is_show=False),# 视觉组件visualmap_opts=opts.VisualMapOpts(is_show=True, # 显示视觉组件的图例is_piecewise=True, # 颜色分段显示orient='vertical', # 图例的布局,设置为垂直布局pos_left='2%', # 图例显示位置pos_top='40%',range_text=['门店数量', ''], # 文本pieces=[{'min': 1000},{'min': 500,'max': 1000},{'min': 100,'max': 500},{'max': 100}], # 设置数值的分段range_color=["#CCD3D9", "#E6B6C2", "#D4587A", "#DC364C"] # 颜色范围),)chart.render_notebook()

城市分布

# 按中国城市分组计数temp = df.groupby('City')['Brand'].count().reset_index()temp.columns = ['City','计数']data_pair = [i for i in zip(temp['City'],temp['计数'])]data_pair.sort(key=lambda x: x[1], reverse=True) # 进行排序 降序 top_city = data_pair[:20][::-1] # 取20个 并且倒取# 新建一个Barchart = Bar(init_opts=opts.InitOpts(theme='light',width='980px',height='900px'))# 添加x轴数据chart.add_xaxis([x[0] for x in top_city])# # 添加y轴数据chart.add_yaxis("",[x[1] for x in top_city],# 标签设置label_opts=opts.LabelOpts(is_show=True, # 显示标签position='insideRight', # 显示位置formatter='{c}' , # 显示内容 {c}显示数值))chart.set_global_opts(title_opts=opts.TitleOpts( # 标题设置title="星巴克门店最多20个城市",subtitle='数据截止日期:2月'),)# # xy轴翻转chart.reversal_axis()chart.render_notebook()

门店所有权占比¶

Company Owned:公司独资直营,这也是星巴克门店最多的经营方式;Licensed: 许可经营;Joint Venture: 合资经营,比如:国内江浙沪地区的星巴克最早就是由星巴克与统一集团联手经营,7月的时候星巴克已收回所有权;Franchise:授权经营,类似麦当劳的经营模式;

# 分组计数,计算门店不同所有权的门店数量df_t = df.groupby('Ownership Type')['Brand'].count().reset_index()df_t.columns = ['经营方式', '计数']data_pair = [i for i in zip(df_t['经营方式'],df_t['计数'])]# 数据排序data_pair.sort(key=lambda x: x[1], reverse=True) # 进行排序 降序 # 新建一个饼图chart = Pie(init_opts=opts.InitOpts(theme='light',width='680px',height='500px',bg_color='white'))# 添加数据chart.add('',data_pair,radius=["10%", "45%"], # 内外径设置rosetype="area", # 通过半径展示占比label_opts=opts.LabelOpts(formatter="{b}: {d}%") # 标签设置)chart.set_global_opts(# 标题设置title_opts=opts.TitleOpts(title="星巴克门店门店所有权分布",subtitle='数据截止日期:2月'),# 图例设置legend_opts=opts.LegendOpts(is_show=True,pos_left='left',pos_top='10%',orient='vertical',),)chart.render_notebook()

星巴克国内门店最多10个城市

# 使用pandas读取数据df = pd.read_csv('directory.csv')df_20 = df[df['Country']=='CN'].groupby('City')['Brand'].count().reset_index().sort_values('Brand',ascending=False).head(20)df_20.columns = ['City','计数']data_pair = [i for i in zip(df_20['City'].to_list(),df_20['计数'].to_list())]top_city = sorted(data_pair, key=lambda x: x[1], reverse=True)[:10][::-1]# 新建一个Barchart = Bar(init_opts=opts.InitOpts(theme='chalk',width='980px',height='900px'))# 添加x轴数据chart.add_xaxis([x[0] for x in top_city]) # 元组的0索引# 添加y轴数据chart.add_yaxis("",[x[1] for x in top_city], # 元组的1索引 # 标签设置label_opts=opts.LabelOpts(is_show=True, # 显示标签position='insideRight', # 显示位置formatter='{c}' # 显示内容 {c}显示数值))chart.set_global_opts(title_opts=opts.TitleOpts( # 标题设置title="星巴克国内门店最多10个城市",subtitle='数据截止日期:2月'),xaxis_opts=opts.AxisOpts(is_show=False), # x轴位置显示在上方)# xy轴翻转chart.reversal_axis()chart.render_notebook()

星巴克国内门店分布

# 新建GEO实例geo = Geo(init_opts=opts.InitOpts(theme='dark',width='980px',height='600px'))data_pair = []for idx, row in df[df['Country']=='CN'].iterrows(): # # 需要添加自定义坐标点(坐标的那个点 ,经度,维度 )geo.add_coordinate(row['Store Number'], row['Longitude'], row['Latitude'])# 点数据存放再datapair中data_pair.append([row['Store Number'], 1]) # 1 表示一个数 # 添加地图 geo.add_schema(maptype="china",zoom=1.5, # 地图缩放比例)geo.add('', # 系列名称data_pair,type_='heatmap', # type选择heatmapis_large=True, # 当图表数据量大时可设置为True,进行优化blur_size=4, # 光晕大小point_size=3, # 点的大小 可参考文章/qq_27484665/article/details/117395302)geo.set_global_opts(# 标题设置title_opts=opts.TitleOpts(title="星巴克国内门店分布", pos_top='3%', pos_left='center', title_textstyle_opts=opts.TextStyleOpts(color='red', font_size=20) # 标题字体风格设置),# 视觉组件设置,默认通过颜色完成映射visualmap_opts=opts.VisualMapOpts(is_show=True, # 关闭组件框的显示max_=10, # 映射数据的范围最大值range_color=['blue', 'blue', 'green', 'yellow', 'red'] # 颜色范围),)# print(data_pair)geo.render_notebook()

由图可见,星巴克在中国主要分布在沿海地区以及四川、重庆、武汉和北京

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。