资源简介 中小学教育资源及组卷应用平台2024信息技术学业水平考试专题练优化集训15 pandas处理数据1.下列有关pandas-Series的说法错误的是( )A.包含一个数组的数据和一个与数据关联的索引,是二维数据结构B.其索引值默认是从0起递增的整数C.可用列表、字典等创建Series数据结构D.其索引可以指定,类型可以为字符串型2.下列有关pandas-DataFrame的说法错误的是( )A.是一种二维数据结构B.由1个索引列和若干个数据列组成C.同一个DataFrame对象的数据列类型必须相同D.可看作共享同1个index的Series集合3.不能实现选取df对象前5行数据记录的语句是( )A.df.head() B.df.head(5)C.df[0:5] D.df[5]回答下列第4~6题。4.某DataFrame对象df中包含“准考证号”“班级”“姓名”“文”“数学”…“总分”等10个数据列、多个数据行,能获取对象df第3个数据的“姓名”内容的语句有( )①df[2,'姓名'] ②df.at[2,'姓名'] ③df[2]['姓名'] ④df['姓名'][2] ⑤df.姓名[2]A.①②③ B.①②④C.②④ D.②④⑤5.如第4题对象df,能够降序排列输出总分大于等于600分的学生数据的代码组合是( )①df=df.sort_values(″总分″,ascending=True)②df=df.sort_values(″总分″,ascending=False)③df=df[″总分″,>=600]④df=df[df[″总分″]>=600]⑤print(df)A.①③⑤ B.①④⑤C.②③⑤ D.②④⑤6.如第4题对象df1,下列语句中,可以以班级为单位,统计出各班级“总分”的平均值的有( )①df.groupby('班级').mean()②df.groupby('总分').mean()③df.groupby('班级')['总分'].mean()④df.groupby('班级').总分.mean()⑤df.groupby('班级').describe()A.①②③④⑤B.①②③⑤C.①③④⑤D.①②③7.有如下Python程序段。import pandas as pdlist=[['周欣怡','湖州',15,646],['王培新','杭州',16,598],['张佳明','杭州',16,609],['林逢春','嘉兴',15,547],['朱梁栋','湖州',16,588],['陈清瑞','嘉兴',15,571]]inf=pd.DataFrame(list,columns=['姓名','地区','年龄','总分'])print(inf)print('_' 20)print(inf.groupby('地区',as_index=True).mean())执行该程序段后,输出的结果是 (单选,填字母)。 8. 模块用于科学计算(随机数、数组运算等); 模块基于numpy实现,主要用于数据的处理和分析; 用于绘图库。 9.小明从某网站上收集了2022年4月部分生产资料市场价格变动情况数据,数据集保存在“shuju.xlsx”中,格式如图a所示。图a为分析相关类别生产资料的涨跌幅情况,小明编写了以下Python程序。import pandas as pdimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei'] #正常显示中文字体df=pd.read_excel(″shuju.xlsx″)df[″涨跌幅″]= (1)通过数据计算添加涨跌幅列,请在划线处填写实现的方式。计算公式为:涨跌幅=(本期价格-上期价格)/本期价格 100。(2)若要对表格中的数据进行分类统计,并求其平均涨跌幅。请完善以下代码:g=df.groupby(″类别″,as_index=False)df1= df1=df1.sort_values(″涨跌幅″,ascending=False)(3)根据上述操作结果,制作一份显示类别涨跌幅平均值的图表,其格式如图b所示。各种类别对比分析图图b请完善以下代码。plt.figure(figsize=(8,4))plt.title(″各种类别对比分析图″)plt.bar(① ,df1[″涨跌幅″],label='涨跌幅') plt.xlabel(″类别″)plt.ylabel(② ) plt.legend()plt.show()10.某市普通高中选课数据如下图所示,学生从技术、化学、生物等科目中选择三门作为高考选考科目,“1”表示已选择的选考科目。图a各学校技术选考人数对比图b为分析各学校的学生选科数据,编写了如下程序:import pandas as pdimport matplotlib.pyplot as pltplt.rc'font', {'family':'SimHei'}plt.rcParams['axes.unicode_minus']=Falsedf=pd.read_csv(″xk73.csv″)(1)若要了解市里所有选考技术的学生情况,请在划线处给出合适代码,筛选出有选技术科目的同学信息:print( ) (2)使用Python编程分析每所学校各科目选考的人数(不同的学校代码表示不同的学校)。请在划线处填入合适的代码。g=df.groupby(① ,as index=false) #按学校进行分组 s2=② #按学校分别统计各科目的选考人数 s2.sort_values(″技术″,ascending=False) #按技术选考人数进行降序排序(3)若要做一个各学校技术选考人数的分析,添加如下程序段:plt.figure(figsize=(10,5))a=list(s2.学校代码)plt.xticks(range(1en(s2.学校代码)),a,rotation=45) #将各学校代码按降序顺序显示在x轴上p1t.① (range(len(s2.学校代码)),② ) #对各学校及对应技术选考人数进行绘图 plt.xlabel(″学校″)plt.ylabel(″技术选考人数″)plt.title(″各学校技术选考人数比对″)plt.show()划线处的代码应为 (单选,填字母)。 A.①barh ②df.技术B.①plot ②df.技术C.①bar ②s2.技术D.①scatter ②s2.技术11.黄老师获取了学校高三年级学生某次考试数据,并使用Excel软件、Python程序进行数据处理,如图所示。(1)Excel文件“exam.xlsx”中的数据为 (选填:结构化数据/半结构化数据/非结构化数据)。 (2)黄老师将文件存储为“exam.xlsx”,并编写了如下Python程序对数据进一步分析。请将划线处代码补充完整。import pandas as pdimport matplotlib.pyplot as pltdf = pd.read_excel(″exam.xlsx″)#统计年级物化生政史地技各个科目的选课人数(本次考试无人缺考)for i in df.columns[5:12]:km=irenshu=df[km].count()print(″选″,km,″的人数为:″,renshu)#制作年级男女生语文平均分对比图表df2=df.groupby(″性别″,as_index=False).① plt.bar(df2.性别,② ) plt.③ (″男女生语文平均分比较″) plt.xlabel(″性别″)plt.ylabel(″语文平均分″)plt.show()12.某地区要对辖区内高中学生的高考选科情况进行统计,前期先用Excel收集各个学校每个学生的选科数据,界面如图所示。用Python处理上述Excel文件,统计每个学校各个学科的选科情况,并用图表展示学生人数最多的5个学校的物理学科与政治学科人数,代码如下:import pandas as pdimport numpy as npimport matplotlib.pyplot as pltdf=pd.read_excel(″xk73.xlsx″)#读数据到pandas的DataFrame结构中sc=df.groupby(① ,as_index=False).count()#按学校分组计数 sc=sc.drop('姓名',axis=1)#删除“姓名”列sc=sc.rename(columns={'学生编号':'总人数'})#修改“学生编号”为“总人数”sc_sort=sc.sort_values(″总人数″,ascending=False)#对分组计数结果进行排序x=np.arange(1,6)#产生列表[1,2,3,4,5]y1=sc_sort.head()[″物理″]② plt.figure(figsize=(8,4))plt.bar(x-0.2,y1,label=″wuli″,width=0.4)plt.bar(x+0.2,y2,label=″zhengzhi″,width=0.4)plt.ylim(50,400)plt.legend()df_sum=pd.DataFrame(data=sc.sum()).Tdf_sum['学校代码']='合计'③ #显示图表 result=sc.append(df_sum) #增加“合计”行result.to_excel(″学校人数统计.xlsx″)#保存结果在划线处填写合适代码,完善程序。优化集训15 pandas处理数据1.A 解析 是一维数据结构。2.C 解析 同一个DataFrame对象的不同数据列类型可以不同。3.D 解析 head(n)函数返回DataFrame前n行数据,若不设置参数n,则默认返回前5行。df[0:5]选取df对象前5行数据,df[5]选取df对象第6列数据。4.D 解析 可以通过at方法获取DataFrame对象单个数据值,格式为df.at[index,column],所以②正确;或者根据列标题先获取整列,然后通过行索引获取单个数据值,其中获取一列数据可以通过字典记法或属性检索,第三行数据的行索引是2,所以④⑤均正确。5.D 解析 sort_values()函数中,参数ascending,默认值为True,表示升序,为False时是降序;对于DataFrame对象,可以通过布尔型数据选取满足条件的行,正确写法为df[df[″总分″]>=600];最后通过语句⑤输出结果。6.C 解析 统计各班级学生“总分”平均值需要按照“班级”分组计算。df.groupby('班级').mean()#按“班级”分组,计算各纯数值列平均值。df.groupby('总分').mean()#按“总分”分组,计算各纯数值列平均值。df.groupby('班级')['总分'].mean()#按“班级”分组,并选取“总分”列计算平均值。df.groupby('班级').总分.mean()#按“班级”分组,并选取“总分”列计算平均值。df.groupby('班级').describe()#按“总分”分组,计算各纯数值列的平均值、最大值等统计数据。7.B 解析 as_index:为True时自动把第1列作为了index,为False时默认索引0、1、2…。8.numpy pandas matpoltlib9.(1)(df.本期价格-df.上期价格)/df.本期价格 100(2)g.mean() (3)①df[″类别″]或df.类别 ②″涨跌幅″解析 (1)根据数量关系确定计算公式。(2)计算平均值使用mean()函数。(3)①观察题图b可知需要填横坐标数据来源。②此处需要填写横坐标y的标签(ylabel),由题图可知应该是“涨跌幅”。10.(1)df[df.技术==1](或df[df[″技术″]==1]) (2)①″学校代码″ ②g.sum()或g.count() (3)D 解析 本题考查pandas及绘图模块知识。(1)Dataframe中,要对某列进行筛选(查找并显示符合条件的值),可以通过df[df[″技术″]==1]或df[df.技术==1]来实现。(2)此处考查pandas中分组函数groupby的用法。依题意,本条语句按学校进行分组,分组的字段名应为“学校代码”,故①处填″学校代码″;①处代码已将分组后的对象赋值组变量g,②空对其进行计数,故填:g.count()。(3)观察题图b,可知当前是散点图(scatter),故选D。11.(1)非结构化数据 (2)①mean() ②df2.语文 ③title解析 (1)Excel中的数据是属于结构化数据(每列数据类型均统一)。(2)①此处求平均值,因此使用mean()函数。②根据性别分组后,df2对象中‘语文’列存放了男女生语文成绩平均分,创建柱形图,x轴为性别,y轴为男女生语文成绩平均分,故答案为df2.语文。③此处显示的标题,因此答案如上。12.①″学校代码″ ②y2=sc_sort.head()[″政治″](或y2=sc_sort.head(5)[″政治″]) ③plt.show() 解析 本题考查数据处理知识。(1)①题干说明需要“统计每个学校各个学科的选科情况”,所以需要根据“学校编号”分类汇总统计各学校的选科情况,此空填写分组的关键字,答案为“学校代码”。②根据上下文,此空是获取学生人数最多的5个学校的政治学科人数。前面代码段已经根据各学生总人数降序排序,再结合上一段代码,此空只需要将“物理”修改成“政治”。head()函数返回DataFrame的前n个数据记录,如果参数不写,默认参数是5,所以此空答案:y2=sc_sort.head()[″政治″]或y2=sc_sort.head(5)[″政治″]。③代码段plt.show()的功能是显示图形。(2)此空考查对图表结果呈现的辨析。代码段“plt.legend()”,说明最后的结果有图例,排除CD。代码段“plt.ylim(50,400)”,说明y坐标的取值范围是[50,400],所以排除A,选B。21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)21世纪教育网(www.21cnjy.com) 展开更多...... 收起↑ 资源预览