pandas-体侧成绩数据可视化

本文介绍如何使用pandas对高中体侧成绩进行数据加载、转换和可视化。通过pd.read_excel分别加载不同工作表,利用header参数处理多层列索引。数据类型转换涉及将时间格式字符串转为float,以便进行分数计算。针对不同项目,如跑步、跳远和体前屈,采用map、apply、transform方法进行评分转换,并调整列顺序。
摘要由CSDN通过智能技术生成

高中体测数据转换

1、数据加载, pd.read_excel(’./18级高一体测成绩汇总.xls’)默认加载第一个工作表

2、数据加载, pd.read_excel(’./18级高一体测成绩汇总.xls’,sheet_name = 1)指定加载第二个工作表

import numpy as np
import pandas as pd
male = pd.read_excel('D:\WORK\STUDY\数据分析\作业\阶段五/18级高一体测成绩汇总.xls')
female = pd.read_excel('D:\WORK\STUDY\数据分析\作业\阶段五/18级高一体测成绩汇总.xls',sheet_name = 1)

3、评分标准加载,pd.read_excel(’./体侧成绩评分表.xls’,header = [0,1]),header=[0,1]表示多层列索引

rule = pd.read_excel('D:\WORK\STUDY\数据分析\作业\阶段五/体侧成绩评分表.xls',header = [0,1])

4、数据类型转换

男1000米跑,数据类型是str,并且是4’26这种形式,需要变成float类型的值
评分标准中男1000米跑和女800米跑的成绩都是4‘10’‘这种形式,需要转化为float类型值
其他所有数值类型的值,都要转换为float类型的值

male['男1000米跑'] = male['男1000米跑'].str.replace("'",".")
male['男1000米跑'] = pd.to_numeric(male['男1000米跑'], errors='coerce').fillna(0)
male[['男体前屈','男引体','男肺活量','BMI']] = male[['男体前屈','男引体','男肺活量','BMI']].astype(float)
rule = rule.replace("'",".",regex=True)
rule = rule.replace('"',"",regex=True)
rule = rule.astype(float)
female[['女体前屈','女仰卧','女肺活量','BMI']] = female[['女体前屈','女仰卧','女肺活量','BMI']].astype(float)
display(male.dtypes,female.dtypes,rule.dtypes)

5、对体测成绩进行分数转换,跑步类(越小越好);跳远、体前屈(越大越好)

使用map、apply、transform方法

列索引重排

# 男生成绩
for col in ['男1000米跑', '男50米跑']:
    score = rule[col]
    def convert(x):
        for i in range(len(score)):
            if x <= score['成绩'].iloc[0]:
                if x == 0:
                    return 0
                return 100
            elif x > score['成绩'].iloc[-1]:
                return 0 
            elif (x > score['成绩'].iloc[i - 1]) and (x <= score
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大大大荣子哇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值