第二节 利用pandas模块处理数据 同步练(含答案)2025-2026学年高中信息技术 必修1 数据与计算

资源下载
  1. 二一教育资源

第二节 利用pandas模块处理数据 同步练(含答案)2025-2026学年高中信息技术 必修1 数据与计算

资源简介

第二节 利用pandas模块处理数据
1. 小明采集了运动会的报名数据并录入Excel文件,每名同学最多参加两个项目,部分界面如下图所示。他先使用Excel软件整理数据,存储为“运动会报名.xlsx”文件后,编写Python程序进行后续处理。小明编写了如下程序,实现输出跳高人数最多的3个班级的功能。
第1题图
import pandas as pd
df=pd.read_excel("运动会报名.xlsx")
g=df.groupby("班级").跳高. ① 
df1=pd.DataFrame({"班级":g.index,"跳高人数":g.values}) #重新设置列标题
df2=df1.sort_values("跳高人数", ② )
print(df2. ③ )
要实现上述功能,横线上的代码应该是( D )
A. ①count() ②ascending=False ③tail(3)
B. ①sum() ②ascending=True ③head(3)
C. ①count() ②ascending=True ③tail(3)
D. ①sum() ②ascending=False ③head(3)
【解析】 本题考查pandas数据处理知识。根据题意可知,输出跳高人数最多的3个班级的功能,而“跳高”栏中有数据“0”和“1”,还有空格,因此不能使用函数count()进行统计,只能用sum()统计人数,排除A、C。另外ascending=True表示升序,head(3)就是最小的三个,排除B。
2. 下列关于Series数据结构的说法,正确的是( A )
A. 一个Series中,index和values的长度必须一致
B. Series中,可以只包含一个数组的数据,不包含索引
C. 运行程序时两个index不同的Series相加会报错
D. Series经过计算后的index顺序和计算前不一致
【解析】 Series是一种一维数据结构,包含一个数组的数据和一个与数据关联的索引。索引和数据是一一对应的,所以长度一定是一致的;两个index不同的Series相加不会报错,Series经过计算后顺序保持一致。
3. 某DataFrame对象df,包含“学号”“学校”“姓名”“数学”“语文”等数据列,部分数据如图所示。下列Python语句中,能统计出各班学生“三科总分”平均值的是( A )
第3题图
①df.groupby("班级").mean( )
②df.groupby("三科总分").mean( )
③df.groupby("班级").三科总分.mean( )
④df.groupby("班级").describe( )
A. ①③④
B. ①②④
C. ①②③
D. ②③④
【解析】 本题利用pandas统计各班学生的“三科总分”成绩平均值,需按“班级”分组统计。①df.groupby("班级").mean(),按“班级"分组,计算各列(包括三科总分列)的平均值。②df.groupby("三科总分").mean(),按“三科总分’成绩分组,计算各列平均值,该语句和题意不符。③df.groupby("班级").三科总分.mean(),按“班级”分组,计算“三科总分”成绩列的平均值。
④df.groupby("班级").describe(),按“班级”分组,返回各列(包括三科总分列)的平均值、最大值等。
4. 导入pandas库并将其命名为pd的语句为( D )
A. pip install pandas
B. import pandas
C. import pandas name pd
D. import pandas as pd
【解析】 本题主要考查Python库的导入。导入pandas库并将其命名为pd的语句为import pandas as pd。
5. “学生信息.csv”文件是学生的各科成绩,Python中运用pandas库导入二维数据并进行分析。这样的数据结构在pandas库中被称为( A )
第5题图
A. DataFrame B. Series
C. Text D. CSV
【解析】 本题主要考查Python的数据类型。Series是一种类似于一维数组的对象。它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。DataFrame是一种表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可以看作由Series组成的字典(共同用一个索引),由图可知,这样的数据结构在pandas库中被称为DataFrame。
6. 在pandas函数中,Series是一种一维数据结构,包含一组数据和与数据关联的索引(index),索引值默认为从0开始递增。下面这段Python程序的运行结果为( B )
import pandas as pd
S=pd.Series(range(2,8,2))
print(S)
【解析】 本题主要考查Python数据结构的应用。range(start,stop,[step])。start: 计数从 start 开始,默认是从 0 开始。例如:range(5)等价于range(0,5)。stop: 计数到 stop 结束,但不包括 stop。例如:range(0,5) 是[0,1,2,3,4],没有5。step:步长,默认为1。例如:range(0,5) 等价于 range(0,5,1)。由代码“s=pd.Series(range(2,8,2))”可知数据是2、4、6,索引值默认从0开始递增,故程序运行的结果是。
7. 下图为某校高二年级技术考试的数据,该数据保存在文件“cj.xlsx”中。用Python对其进行处理的代码如下:
考号 学号 姓名 班级 信息
96789389 13200137 倪家颀 201 45
12551864 13200107 谢云朵 201 44
12557335 13200211 方慧 202 38
12556575 13200242 李博 202 38
12551655 13200302 杨婧 203 39
12551470 13200335 钱聪 203 39
12550826 13200339 徐开放 203 38
12551473 13200438 周宇杰 204 47
第7题图
import pandas as pd
df=pd.read_excel("cj.xlsx")
df.append({"考号":"0425","学号":"31","姓名":"伊默","班级":"214","信息":44},
ignore_index=True)
df.drop(0,axis=0)
del df["学号"]
g=df.groupby("班级",as_index=False). mean()
sv=g.sort_values("信息",ascending=True)
print(sv.head(3)["信息"])
执行该代码,下列说法中,正确的是( C )
A. df对象新增了一条关于“伊默”的记录
B. df对象删除了一条关于“倪家颀”的记录
C. df对象减少了“学号”列数据
D. 输出“信息”列平均分最高的三个班级
【解析】 本题主要考查Python的执行与调试。分析程序可知,df对象减少了“学号”列数据,输出“信息”列平均分最低的三个班级,没有新增一条关于“伊默”的记录,没有删除一条关于“倪家颀”的记录。
8. 用 Python 创建了一个 DataFrame 对象 df1:
import pandas as pd
data=[[88,89,96],[95,93,92],[90,87,95]]
df1=pd.DataFrame(data,index=[“小明”, “小红”,“小兰”],columns=[“语文”,“数学”,“英语”])
下列操作及描述中,错误的是( C )
A. print(df1[“英语”])输出“英语”列的数据
B. print(df1.数学)输出“数学”列的数据
C. print(df1.sort_values(“语文”,axis=1))输出“语文”列数据并按升序排列
D. print(df1[df1.语文<90])输出小明同学的成绩
【解析】 本题主要考查Python程序。print(df1["英语"])输出“英语”列的数据,print(df1.数学)输出“数学”列的数据,print(df1[df1.语文<90])输出小明同学的成绩,操作均正确。sort_values(by= ## ,axis=0,ascending=True,inplace=False,na_position= last ),by指定列名(axis=0或 index )或索引值(axis=1或 columns ),若axis=0或 index ,则按照指定列中数据大小排序;若axis=1或 columns ,则按照指定索引中数据大小排序,默认axis=0。故print(df1.sort_values(“语文”,axis=1))输出“语文”列数据并按升序排列描述错误。
9. 数据读取与存储是进行数据处理与分析的前提,在pandas中用于读取和写入逗号分隔值文件的方法是( D )
A. read_excel()、save_excel()
B. read_doc()、to_doc()
C. read_csv()、write_csv()
D. read_csv()、to_csv()
【解析】 本题主要考查Python程序的pandas模块。数据读取与存储是进行数据处理与分析的前提,在pandas中用于读取和写入逗号分隔值文件的方法是read_csv( )、to_csv( )。
10. 有如下Python程序段:
import pandas as pd
s=pd.Series(range(5,11,3))
s[1]=15
print(s)
该程序执行后,输出的结果是( B )
【解析】 本题主要考查Python程序的执行。执行完s=pd.Series(range(5,11,3))后,s[0]=5,s[1]=8,语句s[1]=15,此时执行print(s)后,输出的结果是。
11. 有如下Python程序段:
import pandas as pd
df=pd.DataFrame({"语文":[105,88,95],"数学":[110,129,135],"英语":[105,100,110]})
df.at[2,"英语"]=88
df1=df.drop(1,axis=0)
print(df1)
该程序执行后,输出的结果是( A )
A.
B.
C.
D.
【解析】 本题主要考查Python的综合应用。根据题意,df1的值为删除第一行数据,同时进行赋值输出;df.at[2,"英语"]=88语句的意思为将第二行英语成绩改为88。
12. 使用pandas编程处理数据DF1,下列选项中,能实现行列转置的操作是( A )
第12题图
A. DF1.T
B. DF1.columns
C. DF1.values
D. DF1.index
【解析】 本题主要考查pandas工具。T方法用于转置,columns、values、index方法分别根据列、值、索引返回数据。
13. 文件“st.xlsx”中的第一张Excel工作表存放了学生信息,单元格A1、B1、C1的值分别为“姓名”“性别”“年龄”,部分程序代码如下:
import pandas as pd
s1=pd.read_excel("st.xlsx")
s1.insert(0,column= 班级 ,value= -1 )
s2=s1.sort_values( 年龄 )
执行该程序代码后,下列说法中,错误的是( A )
A. 对象s1中的数据一定是按“年龄”升序排列的
B. 除索引列外,对象s1有4列数据
C. 对象s2中,每一行的“班级”列的值均为 -1
D. 对象s1中,索引列的值是按升序排列的
【解析】 本题主要考查pandas库的相关知识。该程序的功能是读入“st.xlsx”中的第一张工作表内容,并在索引列前增加一列“班级”,值均为 -1 ,将s1按年龄升序排列后赋值给s2,因此s1中的数据并未经过排序。
14. 用下列Python程序创建了一个Series对象s1。
import pandas as pd
s1=pd.Series([11,22,6,8,19],index=[ s01 , s02 , s03 , s04 , s05 ])
下列语句执行时会出现错误的是( B )
A. print(s1[1])
B. print(s1[s04])
C. s1[ s01 ]=80
D. s1[ s02 ]="abc"
【解析】 本题主要考查Python程序的执行。根据程序,语句print(s1[s04])是错误的,正确的应该是print(s1[ s04 ])或print(s1["s04"])。
15. 有如下程序段:
import pandas as pd
data={ state :[ Ohio , Ohio , Ohio , Nevada , Nevada ], year :[2000,2001,2002,2001,2002], pop :[1.5,1.7,3.6,2.4,2.9]}
frame=pd.DataFrame(data)
print(frame)
执行以上程序后,输出的结果是( B )
【解析】 本题主要考查Python程序的DataFrame结构。DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引。其中行索引index没有指定时,默认从0开始,执行以上程序后,输出的结果是。
16. 小红收集了部分城市2021年全年的PM2.5、PM10、CO浓度数据。每天的数据分别保存在以8位日期字符串命名的CSV文件中,部分文件如图1所示,每份文件记录了一天(24小时)的监测数据,如图2所示。
第16题图1
第16题图2
为统计和分析城市A全年各月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程序如下,请在横线上填入合适的代码:① mdays[m] ,② sm+=sd ,③ pm 。
import matplothb. pyplot as plt
def tstr(t):
  if t    return 0 +str(t)
  else:
    return str(t)
pm=[0]*12
mdays=[31,28,31,30,31,30,31,31,30,31,30,31]
for m in range(12):
  sm=0
  mstr=tstr(m+1)
  for d in range( ① ):
    dstr=tstr(d+l)
    dayfile= 2021 +mstr+dstr+ .csv
    sd=pmday(dayfile)
     ② 
  pm[m]=sm/mdays[m]
x=[1,2,3,4,5,6,7,8,9,10,11,12]
y= ③ 
plt. plot(x,y)  #绘制线形图
#设置绘图参数,显示如图c所示的线形图,代码略
城市A 2021年PM2.5月平均浓度情况
第16题图3
(3)城市A 2021年PM2.5年平均浓度为34.6微克/立方米。由图3可知,城市A 2021年PM2.5月平均浓度超过年平均浓度的月份共有 5 个。
【解析】 本题主要考查Python的综合应用。(1)由图可知,PM2.5存放在“类型”字段中。(2)按月读取每天数据,并计算平均值,dstr表示日期,mstr表示月份,sm表示某月的总数据,由dstr=tstr(d+l)可知,①处答案应为mdays[m];某月每天的数据要累加至sm,故②处应为sm+=sd 或 sm=sm+sd;pm数列中存放的是1~12月的平均值,故③处答案应为pm。(3)由图可知,平均浓度超过年平均浓度的月份共有5个。(共32张PPT)
第二节 利用pandas模块处理数据
信息技术 必修1 数据与计算
数据处理与应用
第四章
必备知识练
1. 小明采集了运动会的报名数据并录入Excel文件,每名同学最多参加两个项目,部分界面如下图所示。他先使用Excel软件整理数据,存储为“运动会报名.xlsx”文件后,编写Python程序进行后续处理。小明编写了如下程序,实现输出跳高人数最多的3个班级的功能。
import pandas as pd
df=pd.read_excel("运动会报名.xlsx")
g=df.groupby("班级").跳高. ① 
df1=pd.DataFrame({"班级":g.index,"跳高人数":g.values}) #重新设置列标题
df2=df1.sort_values("跳高人数", ② )
print(df2. ③ )
要实现上述功能,横线上的代码应该是(  )
A. ①count() ②ascending=False ③tail(3)
B. ①sum() ②ascending=True ③head(3)
C. ①count() ②ascending=True ③tail(3)
D. ①sum() ②ascending=False ③head(3)
【解析】 本题考查pandas数据处理知识。根据题意可知,输出跳高人数最多的3个班级的功能,而“跳高”栏中有数据“0”和“1”,还有空格,因此不能使用函数count()进行统计,只能用sum()统计人数,排除A、C。另外ascending=True表示升序,head(3)就是最小的三个,排除B。
D
2. 下列关于Series数据结构的说法,正确的是(  )
A. 一个Series中,index和values的长度必须一致
B. Series中,可以只包含一个数组的数据,不包含索引
C. 运行程序时两个index不同的Series相加会报错
D. Series经过计算后的index顺序和计算前不一致
【解析】 Series是一种一维数据结构,包含一个数组的数据和一个与数据关联的索引。索引和数据是一一对应的,所以长度一定是一致的;两个index不同的Series相加不会报错,Series经过计算后顺序保持一致。
A
3. 某DataFrame对象df,包含“学号”“学校”“姓名”“数学”“语文”等数据列,部分数据如图所示。下列Python语句中,能统计出各班学生“三科总分”平均值的是(  )
A
①df.groupby("班级").mean( )
②df.groupby("三科总分").mean( )
③df.groupby("班级").三科总分.mean( )
④df.groupby("班级").describe( )
A. ①③④ B. ①②④
C. ①②③ D. ②③④
【解析】 本题利用pandas统计各班学生的“三科总分”成绩平均值,需按“班级”分组统 计。①df.groupby("班级").mean(),按“班级"分组,计算各列(包括三科总分列)的平均值。②df.groupby("三科总分").mean(),按“三科总分’成绩分组,计算各列平均值,该语句和题意不符。③df.groupby("班级").三科总分.mean(),按“班级”分组,计算“三科总分”成绩列的平均值。④df.groupby("班级").describe(),按“班级”分组,返回各列(包括三科总分列)的平均值、最大值等。
4. 导入pandas库并将其命名为pd的语句为(  )
A. pip install pandas B. import pandas
C. import pandas name pd D. import pandas as pd
【解析】 本题主要考查Python库的导入。导入pandas库并将其命名为pd的语句为import pandas as pd。
D
5. “学生信息.csv”文件是学生的各科成绩,Python中运用pandas库导入二维数据并进行分析。这样的数据结构在pandas库中被称为(  )
学号,姓名,性别,语文,数学,英语,思政
202327360001,张天飞,女,87,88,87,91
202327360002,罗可爱,女,90,87,76,87
202327360003,崔英娜,女,77,87,87,88
202327360004,林旭,男,90,87,76,87
202327360005,童磊,男,92,90,91,78
202327360006,徐韩,男,83,89,82,80
202327360007,何小婷,女,82,83,81,82
A. DataFrame B. Series
C. Text D. CSV
A
【解析】 本题主要考查Python的数据类型。Series是一种类似于一维数组的对象。它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。DataFrame是一种表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可以看作由Series组成的字典(共同用一个索引),由图可知,这样的数据结构在pandas库中被称为DataFrame。
6. 在pandas函数中,Series是一种一维数据结构,包含一组数据和与数据关联的索引(index),索引值默认为从0开始递增。下面这段Python程序的运行结果为(  )
import pandas as pd
S=pd.Series(range(2,8,2))
print(S)
B
0 2
1 3
2 4
A. 3 5
4 6
5 7
6 8
0 2
B. 1 4
2 6
1 2
C. 2 4
3 8
0 2
1 4
D. 2 6
3 8
【解析】 本题主要考查Python数据结构的应用。range(start,stop,[step])。start: 计数从 start 开始,默认是从 0 开始。例如:range(5)等价于range(0,5)。stop: 计数到 stop 结束,但不包括 stop。例如:range(0,5) 是[0,1,2,3,4],没有5。step:步长,默认为1。例如:range(0,5) 等价于 range(0,5,1)。由代码“s=pd.Series(range(2,8,2))”可知数据是2、4、6,索引值默
认从0开始递增,故程序运行的结果是
7. 下图为某校高二年级技术考试的数据,该数据保存在文件“cj.xlsx”中。用Python对其进行处理的代码如下:
考号 学号 姓名 班级 信息
96789389 13200137 倪家颀 201 45
12551864 13200107 谢云朵 201 44
12557335 13200211 方慧 202 38
12556575 13200242 李博 202 38
12551655 13200302 杨婧 203 39
12551470 13200335 钱聪 203 39
12550826 13200339 徐开放 203 38
12551473 13200438 周宇杰 204 47
import pandas as pd
df=pd.read_excel("cj.xlsx")
df.append({"考号":"0425","学号":"31","姓名":"伊默","班级":"214","信息":44},
ignore_index=True)
df.drop(0,axis=0)
del df["学号"]
g=df.groupby("班级",as_index=False). mean()
sv=g.sort_values("信息",ascending=True)
print(sv.head(3)["信息"])
执行该代码,下列说法中,正确的是(  )
A. df对象新增了一条关于“伊默”的记录
B. df对象删除了一条关于“倪家颀”的记录
C. df对象减少了“学号”列数据
D. 输出“信息”列平均分最高的三个班级
【解析】 本题主要考查Python的执行与调试。分析程序可知,df对象减少了“学号”列数据,输出“信息”列平均分最低的三个班级,没有新增一条关于“伊默”的记录,没有删除一条关于“倪家颀”的记录。
C
8. 用 Python 创建了一个 DataFrame 对象 df1:
import pandas as pd
data=[[88,89,96],[95,93,92],[90,87,95]]
df1=pd.DataFrame(data,index=[“小明”, “小红”,“小兰”],columns=[“语文”,“数学”,“英语”])
下列操作及描述中,错.误.的是(  )
A. print(df1[“英语”])输出“英语”列的数据
B. print(df1.数学)输出“数学”列的数据
C. print(df1.sort_values(“语文”,axis=1))输出“语文”列数据并按升序排列
D. print(df1[df1.语文<90])输出小明同学的成绩
C
【解析】 本题主要考查Python程序。print(df1["英语"])输出“英语”列的数据, print(df1.数学)输出“数学”列的数据,print(df1[df1.语文<90])输出小明同学的成绩,操作均正确。sort_values(by= ## ,axis=0,ascending=True,inplace=False,na_position= last ),by指定列名(axis=0或 index )或索引值(axis=1或 columns ),若axis=0或 index ,则按照指定列中数据大小排序;若axis=1或 columns ,则按照指定索引中数据大小排序,默认axis=0。故print(df1.sort_values(“语文”,axis=1))输出“语文”列数据并按升序排列描述错误。
9. 数据读取与存储是进行数据处理与分析的前提,在pandas中用于读取和写入逗号分隔
值文件的方法是(  )
A. read_excel()、save_excel() B. read_doc()、to_doc()
C. read_csv()、write_csv() D. read_csv()、to_csv()
【解析】 本题主要考查Python程序的pandas模块。数据读取与存储是进行数据处理与分析的前提,在pandas中用于读取和写入逗号分隔值文件的方法是read_csv( )、to_csv( )。
D
10. 有如下Python程序段:
import pandas as pd
s=pd.Series(range(5,11,3))
s[1]=15
print(s)
该程序执行后,输出的结果是(  )
B
【解析】 本题主要考查Python程序的执行。执行完s=pd.Series(range(5,11,3))后,s[0]=
5,s[1]=8,语句s[1]=15,此时执行print(s)后,输出的结果是 。
11. 有如下Python程序段:
import pandas as pd
df=pd.DataFrame({"语文":[105,88,95],"数学":[110,129,135],"英语":[105,100,110]})
df.at[2,"英语"]=88
df1=df.drop(1,axis=0)
print(df1)
该程序执行后,输出的结果是(  )
A. B.
C. D.
【解析】 本题主要考查Python的综合应用。根据题意,df1的值为删除第一行数据,同时进行赋值输出;df.at[2,"英语"]=88语句的意思为将第二行英语成绩改为88。
A
12. 使用pandas编程处理数据DF1,下列选项中,能实现行列转置的操作是(  )
姓名 性别 借阅次数
0 王静 女 28
1 张佳 女 56
2 李成 男 37
3 袁武 男 68

0 1 2 3
  姓名 王静 张佳 李成 袁武
  性别 女 女 男 男
借阅次数 28 56 37 68
A. DF1.T
B. DF1.columns
C. DF1.values
D. DF1.index
【解析】 本题主要考查pandas工具。T方法用于转置,columns、values、index方法分别根据列、值、索引返回数据。
A
13. 文件“st.xlsx”中的第一张Excel工作表存放了学生信息,单元格A1、B1、C1的值分别为“姓名”“性别”“年龄”,部分程序代码如下:
import pandas as pd
s1=pd.read_excel("st.xlsx")
s1.insert(0,column= 班级 ,value= -1 )
s2=s1.sort_values( 年龄 )
执行该程序代码后,下列说法中,错.误.的是(  )
A. 对象s1中的数据一定是按“年龄”升序排列的
B. 除索引列外,对象s1有4列数据
C. 对象s2中,每一行的“班级”列的值均为 -1
D. 对象s1中,索引列的值是按升序排列的
【解析】 本题主要考查pandas库的相关知识。该程序的功能是读入“st.xlsx”中的第一张工作表内容,并在索引列前增加一列“班级”,值均为 -1 ,将s1按年龄升序排列后赋值给s2,因此s1中的数据并未经过排序。
A
关键能力练
14. 用下列Python程序创建了一个Series对象s1。
import pandas as pd
s1=pd.Series([11,22,6,8,19],index=[ s01 , s02 , s03 , s04 , s05 ])
下列语句执行时会出现错.误.的是(  )
A. print(s1[1]) B. print(s1[s04])
C. s1[ s01 ]=80 D. s1[ s02 ]="abc"
【解析】 本题主要考查Python程序的执行。根据程序,语句print(s1[s04])是错误的,正确的应该是print(s1[ s04 ])或print(s1["s04"])。
B
15. 有如下程序段:
import pandas as pd
data={ state :[ Ohio , Ohio , Ohio , Nevada , Nevada ], year :[2000,2001,2002,2001,2002], pop :[1.5,1.7,3.6,2.4,2.9]}
frame=pd.DataFrame(data)
print(frame)
执行以上程序后,输出的结果是(  )
B
【解析】 本题主要考查Python程序的DataFrame结构。DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引。其中行索引index没有指定时,默认从0开始,执行以上程序后,输出的结果是
16. 小红收集了部分城市2021年全年的PM2.5、PM10、CO浓度数据。每天的数据分别保存在以8位日期字符串命名的CSV文件中,部分文件如图1所示,每份文件记录了一天(24小时)的监测数据,如图2所示。
图1
图2
为统计和分析城市A全年各月PM2.5的月平均浓度(当月的日平均浓度的平均值),小红编写了Python程序。请回答下列问题:
(1)定义pmday函数,其功能如下:读取某天的CSV文件,返回城市A当天PM2.5的日平均
浓度。函数代码如下,横线上应填入的代码为__________(单选,填字母)。
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的日平均浓度
D
(2)统计城市A各月PM2.5的月平均浓度并绘制线形图。部分Python程序如下,请在横线上填入合适的代码:
①__________,②__________,③__________。
import matplothb. pyplot as plt
def tstr(t):
  if t    return 0 +str(t)
  else:
    return str(t)
pm=[0]*12
mdays=[31,28,31,30,31,30,31,31,30,31,30,31]
for m in range(12):
  sm=0
  mstr=tstr(m+1)
  for d in range( ① ):
    dstr=tstr(d+l)
    dayfile= 2021 +mstr+dstr+ .csv
    sd=pmday(dayfile)
     ② 
  pm[m]=sm/mdays[m]
x=[1,2,3,4,5,6,7,8,9,10,11,12]
y= ③ 
plt. plot(x,y)  #绘制线形图
#设置绘图参数,显示如图c所示的线形图,代码略
mdays[m]
sm+=sd
pm
(3)城市A 2021年PM2.5年平均浓度为34.6微克/立方米。由图3可知,城市A 2021年PM2.5月平均浓度超过年平均浓度的月份共有__________个。
城市A 2021年PM2.5月平均浓度情况
5
图3
【解析】 本题主要考查Python的综合应用。(1)由图可知,PM2.5存放在“类型”字段中。(2)按月读取每天数据,并计算平均值,dstr表示日期,mstr表示月份,sm表示某月的总数据,由dstr=tstr(d+l)可知,①处答案应为mdays[m];某月每天的数据要累加至sm,故②处应为
sm+=sd 或 sm=sm+sd;pm数列中存放的是1~12月的平均值,故③处答案应为pm。
(3)由图可知,平均浓度超过年平均浓度的月份共有5个。

展开更多......

收起↑

资源列表