2020年上海市高等学校信息技术水平考试试卷_三级_数据科学技术及应用_模拟卷_三、程序填空题_答案
(本试卷考试时间 150 分钟)
答案是自己做的,经验证,可成功运行。
内容仅供学习交流,不可转载。
三、程序填空题 ( 本大题 4 道小题 ,每空 3 分,共 36 分)。
1.
提示:
a) 题目源程序存放在"C:\KS"文件夹下,供程序调试;
b) Python科学计算库函数使用说明存放在"C:\KS"文件夹下,注意不同类库的函数存放在相应的sheet下。
某商品的成本(cost)可以根据产量(output)进行计算: cost=0.14*output+42.7,编写程序模拟商品的生产数据,估计商品的成本(源程序fill_1.py)。
1)使用数组记录6次生产的商品产量(千件),分别为10、5、7、9、11、8;
2)根据公式计算每次生产商品的成本;
3)假设实际成本围绕计算的成本值上下波动,波动值服从均值为0、方差为2的正态分布,随机生成6个数据,模拟每次的波动;
4)加上波动值,计算6次生产商品的实际成本。
源程序文件(fill_1.py)
#1)使用数组记录6次生产的商品产量(千件),分别为10、5、7、9、11、8;
output = 【1】
#2)根据公式计算每次生产商品的成本;
cost = 0.14*output + 42.7
print( '1:cost: ',cost)
#3)实际成本围绕计算成本上下波动,波动值服从均值为0,方差为2的正态分布。
#随机生成6个数据,模拟每次的波动;
varcost = np.【2】(0,2,6)
print( '2:variance: ',varcost)
#4)加上波动值,计算6次生产商品的实际成本。
cost =【3】
print( '3:cost: ',cost)
答案:
#【1】:np.array([10,5,7,9,11,8])
#【2】:random.uniform
#【3】:cost+varcost
2.
提示:
a) 题目源程序存放在"C:\KS"文件夹下,供程序调试;
b) Python科学计算库函数使用说明存放在"C:\KS"文件夹下,注意不同类库的函数存放在相应的sheet下。
根据IDC的统计数据,各品牌手机在中国的年销量如表1所示(源程序fill_2.py)。
1)根据表1的数据,绘制折线图分析各品牌销量发展趋势,如图1所示;
2)计算2018年各品牌手机的同比增幅((Y2018-Y2017)/Y2017),并在原数据中增加新列"INC2018",如图2所示;
3)显示增幅为正的品牌2015-2018年的销售量。
图1 手机销量折线图
图2 增加列:2018年各品牌手机的同比增幅INC2018
源程序文件(fill_2.py)
#1)记录表1的数据,绘制折线图分析各品牌销量发展趋势;
index = ['Huawei','Apple','OPPO','vivo','Mi'];
columns = ['Y2015','Y2016','Y2017','Y2018']
data = np.array( [ [62.9,76.6,90.9,104.97], [58.4,44.9,41.1,36.32],
[35.3,78.4,80.5,78.94],[35.1,69.2,68.6,75.97],
[64.9,41.5,55.1,51.99] ] )
sales = DataFrame(【1】)
print(sales)
#绘制折线图
psales = DataFrame(data.T, columns, index)
print(psales)
plt.rcParams['font.sans-serif'] = ['SimHei']
【2】(title='2015~2018国内手机销量',LineWidth=2, marker='o',
linestyle='dashed',grid=True,alpha=0.9)
plt.show()
#2)计算2018年各品牌手机的同比增幅,并在原数据中增加新列"2018同比增幅";
sales['INC2018'] =【3】
print(sales)
答案:
#【1】:data=data,columns=columns,index=index
#【2】:psales.plot
#【3】:(sales['Y2018']-sales['Y2017'])/sales['Y2017']
3.
提示:
a) 题目源程序存放在"C:\KS"文件夹下,供程序调试;
b) Python科学计算库函数使用说明存放在"C:\KS"文件夹下,注意不同类库的函数存放在相应的sheet下。
表2和表3分别记录了部分"人工智能"类图书的一周销售数据(源程序fill_3.py)。
1)根据表2和表3分别创建数据对象,然后将两个数据对象合并,如表4所示;
2)统计每家出版社出版的图书数,如图3所示;
3)显示一周各出版社销售额,如图4所示。
图3 每家出版社出版的图书数
图4 一周各出版社销售额
源程序文件(fill_3.py)
import numpy as np
import pandas as pd
from pandas import DataFrame
#1)分别记录根据表2和表3中数据,然后合并
books1={"bookname": ['Python数据分析基础', '数据科学与大数据分析','机器学习','人工智能简史'],"press": ['人民邮电出版社', '高等教育出版社', '清华大学出版社', '人民邮电出版社'], "price": [38.9, 56.4, 45.2, 23.5], "sales": [25, 39, 44, 24]}
col_name=['bookname','press','price','sales']
df1=DataFrame(books1,index=['A01','A02','A03','A04'], columns = col_name)
print(df1)
books2={"bookname": ['Python程序设计', '数据科学导引','深度学习', '机器学习实战','TensorFlow框架',],"press": ['清华大学出版社', '高等教育出版社','人民邮电出版社', '人民邮电出版社', '电子工业出版社'], "price":[42.1, 34.5, 67.1, 56.0,78.2],"sales": [30,18,32,20,10]}
df2=DataFrame(books2,index=['B01','B02','B03','B04','B05'], columns = col_name)
print(df2)
#合并df1和df2
df3=pd.【1】([df1,df2])
print("数据集合并后:\n",df3)
#2)统计每家出版社出版的图书数量
print("\n出版社出版的图书数:\n",df3['press'].【2】, "\n")
#3)显示一周各出版社销售额
df3['total'] = df3['price']*df3['sales']
grouped = df3.groupby('press')
print( grouped.aggregate(【3】) )
答案:
#【1】:concat
#【2】:value_counts()
#【3】:{'price':np.sum}
4.
提示:
a) 题目源程序存放在"C:\KS"文件夹下,供程序调试;
b) Python科学计算库函数使用说明存放在"C:\KS"文件夹下,注意不同类库的函数存放在相应的sheet下。
风记录数据集(winds.csv)记录了2014年某区域发生的台风信息,包含台风名、台风等级、气压(百帕)、移动速度(公里/时)、纬度、经度、记录数、顺序、风速(米/秒)等9个属性,具体说明见"数据集说明"文件。(源程序fill_4.py)
- 从文件中读出台风数据;
2)查看是否存在缺失数据,删除包含缺失数据的样本;
3)输出达到超强台风等级的台风名字。
源程序文件(fill_4.py)
import pandas as pd
import numpy as np
#1) 从文件中读出台风数据
filename = 'winds.csv'
winds = pd.【1】(filename)
#print(winds[0:5])
#2)查看是否存在缺失数据,删除包含缺失数据的样本
print(winds.isnull())
【2】(inplace = True)
#3)输出达到超强台风等级的台风名
names = winds.loc[ 【3】,"windname" ].unique()
print("\n达到超强台风等级:\n", names )
答案:
#【1】:read_csv
#【2】:winds.dropna
#【3】:['level'].values=='超强台风'