1、专题7数据统计与可视化的程序实现知识点利用Pandas模块进行数据统计1.小明收集了某超市部分商品2022年上半年每天的价格数据并保存在data.xlsx文件中,如图所示。要分析某商品一个月内的价格稳定情况,需要将本月每天(除第一天外)价格波动的绝对值加起来(价格波动当天价格前一天价格),其值越小,价格越稳定。为统计该超市6月份各商品价格稳定情况,编写如下Python程序。请回答下列问题:(1)获取6月份各商品的价格,划线处填入的代码为_(多选,填字母)。A.dfdf日期20220601B.df日期20220601C.dfdf.日期20220601D.dfdf日期20220601import
2、pandas as pddfpd.read_excel(data.xlsx)df_dfdf.reset_index(dropTrue)#重新设置索引,从0开始递增(2)绘制6月份价格稳定情况线形图,部分Python程序如下,请在划线处填入合适代码。import matplotlib.pyplot as pltcolsdf.columns1: #存储各商品名称n_mlen(cols)diff0*mfor i in range(m):s0for j in range(1,n):day_diffabs(dfcolsijdfcolsij1) #计算每天价格波动sday_diff_x,ycols,dif
3、fplt._plt.show()2.小明收集了梅西2005年至2023年国家队比赛数据,保存在“梅西国家队详细比赛数据.xlsx”文件中,部分数据如图a所示,现利用Pandas模块处理数据。为统计分析梅西20192023年各项赛事的平均进球情况,编写Python程序。请回答下列问题:(1)读取“梅西国家队详细比赛数据.xlsx”数据,筛选出2019年以来的各项比赛数据。函数代码如下,划线处应填入的代码为_(单选,填字母)。A.dfdf年份2019B.df年份2019C.df年份2019 D.dfdf年份2019import pandas as pdimport matplotlib.pyplo
4、t as pltdfpd.read_excel(梅西国家队详细比赛数据.xlsx)#读取表格数据df1_(2)统计各项赛事的平均进球数量。由于原始数据“赛事”列中部分赛事未显示年份(如图a所示),无法进行跨年度统计,因此需要在赛事名前添加年份信息。例如:“国际友谊赛”根据年份修改为“2019国际友谊赛”,“2022世界杯预选赛”则不修改。具体过程代码如下,请补充完整。for i in df1.index:ssdf1.ati,赛事#根据行标签、列标签选取单个值,如“国际友谊赛”_if not(nf.isdigit():#isdigit()判断是否为数字,是则返回 Truedf1.ati,赛事st
5、r(df1.ati,年份)df1.ati,赛事gdf1.groupby(赛事,as_indexFalse).mean()#以“赛事”为关键字,分组求平均(3)为统计2019年以来,梅西进球平均数排名前三的赛事,考虑可能存在并列情况,具体过程代码如下,请补充完整。gg.sort_values(进球,ascendingFalse)#以“进球”为关键字,降序排序g1g.head(3)#取前三项记录mg1进球.min()#求最小值bls0bllen(g1g1进球m)#求序列长度for i in g.index:if g.ati,进球m:#根据行标签、列标签选取单个值 _g2g.head(3blsbl)
6、(4)以下是20192023年梅西国家队比赛平均进球数排名前三赛事统计图,则划线处的代码应为plt.title(20192023梅西国家队比赛平均进球数排名前三赛事统计图)xg2赛事y_plt.bar(x,y)plt.show()3.小明收集了2022年全国各省份人均消费支出相关数据,部分数据如图a所示,为了统计分析处理各城市消费情况,编写如下Python程序。请回答下列问题:(1)统计各个区域超全国总消费平均值的省份数量,请在划线处填入合适的代码。import pandas as pddfpd.read_excel(xiaofei.xlsx)df_df.sum(axis1)avgdf.总消费
7、.mean()dic华北:0,东北:0,华东:0,华中:0,华南:0,西南:0,西北:0,for i in _:if df.总消费iavg:dic_1(2)若要筛选出总消费最高的5个省份,程序划线处的代码为_(多选:填字母)(注:全部选对的得2分,选对但不全的得1分,不选或有选错的得0分)。res_print(总消费最高的5个省份为:n,list(res.省份)A.df.sort_values(总消费,ascendingFalse).head(5)B.df.sort_values(总消费).tail(5)C.df.sort_values(总消费)0:5D.df.sort_values(总消费,
8、ascendingFalse)0:5(3)统计并绘制2022年各区域总消费平均值比较图,如图b所示。部分Python程序如下,请在划线处填入合适的代码。import matplotlib.pyplot as pltdf1df.groupby(区域,as_indexTrue).mean()plt.bar(_,df1.总消费)plt.title(全国各区域总消费平均值比较图)plt.ylim(20000,36000)plt.show()4.某市中考体测规定,考生要在6个体育项目中选3个进行测试,少选或多选的同学不符合报名要求。全市1万多名考生的报名结果(1表示选择该项目)保存在文件“tycs.cs
9、v”中,如图a所示。请回答下列问题:(1)下列有关数据处理的说法正确的是_(多选,填字母)。A.在对数据进行处理前要进行数据整理,解决数据缺失、数据异常、逻辑错误等问题B.编程处理数据能提高数据分析和挖掘的效率,目前只能采用Python语言实现C.文本数据处理一般过程包括分词、特征提取、数据分析、结果呈现D.需要将某个整体中各部分的大小和比例进行可视化展示时,可采用饼图、环形图等E.可使用公式“SUM(D5,I5)”对Excel中第5行D列至I列中的数据进行求和(2)定义函数filter_data功能为:读取某市报名的CSV文件,返回该市所有报名符合要求(在6个体育项目中选择3个)的学生信息。
10、函数代码如下,划线处应填入的代码为_。import pandas as pddef filter_data(datafile):dfpd.read_csv(datafile)#读取文件datafile中的数据df合计df.count(axis1)3# count 函数统计每行中非空数据的个数df1_return df1(3)统计该市每个组合报名的人数并绘制柱形图,如图b所示,其中各体育项目名称用相应字母(AF)代替。部分Python程序如下,请在划线处填写合适的代码。import matplotlib.pyplot as pltdffilter_data(tycs.csv)dA:800米跑,B
11、:跳绳,C:游泳,D:引体向上,E:掷实心球,F:立定跳远resultfor i in df.index:_for key in d:tdf.ati,dkeyif t1: choicekeyif choice in result:_else:resultchoice1xresult.keys()#获取字典 result 的键yresult.values()#获取字典 result 的值plt.bar(x,y)#绘制柱形图#设置绘图参数,显示如图b所示柱形型图,代码略(4)由图b可知,报名人数最多的组合为_(填写体育项目的名称)。5.小红从网上下载收集了浙江省部分海岛2022年10月12月的天气
12、预报信息,存储在Excel文件中,包含预报时间、站点编号、浪高、温度、风向以及风速,如图a所示,海浪等级信息如图b所示,她要编写一个Python程序快速对海岛天气数据进行分析。(1)为了获取该数据集中预报信息最多的海岛站点编号及该岛某月各风浪等级的预报次数,小红需要对图a所示的表中数据进行整理,下列说法正确的是_(多选,填字母)。A.第4行和第5行数据重复,删除其中一行即可B.通过检测发现D7单元格的数据存在错误,应进行修正C.删除“风向”和“风速”两列数据,不影响分析结果D.“浪高”为0的数据没有任何价值,可以直接删除(2)小红利用整理好的数据,编写并运行程序,求出预报信息最多的海岛站点编号
13、并根据给定月份,分析该月的数据并可视化,可视化结果如图c所示,请在划线处填入合适的代码。import pandas as pdimport matplotlib.pyplot as pltplt.rcParamsfont.sansserifKaiTi,SimHei,FangSong#设置中文字体显示dfpd.read_excel(浙江省海岛预报信息.xls)def zhengli():#整理数据df风浪等级无浪for i in df.index:tdf浪高iif t100:df风浪等级i大浪elif t25:df风浪等级i中浪elif t10:df风浪等级i小浪_df风浪等级i微浪for i
14、in df.index:#截取预报时间列中的月份日期信息,添加到月份列和日期列df.ati,月份str(df.ati,预报时间)5:7df.ati,日期str(df.ati,预报时间)8:10zhengli()df1df.groupby(_,as_indexFalse).count()df1_sortdf1.sort_values(预报时间,ascendingFalse,ignore_indexTrue)topdf1_sort站点编号0print(预报信息最多的海岛站点编号是:,top)df2dfdf.站点编号topminput(请输入要查询的月份:)df3_df3df3.groupby(风浪
15、等级).预报时间.count()xdf3.indexydf3.valuesplt.plot(x,y)#设置绘图参数,绘制如图c所示线形图,代码略。(3)观察图c图表可知,该海岛12月出现天数最多的风浪等级为_。6.为研究某项疾病与年龄的关系,某医院对以前的诊断记录进行整理和分析,整理部分数据如图a所示。(1)观察图a所示数据,发现年龄列数据格式不一致为了便于数据分析,下列操作合适的是_(单选,填字母)。A.删除“年龄”列数据B.将“年龄”列含有中文字的记录删除C.将“年龄”列数据转为文本类型D.将“年龄”列含有中文字的记录修改为只包含数字的年龄(2)将数据整理好后,为了统计018、1935、3
16、660、61以上(含61)四个年龄段的某疾病患病人数占该疾病总患病人数的比例,并绘制如图b示图表,编写如下Python程序,请在划线处填入合适代码。import pandas as pdimport matplotlib.pyplot as pltdfpd.read_excel(data.xlsx)tpinput(请输入疾病类型:)df1_#筛选tp疾病的数据count0*4for i in df1.index:agedf.ati,年龄if _:count01elif age35:count11elif ageagedfdf.groupby(疾病,as_indexFalse).count()则
17、加框处应填代码的顺序依次为_(单选,填字母)。A. B. C. D.7.游老师统计了2013年至2021年每年专科、本科、硕士和博士的毕业人数(单位:万人),数据保存在“Graduate.csv”中,如图a所示。年份专科本科硕士博士共计2013年3183195152014年3183415352015年3223585552016年3293745652017年3513845752018年3663866062019年3633946362020年3764207262021年398428777图a2014年增长率为:0.03462015年增长率为:0.03212016年增长率为:0.03242017年增
18、长率为:0.04322018年增长率为:0.02632019年增长率为:0.00982020年增长率为:0.05812021年增长率为:0.0412毕业人数增长率最高的年份是:2020年图b(1)统计每年的毕业总人数并绘制柱状图,请在划线处填写合适的代码。import pandas as pdimport matplotlib.pyplot as pltplt.rcParamsfont.sansserifsimheidfpd.read_csv(Graduate.csv)df.共计_xdf年份y_plt.bar(x,y)#设置绘图参数,绘制线型图,代码略(2)游老师编写如下代码用来统计毕业人数增
19、长率最高的年份,增长率相同的年份同时输出。请在划线处填写合适的代码。输出结果如图b所示注:2014年增长率(2014年毕业人数2013年毕业人数)/2013年毕业人数datadf共计.values.tolist()#将每年毕业总人数数据转换成列表year2014年,2015年,2016年,2017年,2018年,2019年,2020年,2021年rate;imax0for i in range(1,len(data):rate.append(round(_,4)for i in range(len(rate):print(yeari,增长率为:,ratei)for i in range(1,l
20、en(rate):if _:imaxielif rateimax0ratei:imax.append(i)print(毕业人数增长率最高的年份是:,end)for i in range(len(imax):print(_)8.小陈在气象部门得到了一份2022年不同城市的月平均日照时数(单位:kWh/m2/day)数据,存放在Excel文件“日照.xlsx”中。部分界面如图a所示。请回答下列问题:(1)第1步,小陈编写了如下代码。import pandas as pddfpd.read_excel(日照.xlsx)mdays31,28,31,30,31,30,31,31,30,31,30,31m
21、onthslist(df.columns)for i in df.index:s0for j in range(12):mdf.ati,monthsj1smdays jdf.ati,年度平均round(s/365,2)该程序实现的功能是_。(2)第2步,仅考虑平均日照时数因素,选出最适合用光伏发电给智能农业大棚提供能源的十个城市。划线处应填入的代码为_(单选,填字母)。df_A.df.sort_values(城市名,ascendingFalse).head(10)B.df.sort_values(城市名).tail(10)C.df.sort_values(年度平均,ascendingFalse
22、):10D.df.sort_values(年度平均,ascendingFalse).tail(10)#输出结果如图b所示,代码略(3)小陈想在家乡温州建一个智能大棚,采用光伏发电加蓄电设备供电,面积为1平方米的光伏板容量约为0.3 kW/块,光伏的充放电效率为80%,大棚每天消耗的最低电能约为30 kWh,为确保每月能正常供电,需要1平方米的光伏发电板共_块。(日均发电量电池板的容量/块块数平均日照时数充放电效率)建设光伏发电设备前要先获得当地的平均日照时数情况,小陈通过如下代码获取相关数据。resdfdf城市名温州市resres.values01:13._print(温州市月平均日照最小值为
23、”,res)9.某教师收集学生一节课40分钟专注度情况的测试数据,以帮助自己更好地制定教学策略。测试数据存储在“数据.txt”文件中,每行对应一位学生。40分钟分为8个时段记录数据,05分钟为第1个时段,510分钟为第2个时段3540分钟为第8个时段。每个时段都设置了10个测试点(即每个时段包含10个数据结果),按时间顺序存储,每行共80个数据。其中“1”表示专注,“0”表示不专注,数据间用逗号隔开,如图a所示。根据题意完成以下内容:(1)进行数据预处理,将“数据.txt”文件的每行数据分组计算出对应8个时段的结果(10个数据为一组计算平均值),结果如图b所示fopen(数据.txt,r,en
24、codingutf16)#打开文件file_dataf.readlines()#读取所有行datafor row in file_data:#逐行读取数据slist(map(int,row.split(,)#将字符按逗号分割,转为整型,以列表形式存储line;i0while i80dfs_dfgdfgdfg.rename(columns学业分数:人数)#将学业分数重命名为人数plt.bar(dfg班级,_)plt.title(班级优秀人员对比图);plt.xlabel(班级)plt.ylabel(人数);plt.show()请在划线处填入合适的代码。(3)加框处应填入的代码是_(单选,填字母)
25、A.dfs.groupby(班级,as_indexFalse).学业分数.count()B.dfs.groupby(班级,as_indexFalse).学业分数.sum()C.dfs.groupby(班级,as_indexTrue).学业分数.count()D.dfs.groupby(班级,as_indexTrue).学业分数.sum()12.小明收集了某学校某次模考技术成绩的数据,存储在文件“cj.xlsx”中,其中“xx1”表示信息选择题1,共12个选择题。每小题的分值是2分,如图a所示。(1)从图a中第一行数据看,该行数据存在的问题是_(单选,填字母)。A.数据缺失B.逻辑错误C.格式不
26、一致D.数据异常(2)技术学科包含信息技术与通用技术,需要我们关注学科的平衡,而衡量学科平衡的重要指标是学科吻合度,采用得分差来判断(3分一级:02分为0级偏差,35分为1级偏差,以此类推),现需要编写Python程序计算吻合度偏差值,并统计各班偏差较大的人数(吻合度3),输出结果如b图所示。代码如下,请在划线处填入合适的代码。import pandas as pdplt.rcParamsfont.sansserifSimHeidfpd.read_excel(cj.xlsx)dfdfdf.技术!0nlen(df)infobjc1:0,2:0,3:0,4:0,5:0#存储各班吻合度3的人数for
27、 i in range(n):info.append(df.班级i,df.姓名i,df.信息i,df.通用i)diffinfoi2infoi3infoi.append(_)print(infoi0,班,infoi1,吻合度级别:,infoi4)if infoi43:_print(各班吻合度偏差较大人数统计如下:)for bj in bjc:print(bj,班,bjcbj,人)(3)想知道12个信息技术选择题的难度系数(难度系数平均分/分值),选出错误率最高的5个小题。小明编写程序如下,求各题的难度系数并给错误率最高的5个小题,绘制了如图c所示的柱形图。import matplotlib.py
28、plot as pltdiffor i in df.columns5:dif.append(round( _/2,2)dic题号:df.columns5:,难度系数:difdf1pd.DataFrame(dic)df1df1.sort_values(难度系数)plt.figure(figsize(8,4)plt.title(信息难度最大的5道题对比图)plt.bar(_)plt.xlabel(题号)plt.ylabel(难度系数)plt.show()13.小吴收集了2020年之前历届世界杯数据并进行汇总,制作了“历年世界杯各国数据.xlsx文件,具体内容结构如图a(部分数据)所示。(1)从图a
29、中可看到土耳其的比赛场数为“20”,与胜、平、负场数之和不相等该问题属于_。A.数据缺失 B.数据重复C.逻辑错误 D.格式不一致(2)现要找出非洲总进球数前3名的国家(不考虑并列情况),核心代码如下:dfpd.read_excel(历年世界杯各国数据.xlsx)print(df)则方框处可选代码是_(按数据处理先后顺序填序号)。dfdf.groupby(所属大洲)dfdf:3dfdf.sort_values(进球数,ascendingFalse)dfdfdf所属大洲非洲dfdf非洲(3)小吴收集了英格兰在2022年世界杯中的5场比赛的数据并存储在文件“英格兰.xlsx”中,结构如图b所示。现
30、编写程序,将数据处理后合并到“历年世界杯各国数据.xlsx”文件中,核心代码如下,请在划线处填写合适的代码。df1pd.read_excel(历年世界杯各国数据.xlsx)df2pd.read_excel(英格兰.xlsx)for i in range(len(df1):if df1.ati,球队英格兰:_breakfor line in df2.values:goalline2;lostline3if goallost:df1.atindex,胜1elif goallost:df1.atindex,负1else:df1.atindex,平1_df1.atindex,进球数goaldf1.at
31、index,失球数lostdf1.atindex,净胜球goallostdf1.to_excel(new)历年世界杯各国数据.xlsx,indexFalse)#去除索引保存文件(4)读入文件“(new)历年世界杯各国数据.xlsx”并制作了如图c所示的柱形图,核心代码如下。若要更换图表类型,则应修改_(单选,填序号)处的代码。df1pd.read_excel(new)历年世界杯各国数据.xlsx)df1df1.sort_values(进球数,ascendingFalse)#df1df1df1所属大洲南美洲df1df1球队,进球数#df1.plot.bar(x球队,y进球数)#plt.show(
32、)#14.小美收集了某电商平台某年112月的“十大”空调品牌的销售数据,每个月的数据保存在一个CSV文件中,文件如图b所示,分别记录了对应月份的订单数据。请回答下列问题:(1)定义get_sales函数,功能为:读取某月的CSV文件,返回某品牌当月的销售额。函数代码如下,划线处应填入的代码为_(单选,填字母)。A.dfdf品牌brandB.dfdf品牌monthC.df品牌brandD.df品牌monthimport pandas as pddef get_sales(brand,month):filenamestr(month).csvdfpd.read_csv(filename)#读取文件df_