163Python数据分析师课程考核项目04
多场景下的图表可视化表达
excel数据概览
运动员信息
运动员CP热度
题目1
2016年奥运运动员数据,数据格式为xlsx,分3个sheet
1、分男女分别分析运动员的身高分布,并制作图表,数据为“奥运运动员数据.xlsx,sheet → 运动员信息”
要求:
① 制作分布密度图② 计算出男女平均身高,并绘制辅助线表示
提示:
① 可视化制图方法 → sns.distplot()② 辅助线制图方法 → plt.axvline()③ 分男女分别筛选数据并制作图表④ 不需要创建函数
题目1思路
1. 创建工作路径,查看读取数据。
2. 提取身高信息,提取性别和身高,去除空值。
3. 根据男女分类,reset_index()重新设置标签
4. 计算平均值
5. 绘制分布密度图,创建绘图区域,设置图表大小,绘制平均身高辅助线。
题目1 代码
# 1. 创建工作路径,查看读取数据。
import os
os.chdir('C:\\Users\\WQQ\\Desktop\\163data\\项目题目和项目答案\\考核项目04_多场景下的图表可视化表达\\')
df=pd.read_excel('奥运运动员数据.xlsx',sheetname='运动员信息')
df_len=len(df)
df_col=df.columns.tolist()
# 2. 提取身高信息,提取性别和身高,去除空值。
data_height=pd.DataFrame(df['gender'],df['height'])
data_height.dropna(inplace=True)
# 3. 根据男女分类,reset_index()重新设置标签
data_male=data_height.groupby(['gender']).get_group('男').reset_index()
data_famale=data_height.groupby(['gender']).get_group('女').reset_index()
# 4. 计算平均值
male_mean=data_male['height'].mean()
famale_mean=data_famale['height'].mean()
print('男性运动员平均身高:%i,\n女性运动员平均身高:%i'
%(male_mean,famale_mean))
5. 绘制分布密度图,创建绘图区域,设置图表大小,绘制平均身高辅助线。
plt.figure(figsize=(6,4))
sns.distplot(data_male['height'],hist=False,kde=True,rug=True,color='blue',axlabel='运动员身高',label='男性运动员身高分布')
sns.distplot(data_famale['height'],hist=False,kde=True,rug=True,color='red',axlabel='运动员身高',abel='女性运动员身高分布')
plt.grid()
plt.axvline(male_mean,color='blue',linestyle=':')
plt.text(male_mean+2,0.005,'男性运动员身高平均值:%i' %male_mean,color='blue')
plt.axvline(famale_mean,color=