資源簡介 中小學教育資源及組卷應用平臺2024信息技術學業水平考試專題練優化集訓15 pandas處理數據1.下列有關pandas-Series的說法錯誤的是( )A.包含一個數組的數據和一個與數據關聯的索引,是二維數據結構B.其索引值默認是從0起遞增的整數C.可用列表、字典等創建Series數據結構D.其索引可以指定,類型可以為字符串型2.下列有關pandas-DataFrame的說法錯誤的是( )A.是一種二維數據結構B.由1個索引列和若干個數據列組成C.同一個DataFrame對象的數據列類型必須相同D.可看作共享同1個index的Series集合3.不能實現選取df對象前5行數據記錄的語句是( )A.df.head() B.df.head(5)C.df[0:5] D.df[5]回答下列第4~6題。4.某DataFrame對象df中包含“準考證號”“班級”“姓名”“文”“數學”…“總分”等10個數據列、多個數據行,能獲取對象df第3個數據的“姓名”內容的語句有( )①df[2,'姓名'] ②df.at[2,'姓名'] ③df[2]['姓名'] ④df['姓名'][2] ⑤df.姓名[2]A.①②③ B.①②④C.②④ D.②④⑤5.如第4題對象df,能夠降序排列輸出總分大于等于600分的學生數據的代碼組合是( )①df=df.sort_values(″總分″,ascending=True)②df=df.sort_values(″總分″,ascending=False)③df=df[″總分″,>=600]④df=df[df[″總分″]>=600]⑤print(df)A.①③⑤ B.①④⑤C.②③⑤ D.②④⑤6.如第4題對象df1,下列語句中,可以以班級為單位,統計出各班級“總分”的平均值的有( )①df.groupby('班級').mean()②df.groupby('總分').mean()③df.groupby('班級')['總分'].mean()④df.groupby('班級').總分.mean()⑤df.groupby('班級').describe()A.①②③④⑤B.①②③⑤C.①③④⑤D.①②③7.有如下Python程序段。import pandas as pdlist=[['周欣怡','湖州',15,646],['王培新','杭州',16,598],['張佳明','杭州',16,609],['林逢春','嘉興',15,547],['朱梁棟','湖州',16,588],['陳清瑞','嘉興',15,571]]inf=pd.DataFrame(list,columns=['姓名','地區','年齡','總分'])print(inf)print('_' 20)print(inf.groupby('地區',as_index=True).mean())執行該程序段后,輸出的結果是 (單選,填字母)。 8. 模塊用于科學計算(隨機數、數組運算等); 模塊基于numpy實現,主要用于數據的處理和分析; 用于繪圖庫。 9.小明從某網站上收集了2022年4月部分生產資料市場價格變動情況數據,數據集保存在“shuju.xlsx”中,格式如圖a所示。圖a為分析相關類別生產資料的漲跌幅情況,小明編寫了以下Python程序。import pandas as pdimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei'] #正常顯示中文字體df=pd.read_excel(″shuju.xlsx″)df[″漲跌幅″]= (1)通過數據計算添加漲跌幅列,請在劃線處填寫實現的方式。計算公式為:漲跌幅=(本期價格-上期價格)/本期價格 100。(2)若要對表格中的數據進行分類統計,并求其平均漲跌幅。請完善以下代碼:g=df.groupby(″類別″,as_index=False)df1= df1=df1.sort_values(″漲跌幅″,ascending=False)(3)根據上述操作結果,制作一份顯示類別漲跌幅平均值的圖表,其格式如圖b所示。各種類別對比分析圖圖b請完善以下代碼。plt.figure(figsize=(8,4))plt.title(″各種類別對比分析圖″)plt.bar(① ,df1[″漲跌幅″],label='漲跌幅') plt.xlabel(″類別″)plt.ylabel(② ) plt.legend()plt.show()10.某市普通高中選課數據如下圖所示,學生從技術、化學、生物等科目中選擇三門作為高考選考科目,“1”表示已選擇的選考科目。圖a各學校技術選考人數對比圖b為分析各學校的學生選科數據,編寫了如下程序:import pandas as pdimport matplotlib.pyplot as pltplt.rc'font', {'family':'SimHei'}plt.rcParams['axes.unicode_minus']=Falsedf=pd.read_csv(″xk73.csv″)(1)若要了解市里所有選考技術的學生情況,請在劃線處給出合適代碼,篩選出有選技術科目的同學信息:print( ) (2)使用Python編程分析每所學校各科目選考的人數(不同的學校代碼表示不同的學校)。請在劃線處填入合適的代碼。g=df.groupby(① ,as index=false) #按學校進行分組 s2=② #按學校分別統計各科目的選考人數 s2.sort_values(″技術″,ascending=False) #按技術選考人數進行降序排序(3)若要做一個各學校技術選考人數的分析,添加如下程序段:plt.figure(figsize=(10,5))a=list(s2.學校代碼)plt.xticks(range(1en(s2.學校代碼)),a,rotation=45) #將各學校代碼按降序順序顯示在x軸上p1t.① (range(len(s2.學校代碼)),② ) #對各學校及對應技術選考人數進行繪圖 plt.xlabel(″學校″)plt.ylabel(″技術選考人數″)plt.title(″各學校技術選考人數比對″)plt.show()劃線處的代碼應為 (單選,填字母)。 A.①barh ②df.技術B.①plot ②df.技術C.①bar ②s2.技術D.①scatter ②s2.技術11.黃老師獲取了學校高三年級學生某次考試數據,并使用Excel軟件、Python程序進行數據處理,如圖所示。(1)Excel文件“exam.xlsx”中的數據為 (選填:結構化數據/半結構化數據/非結構化數據)。 (2)黃老師將文件存儲為“exam.xlsx”,并編寫了如下Python程序對數據進一步分析。請將劃線處代碼補充完整。import pandas as pdimport matplotlib.pyplot as pltdf = pd.read_excel(″exam.xlsx″)#統計年級物化生政史地技各個科目的選課人數(本次考試無人缺考)for i in df.columns[5:12]:km=irenshu=df[km].count()print(″選″,km,″的人數為:″,renshu)#制作年級男女生語文平均分對比圖表df2=df.groupby(″性別″,as_index=False).① plt.bar(df2.性別,② ) plt.③ (″男女生語文平均分比較″) plt.xlabel(″性別″)plt.ylabel(″語文平均分″)plt.show()12.某地區要對轄區內高中學生的高考選科情況進行統計,前期先用Excel收集各個學校每個學生的選科數據,界面如圖所示。用Python處理上述Excel文件,統計每個學校各個學科的選科情況,并用圖表展示學生人數最多的5個學校的物理學科與政治學科人數,代碼如下:import pandas as pdimport numpy as npimport matplotlib.pyplot as pltdf=pd.read_excel(″xk73.xlsx″)#讀數據到pandas的DataFrame結構中sc=df.groupby(① ,as_index=False).count()#按學校分組計數 sc=sc.drop('姓名',axis=1)#刪除“姓名”列sc=sc.rename(columns={'學生編號':'總人數'})#修改“學生編號”為“總人數”sc_sort=sc.sort_values(″總人數″,ascending=False)#對分組計數結果進行排序x=np.arange(1,6)#產生列表[1,2,3,4,5]y1=sc_sort.head()[″物理″]② plt.figure(figsize=(8,4))plt.bar(x-0.2,y1,label=″wuli″,width=0.4)plt.bar(x+0.2,y2,label=″zhengzhi″,width=0.4)plt.ylim(50,400)plt.legend()df_sum=pd.DataFrame(data=sc.sum()).Tdf_sum['學校代碼']='合計'③ #顯示圖表 result=sc.append(df_sum) #增加“合計”行result.to_excel(″學校人數統計.xlsx″)#保存結果在劃線處填寫合適代碼,完善程序。優化集訓15 pandas處理數據1.A 解析 是一維數據結構。2.C 解析 同一個DataFrame對象的不同數據列類型可以不同。3.D 解析 head(n)函數返回DataFrame前n行數據,若不設置參數n,則默認返回前5行。df[0:5]選取df對象前5行數據,df[5]選取df對象第6列數據。4.D 解析 可以通過at方法獲取DataFrame對象單個數據值,格式為df.at[index,column],所以②正確;或者根據列標題先獲取整列,然后通過行索引獲取單個數據值,其中獲取一列數據可以通過字典記法或屬性檢索,第三行數據的行索引是2,所以④⑤均正確。5.D 解析 sort_values()函數中,參數ascending,默認值為True,表示升序,為False時是降序;對于DataFrame對象,可以通過布爾型數據選取滿足條件的行,正確寫法為df[df[″總分″]>=600];最后通過語句⑤輸出結果。6.C 解析 統計各班級學生“總分”平均值需要按照“班級”分組計算。df.groupby('班級').mean()#按“班級”分組,計算各純數值列平均值。df.groupby('總分').mean()#按“總分”分組,計算各純數值列平均值。df.groupby('班級')['總分'].mean()#按“班級”分組,并選取“總分”列計算平均值。df.groupby('班級').總分.mean()#按“班級”分組,并選取“總分”列計算平均值。df.groupby('班級').describe()#按“總分”分組,計算各純數值列的平均值、最大值等統計數據。7.B 解析 as_index:為True時自動把第1列作為了index,為False時默認索引0、1、2…。8.numpy pandas matpoltlib9.(1)(df.本期價格-df.上期價格)/df.本期價格 100(2)g.mean() (3)①df[″類別″]或df.類別 ②″漲跌幅″解析 (1)根據數量關系確定計算公式。(2)計算平均值使用mean()函數。(3)①觀察題圖b可知需要填橫坐標數據來源。②此處需要填寫橫坐標y的標簽(ylabel),由題圖可知應該是“漲跌幅”。10.(1)df[df.技術==1](或df[df[″技術″]==1]) (2)①″學校代碼″ ②g.sum()或g.count() (3)D 解析 本題考查pandas及繪圖模塊知識。(1)Dataframe中,要對某列進行篩選(查找并顯示符合條件的值),可以通過df[df[″技術″]==1]或df[df.技術==1]來實現。(2)此處考查pandas中分組函數groupby的用法。依題意,本條語句按學校進行分組,分組的字段名應為“學校代碼”,故①處填″學校代碼″;①處代碼已將分組后的對象賦值組變量g,②空對其進行計數,故填:g.count()。(3)觀察題圖b,可知當前是散點圖(scatter),故選D。11.(1)非結構化數據 (2)①mean() ②df2.語文 ③title解析 (1)Excel中的數據是屬于結構化數據(每列數據類型均統一)。(2)①此處求平均值,因此使用mean()函數。②根據性別分組后,df2對象中‘語文’列存放了男女生語文成績平均分,創建柱形圖,x軸為性別,y軸為男女生語文成績平均分,故答案為df2.語文。③此處顯示的標題,因此答案如上。12.①″學校代碼″ ②y2=sc_sort.head()[″政治″](或y2=sc_sort.head(5)[″政治″]) ③plt.show() 解析 本題考查數據處理知識。(1)①題干說明需要“統計每個學校各個學科的選科情況”,所以需要根據“學校編號”分類匯總統計各學校的選科情況,此空填寫分組的關鍵字,答案為“學校代碼”。②根據上下文,此空是獲取學生人數最多的5個學校的政治學科人數。前面代碼段已經根據各學生總人數降序排序,再結合上一段代碼,此空只需要將“物理”修改成“政治”。head()函數返回DataFrame的前n個數據記錄,如果參數不寫,默認參數是5,所以此空答案:y2=sc_sort.head()[″政治″]或y2=sc_sort.head(5)[″政治″]。③代碼段plt.show()的功能是顯示圖形。(2)此空考查對圖表結果呈現的辨析。代碼段“plt.legend()”,說明最后的結果有圖例,排除CD。代碼段“plt.ylim(50,400)”,說明y坐標的取值范圍是[50,400],所以排除A,選B。21世紀教育網 www.21cnjy.com 精品試卷·第 2 頁 (共 2 頁)21世紀教育網(www.21cnjy.com) 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫