Python数据分析之--运动员数据揭秘(一)

      在网易云课堂看了城市数据团的课程,对理解利用pytthon进行数据分析的基本流程很有帮助,因此进行复盘总结,加深自己的理解,巩固相关操作。

分析资料及工具:Spyder/Python3.6/Excle/奥运运动员数据.xlsx

声明:分析所用数据来自城市数据团(2016年的历史数据)

      我也有用Excle对数据进行简单分析,结果见运动员数据可视化

分析主题:运动员身高揭秘

首先给大家看看,用python分析所绘制的结果图:


      好了现在步入正题,打开Spyder新建文件,开启数据分析之旅。

首先导入相关工具包并创建好工作路径

import numpy as np               # numpy - Python的数值计算扩展工具包
import pandas as pd              # pandas - 基于Numpy的数据处理工具包
import matplotlib.pyplot as plt  # matplotlib - Python的绘图工具包
import seaborn as sns            # seaborn - matplotlib基础上的高级可视化工具包
import os
os.chdir('C:\\Users\\lenovo\\Desktop\\')    # 创建工作路径

    读取数据,查看基本信息

# 读取数据
df = pd.read_excel('奥运运动员数据.xlsx',sheetname=1)
df_length = len(df)
df_columns = df.columns.tolist()

    现在要分析各项目运动员的身高情况,所以对数据进行筛选,选取姓名、项目、性别、身高这四个字段

# 数据筛选
data = df[['name','event','gender','height']]

    在Spyder里查看data,发现有个别缺失值,因此对缺失值进行处理

# 去掉缺失值
data.dropna(inplace = True)

    分别提取男生、女生的数据,并计算身高平均值

# 提取男女数据
data_male = data[data['gender'] == '男']
data_female = data[data['gender'] == '女']
# 计算男女平均身高
hmean_male = data_male['height'].mean()
hmean_female = data_female['height'].mean()

    对数据进行可视化,绘图

plt.figure(figsize = (10,5))   #设置画布大小
sns.set_style('darkgrid')      #设置图表风格
#Seaborn中有五种可供选择的主题:darkgrid(灰色网格)/whitegrig(白色网格)/dark(黑色)/white(白色)/ticks(十字叉)
    绘制男女高度分布密度图
sns.distplot(data_male['height'],hist = False,kde = True,rug = True,    # 男生的身高
             rug_kws = {'color':'y','lw':2,'alpha':0.5,'height':0.1} ,  # 设置数据频率分布颜色
             kde_kws={"color": "y", "lw": 1.5, 'linestyle':'--'},       # 设置密度曲线颜色,线宽,标注、线形
             label = 'male_height')                                     # 设置图例
sns.distplot(data_female['height'],hist = False,kde = True,rug = True,  # 女生的身高
             rug_kws = {'color':'g','lw':2,'alpha':0.5,'height':0.15} , # 设置数据频率分布颜色
             kde_kws={"color": "g", "lw": 1.5, 'linestyle':'--'},       # 设置密度曲线颜色,线宽,标注、线形
             label = 'female_height')                                   # 设置图例

    绘制运动员平均身高辅助线

plt.axvline(hmean_male,color='y',linestyle=":",alpha=0.8) 
plt.text(hmean_male+2, 0.005, 'male_height_mean: %.1fcm' % (hmean_male), color = 'y')
plt.axvline(hmean_female,color='g',linestyle=":",alpha=0.8)
plt.text(hmean_female+2, 0.008, 'female_height_mean: %.1fcm' % (hmean_female), color = 'g')

    调整图表细节,输出并保存

plt.ylim([0,0.03])               # 调整Y轴刻度
plt.title("Athlete's height")    # 添加图表名
plt.savefig('pic-1.png',dpi=400) # 保存图表

所得绘图表如下:


    根据图表可以看到,女生的身高主要集中在160-180,超过2米的很少;而男生的身高主要分布在160-195,也有超过220cm的,分布相对分散;女生的平均身高为170cm,男生的平均身高则更高一些为180.8cm;由此看来参加奥运会的运动员们,身高普遍偏高。

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值