内容正文:
编程处理数据
学考要点1利用pandas模块处理数据
【必修1数据与计算第129~134页 指导意见第19~25页】
1.在Python中引入pandas模块的方法:import pandas as pd(pd 为用户引入模块取的别名)
2.pandas模块的数据结构:pandas提供了Series和DataFrame两种数据结构。
(1)Series对象常用属性
属性 说明
index Series的下标索引,其值默认是从0起递增的整数
values 存放Series值的一个数组
(2)DataFrame对象常用属性
3.Series与DataFrame的联系与区别
属性 说明
index DataFrame的行索引
columns 存放各列的列标题
values 存放值的二维数据
T 行列转置
数据结构 Series DataFrame
维度 一维 二维
组成 包含一个数组的数据和一个与数据关联的索引,索引值默认是从0起递增的整数 由1个索引列(index)和若干个数据列组成,每个数据列可以是不同的类型
创建 列表、字典等可以用来创建Series数据结构,与列表不同的是,Series的索引可以指定,类型可以为字符串型 通常用一个相等长度的列表或字典来创建;或直接读取二维数据文件创建
联系 ①DataFrame可以看作是共享同一个 index的 Series的集合
②DataFrame对象和Series对象中的一列均可以通过字典记法或属性来检索,列可以通过赋值来修改
4.pandas模块的Series对象相关操作
(1)创建:列表、字典等可以用来创建Series数据结构
s1=pd.Series([1,2,3,4])
s2=pd.Series({'a':1,'b':2,'c':3})
(2)查找:借助index的索引值实现查找或对values的值进行条件索引
print(s1[0]) #查找索引为0的值
print(s2['b']) #查找索引为'b'的值
print(s1[s1>3]) #查找values大于3的值
(3)修改:用赋值语句实现修改
s1[1]=10 #将索引为1的值修改为10
5.pandas模块的DataFrame对象相关操作
(1)创建:用一个相等长度的列表或字典来创建
import pandas as pd
x=pd.DataFrame({”a”:[1,2,3],”b”:[4,5,6],”c”:[7,8,9]})
(2)导入:
pd.read_excel(filename) #读取Excel文件创建DataFrame对象
pd.read_csv(filename) #读取CSV文件创建DataFrame对象
(3)导出:
df.to_excel(filename) #创建Excel文件保存数据
df.to_csv(filename) #创建CSV文件保存数据
(4)查找:
①通过index、columns、values属性查看 DataFrame对象的行索引、列索引及数据,如df.index、df.columns和df.values。
②通过字典记法或属性检索实现查找,如df.id或df[”id”]。
③通过at[]方法实现查找,如df.at[0,”id”]。
6.DataFrame常用函数
函数 说明
count() 返回非空(NaN)数据项的数量
sum()、mean() 求和、求平均值,通过axis=0/1确定行列
max()、min() 返回最大、最小值
describe() 返回各列的基本描述统计值,包含计数、平均数、标准差、最大值、最小值及4分位差
head()、tail() 返回DataFrame的前n个、后n个数据记录
groupby() 对各列或各行中的数据进行分组,然后可对其中每一组数据进行不同的操作
sort_values() 排序,通过axis=0/1确定行列,axis默认值为0,纵向排序。ascending=True/False确定升/降序,ascending默认值为True,升序排序。排序结果返回一个新DataFrame对象
drop() 删除数据,通过axis=0/1确定行列,并返回另一个DataFrame对象来存放改变后的数据
append() 在指定元素的结尾插入内容,并返回另一个DataFrame对象来存放改变后的数据
insert() 在指定位置插入列
rename() 修改列名或者索引
concat() 合并DataFrame对象
set_value() 根据行标签和列标签设置单个值
plot() 绘图
学考要点2数据可视化
【必修1 数据与计算第134~138页,第143~150页 指导意见第19~25页】
1.matplotlib模块:matplotlib是一个绘图库,使用其中的pyplot子库所提供的函数可以快速绘图和设置图表的坐标轴、坐标轴刻度、图例等。
2.在Python中引入matplotlib的pyplot子库的方法:import matplotlib.pyplot as plt
3.matplotlib模块的常用绘图函数
分类 函数 说明
创建对象 figure() 创建一个新的图表对象,并设置为当前绘图对象
注:不创建figure对象,直接调用 plot等绘图函数进行绘图,matplotlib会自动创建一个figure对象
绘制图形 plot( ) 绘制线形图
bar() 绘制垂直柱形图
barh() 绘制水平柱形图
scatter() 绘制散点图
续表
分类 函数 说明
修饰美化 title() 设置图表的标题
xlim()、ylim() 设置X、Y轴的取值范围
xlabel()、ylabel() 设置X、Y轴的标签
legend() 显示图例
显示 show() 显示创建的所有绘图对象
4.语法说明
(1)figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=None)
其中:num为图像标号;figsize为figure的高和宽;dpi为figure的分辨率;facecolor为背景颜色;edgecolor为边框颜色;frameon为是否显示边框。
(2)plt.plot(x,y,label='cos(x)',color='r',linewidth='2')
其中:color为线条颜色;linewidth为线条宽度。
例 (2023·浙江7月学考)某省2022 年全年气象灾害预警数据保存在文件“qxyj.xlsx”中,部分数据如图所示。编写Python 程序,统计全年发布次数最多的5 种气象预警。
import pandas as pd
df=pd.read_excel(”qxyj.xlsx”) #读文件中的数据
df=df.drop([”预警发布单位”,”预警等级”,”预警发布时间”],axis=1) #删除列
print(df_s[0:5])
方框中代码由下列语句中的部分语句组成:
①df_ g=df.groupby(”预警名称”,as_index=False).sum() #分组求和
②df_g=df_s.groupby(”次数”,as_index=False).sum()
③df_s=df.sort_values(”次数”,ascending=True) #升序排序
④df_s=df_g.sort_values(”次数”,ascending=False)
要实现上述功能,方框中代码组合正确的是( )
A.①④ B.①③ C.②④ D.③②
【解析】 根据题意,要求统计全年发布次数最多的5 种气象预警,因此在使用分组函数groupby()时,分组的依据是“预警名称”,而不是“次数”,故在①②中选择①。从代码print(df_s[0:5])可知,输出的是最前面的五条记录,从而可以判断数据是按照“次数”降序排序的,sort_values 函数的参数ascending=False 表示降序,故在③④中选择④。选项A正确。
A
变式1 某DataFrame 对象df 共包含6 个数据列、30 个数据行,其中第5 列为“总分”列,下列语句中能读取df 对象中“总分”列所有数据的是( )
A.df.[总分] B.df.columns[4] C.df.”总分” D.df.总分
【解析】 DataFrame 对象中的一列可以通过字典记法或属性来检索,采用字典记法格式为:对象名[标题名],因为此处列标题为字符型,所以可写作df[”总分”],故选项A 错误;采用属性索引某列格式为:对象名.标题名,标题名不可以加双引号,所以可写作df.总分,故选项C 错误,选项D 正确;columns 为DataFrame 对象的标题列表,所以df.columns[4]的值为”总分”,故选项B 错误。
D
变式2 文件“xscj1.csv”中的数据包含“xm”“xh”“yw”“sx”等字段,有若干个数据行,执行下列程序段后,import pandas as pd
df_data=pd.read_csv(”xscj1.csv”)
df_data.drop(”yw”,axis=1)
df_data.drop(0)
df_data.sort_values(”sx”,inplace=True)
对象df_data中的数据将( )
A.按“sx”升序排序 B.不再包含“yw”数据列
C.删除第一行记录 D.增加一个数据行
【解析】 drop()函数不改变原有对象中的数据,选项A正确。
A
变式3 某DataFrame 对象中,包含“商品编码”“销售价格”“销售日期”等数据列。下列语句中,能将df 对象中的数据以“商品编码”为关键字降序排序的是( )
A.df.sort_index(axis=1,ascending=True)
B.df.sort_values(”商品编码”,ascending=False)
C.df.sort_values(”商品编码”,ascending=True,inplace=True)
D.df.sort_values(”商品编码”,ascending=False,inplace=True)
D
【解析】 df 对象中的数据采用DataFrame 结构组织,因此可以使用sort_values()函数按“商品编码” 降序排列df 对象中的数据。参数ascending=False 为降序,inplace=True 用排序结果替换df 中的数据,选项D正确。
变式4 有如下部分Python程序段:
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import random
s1=random.sample(”abcdefghij”,5)
items=[1,2,3,4,5]
random.shuffle(items) #随机排列items中的值
plt.bar(s1,items)
plt.show()
执行该程序段后,输出的图形可能是( )
A. B. C. D.
【解析】 语句“s1=random.sample(”abcdefghij”,5)”从指定范围内抽取5个小写字母;语句“plt.bar(s1,items)”用于绘制柱形图,横坐标是s1,选项B正确。
B
#
$$