1. 管理员从该停车系统中导出了3月份每天的停车记录,如第14题图a所示,每天的停车记录内容格式如第14题图b所示(进出标记为0表示驶入,1表示驶出,停车记录已按进出时间升序排列)。

 

为统计停车场3月份每天的收入(只有驶入或驶出记录的车辆不参与计费),编写Python程序。

(1) 定义readdata函数,功能为:读取某一车牌车辆当天的进出时间记录,返回该车辆当天的停车总费用。参数data为该车牌当天的进出时间记录。函数代码如下,请回答下列问题:

①程序段中加框处应填入的代码为(单选,填字母)。

A .data.进出标记[p]==0

B .data.进出标记[p-1]==0 and data.进出标记[p]==1

C .data.进出标记[p+1]==1

D .data.进出标记[p]==0 and data.进出标记[p+1]==1

②请在程序段划线处填入合适的代码。

def catime(t1,t2):

    #计算时间t1与时间t2之间的时间差并计算本次停车的费用,函数返回停车费用,代码略。

def readdata(data):

    m=len(data)

    p=0;cost=0;total=0

    while p<m-1:

        if  :

            cost=catime(data.进出时间[p],data.进出时间[p+1])

            total+=cost

            p+=1

       

    return total

(2) 统计停车场3月份每天的收入并绘制柱形图,部分Python代码如下,请在划线处填入合适的代码。

n=31;dic={}

for i in range(1,n+1):

   

    fname="3月"+str(i)+"日.xlsx"

    df=pd.read_excel(fname)

    df_g=df.groupby("车牌").进出标记.count()

    for k in df_g.index:

#只有一条驶入或驶出记录的车辆不参与计费

        if :  

            data=df[df.车牌==k]

            dic[i]+=readdata(data)

plt.title("某停车场3月份整体收入图")

plt.bar(dic.keys(),dic.values())

plt.show()

(3) 已知每月分为3个时间段,1-10日称为上旬,11-20日称为中旬,21-30(31)日称为下旬。则由图c可知,该停车场3月份(选填:上旬/中旬/下旬)收入总和最高。

图c

【考点】
编程处理数据与可视化;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 普通
能力提升
真题演练
换一批
1.  某省2023年全年气象灾害预警数据保存在文件“qxyj.xlsx”中,部分数据如图a所示,编写Python程序,统计全年发布次数最多的5种气象预警。

图a

#导入模块略

df=pd.read_excel("qxyj.xlsx") #读取文件中的数据

(1) 整理数据,删除多余列,划线处代码正确的是:(    )(单选,填字母)

df=df.drop(["预警发布单位","预警发布时间"],____)#删除列

A. ascending=True B. index=True C. axis=0 D. axis=1
(2) 为统计每种气象的预警次数,划线处代码正确的是:____

df_g=df.groupby("预警名称",as_index=False).____ #分组并统计预警次数

df_s= df_g.sort_values("次数"ascending=False) #按"次数"降序排序

A. sum( ) B. count( ) C. min( ) D. mean( )
(3) 排序后给数据增加“预警等级”列,按照预警名称中的“红橙黄蓝”分别设置等级1234,输出结果如图 b 所示。划线处代码正确的是:(    )

图b

df_s["预警等级"]=0#插入新的"预警等级"列,默认值为0

for i in range(len(df_s)):

 s=

 if s[2]=="红":

 df_s.at[i,"预警等级"]=1

 elif s[2]=="橙":

 df_s.at[i,"预警等级"]=2

 elif s[2]=="黄":

 df_s.at[i,"预警等级"]=3

 elif s[2]=="蓝":

 df_s.at[i,"预警等级"]=4

print(df_s)

df_s=df_s.head(5)

A. df_s[i,"预警名称"] B. df_s.at[i,"预警名称"] C. df[i,"预警名称"] D. df.at[i,"预警名称"]
(4) 统计全年发布次数最多的5种气象预警,建立图表,如图c所示。请在程序划线处填写合适的代码。

图c

x=df_s.预警名称

y=

plt.bar(x,y) #绘制柱形图

plt.title('发布次数最多的 5 种气象预警')

plt.show() #显示图表

综合题 普通
2. 图书查询。所有正版图书均有唯一的国际标准书号(ISBN),ISBN由13位数字和字符“-”组成,字符“-”对数字间隔分段。如:某图书的ISBN为“978-7-5536-3176-9”(其中“978”表示图书类代码,“7”表示地区码,“5536”表示出版社代码,“3176”表示书序码,“9”为校验码)。小李为某校园书吧编写了图书查询的程序。

(1) 主程序

lst1=readfile("in.csv")#  校园书吧库存图书信息存储在文件"in.csv"

while True:

    print("1.验证 ISBN  校验码; 2.统计出版社费用; 3.操作结束")

    opt=int(input("请输入操作编号(1-3):"))

    if opt==1:

        isbn=input("请输入 ISBN  号:")

        if check(isbn):

            print("校验码正确")

        else:

            print("校验码错误")

    elif opt==2:

        code=input("请输入出版社代码:")

        money=total(code)

        print("书吧中该出版社出版的图书总价:%.2f 元" %money)    #输出的总金额保留 2 位小数点

    else:

        print("操作结束")

        break

运行程序,若输入opt值为 4,程序将(单选,填字母;A .运行时报错/ B .输出“操作结束”)。

(2) 读写文件

小李将校园书吧库存图书信息存储在文件"in.csv"中,内容如图所示。函数readfile()用于逐行读取文件数据存入列表并返回。请在划线处填入合适的代码。

import pandas as pd

def readfile(filename):        #读 csv  格式文件内容,将其存入列表并返回

    df1=pd.read_csv(filename, encoding="GBK")

    lst=[]

    for i in df1.index:

        isbn=df1["ISBN"][i]

        num=df1["图书数量"][i]

        price=df1["单价 (元) "][i]

        #添加到列表
lst.append([isbn,num,price])

return

(3) 校验码验证

ISBN最后一位的校验码用来检验前12位数字是否准确,是保护知识产权的一种检验方法。计算方法如下:

①将ISBN中前12位数字从左到右依次编号为“1、2、3、……、12”。

②若数字编号是奇数,则对应权值为1,否则权值为3。首先将ISBN中前12位的数字值与对应权值相乘,然后将计算所得值进行累加。

③最后,用10减去第②步结果对10整除的余数,所得结果即为校验码。

defcheck(ISBN):    #对ISBN校验码验证

    n=len(ISBN)

    val=0; k=3

    for i in range(0,n-1):

        if '0'<=ISBN[i]<='9':

            k=4-k

            val+=int(ISBN[i])*k

if result==int(ISBN[-1]):

    return True

else:

    return False

(4) 统计校园书吧中某出版社出版的所有图书总价

'''列表 lst1  中的部分数据如:

[['978-7-5139-3066-6',7,59.80],['978-7-5063-3174-6',9,48.00] , ……]

'''

def total(code):                    #统计书吧中出版社代码为 code  的所有图书总价

    n=len(lst1);money=0

    for i in range(n):

        isn=lst1[i][0].split('-')     #将 list1[i][0]以“- ”为分隔符,分割成多个字符串组成的列表

        if isn[2]==code:

           

    return money

综合题 困难
3. 小王通过扫描仪获取到技术周考的学生信息技术单选题答题信息,记录了学生每个小题的答题选项,如图a所示:

图 a

为了统计分析出每一小题的答题情况,小王编写了Python 程序,请回答下列问题:

(1) 分析学生每个小题的 A,B,C,D 选项的占比,代码如下:

import pandas as pd                                                   第 1 小题

import matplotlib.pyplot as plt                                       A: 2.22 %

plt.rcParams[("font.sans-serif")]= ["KaiTi"]                          B: 6.67 %

df=pd.read_excel ("ITdata.xlsx")                                       C: 80.0 %

stunum=len(df)                                                         D: 8.89 %

for i in range(1,13):                                                 第 2 小题

print("第"+str(i)+"小题")                                         A: 0.0 %

for k in "ABCD" :                                                  B: 80.0 %

t

=        

print(k+":",round(len(t)/stunum*100,2),"%")

该程序段运行结果的部分界面如图b 所示。

图 b

画线处填入的代码为          (单选,填字母)

A. df["单选"+str(i)]==k B. df[df["单选"+str(i)]==k] C. df[["单选"+str(i)]==k] D. df[df["单选"+str(i)]]==k
(2) 计算出全班学生的各小题得分并统计各小题平均分,绘制出线形图(如图c所示),部分Python程序如下,请在划线处填入合适的代码。

图 c

sans="CBCABCABDABD"

qnum=list(df.columns)

for i in df.index :

=

#本次单选题的标准答案

for j in range(2,14):

if df.at[i,qnum[j]]== :

r=2 else:

r=0

#回答正确得 2 分

#回答不正确得 0 分

df.at [i,qnum[j]]=r

aver= []

for j in qnum[2:]:    #统计各单选题的平均分

aver.append( )

plt. (qnum[2:],aver,label="平均分")

plt.legend()

plt.show ()

(3) 由图b 可知,12 道选择题中难度最低的是“单选”。
综合题 普通