资源简介 (共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 1782 180dtype: int64②指定索引值类型为字符串型s2=pd.Series([166, 178, 180], index=[“s01”, “s02”,“s03”])print(s2)运行结果:s01 166 s02 178s03 180dtype: int64(2)查看(1)中的index和values①查看Series对象s2的indexfor i in s2.index: print(i)运行结果:s01s02s03②查看Series对象s1的valuesfor i in s1.values: print(i)运行结果:166 178180(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 b0 1 21 2 32 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 pddf=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 pddf=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. randomC. turtle D. pandas【解析】 本题主要考查常用库的应用。time库是处理时间的标准库; random库主要用于生成随机数;turtle库是Python的标准库之一,属于入门级的图形绘制函数库;pandas库主要用于数据分析。C2. 在pandas中,用于向CSV文件写入的方法是( )A. to_csv() B. read_csv()C. to_xls() D. write_xls【解析】 本题主要考查pandas模块。在pandas中,用于向CSV文件写入的方法是to_csv()。A3. 小明从成绩数据中得到下图的Excel工作表,并保存在chengji.csv文件中。利用pandas库对chengji.csv文件进行整理。import pandas as pddf=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]。A4. 有如下Python程序段:import pandas as pddata={ 姓名 :[ 张立 , 王强 , 朱明 , 李华 ], 物理 :[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。B5. 有如下Python程序段:import pandas as pdPM25=[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 120C【解析】 本题主要考查Python程序的执行。由代码“s=pd.Series(PM25,index=weekday)”可知这是一个一维数组结构,索引是weekday,故输出的结果是星期一 98星期二 45星期三 120,C正确。6. 有如下程序段:import pandas as pddata={ 姓名 :[ 李商隐 , 欧阳修 , 李白 , 杜甫 ], 借阅次数 : [ 32,16,30,26]}df1=pd.DataFrame (data, columns=[ 姓名 , 借阅次数 ])c=0for i in range (len (df1 [ 姓名 ])):if df1.at [i, 姓名 ][0]== 李 : c+=df1.at [i, 借阅次数 ]print (c)该程序运行后,输出的结果为( )A. 46 B. 48C. 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 pd3. 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 1661 1782 180dtype: int64②指定索引值类型为字符串型s2=pd.Series([166, 178, 180], index=[“s01”, “s02”,“s03”])print(s2)运行结果:s01 166s02 178s03 180dtype: int64(2)查看(1)中的index和values①查看Series对象s2的indexfor i in s2.index:print(i)运行结果:s01s02s03②查看Series对象s1的valuesfor i in s1.values:print(i)运行结果:166178180(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 b0 1 21 2 32 3 4②通过读取二维数据文件来创建使用read_excel() 函数,读取 Excel文件来创建DataFrame对象;使用 read _csv() 函数,读取CSV文件来创建DataFrame对象。import pandas as pddf=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 pddf=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 pddf=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. randomC. 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 pddf=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 pddata={ 姓名 :[ 张立 , 王强 , 朱明 , 李华 ], 物理 :[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. 11C. 17 D. 19【解析】 本题主要考查Python程序的执行。分析程序可知,df1.化学 = [94,88,83,86],该语句是将“化学”列的数据替换为 [94,88,83,86],变量ans是求“化学”列最大值与最小值的差,即ans=94-83=11。5. 有如下Python程序段:import pandas as pdPM25=[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 pddata={ 姓名 :[ 李商隐 , 欧阳修 , 李白 , 杜甫 ], 借阅次数 : [ 32,16,30,26]}df1=pd.DataFrame (data, columns=[ 姓名 , 借阅次数 ])c=0for i in range (len (df1 [ 姓名 ])):if df1.at [i, 姓名 ][0]== 李 : c+=df1.at [i, 借阅次数 ]print (c)该程序运行后,输出的结果为( D )A. 46 B. 48C. 58 D. 62【解析】 本题主要考查Python程序的执行。分析程序可知,该程序实现用变量c统计姓“李”的借阅次数,李商隐和李白的借阅次数分别是32和30,故c=0+32+30=62。 展开更多...... 收起↑ 资源列表 二、 利用pandas模块处理数据.docx 二、 利用pandas模块处理数据.pptx