文章中的素材directory.csv下载链接
链接:https://pan.baidu.com/s/12q4U_U99IKbqwU1_bB_HQQ
提取码:8zm9
本实训是针对一组关于全球星巴克门店的统计数据,分析在不同的国家和地区以及中国不同城市的星巴克门店的数量
一、导入模块
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#显示中文
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
二、获取数据模块
#导入数据
dt = pd.read_csv('data//directory.csv')
print(data.tail(2))
三、数据分析及可视化模块
1、查看全世界星巴克一共有多少家门店
count = dt.Brand.value_counts()
print('星巴克旗下的品牌有:\n',count)
输出结果:
2、每个国家开设店铺的数量
查看全世界一共有多少个国家和地区开设了星巴克门店,
df = dt.groupby(['Country']).size()
print('每个国家开设星巴克门店的数量:\n',df)
print('有多少个国家开设了星巴克门店:\n',df.size)
3、显示门店数量排名前10和后10的国家和地区
#按值进行降序排序
df1 =df.sort_values(ascending=False)
print('开设门店排名前10的国家:\n',df1.head(10))
print('开设门店排名后10的国家:\n',df1.tail(10))
4、用柱状图绘制门店数量排名前10的国家的分布情况
plt.rcParams['font.size'] = 12
df1.head(10).plot(kind='bar')
plt.title('星巴克门店排名前10的国家分布图')
plt.xlabel('国家地区')
plt.ylabel('门店数量')
plt.show()
输出结果:
5、显示拥有星巴克门店数量排名前10的城市的分布 情况
#按城市分组,统计每个城市的数量
df2 = dt.groupby(['City']).size()
#降序排序
df_city =df2.sort_values(ascending=False)
plt.rcParams['font.size'] = 12
#前10的城市绘制柱状图
df_city.head(10).plot(kind='bar')
plt.title('星巴克门店排名前10的城市分布图')
plt.xlabel('城市')
plt.ylabel('门店数量')
#显示出来
plt.show()
输出结果:
6、统计星巴克门店在中国的分布情况,统计排名前5的城市
首先需要将中国的城市名去掉市,改为拼音,例如 上海市----shanghai
需要导入第三方插件包(添加方式同上)
#删除空值
start = dt.dropna(how='any',subset=['City'])
#查找中国的数据
df = start[start['Country']=='CN']
#拷贝一份
df1 = df.copy()
#将城市的名改为小写
#df1['City'] = df1['City'].apply(lambda x:x.lower)
#将汉字城市名改为小写拼音,去掉'市'的拼音
df1['City'] = df1['City'].apply(lambda x:pinyin.get(x,format='strip',delimiter='')[0:-3])
#统计每个城市的星巴克门店数量
df1_city=df1.groupby(['City']).size()
df1_city_sort = df1_city.sort_values(ascending=False)
print(df1_city_sort.head(10))
输出结果:
7、用柱状图绘制中国星巴克数量排名前10的分布城市
df1_city_sort.head(10).plot(kind='bar',rot=30)
plt.title('星巴克门排名前10的城市')
plt.ylabel('门店的数量')
plt.xlabel('城市')
plt.show()
输出结果:
8、用饼状图显示星巴克门店的经营方式有哪几种
ownership = dt['Ownership Type'].value_counts()
print(ownership)
plt.title('星巴克门店所有权类型:\n')
ownership.plot(kind='pie')
plt.show()