发布于2021-01-12 09:38 阅读(1898) 评论(0) 点赞(1) 收藏(2)
import numpy as np import pandas as pd from pandas import Series,DataFrame import matplotlib.pyplot as plt import seaborn as sns # 让图形在控制台打印出来 %matplotlib inline boy = pd.read_excel('18级高一体测成绩汇总.xls')- boy
#header=[0,1] 把第一行 和第二行 作为 一级 二级索引 score = pd.read_excel('体测成绩评分表.xls',header=[0,1])
boy.info()
# 去掉班级的一列 temp = boy.loc[boy['班级']!='班级'] #去完重复 显示有多少个班级 temp['班级'].unique()
# inplace=True 直接修改boy里的 6班为6 boy = boy.loc[boy['班级']!='班级'] #boy.replace(to_replace={"班级":"6班"},value=6,inplace=True) boy.replace(to_replace={"6班":"6"},inplace=True) boy['班级'].unique()
# 看有没有空值 # 只要有一个是空值 boy.isnull().any() # 这些字段是否 全为空值 boy.isnull().all()
# 所有的学科的都没有参加 设定为缺考 score_columns = ["1000米","50米","跳远","体前屈","引体","肺活量","身高","体重"] temp = boy[score_columns] # 找到缺考的数据 索引的组合 empty_index = temp.loc[temp.isnull().all(axis=1)].index empty_index
# 分数参考表的肺活量 score['男肺活量']
boy['肺活量']
FHL_df = score['男肺活量'] def boy_FHL(x): #遍历成绩表,x 是大于表中哪一个肺活量 for data in FHL_df['成绩']: if x>=data: return FHL_df['分数'].loc[FHL_df['成绩']==data].values[0] return 0 boy_FHL(3900)
# 利用map映射 将一张分数表,映射到成绩表中 ff=boy['肺活量'].map(boy_FHL).values ff
# 利用map映射 将一张分数表,映射到成绩表中 boy1 = boy.copy(); boy1['肺活量']=boy['肺活量'].map(boy_FHL) boy1[['姓名','肺活量']]![]()
# 把类型统一浮点类型 # 将集合都转化为浮点类型 boy['50米'] = boy['50米'].astype(float)
df_50M = score['男50米跑'] # 处理男子50米跑的数据 def map_50(x): for data in df_50M['成绩']: if x <= data: return df_50M.loc[df_50M['成绩']==data]['分数'].values[0] return 0.0 map_50(10.4)- 10
# 1000米成绩处理 score['男1000'].loc[10,"成绩"]
'4\'25"'.strip('"')
"4'25".split("\'")
# 时间转换的函数 def process_data(x): # 如果x 不是字符串 #如果时间是整数直接返回 if not isinstance(x,str): return x x = x.strip('"') #得到分钟 m s秒 m,s = x.split("\'") second = float(s)/(60) #如果不是整数时间,返回带小数的分钟 return (float(m) + second) process_data("4'21")- 4.35
# 学生成绩表中的1000 米时间替换一下 boy['1000米'] = boy['1000米'].map(process_data) boy['1000米']
score[("男1000","成绩")] = score[("男1000","成绩")].map(process_data) score
# 处理男子1000米跑的数据 df_1000M = score['男1000'] df_1000M def map_1000(x): for data in df_1000M ['成绩']: if x <= data: return df_1000M.loc[df_1000M['成绩']==data]['分数'].values[0] return 0.0 boy2 = boy.copy() boy2['1000米'] =boy['1000米'].map(map_1000) boy2
boy['引体']
df_YT = score["男引体"] df_YT
# 处理男子引体数据 def map_YT(x): for data in df_YT['成绩']: if x>data: return df_YT.loc[df_YT['成绩']==data]["分数"].values[0] return 0 boy['引体'].map(map_YT)
# 体前屈 boy[["姓名","体前屈"]]
df_TQQ = score["男体前屈"] #处理提前屈的函数 def map_TQQ(x): for data in df_TQQ['成绩']: if x>=data: return df_TQQ.loc[df_TQQ['成绩']==data]["分数"].values[0] return 0 boy.loc[boy["体前屈"].map(map_TQQ) == 50]
作者:可以给我吃一口吗
链接:https://www.pythonheidong.com/blog/article/758779/438d59c6e9516a9b33a8/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!