二、利用pandas模块处理数据(课件+学案) 2025-2026学年高中信息技术 必修1 数据与计算

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

二、利用pandas模块处理数据(课件+学案) 2025-2026学年高中信息技术 必修1 数据与计算

资源简介

(共28张PPT)
二、 利用pandas模块处理数据
信息技术 必修1 数据与计算
数据处理与应用
第四章
知识过关
1. Python的常用扩展模块有numpy、scipy、pandas和matplotlib等。
2. 在Python中引入pandas模块的方法如下:
 import pandas as pd   
3. pandas中的数据结构主要包括两种:一种是Series, 另一种是 DataFrame。
项目 Series DataFrame
维度 一维 二维
组成 包含一个数组的数据和一个与数据关联的索引(index),索引值默认是从0起递增的整数 由1个索引列(index)和若干个数据列组
成,每个数据列可以是不同的类型
创建 列表、字典等可以用来创建Series数据结构,与列表不同的是,Series的索引可以指定,类型可以为字符串型 ①通常用一个相等长度的列表或字典来创建
②也可以直接读取二维数据文件来创建
常用 属性 ①index:Series的下标索引,其值默认是从0起递增的整数 ②values: 存放 Series值的一个数组 ①index: DataFrame的行索引
②columns: 存放各列的列标题
③values: 存放值的二维数据
④T: 行列转置
联系 ①DataFrame可以看作是共享同一个index的Series的集合 ②DataFrame对象和Series对象一样,可以通过字典记法或属性来检索,列可以通过赋值来修改 4. pandas模块中的 Series对象
(1)创建Series对象来存储3名同学的身高值
①默认索引值是从0开始递增的整数
s1=pd. Series([166, 178, 180])
print(s1)
运行结果:
0 166 
1 178
2 180
dtype: int64
②指定索引值类型为字符串型
s2=pd.Series([166, 178, 180], index=[“s01”, “s02”,“s03”])
print(s2)
运行结果:
s01 166  
s02 178
s03 180
dtype: int64
(2)查看(1)中的index和values
①查看Series对象s2的index
for i in s2.index:  
print(i)
运行结果:
s01
s02
s03
②查看Series对象s1的values
for i in s1.values:  
print(i)
运行结果:
166  
178
180
(3)Series对象的检索和修改
①输出索引为0的值:print(s1[0]) 。
②输出索引为“b”的值:print(s2["b"]) 。
③输出values小于3的行:print(s1[s1<3]) 。
④将索引为1的值修改为10:s1[1]=10。
5. pandas模块中的DataFrame对象
(1)创建DataFrame对象
①通过一个长度相等的列表或字典来创建
df={"a":[1, 2, 3], "b":[2, 3, 4]}  
dfl=pd.DataFrame(df, columns=["a", "b"])
print(dfl)
运行结果:
a b
0 1 2
1 2 3
2 3 4
②通过读取二维数据文件来创建
使用read_excel() 函数,读取 Excel文件来创建DataFrame对象;使用 read _csv() 函数,读取CSV文件来创建DataFrame对象。
import pandas as pd  
df=pd.read_excel("test. xlsx")
print(df)
③将DataFrame对象导出到二维数据文件
使用to_excel() 函数,导出到Excel文件并保存数据;使用to_csv() 函数,导出到CSV文件并保存数据。
(2)可以查看DataFrame对象的索引、列标题、值,并将行、列转置。
(3)对DataFrame对象的检索或修改
①按照字段名称选取列
df["a"] 选取一列数据  
df[["a", "b"]] 选取两列或多列数据
②按照字段位置选取列和行
df.iloc[0] 选取第一行的数据  
df.iloc[0:2] 选取第一、二行的数据
③选取满足条件的行
df[df["a"]>2]  
选取df对象中"a"大于2的数据行
④根据行和列标签选取单个值
df.at[0, "a"]  
选取df对象第1行、"a"列的值
(4)DataFrame常用函数
函数 说明
count() 返回非空(NaN) 数据项的数量
sum()、mean() 求和、求平均值,通过axis=0/1确定行列
max()、min() 返回最大值、最小值
head()、tail() 返回DataFrame的前n个、后n个数据记录
groupby() 对各列或各行中的数据进行分组,然后可对其中每一组数据进行不同的操作
函数 说明
sort_values() 按值排序,通过axis=0/1确定排序的轴向(axis默认值为0,纵向排序) ;通过ascending=True/False确定升/降序(ascending默认值为 True, 升序排序);将排序结果返回一个新的DataFrame对象
drop() 删除数据,通过axis=0/1确定行列。不改变原有DataFrame对象中的数据,返回另一个DataFrame对象来存放改变后的数据
append() 在指定元素的结尾插入内容。不改变原有DataFrame对象中的数据,返回另一个DataFrame对象来存放改变后的数据
续表
典例精选
【例1】 小明收集了高二年级技术学科期中考试成绩的数据,如下图所示。为了统计每个班信息技术和通用技术的平均分,设计了如下Python程序。
import pandas as pd
df=pd.read_excel("技术成绩.xlsx")
df1=       
print(df1)
要实现上述功能,横线上应填入的代码是(  )
A. df.groupby("班级").sum()
B. df.groupby("班级").mean()
C. df["班级"].mean()
D. df["班级"].groupby("平均分").mean()
【解析】 由于需要分析每个班级信息技术和通用技术的平均分,因此必须根据班级进行分组,结合pandas语法知识,平均分应该使用函数mean(),B正确。
B
【例2】 某校高一新生选课数据存储在“xk.xlsx”文件中,如图所示。为统计各班各学科选课人数,朱老师编写了如下Python程序段:
import pandas as pd
df=pd.read_excel("xk.xlsx")
dfl=df.drop("已选科目数",axis=1)
print(df.head())
print(dfl.head())
sc=dfl.groupby("班级").count()
m=len(df)
n=len(dfl)
print(sc)
关于该程序段,下列说法中错.误.的是(  )
A. 变量m、n的值相同,均为选课学生总人数
B. df是DataFrame对象,存储了文件“xk.xlsx”中的数据
C. 代码print(df.head())与print(dfl.head())的输出结果相同
D. 每班各学科选课人数可以从代码print(sc)的输出结果中查看
【解析】 本题主要考查Python程序的执行与调试。df.head()是指DataFrame对象,存储了文件“xk.xlsx”中的数据,而df1.head()不包含已选科目数列,故两者不相同。
C
自我检测
1. 要利用Python画出五星红旗,必须用到的外部库是(  )
A. time B. random
C. turtle D. pandas
【解析】 本题主要考查常用库的应用。time库是处理时间的标准库; random库主要用于生成随机数;turtle库是Python的标准库之一,属于入门级的图形绘制函数库;pandas库主要用于数据分析。
C
2. 在pandas中,用于向CSV文件写入的方法是(  )
A. to_csv() B. read_csv()
C. to_xls() D. write_xls
【解析】 本题主要考查pandas模块。在pandas中,用于向CSV文件写入的方法是to_csv()。
A
3. 小明从成绩数据中得到下图的Excel工作表,并保存在chengji.csv文件中。利用pandas库对chengji.csv文件进行整理。
import pandas as pd
df=pd.read_csv( chengji.csv ,encoding= ansi )
名字 语文 数学
小红 92 90
小玉 90 87
小明 75 80
小刚 86 95
小强 80 70
要筛选出数学成绩大于80分的所有同学的信息,合适的语句是(  )
A. df[df["数学"]>80]
B. df["数学"]>80.value_counts()
C. df["数学"].sum()/len(df["数学"])
D. df[df."数学"]>80]
【解析】 本题主要考查Python程序pandas库的使用。要筛选出数学成绩大于80分的所有同学的信息,合适的语句是df[df[“数学”]>80]。
A
4. 有如下Python程序段:
import pandas as pd
data={ 姓名 :[ 张立 , 王强 , 朱明 , 李华 ], 物理 :[90,66, 80,78], 化学 :[92,86,75,80]}
df1=pd.DataFrame(data,columns=[ 姓名 , 物理 , 化学 ])
df1.化学=[94,88,83,86]
ans=df1.化学.max()-df1.化学.min()
print(ans)
该程序运行后,输出的结果为(  )
A. 2 B. 11 C. 17 D. 19
【解析】 本题主要考查Python程序的执行。分析程序可知,df1.化学 = [94,88,83,86],该语句是将“化学”列的数据替换为 [94,88,83,86],变量ans是求“化学”列最大值与最小值的差,即ans=94-83=11。
B
5. 有如下Python程序段:
import pandas as pd
PM25=[98, 45, 120]
weekday=["星期一", "星期二", "星期三"]
s=pd.Series(PM25, index=weekday)  #创建Series对象时指定索引
print(s)
该程序段运行后,输出的结果是(  )
A. [98 45 120] B. ["星期一","星期二","星期三"]
C. 星期一 98 D. 0 98
星期二 45   1 45
星期三 120   2 120
C
【解析】 本题主要考查Python程序的执行。由代码“s=pd.Series(PM25,index=
weekday)”可知这是一个一维数组结构,索引是weekday,故输出的结果是
星期一 98
星期二 45
星期三 120
,
C正确。
6. 有如下程序段:
import pandas as pd
data={ 姓名 :[ 李商隐 , 欧阳修 , 李白 , 杜甫 ], 借阅次数 : [ 32,16,30,26]}
df1=pd.DataFrame (data, columns=[ 姓名 , 借阅次数 ])
c=0
for i in range (len (df1 [ 姓名 ])):
if df1.at [i, 姓名 ][0]== 李 :
  c+=df1.at [i, 借阅次数 ]
print (c)
该程序运行后,输出的结果为(  )
A. 46 B. 48
C. 58 D. 62
【解析】 本题主要考查Python程序的执行。分析程序可知,该程序实现用变量c统计姓“李”的借阅次数,李商隐和李白的借阅次数分别是32和30,故c=0+32+30=62。
D二、 利用pandas模块处理数据
1. Python的常用扩展模块有numpy、scipy、pandas和matplotlib等。
2. 在Python中引入pandas模块的方法如下:
import pandas as pd
3. pandas中的数据结构主要包括两种:一种是Series,另一种是DataFrame。
项目 Series DataFrame
维度 一维 二维
组成 包含一个数组的数据和一个与数据关联的索引(index),索引值默认是从0起递增的整数 由1个索引列(index)和若干个数据列组成,每个数据列可以是不同的类型
创建 列表、字典等可以用来创建Series数据结构,与列表不同的是,Series的索引可以指定,类型可以为字符串型 ①通常用一个相等长度的列表或字典来创建 ②也可以直接读取二维数据文件来创建
常用 属性 ①index:Series的下标索引,其值默认是从0起递增的整数 ②values: 存放 Series值的一个数组 ①index: DataFrame的行索引 ②columns: 存放各列的列标题 ③values: 存放值的二维数据 ④T: 行列转置
联系 ①DataFrame可以看作是共享同一个index的Series的集合 ②DataFrame对象和Series对象一样,可以通过字典记法或属性来检索,列可以通过赋值来修改
4. pandas模块中的 Series对象
(1)创建Series对象来存储3名同学的身高值
①默认索引值是从0开始递增的整数
s1=pd. Series([166, 178, 180])
print(s1)
运行结果:
0 166
1 178
2 180
dtype: int64
②指定索引值类型为字符串型
s2=pd.Series([166, 178, 180], index=[“s01”, “s02”,“s03”])
print(s2)
运行结果:
s01 166
s02 178
s03 180
dtype: int64
(2)查看(1)中的index和values
①查看Series对象s2的index
for i in s2.index:
print(i)
运行结果:
s01
s02
s03
②查看Series对象s1的values
for i in s1.values:
print(i)
运行结果:
166
178
180
(3)Series对象的检索和修改
①输出索引为0的值:print(s1[0])。
②输出索引为“b”的值:print(s2["b"])。
③输出values小于3的行:print(s1[s1<3])。
④将索引为1的值修改为10:s1[1]=10。
5. pandas模块中的DataFrame对象
(1)创建DataFrame对象
①通过一个长度相等的列表或字典来创建
df={"a":[1, 2, 3], "b":[2, 3, 4]}
dfl=pd.DataFrame(df, columns=["a", "b"])
print(dfl)
运行结果:
a b
0 1 2
1 2 3
2 3 4
②通过读取二维数据文件来创建
使用read_excel() 函数,读取 Excel文件来创建DataFrame对象;使用 read _csv() 函数,读取CSV文件来创建DataFrame对象。
import pandas as pd
df=pd.read_excel("test. xlsx")
print(df)
③将DataFrame对象导出到二维数据文件
使用to_excel()函数,导出到Excel文件并保存数据;使用to_csv()函数,导出到CSV文件并保存数据。
(2)可以查看DataFrame对象的索引、列标题、值,并将行、列转置。
(3)对DataFrame对象的检索或修改
①按照字段名称选取列
df["a"] 选取一列数据
df[["a", "b"]] 选取两列或多列数据
②按照字段位置选取列和行
df.iloc[0] 选取第一行的数据
df.iloc[0:2] 选取第一、二行的数据
③选取满足条件的行
df[df["a"]>2]
选取df对象中"a"大于2的数据行
④根据行和列标签选取单个值
df.at[0, "a"]
选取df对象第1行、"a"列的值
(4)DataFrame常用函数
函数 说明
count() 返回非空(NaN) 数据项的数量
sum()、mean() 求和、求平均值,通过axis=0/1确定行列
max()、min() 返回最大值、最小值
head()、tail() 返回DataFrame的前n个、后n个数据记录
groupby() 对各列或各行中的数据进行分组,然后可对其中每一组数据进行不同的操作
sort_values() 按值排序,通过axis=0/1确定排序的轴向(axis默认值为0,纵向排序) ;通过ascending=True/False确定升/降序(ascending默认值为 True, 升序排序);将排序结果返回一个新的DataFrame对象
drop() 删除数据,通过axis=0/1确定行列。不改变原有DataFrame对象中的数据,返回另一个DataFrame对象来存放改变后的数据
append() 在指定元素的结尾插入内容。不改变原有DataFrame对象中的数据,返回另一个DataFrame对象来存放改变后的数据
【例1】 小明收集了高二年级技术学科期中考试成绩的数据,如下图所示。为了统计每个班信息技术和通用技术的平均分,设计了如下Python程序。
import pandas as pd
df=pd.read_excel("技术成绩.xlsx")
df1=       
print(df1)
要实现上述功能,横线上应填入的代码是( B )
A. df.groupby("班级").sum()
B. df.groupby("班级").mean()
C. df["班级"].mean()
D. df["班级"].groupby("平均分").mean()
【解析】 由于需要分析每个班级信息技术和通用技术的平均分,因此必须根据班级进行分组,结合pandas语法知识,平均分应该使用函数mean(),B正确。
【例2】 某校高一新生选课数据存储在“xk.xlsx”文件中,如图所示。为统计各班各学科选课人数,朱老师编写了如下Python程序段:
import pandas as pd
df=pd.read_excel("xk.xlsx")
dfl=df.drop("已选科目数",axis=1)
print(df.head())
print(dfl.head())
sc=dfl.groupby("班级").count()
m=len(df)
n=len(dfl)
print(sc)
关于该程序段,下列说法中错误的是( C )
A. 变量m、n的值相同,均为选课学生总人数
B. df是DataFrame对象,存储了文件“xk.xlsx”中的数据
C. 代码print(df.head())与print(dfl.head())的输出结果相同
D. 每班各学科选课人数可以从代码print(sc)的输出结果中查看
【解析】 本题主要考查Python程序的执行与调试。df.head()是指DataFrame对象,存储了文件“xk.xlsx”中的数据,而df1.head()不包含已选科目数列,故两者不相同。
1. 要利用Python画出五星红旗,必须用到的外部库是( C )
A. time B. random
C. turtle D. pandas
【解析】 本题主要考查常用库的应用。time库是处理时间的标准库;random库主要用于生成随机数;turtle库是Python的标准库之一,属于入门级的图形绘制函数库;pandas库主要用于数据分析。
2. 在pandas中,用于向CSV文件写入的方法是( A )
A. to_csv() B. read_csv()
C. to_xls() D. write_xls
【解析】 本题主要考查pandas模块。在pandas中,用于向CSV文件写入的方法是to_csv()。
3. 小明从成绩数据中得到下图的Excel工作表,并保存在chengji.csv文件中。利用pandas库对chengji.csv文件进行整理。
import pandas as pd
df=pd.read_csv( chengji.csv ,encoding= ansi )
名字 语文 数学
小红 92 90
小玉 90 87
小明 75 80
小刚 86 95
小强 80 70
要筛选出数学成绩大于80分的所有同学的信息,合适的语句是( A )
A. df[df["数学"]>80]
B. df["数学"]>80.value_counts()
C. df["数学"].sum()/len(df["数学"])
D. df[df."数学"]>80]
【解析】 本题主要考查Python程序pandas库的使用。要筛选出数学成绩大于80分的所有同学的信息,合适的语句是df[df[“数学”]>80]。
4. 有如下Python程序段:
import pandas as pd
data={ 姓名 :[ 张立 , 王强 , 朱明 , 李华 ], 物理 :[90,66, 80,78], 化学 :[92,86,75,80]}
df1=pd.DataFrame(data,columns=[ 姓名 , 物理 , 化学 ])
df1.化学=[94,88,83,86]
ans=df1.化学.max()-df1.化学.min()
print(ans)
该程序运行后,输出的结果为( B )
A. 2 B. 11
C. 17 D. 19
【解析】 本题主要考查Python程序的执行。分析程序可知,df1.化学 = [94,88,83,86],该语句是将“化学”列的数据替换为 [94,88,83,86],变量ans是求“化学”列最大值与最小值的差,即ans=94-83=11。
5. 有如下Python程序段:
import pandas as pd
PM25=[98, 45, 120]
weekday=["星期一", "星期二", "星期三"]
s=pd.Series(PM25, index=weekday)  #创建Series对象时指定索引
print(s)
该程序段运行后,输出的结果是( C )
A. [98 45 120] B. ["星期一","星期二","星期三"]
C. 星期一 98 D. 0 98
星期二 45   1 45
星期三 120   2 120
【解析】 本题主要考查Python程序的执行。由代码“s=pd.Series(PM25,
index=weekday)”可知这是一个一维数组结构,索引是weekday,故输出的结果是,C正确。
6. 有如下程序段:
import pandas as pd
data={ 姓名 :[ 李商隐 , 欧阳修 , 李白 , 杜甫 ], 借阅次数 : [ 32,16,30,26]}
df1=pd.DataFrame (data, columns=[ 姓名 , 借阅次数 ])
c=0
for i in range (len (df1 [ 姓名 ])):
if df1.at [i, 姓名 ][0]== 李 :
  c+=df1.at [i, 借阅次数 ]
print (c)
该程序运行后,输出的结果为( D )
A. 46 B. 48
C. 58 D. 62
【解析】 本题主要考查Python程序的执行。分析程序可知,该程序实现用变量c统计姓“李”的借阅次数,李商隐和李白的借阅次数分别是32和30,故c=0+32+30=62。

展开更多......

收起↑

资源列表