首页 > 其他分享 >大数据分析与可视化 之 实验09 Pandas函数应用

大数据分析与可视化 之 实验09 Pandas函数应用

时间:2023-12-30 20:11:06浏览次数:38  
标签:basketball df 09 players 篮球 可视化 总分 print Pandas

实验09 Pandas函数应用

实验学时:2学时
实验类型:验证
实验要求:必修

一、实验目的

  1. 掌握pandas函数应用的方法:pipe()、apply()和applymap()。
  2. 能编写自定义函数。
  3. 能使用pandas函数应用调用自定义函数解决数据分析实际问题。

二、实验要求

利用pandas函数应用的方法解决数据分析实际问题,能编写自定义函数。

三、实验内容

任务1.使用pandas创建5行3列的1-10之间的随机数数据帧,自定义以下函数,调用这些函数求:

  1. 所有值加2
  2. 各行、各列的平均值,
  3. 对第2列的所有值乘以3,
  4. 求各列最大值与最小值的差。
    用python的Pandas库编程实现。
def cheng(cX):
    return  cX*3
def sub(tempX):
    return  tempX.max()-tempX.min()
def addr(elm1,elm2):
    return  elm1+elm2

任务2. 给定数据文件:mydata.xls,使用pandas函数求出:
(1)每门课程的总分、平均分、最高分、最低分、及格人数、不及格人数;
(2)每位学生的总分;
(3)按总分排出名次;
(4)每门课程的及格率、不及格率及优秀率(90或90分以上)、标准差;
(5)按性别分组,求出平均值。
用python编程实现。

任务3. 给定数据文件:sporter.xlsx,使用pandas函数将统计的运动员基本信息进行归类,筛选出所有篮球运动员的基本信息,以统计篮球运动员的如下几个测试指标:
(1)统计篮球运动员的平均年龄、身高、体重。
(2)统计男篮球运动员的年龄、身高、体重的极差值。
(3)统计篮球运动员的体质指数(BMI值)。
体质指数(BMI)=体重(kg)÷ 身高2
用python编程实现。

test9.py

import pandas as pd
import numpy as np


def cheng(cX):
    return cX * 3


def sub(tempX):
    return tempX.max() - tempX.min()


def addr(elm1, elm2):
    return elm1 + elm2


def task1():
    # 创建一个 5x3 的 DataFrame,其中包含 1 到 10 之间的随机值
    np.random.seed(42)  # 设置种子以便重现结果
    data = np.random.randint(1, 11, size=(5, 3))
    df = pd.DataFrame(data, columns=['列1', '列2', '列3'])

    # 1:在DataFrame中的所有值上加2
    df_added_2 = df.applymap(lambda x: addr(x, 2))

    # 2:计算每行和每列的平均值
    row_means = df.mean(axis=1)
    col_means = df.mean()

    # 3:将第二列的所有值乘以3
    df_col2_multiplied = df.copy()
    df_col2_multiplied['列2'] = cheng(df_col2_multiplied['列2'])

    # 4:计算每列最大值与最小值的差
    col_diff = df.apply(sub)

    # 显示结果
    print("原始DataFrame:")
    print(df)
    print("\n任务1:所有值加2")
    print(df_added_2)
    print("\n任务2:行平均值")
    print(row_means)
    print("\n任务2:列平均值")
    print(col_means)
    print("\n任务3:第二列乘以3")
    print(df_col2_multiplied)
    print("\n任务4:每列最大值与最小值的差")
    print(col_diff)


def task2():
    # 读取 Excel 文件
    df = pd.read_excel('mydata.xlsx', skiprows=3, skipfooter=2)
    # 检查数据列名
    print(df.columns)
    # 为了方便演示,我仅选择部分列进行示例
    selected_columns = ['姓名', '性别', '高等数学', '大学英语', '操作系统', 'Python语言', '计算机组成原理']

    # 检查数据是否包含所需的列
    if set(selected_columns).issubset(df.columns):
        # (1) 每门课程的统计信息
        course_stats = df[selected_columns[2:]].agg(
            ['sum', 'mean', 'max', 'min', lambda x: sum(x >= 60), lambda x: sum(x < 60)])
        course_stats.index = ['总分', '平均分', '最高分', '最低分', '及格人数', '不及格人数']
        # (2) 每位学生的总分
        df['总分'] = df[selected_columns[2:]].sum(axis=1)
        # (3) 按总分排名
        df['总分排名'] = df['总分'].rank(ascending=False, method='min')
        # (4) 每门课程的统计信息(及格率、不及格率、优秀率、标准差)
        course_stats_2 = df[selected_columns[2:]].agg(['mean', lambda x: sum(x >= 60) / len(x),
                                                       lambda x: sum(x < 60) / len(x), lambda x: sum(x >= 90) / len(x),
                                                       'std'])
        course_stats_2.index = ['平均分', '及格率', '不及格率', '优秀率', '标准差']
        # (5) 按性别分组,求平均值
        gender_means = df.groupby('性别')['总分'].mean()
        # 显示结果
        print("(1) 每门课程的统计信息:")
        print(course_stats)
        print("\n(2) 每位学生的总分:")
        print(df[['姓名', '总分']])
        print("\n(3) 按总分排名:")
        print(df[['姓名', '总分', '总分排名']].sort_values(by='总分排名'))
        print("\n(4) 每门课程的统计信息(及格率、不及格率、优秀率、标准差):")
        print(course_stats_2)
        print("\n(5) 按性别分组的平均值:")
        print(gender_means)
    else:
        print("数据缺少所需的列。请检查列名是否正确。")


def task3():
    # 读取 Excel 文件
    df = pd.read_excel('sporter.xlsx')

    # 筛选出篮球运动员
    basketball_players = df[df['项目'] == '篮球'].copy()

    # (1) 统计篮球运动员的平均年龄、身高、体重
    avg_age = basketball_players['年龄(岁)'].mean()
    avg_height = basketball_players['身高(cm)'].mean()
    avg_weight = basketball_players['体重(kg)'].mean()

    # (2) 统计男篮球运动员的年龄、身高、体重的极差值
    male_basketball_players = basketball_players[basketball_players['性别'] == '男']
    range_age = male_basketball_players['年龄(岁)'].max() - male_basketball_players['年龄(岁)'].min()
    range_height = male_basketball_players['身高(cm)'].max() - male_basketball_players['身高(cm)'].min()
    range_weight = male_basketball_players['体重(kg)'].max() - male_basketball_players['体重(kg)'].min()

    # (3) 统计篮球运动员的体质指数(BMI值)
    basketball_players.loc[:, 'BMI'] = basketball_players['体重(kg)'] / (basketball_players['身高(cm)'] / 100) ** 2

    # 显示结果
    print(f"(1) 篮球运动员的平均年龄:{avg_age:.2f} 岁")
    print(f"    篮球运动员的平均身高:{avg_height:.2f} cm")
    print(f"    篮球运动员的平均体重:{avg_weight:.2f} kg")

    print(f"\n(2) 男篮球运动员的年龄极差:{range_age} 岁")
    print(f"    男篮球运动员的身高极差:{range_height} cm")
    print(f"    男篮球运动员的体重极差:{range_weight} kg")

    print("\n(3) 篮球运动员的体质指数(BMI值):")
    print(basketball_players[['姓名', '性别', 'BMI']])


if __name__ == '__main__':
    task1()
    task2()
    task3()

标签:basketball,df,09,players,篮球,可视化,总分,print,Pandas
From: https://www.cnblogs.com/IvanKK/p/17936741

相关文章

  • 大数据分析与可视化 之 实验02 Numpy创建数组
    实验02Numpy创建数组实验学时:2学时实验类型:验证实验要求:必修一、实验目的掌握Numpy创建数组的方法掌握Numpyndarray的属性、运算掌握Numpy迭代数值,修改数组中元素的值掌握Numpy常用函数的使用方法二、实验要求使用Numpy.array的构造函数创建数组,学会使用Numpyndar......
  • 大数据分析与可视化 之 实验03 Numpy实现数据分析
    实验03Numpy实现数据分析实验学时:2学时实验类型:验证实验要求:必修一、实验目的掌握Numpy的字符串函数掌握Numpy统计函数掌握Numpy排序、分组、线性代数函数二、实验要求通过编程实现使用Numpy字符串函数进行文本处理,使用统计函数进行数据分析等常用操作。三、实验内......
  • 大数据分析与可视化 之 实验04 Pandas基础
    实验04Pandas基础实验学时:2学时实验类型:验证实验要求:必修一、实验目的1.掌握pandas系列、数据帧和面板的使用2.掌握pandas基本功能和操作二、实验要求Pandas程序的运行步骤。2.pandas的数据结构3.pandas系列、数据帧和面板pandas基本功能和操作三、实验内容任务1.......
  • 大数据分析与可视化 之 实验01 Python爬虫
    实验01Python爬虫实验学时:2学时实验类型:验证实验要求:必修一、实验目的理解爬虫技术掌握正则表达式、网络编程掌握re、socket、urllib、requests、lxml模块及其函数的使用二、实验要求 分析所需爬取信息网页的源代码,使用re、socket、urllib、requests、lxml模块及其函......
  • 09PCIE图像采集卡HDMI输入
    软件版本:vitis2021.1(vivado2021.1)操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!9.1概述本方案使用自定义AXI4IPFDMA实现视频的采集和播放,关于FDMA的详细教程可以参考"米联客2024版FPGA数据缓存方......
  • 【Python爬虫课程设计】rottentomatoes爬取+数据可视化
    一、选题背景选择此选题的原因是为了进行电影数据的分析。电影作为一种重要的文化娱乐形式,对社会、经济和文化等方面都有着重要的影响。通过对电影数据的分析,可以揭示电影产业的发展趋势、观众喜好、电影市场的竞争情况等,为电影行业的决策制定提供依据。二、主题式网络爬虫设计......
  • 【Python数据爬取课程设计】数据爬取—京东手机品牌信息数据爬取和数据分析与可视化
    一、选题的背景随着互联网的快速发展,大数据已经成为各行各业决策的重要依据。在电商领域,京东作为国内领先的电商平台,积累了大量的用户购买数据。这些数据中蕴含着丰富的品牌信息,对于手机品牌来说,分析这些数据可以帮助他们更好地了解市场趋势、消费者需求以及竞品情况。然而,目......
  • 【Python高级应用课程设计】——腾讯课堂爬虫数据可视化
    一、选题背景随着互联网的快速发展,在线教育已经成为越来越多人获取知识和技能的重要途径。其中,腾讯课堂作为国内知名的在线教育平台之一,提供了丰富的课程资源和学习机会。然而,对于广大学习者来说,如何快速有效地获取和筛选这些课程信息是一个重要的问题。此外,对于教育机构和课程提......
  • 09使用fdma读写axi-bram
    软件版本:vitis2021.1(vivado2021.1)操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!1概述    FDMA是米联客基于AXI4总线协议定制的一个DMA控制器。有了这个IP我们可以统一实现用FPGA代码直接读写PL......
  • 【python爬虫课程设计】达多多抖音电商——爬虫+大数据分析可视化
    一、选题背景随着社交媒体的发展和智能手机的普及,抖音已经成为了全球最受欢迎的短视频平台之一。越来越多的用户通过抖音平台进行商品的选购和交易,使得抖音电商成为了一个热门的话题。因此,通过对抖音电商的爬虫分析,可以深入了解用户的购物偏好、热门商品和行业趋势,为电商平台和品......