分析体测成绩

需求:

体侧成绩转变成分数

开卷考试

excel完成可以

pandas读取excel代码中 完成

一个手输入

进一步,画图,分布,体重正常,肥胖,偏瘦比例,绘制饼图

男生跑步1000成绩,不及格,及格,中等,良好,优秀,柱状图绘制

 

 

导包、读取文件

import numpy as np

import pandas as pd

from pandas import Series,DataFrame

import matplotlib.pyplot as plt
%matplotlib inline
data = pd.read_excel('18级高一体测成绩汇总.xls')
data
班级 性别 姓名 1000米 50米 跳远 体前屈 引体 肺活量 身高 体重 BMI  
0 1 高孜阳0611 4’13 8.88 195 12 1 2785 170 72.6 NaN
1 1 郝少杰1013 4’16 7.70 225 11 7 3133 174 52.7 NaN
2 1 郝梓烨0619 4’09 8.45 218 14 1 3901 169 46.5 NaN
3 1 何弘源1010 4’21 8.05 206 13 1 4946 183 79.7 NaN
4 1 刘硕鹏1212 3’44 7.52 210 13 9 3538 171 54.7 NaN
488 17 张乔楠0311 4’23 8.27 208 10 0 4647 176 69.5 NaN
489 17 郭泽森0333 5’19 9.55 210 15 6 7042 177 76 NaN
490 17 陈子龙061X 3’25 7.5 252 13 13 5755 181 65 NaN
491 17 王丹龙0636 4’39 7.81 208 14 11 5688 172 51.7 NaN
492 17 王玉涵0636 NaN NaN NaN NaN NaN NaN NaN NaN NaN
# 清洗数据
cond = data['班级'] != '班级' # 把有班级那一行的数据给删除

data = data[cond]   # 得到新的数据

data[:45]
班级 性别 姓名 1000米 50米 跳远 体前屈 引体 肺活量 身高 体重 BMI  
0 1 高孜阳0611 4’13 8.88 195 12 1 2785 170 72.6 NaN
1 1 郝少杰1013 4’16 7.70 225 11 7 3133 174 52.7 NaN
2 1 郝梓烨0619 4’09 8.45 218 14 1 3901 169 46.5 NaN
3 1 何弘源1010 4’21 8.05 206 13 1 4946 183 79.7 NaN
4 1 刘硕鹏1212 3’44 7.52 210 13 9 3538 171 54.7 NaN
5 1 刘运硕0314 3’49 7.94 190 20 7 3970 175 66.4 NaN
6 1 吕晓瑶0314 3’54 7.75 186 11 7 3710 173 53.9 NaN
7 1 米孜聪0636 4’3 8.06 195 3 1 5578 178 83.1 NaN
8 1 聂浩然2719 4’01 7.75 220 15 10 3821 175 66.5 NaN
9 1 牛苗嘉1211 4’12 7.38 245 17 11 4423 167 53.9 NaN
10 1 牛砚哲2813 4 7.82 219 13 11 4031 173 57.4 NaN
11 1 齐子涵185x 4’13 7.37 228 9 15 4354 163 54.6 NaN
12 1 乔一甲0616 3’45 7.66 202 7 3 2238 179 61.1 NaN
13 1 任晓波0311 3’46 7.66 245 3 7 4811 177 63.9 NaN
14 1 戎小龙2633 0 0 0 0 0 0 0 NaN NaN
15 1 桑淳熙0616 3’57 7.60 192 7 5 4147 174 59.2 NaN
16 1 田晓龙2411 4’18 8.14 210 8 4 4241 179 61.9 NaN
17 1 田玉聪2716 3’32 7.20 255 22 12 5324 183 63.4 NaN
18 1 王晨宇0613 3’56 8.15 207 13 12 4363 173 60.5 NaN
19 1 王家梁0630 3’47 8.15 202 13 16 5364 174 56 NaN
20 1 王乐天3331 3’53 7.85 210 3 7 3445 177 56.9 NaN
21 1 王一钊1213 3’57 7.85 220 9 2 5670 177 55.5 NaN
22 1 王子天0634 3’42 7.23 212 12 15 5709 185 72.3 NaN
23 1 王子鑫0012 4’3 7.68 218 15 3 4780 177 83.7 NaN
24 1 未晓锟1214 4’14 8.30 206 15 1 3358 173 46.6 NaN
25 1 张国瑞033x 4’04 8.15 205 9 5 3494 169 48.3 NaN
26 1 张皓天0632 4’04 7.55 190 12 5 3286 169 50.1 NaN
27 1 张泽地0310 4’02 7.55 240 5 12 4483 171 58.4 NaN
28 1 张智贤0318 3’57 7.89 220 9 11 4254 166 54.8 NaN
29 1 赵博翰101x 4’16 8.19 212 27 7 3498 169 68 NaN
30 1 赵泽凯0311 4’01 7.89 213 5 11 4322 174 55.9 NaN
31 1 赵泽宇0616 4’08 8.21 208 19 20 3917 166 51.9 NaN
32 1 左晶川1217 4’06 8.71 206 11 4 3970 172 47.8 NaN
34 2 贾和0633 4’22 7.97 215 9 9 3865 175 58.7 NaN
35 2 李森0636 0 0 0 0 0 0 0 NaN NaN
36 2 李一帆1812 4’46 8.79 172 7 1 4750 174 88.6 NaN
37 2 李子阳0618 4’01 7.37 210 2 7 4714 182 62.5 NaN
38 2 吕星繁0312 0 0 0 0 0 0 0 NaN NaN
39 2 赵凌云105x 4’13 7.77 208 8 7 4327 173 56 NaN
40 2 赵鹏悦2612 4’27 8.8 185 10 5 4745 164 74.8 NaN
42 3 宫诚博0612 3’43 6.89 276 16 12 5212 1.84 73.1 NaN
43 3 郭亚浩181X 4’04 7.25 240 13 8 4756 1.76 72 NaN
44 3 郝晓辰0013 3’38 7.36 246 22 11 4433 1.84 62.5 NaN
45 3 李国玺2310 4’19 8.17 220 18 1 4438 1.74 72.2 NaN
46 3 李一帆1218 4’08 7.8 227 15 1 6033 1.77 85.6 NaN
data.fillna(0, inplace=True)  # 没有参加体侧的同学分数都填充成0
# 没有空数据了
data.isnull().any() #查询是否还有空数据
班级       False
性别       False
姓名       False
1000米   False
50米     False
跳远       False
体前屈     False
引体       False
肺活量     False
身高       False
体重       False
BMI     False
dtype: bool
data.head()
班级 性别 姓名 1000米 50米 跳远 体前屈 引体 肺活量 身高 体重 BMI  
0 1 高孜阳0611 4’13 8.88 195.0 12 1 2785 170.0 72.6 0.0
1 1 郝少杰1013 4’16 7.70 225.0 11 7 3133 174.0 52.7 0.0
2 1 郝梓烨0619 4’09 8.45 218.0 14 1 3901 169.0 46.5 0.0
3 1 何弘源1010 4’21 8.05 206.0 13 1 4946 183.0 79.7 0.0
4 1 刘硕鹏1212 3’44 7.52 210.0 13 9 3538 171.0 54.7 0.0

把数据中的 4’13 转换成 小数

def convert(x):
   
  if isinstance(x, str):
      minute, second = x.split("'")
      minute = int(minute)
      second = int(second)
      return minute + second / 100.0
  else:
      return x


data['1000米'] = data['1000米'].map(convert)   # 映射
data.head()

班级 性别 姓名 1000米 50米 跳远 体前屈 引体 肺活量 身高 体重 BMI 0 1 高孜阳0611 4.13 8.88 195.0 12 1 2785 170.0 72.6 0.0 1 1 郝少杰1013 4.16 7.70 225.0 11 7 3133 174.0 52.7 0.0 2 1 郝梓烨0619 4.09 8.45 218.0 14 1 3901 169.0 46.5 0.0 3 1 何弘源1010 4.21 8.05 206.0 13 1 4946 183.0 79.7 0.0 4 1 刘硕鹏1212 3.44 7.52 210.0 13 9 3538 171.0 54.7 0.0

加载体侧成绩评分表

score = pd.read_excel('体侧成绩评分表.xls', header = [0,1]) 
score

男肺活量 女肺活量 男50米跑 女50米跑 男体前屈 女跳远 男引体 女仰卧 男1000 女800 成绩 分数 成绩 分数 成绩 分数 成绩 分数 成绩 分数 成绩 分数 成绩 分数 成绩 分数 成绩 分数 成绩 分数 0 4540 100 3150 100 7.1 100 7.8 100 23.6 100 204 100 16.0 100 53 100 3’30” 100 3’24” 100 1 4420 95 3100 95 7.2 95 7.9 95 21.5 95 198 95 15.0 95 51 95 3’35” 95 3’30” 95 2 4300 90 3050 90 7.3 90 8.0 90 19.4 90 192 90 14.0 90 49 90 3’40” 90 3’36” 90 3 4050 85 2900 85 7.4 85 8.3 85 17.2 85 185 85 13.0 85 46 85 3’47” 85 3’43” 85 4 3800 80

版权声明:本文为quietzpc原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/quietzpc/p/12170481.html