内容正文:
高二信息技术选考
班级:___________________ 学号:___________________ 姓名:___________________
编程处理数据
项目情景:
考试刚结束后,王老师遇到了一个难题:145名学生的12道选择题,手工统计耗时又易错。作为学校数据分析社的成员,你临危受命,要用pandas这把“利器”破解考试数据背后的秘密——哪些题目是失分重灾区?哪个班级表现最佳?是否存在异常得分?让我们一起用数据说话,让pandas为考试成绩分析改进提供精准导航!
项目实施
任务一:#读取Excel文件“score.xlsx”,创建DataFrame对象df
import pandas as pd
df=pd.read_excel("scores.xlsx")
print(df)
思考:加框处数据存在什么数据问题?
任务二:#数据整理
①修改异常班级
df.at[1,"班级"]="三05"
print(df)
思考:有无其他处理方式?
②根据标准答案ans,将学生作答选项替换为得分
ans="DBCBADCBCDDC"
for i in df.index:
for j in df.columns[3:]:
If df.at[i,j]==ans[int(j[1:])-1]:
df.at[i,j]=2
else:
df.at[i,j]=0
print(df)
③插入总分列并计算
df.insert(15,"总分","")
df.总分=df.sum(axis=1)
④选出有效答卷数据(空白卷列为“否”)
df1=df[df.空白卷=="否"]
思考:能否直接筛选总分0分数据?
⑤删除“空白卷”列
df2=df1.drop("空白卷",axis=1)
任务三:#数据分析——学生个人成绩分析
①查看选择题得分最高的十位同学并输出
df_sort=df2.sort_values("总分",ascending=False)
print(df_sort[:10])
思考:若要将并列项一起输出,以上处理可否?
fs=df_sort.总分[39]
print(df_sort[df_sort.总分>=fs])
任务四:#数据分析——班级成绩分析
①总分平均分最高的三个班级
dfg=df2.groupby("班级",as_index=False).mean()
dfg_sort=dfg.sort_values("总分",ascending=False)
print(dfg_sort[:3])
②每道题年级平均分
dfnj=df2.mean()
print(dfnj)
③#输出每道题超过年级平均分的班级
for a in dfg.columns[1:]:
s=[a]
for j in dfg.index:
if dfg.at[j,a]>dfnj[a]:
s.append(dfg.at[j,"班级"])
print(s)
拓展任务:绘制各班平均分柱状图
x=dfg.班级
y=dfg.总分
plt.bar(x,y,label="总分")
plt.title("各班级总分平均分对比")
plt.xlabel("班级")
plt.ylabel("平均分")
plt.legend()
plt.show()
课后练习
1.[2024 金华期中]某学校开展食堂窗口满意度调查,让学生分别对食堂窗口“米粉轩”“炒饭屋”“快乐饺子窗”“爽口素食站”“甜蜜角落”进行评价。调查结果如图所示,若满意度为“/”,则为无效票,不参与统计,有效票的满意度分 3 个等级:A(满意)、B(一般)、C(不满意),分别计 1 分、0 分、-1 分。现计算各食堂窗口的满意度,结果用图表形式呈现,部分 Python 程序如下:
import pandas as pd
import matplotlib.pyplot as plt
df1=pd.read_excel("data.xlsx")
df1= ① #筛选出有效票
for i in df1.index:
rank=df1.at[i,"满意度"]
②
df1.at[i,"得分"]=mark
df2=df1.groupby( ③ ,as_index=False)["得分"].sum()
df2=df2.sort_values("得分",ascending=False)
plt.title("食堂窗口满意度排行")
#设置绘图参数,代码略
plt.bar(df2["食堂窗口"],df2["得分"])
(1)请在划线处填入合适的代码。
(2)上述程序运行后,下列选项中的图表可能是绘制结果的是 (单选,填字母)。
(1)① df1[df1. 满意度!="/"]或 df1[df1["满意度"]!="/"] ②mark=ord("B")-ord(rank)或 mark=66-ord(rank) ③"食堂窗口"(2)B
2.[2024 舟山期末]小王收集了舟山市某届中小学阳光体育运动会部分小学、初中学校的获奖数据,并将其保存在“medal.xlsx”文件中,部分数据如图 a所示。
(1)观察表格数据,“定海五中”所在数据行存在的问题是 (单选,填字母)。
A.数据缺失 B.数据重复 C.逻辑错误 D.格式不一致
(2)小王将错误数据修改正确后,用Python程序读取该文件,统计普陀区中小学金牌数并使用 matplotlib绘制图表,呈现结果如图 b 所示。部分 Python 程序如下,请在划线处填入合适的代码。
import pandas as pd
import matplotlib.pyplot as plt
#正常显示中文
plt.rcParams["font.sans-serif"]="SimHei"
df=pd.read_excel("medal.xlsx")
g=
g=g.sort_values("金 ",ascending= ① ).head(5)
plt.title("普陀区部分学校金牌数据")
x=g["学校"]
y= ②
plt.xlabel("学校")
plt.ylabel("金牌数量")
plt. ③ (x,y)
plt.show()
(3)上述程序中,加框处代码应为 (单选,填字母)。
A.df["县(区)"]=="普陀" B.df[df["县(区)"]=="普陀"]
C.df["县(区)"=="普陀"] D.df[df["县(区)"]]=="普陀"
(4)由图b可知,普陀区金牌数量超过20的学校有 个。
( 1)D (2)①False ②g["金"] 或 g.金 ③bar (3)B (4)2
课后小结
请在此处进行本部分补充小结:
学科网(北京)股份有限公司
$