有一组关于全球星巴克门店的统计数据directory.csv,分析了在不同国家和地区以及中国不同城市的星巴克门店的数量。
要求:
(1)查看星巴克旗下有哪些品牌。如果我们只关心星巴克咖啡门店,则只需获取星巴克中Brand的数据集,并查看全世界一共有多少家星巴克门店。。
(2)查看全世界一共有多少个国家和地区开设了星巴克门店,显示门店数量排名前10和后10的国家和地区。
(3)显示拥有星巴克门店数量排名前10的城市。
(4)用柱状图绘制排名前10的分布,并在图中标注出星巴克门店数量最多的城市
(5)绘制星巴克门店数前10的城市分布柱状图。
(6)按照星巴克门店在中国的分布情况,统计排名前10的城市。
用饼状图显示星巴克门店的经营方式有哪几种?
数据集:
代码:
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('C:\\Users\86178\Downloads\\directory.csv')
# (1) 查看星巴克旗下有哪些品牌
starbucks_brands = data[data['Brand'] == 'Starbucks']
total_starbucks_stores = starbucks_brands.shape[0] #获取行数:shape[0]是DataFrame的属性,用于获取数据的行数,即门店数量。
print(f"全世界一共有{total_starbucks_stores}家星巴克门店")
# (2) 查看全世界一共有多少个国家和地区开设了星巴克门店,显示门店数量排名前10和后10的国家和地区
countries_count = starbucks_brands['Country'].nunique() #返回"Country"列中唯一值的数量,即不同国家/地区的数量。
top_countries = starbucks_brands['Country'].value_counts().head(10)
bottom_countries = starbucks_brands['Country'].value_counts().tail(10)
print(f"一共有{countries_count}个国家和地区开设了星巴克门店")
print("门店数量排名前10的国家和地区:")
print(top_countries)
print("门店数量排名后10的国家和地区:")
print(bottom_countries)
# (3) 显示拥有星巴克门店数量排名前10的城市
top_cities = starbucks_brands['City'].value_counts().head(10)
print("拥有星巴克门店数量排名前10的城市:")
print(top_cities)
# (4) 用柱状图绘制排名前10的分布,并在图中标注出星巴克门店数量最多的城市
plt.figure(figsize=(12, 6))
#设置中文字体为黑体
plt.rcParams['font.sans-serif'] = ['SimHei']
top_cities.plot(kind='bar')
plt.xlabel('城市')
plt.ylabel('门店数量')
plt.title('排名前10的城市星巴克门店数量分布')
plt.annotate(f"最多:{top_cities.index[0]}", xy=(0, top_cities.iloc[0]), xytext=(0, top_cities.iloc[0] + 100), arrowprops=dict(facecolor='black', shrink=0.05))
plt.show()
# (5) 绘制星巴克门店数前10的城市分布柱状图
plt.figure(figsize=(12, 6))
top_cities.plot(kind='bar')
plt.xlabel('城市')
plt.ylabel('门店数量')
plt.title('星巴克门店数前10的城市分布')
plt.show()
# (6) 按照星巴克门店在中国的分布情况,统计排名前10的城市
china_cities = starbucks_brands[starbucks_brands['Country'] == 'CN']
top_china_cities = china_cities['City'].value_counts().head(10)
print("中国拥有星巴克门店数量排名前10的城市:")
print(top_china_cities)
# (7) 用饼状图显示星巴克门店的经营方式有哪几种
ownership_types = starbucks_brands['Ownership Type'].value_counts()
plt.figure(figsize=(8, 8))
plt.pie(ownership_types, labels=ownership_types.index, autopct='%1.1f%%')
plt.title('星巴克门店的经营方式分布')
plt.show()
运行结果: