【大数据处理与可视化】五、数据聚合与分组运算

该实验通过Python对运动员信息进行数据处理,运用groupby方法对篮球运动员按性别分组,计算平均年龄、身高、体重,并统计男篮运动员的这些指标的极差值。此外,还计算了男篮运动员的体质指数,展示了数据聚合与分组运算的实践应用。
摘要由CSDN通过智能技术生成


实验目的

  1. 能够熟练运用groupby()方法对数据进行分组。
  2. 能够熟练运用统计方法和聚合操作对数据进行聚合,及其它常用的分组级运算方法。
  3. 能够通过借助网络资源,通过自主学习解决分组聚合中遇到的问题。

实验内容

       运动员信息的分组与聚合:根据给定的运动员信息表,将统计的运动员基本信息进行归类,筛选出所有篮球运动员的基本信息,以统计篮球运动员的以下几个测试指标:
(1)统计篮球运动员的平均年龄、身高、体重。
(2)统计男篮运动员的年龄、身高、体重的极差值。
(3)统计篮球运动员的体质指数。


实验步骤

一、案例——运动员信息的分组与聚合

1、统计男篮、女篮运动员的平均年龄、身高、体重

代码:

data_group=df.groupby('项目')
df_basketball = dict([x for x in data_group])['篮球']
df_basketball

groupby_sex= df_basketball.groupby('性别')
groupby_sex.mean()

截图:

在这里插入图片描述

在这里插入图片描述


2、统计男篮运动员的平均年龄、身高、体重的极差值

代码:

basketball_male.agg({
    '年龄(岁)':range_data_group,
    '身高(cm)':range_data_group,
    '体重(kg)':range_data_group,
})

截图:

在这里插入图片描述


3、统计男篮运动员的体质指数

代码:

def outer(num):
    def ath_bmi(sum_bmi):
        weight=df_basketball['体重(kg)']
        height=df_basketball['身高(cm)']
        sum_bmi = weight / (height/100)**2
        return num+sum_bmi
    return ath_bmi
all_bmi = df_basketball['体质指数']
df_basketball['体质指数'] = df_basketball[['体质指数']].apply(outer(all_bmi))
df_basketball

截图:

在这里插入图片描述


实验小结

       通过本次实验,我能熟练运用groupby()方法对数据进行分组,能够熟练运用统计方法和聚合操作对数据进行聚合,及其它常用的分组级运算方法。在实验过程中遇到了很多硬件或者是软件上的问题,请教老师,询问同学,上网查资料,都是解决这些问题的途径。最终将遇到的问题一一解决最终完成实验。
注意事项:
1、有疑问前,知识学习前,先用搜索。
2、熟读写基础知识,学得会不如学得牢。
3、选择交流平台,如QQ群,网站论坛等。
4、尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。

这些统计任务需要获取相关的篮球运动员信息和历史奥运数据,可以通过向数据源请求获取相关信息或者使用已有的数据集进行统计。以下是一些示例代码,仅供参考。 1. 统计篮球运动员的平均年龄、身高、体重。 ```python import pandas as pd # 读取篮球运动员数据 df = pd.read_csv('basketball_players.csv') # 计算平均年龄、身高、体重 avg_age = df['age'].mean() avg_height = df['height'].mean() avg_weight = df['weight'].mean() print('篮球运动员的平均年龄为:', avg_age) print('篮球运动员的平均身高为:', avg_height) print('篮球运动员的平均体重为:', avg_weight) ``` 2. 统计男篮运动员的年龄、身高、体重的极差值。 ```python import pandas as pd # 读取篮球运动员数据 df = pd.read_csv('basketball_players.csv') # 筛选男篮运动员 df_male = df[df['gender'] == 'male'] # 计算年龄、身高、体重的极差值 age_range = df_male['age'].max() - df_male['age'].min() height_range = df_male['height'].max() - df_male['height'].min() weight_range = df_male['weight'].max() - df_male['weight'].min() print('男篮运动员的年龄极差为:', age_range) print('男篮运动员的身高极差为:', height_range) print('男篮运动员的体重极差为:', weight_range) ``` 3. 计算篮球运动员的体质指数,之后根据BMI标准对运动员进行分组,并统计各组人数。 ```python import pandas as pd # 读取篮球运动员数据 df = pd.read_csv('basketball_players.csv') # 计算BMI值 df['bmi'] = df['weight'] / (df['height'] / 100) ** 2 # 根据BMI标准分组 bins = [0, 20, 24, 30, 35, float('inf')] labels = ['过轻', '正常', '过重', '肥胖', '极度肥胖'] df['bmi_group'] = pd.cut(df['bmi'], bins=bins, labels=labels) # 统计各组人数 group_count = df['bmi_group'].value_counts() print('各组人数统计如下:') print(group_count) ``` 4. 统计历史上金牌总数最高的三个国家和金牌数。 ```python import pandas as pd # 读取历史奥运数据 df = pd.read_csv('olympic_history.csv') # 筛选金牌 df_gold = df[df['medal'] == 'Gold'] # 按国家分组,统计金牌数量 grouped = df_gold.groupby('country')['medal'].count() # 排序,获取前三个国家 top3_country = grouped.sort_values(ascending=False).head(3) print('历史上金牌总数最高的三个国家为:') print(top3_country) ``` 5. 统计男性与女性运动员参与最多的运动项目。 ```python import pandas as pd # 读取历史奥运数据 df = pd.read_csv('olympic_history.csv') # 筛选男性和女性运动员 df_male = df[df['gender'] == 'M'] df_female = df[df['gender'] == 'F'] # 统计男性和女性参与各项运动的次数 male_count = df_male['sport'].value_counts() female_count = df_female['sport'].value_counts() # 获取男性和女性参与最多的运动项目 top_male_sport = male_count.idxmax() top_female_sport = female_count.idxmax() print('男性参与最多的运动项目为:', top_male_sport) print('女性参与最多的运动项目为:', top_female_sport) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慢热型网友.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值