案例——中国篮球运动员的基本信息分析

案例——中国篮球运动员的基本信息分析

分析目标

1、计算中国男篮、女篮运动员的平均身高与平均体重
2、分析中国篮球运动员的年龄分布
3、计算中国篮球运动员的体质指数

数据获取

先导入可能需要用到的包

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

读取数据源文件

df_left = pd.read_csv("配套资源/源代码/第6章/运动员信息采集01.csv", encoding="gbk")
df_right = pd.read_excel("配套资源/源代码/第6章/运动员信息采集02.xlsx")

用外连接的方式合并数据

data_df = pd.merge(df_left, df_right, how="outer")
data_df.head()

在这里插入图片描述
筛选出中国篮球运动员的信息

basketball_data = data_df[data_df['国籍'] == '中国']
basketball_data = basketball_data[basketball_data['项目'] == '篮球']
basketball_data.head()

在这里插入图片描述

数据清理

检测和处理重复值

检测重复值

basketball_data[basketball_data.duplicated().values == True]

在这里插入图片描述
处理重复值

basketball_data.drop_duplicates(ignore_index=True, inplace=True)
basketball_data[basketball_data.duplicated().values == True]

在这里插入图片描述

检测和处理缺失值

检测缺失值

basketball_data[basketball_data.isna().values == True]

在这里插入图片描述
因为省份对分析目的无影响,这里只用处理身高和体重,但是因为男女有差异性,故先分男女两个表。
先处理男表
查看详细信息

male_data = basketball_data[basketball_data['性别'] == '男']
female_data = basketball_data[basketball_data['性别'] == '女']
male_data.info()

在这里插入图片描述

只有身高存在缺失值,查看身高数据

print(male_data['身高'].values)

在这里插入图片描述

除了空值,其他都是一样的单位xxx+‘厘米’
开始处理空值,选择用平均值代替

male_heights = male_data['身高'].dropna()
fill_male_height = male_heights.apply(lambda x: x[:-2]).astype(int).mean()
fill_male_height = str(int(fill_male_height)) + '厘米'
male_data.loc[:, '身高'] = male_data.loc[:, '身高'].fillna(fill_male_height)
male_data.info()

在这里插入图片描述
男表缺失值处理完成。
开始查看女表信息

female_data.info()

在这里插入图片描述
忽略省份,还有身高和体重存在缺失值,先查看身高数据

print(female_data['身高'].values)

在这里插入图片描述

存在不一致的数据结构,所以需要先统一将数据变成xxx + “厘米”

data = {'191cm':'191厘米','1米89公分':'189厘米','2.01米':'201厘米','187公分':'187厘米','1.97M':'197厘米','1.98米':'198厘米','192cm':'192厘米'}
female_data.loc[:, '身高'].replace(data, inplace=True)
print(female_data['身高'].values)

在这里插入图片描述

继续处理缺失值,采用平均值来填充

female_heights = female_data['身高'].dropna()
fill_female_height = female_heights.apply(lambda x: x[:-2]).astype(int).mean()
fill_female_height = str(int(fill_female_height)) + '厘米'
female_data.loc[:, '身高'] = female_data.loc[:, '身高'].fillna(fill_female_height)
female_data.info()

身高的缺失值处理完成
在这里插入图片描述
开始处理体重缺失值,先查看数据

print(female_data['体重'].values)

在这里插入图片描述

发现一个明显的异常数值8kg,决定采用向前填充的方式替换

female_data['体重'].replace(to_replace='8kg', method='pad', inplace=True)
print(female_data['体重'].values)

在这里插入图片描述

开始用平均值填充缺失值

female_weights = female_data['体重'].dropna()
fill_female_weight = female_weights.apply(lambda x: x[:-2]).astype(int).mean()
fill_female_weight = str(int(fill_female_weight)) + '厘米'
female_data.loc[:, '体重'] = female_data.loc[:, '体重'].fillna(fill_female_weight)
female_data.info()

在这里插入图片描述

检测和处理异常值

为了方便计算等操作,选择将身高和体重两列变为int类型,并重新命名列表

male_data['身高'] = male_data['身高'].apply(lambda x: x[:-2]).astype(int)
male_data.rename(columns={'身高': '身高/cm'}, inplace=True)
male_data['体重'] = male_data['体重'].apply(lambda x: x[:-2]).astype(int)
male_data.rename(columns={'体重': '体重/kg'}, inplace=True)
female_data['身高'] = female_data['身高'].apply(lambda x: x[:-2]).astype(int)
female_data.rename(columns={'身高': '身高/cm'}, inplace=True)
female_data['体重'] = female_data['体重'].apply(lambda x: x[:-2]).astype(int)
female_data.rename(columns={'体重': '体重/kg'}, inplace=True)
male_data.head()

在这里插入图片描述

female_data.head()

在这里插入图片描述
利用箱型图查看男表的身高和体重是否存在异常值

plt.rcParams['font.sans-serif'] = ['SimHei']
male_data.boxplot(column='身高/cm')

在这里插入图片描述
身高不存在异常值

plt.rcParams['font.sans-serif'] = ['SimHei']
male_data.boxplot(column='体重/kg')

在这里插入图片描述
体重也不存在异常值,说明男表数据正常
接下来查看女表数据

plt.rcParams['font.sans-serif'] = ['SimHei']
female_data.boxplot(column='身高/cm')

在这里插入图片描述
出现一个异常值,但经核实,是真实值
查看体重数据

plt.rcParams['font.sans-serif'] = ['SimHei']
female_data.boxplot(column='体重/kg')

在这里插入图片描述
经核实,这个离群点也属于非异常值
如果我们通过箱型图发现了异常值,可以使用下面的函数来找到这个异常值

def box_outliers(ser):new_ser = ser.sort_values()if new_ser.count() % 2 == 0:Q3 = new_ser[int(len(new_ser) / 2):].median()Q1 = new_ser[:int(len(new_ser) / 2)].median()elif new_ser.count() % 2 == 1:Q3 = new_ser[int((len(new_ser) + 1) / 2):].median()Q1 = new_ser[:int((len(new_ser) + 1) / 2)].median()IQR = round(Q3 - Q1, 1)rule = (ser < round(Q1 - 1.5 * IQR, 1)) | (ser > round(Q3 + 1.5 * IQR, 1))index = np.arange(ser.shape[0])[rule]outliers = ser.iloc[index]return outliers

除了通过箱型图,我们也可以通过3sigma原则来验证,
函数实现如下

def three_sigma(ser):# 计算平均数mean_data = ser.mean()# 计算标准差std_data = ser.std()# 根据数值小于μ-3σ或大于μ+3σ均为异常值rule = (mean_data-3*std_data>ser) | (mean_data+3*std_data<ser)# 返回异常值的位置索引index = np.arange(ser.shape[0])[rule]# 获取异常值数据outliers = ser.iloc[index]return outliers

异常值处理完毕,重新将男女两个表合并

basketball_data = pd.concat([male_data, female_data])
basketball_data

在这里插入图片描述

实现分析要求

计算中国男篮、女篮的平均身高体重

mean_male_height = basketball_data[basketball_data['性别'] == '男']['身高/cm'].mean()
print(f'中国男篮的平均身高为{int(mean_male_height)}厘米')
mean_male_weight = basketball_data[basketball_data['性别'] == '男']['体重/kg'].mean()
print(f'中国男篮的平均体重为{int(mean_male_weight)}kg')
mean_female_height = basketball_data[basketball_data['性别'] == '女']['身高/cm'].mean()
print(f'中国女篮的平均身高为{int(mean_female_height)}厘米')
mean_female_weight = basketball_data[basketball_data['性别'] == '女']['体重/kg'].mean()
print(f'中国女篮的平均身高为{int(mean_female_weight)}kg')

在这里插入图片描述

分析中国篮球运动员的年龄分布

print(basketball_data['出生日期'].values)

在这里插入图片描述
先处理数据不一致问题,全部转为年份

import datetime
basketball_data2 = basketball_data.copy()
initial_time = datetime.datetime.strptime('1900-01-01', '%Y-%m-%d')
for i in basketball_data2['出生日期']:if type(i) == int:new_time = (initial_time + datetime.timedelta(days=i)).strftime("%Y{y}%m{m}%d{d}").format(y='年', m='月', d='日')basketball_data2.loc[:, '出生日期'] = basketball_data2.loc[:, '出生日期'].replace(i, new_time)
basketball_data2['出生日期'] = basketball_data2['出生日期'].apply(lambda x: x[:5])
print(basketball_data2['出生日期'].values)

在这里插入图片描述
分析中国篮球运动员的年龄分布

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
ages = 2022 - basketball_data2['出生日期'].apply(lambda x: x[:-1]).astype(int)
ax = ages.plot(kind='hist')
ax.set_xlabel('年龄(岁)')
ax.set_ylabel('频数')
ax.set_xticks(range(ages.min(), ages.max() + 1, 2))

在这里插入图片描述

计算中国篮球运动员的体质指数

weight = basketball_data['体重/kg']
height = basketball_data['身高/cm']
sum_bmi = weight / (height / 100)**2
basketball_data['体质指数'] = sum_bmi.round(1)
basketball_data

在这里插入图片描述
到此任务完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/56957.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据说第四期】篮球比赛中的投篮选择

篮球比赛中的投篮选择 参加过篮球比赛的同学&#xff0c;在球场上是否有这样的经历&#xff1f; 当上一次投篮未命中时&#xff0c;你会倾向于比上一次更近的距离出手投篮&#xff0c;当上一次投篮稳稳命中时&#xff0c;你会想尝试下比上一次更更远距离的出手。于是&#xff…

Firefox火狐浏览器强制使用阅读模式(添加插件法)

Firefox火狐浏览器强制使用阅读模式&#xff08;添加插件法&#xff09; 1.打开Firefox火狐浏览器 2.在地址栏输入 about:addons 3.点击左边的【扩展】 4.搜索Activate Reader View&#xff0c;点击【安装】&#xff0c;之后就可以看到任务栏的左上角有一个书本样子的按钮…

UFT14.52用谷歌浏览器chrome、火狐浏览器firefox 跑自动化

安装了14.52 发现录制的下面不能选择 谷歌、火狐浏览器&#xff0c;是因为浏览器不能用&#xff0c;能用了就有&#xff1a; 插件下载地址&#xff1a;https://chrome.google.com/webstore/detail/micro-focus-uft-agent/kglbdihdcnciobeihioplammnkknjmbd?authuser1 这个是我…

无需注册,国内直接使用,你的浏览器AI小助手

ChatGPT Sidebar是什么 ChatGPT Sidebar是一个浏览器插件,可以在浏览器的侧边栏中提供自然语言处理服务。它使用OpenAI的GPT模型,可以回答各种问题,提供文本摘要、翻译等功能。 ChatGPT Sidebar可以成你的私人助理,常驻在浏览器的某个角落,当你需要翻译一段文字时,可以立…

使用火狐浏览器插件 katalon 做自动化浏览操作

今天参加全国公共英语考试&#xff0c;使用了 katalon 这个火狐&#xff08;Firefox&#xff09;浏览器的插件&#xff08;基于 selenium&#xff09;&#xff0c;简化了重复劳动。整理成文档&#xff0c;希望可以帮助到有需要的朋友。 安装 从火狐浏览器的菜单里进入“附加组件…

ubuntu下安装火狐浏览器及快捷图标

一、在线安装 apt install firefox 二、离线安装 1.下载最新的版本包 火狐官网 2.导入安装包—解压 # 我这里安装包放在opt下 cd /opt tar -jxvf Firefox-latest-x86_64.tar.bz2 3.安装完之后&#xff0c;尝试命令行启动 ./opt/firefox/firefox 4.创建快捷图标 cd /usr/share/a…

怎么把火狐浏览器整成自己喜欢的风格

不多说&#xff0c;先上图&#xff1a; 偶然发现了火狐可以通过Firefox Color扩展自己配置顶部标签栏的颜色&#xff0c;那只能掏出最喜欢的夜店粉整它一下了&#xff0c;然后再配合stylus扩展&#xff0c;就可以整出自己喜欢的风格了。 一、修改顶部书签栏颜色 1、在顶部搜索栏…

火狐firefox浏览器不能播放视频,但别的浏览器可以。

网上有好多的内容&#xff0c;都是老旧的方法&#xff0c;都是flash什么设置的。 后来在外网上找到一个视频&#xff0c;关于不能播放的视频的方法&#xff0c;我设置一下&#xff0c;没有问题。方法如下 关闭浏览器&#xff0c;再打开就可以了。

软文推广过程中有哪些实用的推广用语?

软文推广是一个文字的游戏&#xff0c;说白了就是让文字做你的营销员&#xff0c;所以在文字书写的过程中要特别注意&#xff0c;有时候一个词就能让用户感觉到舒服或不舒适&#xff0c;小编作为一个多年的软文写作人员&#xff0c;就从软文营销用语上面来讲解一下&#xff0c;…

招商软文如何写:推广诱人的广告——文芳阁传媒有话说

招商软文如何写&#xff1a;推广诱人的广告——文芳阁传媒有话说 导语&#xff1a;现在&#xff0c;很多的产品做出了好的开头后&#xff0c;会想出下一步推广的路&#xff1a;就是树形招商发展&#xff0c;其实这个时候就已经升级了服务方式&#xff0c;从产品到技术或者说是秘…

U盘产品如何做好软文推广利用软文来打造为产品引流宣传

软文推广是现在宣传手段中的重要一环&#xff0c;它可以有效的帮助企业更好的宣传产品&#xff0c;提高品牌知名度&#xff0c;提升企业形象&#xff0c;增强消费者对产品的认知度&#xff0c;从而达到促进销量的目的。U盘产品软文推广也是同样道理&#xff0c;如何做好U盘产品…

分享八个软文推广小技巧,让你在众多同行中脱颖而出!

软文推广作为现在主流的推广形式&#xff0c;想要做很容易&#xff0c;但是想要做好就要多下点功夫了&#xff0c;其实 现在大多数公司做软文推广也是在囫囵吞枣&#xff0c;雨里雾里的&#xff0c;其实想要做好软文推广就要多去 注意细节&#xff0c;俗话说细节决定成败&…

软文推广丨什么是软文推广?

随着互联网和移动互联网的普及&#xff0c;网络推广已经成为了企业和个人宣传和推广产品和服务的重要手段之一。其中&#xff0c;软文推广也是一种广泛采用的网络推广方式。本文将围绕“什么是软文推广&#xff0c;应该怎么做”这一主题&#xff0c;对软文推广的概念、特点和实…

软文推广页面

广告页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>广告软文推广页面</title><link href"css/fonts/advertitsing.css" rel"stylesheet"type"text/css"…

产品推广软文怎么写?500字的写作技巧为你送上,拿走直接用

对于很多企业来说&#xff0c;经费不足的情况下&#xff0c;在网上发布产品推广软文就是一个不错的选择&#xff0c;但是产品推广是一种学问&#xff0c;想要做好产品推广&#xff0c;首先要学会如何写好一篇优质的推广软文&#xff0c;大家可从以下方面进行入手&#xff0c;让…

软文推广的方法有哪些,硬广告最有效的软文推广策略

软文推广的方法有哪些&#xff0c;硬广告最有效的软文推广策略 什么叫软文营销推广&#xff1f;#广告营销 软文推广怎么做&#xff1f; 我的 10 年软文发布经验告诉我&#xff0c; 90% 的品牌是为了收录&#xff0c;为了排名发布文章&#xff0c;不收录发再多也是白搭。 什么…

字节蝉联全球独角兽榜首,ChatGPT企业狂升200多位

江山代有才人出&#xff0c;各领风骚数百年。 4月18日&#xff0c; 胡润研究院发布了《2023全球独角兽榜》&#xff0c;列出了全球成立于2000年之后&#xff0c;价值10亿美元以上的非上市公司。 榜单显示&#xff0c;全球一共有1361家独角兽企业入围榜单&#xff0c;分布在48个…

墨西哥海运专线时效,有哪些墨西哥专线货代?

墨西哥是位于北美洲的一个国家&#xff0c;西部是太平洋和加利福尼亚湾&#xff0c;东部是墨西哥湾与加勒比海&#xff0c;海路运输是很发达的&#xff0c;国内大大小小的港口更是非常多;目前国内选择海运专线到墨西哥的客户也是比较多的。下面就给大家介绍一些墨西哥海运专线。…

亚马逊erp系统亚马逊FBA系统货代仓储打包系统

电商现在比较火的也就是跨境电商与国内电商这两个比较火&#xff0c;跨境的平台相对应多一点&#xff0c;目前来说比较好的亚马逊与亚马逊是最多了&#xff0c;国内的话现在都在往抖店这块集中&#xff0c;那么大家在做这块的时候&#xff0c;肯定都会用到店铺管理系统&#xf…

fba海运详解:fba海运是什么意思,FBA海运费用怎么算

FBA海运是指通过海运将货物运送到亚马逊仓库&#xff0c;FBA海运除了按照海运包税方式计算方法和海运不包税计算的渠道外&#xff0c;还会按货物的实重和体积重量来计算。FBA货运代理的操作流程是通关海运到目的港&#xff0c;然后通关送到亚马逊仓库。 一、FBA海运什么意思 F…