试题

试题 试卷

logo

题型:综合题 题类: 难易度:困难

浙江省嘉兴市2023年9月高三信息技术模拟检测卷

某地高中的技术选考数据,保存在“jsxk.xls”文件中,如图a所示。

图 a

图 b

请回答下列问题:

(1)、统计各学校技术选考人数占本校总人数的比例,找出占比最高的前 5 所学校并绘制柱形图,如图 b 所示。部分 Python程序如下,请在划线处填写合适的代码。

import pandas as pd

import matplotlib.pyplot as plt

#图表支持中文字体显示,代码略

df= pd.read_excel("jsxk.xls",dtype={'学校代码':'string'})           #学校代码列为字符串

df1 = df.groupby("  ", as_index=False).count()        #按学校统计人数

df1 = df1.rename(columns={'姓名':'学生总数'})#重命名列

df1['技术比例'] = round(/df1['学生总数']* 100,2)

df1 = df1.sort_values('技术比例',ascending=False).head(5)

plt.title('技术选考比例前 5 的学校')

plt.bar( )

plt.show()

(2)、在本问题的解决中,为了探究函数 groupby() ,某同学编写了自定义函数zdygroupby() ,其功能为统 计各校技术选考总人数,并以字典的形式返回。函数代码如下,请在划线处填写合适的代码。(注:代码中 lst 为二维列表,列表中每个元素包含3个数据项,格式如[['201901','顾筱扬',NaN],['201901','  俞凯睿', 1.0],['201901',' 陈丹祺', 1.0] … …])

def zdygroupby(1st):

    dic = {}

    for row in lst:

        if row[2] == 1:

            if  :

                dic[row[0]]=1

            else:

                dic[row[0]]+= 1

   

举一反三
二叉树是每个结点最多有两个子树的树结构,如值为9的结点有两个子树6和8,值为6的结点有两个子树5和3。若设二叉树的深度为h,则除第h层外,其它各层(1~h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。现要构造大根堆,堆是一棵顺序存储的完全二叉树,大根堆又是一种特殊的堆,它的特征是每个双亲结点的值都不小于其孩子结点的值。如下图所示,值为9的结点是6和8的双亲结点,而6和8分别是9的左孩子和右孩子;同理,6是5和3的双亲结点,而5和3分别是6的左孩子和右孩子……

假如我们用数组表示上述大根堆:

a(1)

a(2)

a(3)

a(4)

a(5)

a(6)

a(7)

a(8)

a(9)

9

6

8

5

3

4

7

2

1

现有一算法把一个无序数组改造成大根堆。例如:我们在上图的大根堆中再增加一个值为8的新元素,如下图所示。

数组存储为:

a(2)

a(3)

a(4)

a(5)

a(6)

a(7)

a(8)

a(9)

a(10)

6

8

5

3

4

7

2

1

8

具体操作方法如下:

第一步:因为a(10)大于它的双亲结点a(5),故需交换a(10)和a(5)的值;

数组存储为:

第二步:因为a(5)大于它的双亲结点a(2),故需交换a(5)和a(2)(t)值;

数组存储为:

a(1)

a(2)

a(3)

a(4)

a(5)

a(6)

a(7)

a(8)

a(9)

a(10)

9

8

8

5

6

4

7

2

1

3

第3步:因为a(2)不大于它的双亲结点a(1),故无需做交换操作。此时新元素已经放到了正确的位置,新的大根堆构造完成,上移行动结束。

返回首页

试题篮