第4章 第19课 数据处理与应用综合-【精彩三年】2024-2025学年高中信息技术必修第一册课程探究与巩固Word教参(浙教版2019)
第19课 数据处理与应用综合(见学生用书P102)
——4 数据处理与应用,教材第116~155页
基于Python程序设计语言,合理利用pandas,通过简单算法解决问题。
2023·浙江1月选考小红收集了部分城市2021年全年每天PM2.5、PM10、CO浓度数据,并将其分别保存在以8 位日期字符串命名的CSV文件中,部分文件如图1所示。每个文件记录了一天24小时的监测数据,示例如图2所示。
图1 图2
为统计分析城市A 2021年全年各月份PM2.5的月平均浓度(当月的日平均浓度的平均值),小红编写了一个Python程序。请回答下列问题。
(1)定义pmday() 函数,功能为:读取某天的CSV 文件,返回城市A 当天PM2.5 的日平均浓度。函数代码如下,横线处应填入的代码为__D__(单选,填字母)。
A.df['类型']=='PM2.5' B.df['类型'=='PM2.5']
C.df[df['类型']]=='PM2.5' D.df[df['类型']=='PM2.5']
import pandas as pd
def pmday(dayfile):
学科网(北京)股份有限公司
df=pd.read_csv(dayfile) # 读取文件dayfile 中的数据
df=____________
return df['城市A'].mean() # 返回城市A 当天PM2.5 的日平均浓度
(2)统计城市A 各月份PM2.5 的月平均浓度并绘制线形图,部分Python 程序如下。请在横线处填入合适的代码。
import matplotlib.pyplot as plt
def tstr(t):
if t<10:
return '0'+str(t)
else:
return str(t)
pm=[0]*12
mdays=[31,28,31,30,31,30,31,31,30,31,30,31] # 2021 年每月天数
for m in range(12):
sm=0
mstr=tstr(m+1)
for d in range(①__mdays[m]__):
dstr=tstr(d+1)
dayfile='2021'+mstr+dstr+'.csv'
sd=pmday(dayfile)
②__sm+=sd__
pm[m]=sm/mdays[m]
x=[1,2,3,4,5,6,7,8,9,10,11,12]
学科网(北京)股份有限公司
y=③__pm__
plt.plot(x,y) # 绘制线形图
# 设置绘图参数,显示如图3所示的线形图,代码略
图3
(3)城市A 2021年PM2.5的年平均浓度为34.6微克/立方米。由图3可知,城市 A 2021年PM2.5的月平均浓度超过年平均浓度的月份共有__5__个。
【解析】 (1)可以通过布尔型数据选取满足条件的行。课本P132中示例:如通过df1[df1[”借阅次数”]>30],可以检索df1 对象中“借阅次数”大于30的数据行。仿此例,结合下一行代码可知,筛选条件为df['类型']=='PM2.5',筛选对象为df,故选项D正确。
(2)变量m表示各月份对应的索引,mstr 表示各月份的数字字符串,以长度为2 的字符串来表示,不足两位的在前面补“0”,此功能由函数tstr() 来实现。不同月份的天数不同,为了计算各月份PM2.5 浓度的平均值,可以累加各月的每天PM2.5 浓度的平均值。变量dayfile 表示每天的数据文件名,题干已经提示“每天的数据分别保存在以8 位日期字符串命名的CSV 文件中”,调用函数pmday(dayfile) ,可以得到当天PM2.5 的日平均浓度,并保存于变量sd中。当月的各天PM2.5 的日平均浓度需要累加起来,最后求均值。因此①②空的答案依次为mdays[m]和sm+=sd。观察数据可视化的图像,可知横坐标为月份,即x表示的
学科网(北京)股份有限公司