【Python】星巴克门店数据可视化
数据源下载地址:https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/%E6%96%87%E4%BB%B6/data.csv
题目要求
1、有柱形图展示全球星马克数量前十的国家/地区(注:中国的数据必须包括港澳台地区)
2、用条形图展示全球星巴克数量前十的城市
3、用柱形图展示中国内地星巴克前十的城市(注:中国内地专指中华人民共和国除港澳台地区外的领土范围)
输出结果
源代码
import pandas as pd
import matplotlib.pyplot as plt
# 正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.family'] = 'sans-serif'
# 20302211009 何壮壮
data_all = pd.read_csv('data.csv', encoding='gbk')
data = data_all
# 将台湾、澳门、香港地区Country属性修改为‘CN’
data[(data['Country'] == 'TW')
| (data['Country'] == 'MO')
| (data['Country'] == 'HK')] = 'CN'
# 用柱形图展示全球星马克数量前十的国家
top_ten_country = data.groupby(['Country']).count()["Store Number"].sort_values(ascending=False)[:10]
top_ten_country.columns = ['国家', '门店数量']
plt.figure(figsize=(20, 10))
# 柱形图颜色
# colors = ['', '', '', '', '', '', '', '', '', '']
colors = ['#bc80bd', '#d9d9d9', '#fccde5', '#b3de69', '#fdb462', '#80b1d3', '#fb8072', '#bebada', '#ffffb3', '#8dd3c7']
plt.bar(top_ten_country.index, top_ten_country, color=colors)
plt.grid(linestyle=':', alpha=0.5, color='#ED556A')
plt.xlabel(top_ten_country.columns[0], fontsize=25, color='#ff7f00')
plt.ylabel(top_ten_country.columns[1], fontsize=25, color='#ff7f00')
plt.xticks(fontsize=20, color='#b2df8a')
plt.yticks(fontsize=20, color='#b2df8a')
plt.title('全球星巴克数量前十的国家', fontsize=30, color='#ff7f00')
# 去掉边框线
plt.gca().spines[:].set_color('#fff')
# 显示数据标签
i = 0
for a, b in zip(top_ten_country.index, top_ten_country):
plt.text(a, b, b, ha='center', va='bottom', color=colors[i], fontsize=15)
i += 1
plt.show()
# 柱形图展示全球星巴克数量前十的城市
top_ten_city = data.groupby(['City']).count()["Store Number"].sort_values(ascending=False)[:10]
top_ten_city.columns = ['门店数量', '城市']
plt.figure(figsize=(20, 10))
# 柱形图颜色
# colors = ['#', '#', '#', '#', '#', '#', '#', '#', '#', '#']
colors = ['#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2']
plt.barh(top_ten_city.index, top_ten_city, color=colors)
plt.grid(linestyle=':', alpha=0.5, color='#ED556A')
plt.xlabel(top_ten_city.columns[0], fontsize=25, color='#f46d43')
plt.ylabel(top_ten_city.columns[1], fontsize=25, color='#f46d43')
plt.xticks(fontsize=20, color='#f46d43')
plt.yticks(fontsize=20, color='#f46d43')
plt.title('全球星巴克数量前十的城市', fontsize=30, color='#f46d43')
# 设置边框线为白色
plt.gca().spines[:].set_color('#fff')
plt.show()
# 用柱形图展示中国内地星巴克前十的城市
# # 提取中国内地门店数据(去除港澳台地区数据)
data_cn = data_all[(data_all['Country'] == 'CN')
& (data_all['State/Province'] != '71')
& (data_all['State/Province'] != '81')
& (data_all['State/Province'] != '82')
& (data_all['State/Province'] != '83')]
print(data_cn['State/Province'].unique())
# # 查询国内前十
cn_top_ten = data_cn.groupby(['City']).count()["Store Number"].sort_values(ascending=False)[:10]
cn_top_ten.columns = ['门店数量', '城市']
plt.figure(figsize=(20, 10))
# 柱形图颜色
# colors = ['#', '#', '#', '#', '#', '#', '#', '#', '#', '#']
colors = ['#67000d', '#80002d', '#a50f15', '#cb181d', '#ef3b2c', '#fb6a4a', '#fc9272', '#fcbba1', '#fee0d2', '#fff5f0']
plt.bar(cn_top_ten.index, cn_top_ten, color=colors)
plt.grid(linestyle=':', alpha=0.5, color='#ED556A')
plt.xlabel(cn_top_ten.columns[0], fontsize=25, color='#f46d43')
plt.ylabel(cn_top_ten.columns[1], fontsize=25, color='#f46d43')
plt.xticks(fontsize=20, color='#f46d43')
plt.yticks(fontsize=20, color='#f46d43')
plt.title('中国大陆星巴克数量前十的城市', fontsize=30, color='#f46d43')
# 设置边框线为白色
plt.gca().spines[:].set_color('#fff')
# 显示数据标签
i = 0
for a, b in zip(cn_top_ten.index, cn_top_ten):
plt.text(a, b, b, ha='center', va='bottom', color=colors[i], fontsize=15)
i += 1
plt.show()
plt.text(a, b, b, ha='center', va='bottom', color=colors[i], fontsize=15)
i += 1
plt.show()