中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

2025屆信息技術一輪復習講義:專題7 數據統計與可視化的程序實現

資源下載
  1. 二一教育資源

2025屆信息技術一輪復習講義:專題7 數據統計與可視化的程序實現

資源簡介

專題7 數據統計與可視化的程序實現
學業要求 知 識 點 學業水平等級
1.能根據實際要求,對表格數據進行簡單整理、計算和可視化呈現 1
2.能采用合適的方法分析數據和可視化呈現數據,并能從中提取有用信息,形成結論 2
3.會使用Python進行簡單的數據處理,并能從中提取有用信息形成結論 2
知識點 利用Pandas模塊進行數據統計
【知識梳理】
1.Pandas模塊主要用于數據處理和________,Matplotlib是一個繪圖庫,________子庫提供的函數可以快速繪圖和設置圖表的坐標。
2.Pandas提供________和________兩種數據結構,兩者的區別見下表所示。
數據結構 Series DataFrame
維度 一維 ________維
組成 包含一個數組的數據和一個與數據關聯的索引,索引值默認是從________起遞增的整數 由1個索引列(index)和若干個數據列組成,每個數據列可以是不同的________
創建 列表、字典等可以用來創建Series數據結構;與列表不同的是:Series的索引可以指定,類型可以為________ 通常用一個________的列表或字典來創建;或直接讀取二維數據文件創建
聯系 ①DataFrame可以看作是共享同一個________的Series的集合 ②DataFrame對象和Series對象均可以通過________或________來檢索,還可以用at函數賦值和修改
3.Pandas基本屬性值
(1)index屬性
行索引,默認值是從________開始遞增的整數,也可以在創建對象時通過增加一列字符串類型的index屬性。
(2)values屬性
存放Series對象的一個數組,存放________對象的二維數據。
(3)columns屬性
只針對DataFrame對象,存放各列的________標題。
4.Pandas數據的檢索
Pandas可以通過兩種方法來檢索數據,一是通過三大________(Serise對象只有兩大屬性)來檢索,如df.columns、df.index(一維數據列表),df.values(二維數據列表)。二是通過________記法,Pandas用字典來記錄每列的數據,Series對象字典中每個鍵的值只有一個,鍵為index屬性,值為values屬性。DataFrame對象字典中每個鍵的值有多個,是個列表,鍵為columns屬性,值為每列的數據。
5.Pandas常用函數
函數 說明
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對象來存放改變后的數據
6.利用Matplotlib模塊繪圖
(1)Matplotlib是一個繪圖庫。使用其中的________子庫所提供的函數可以快速繪圖和設置圖表的坐標軸及刻度、圖例等。
(2)導入matplotlib:
import matplotlib.pyplot as plt。
(3)Matplotlib模塊的常用函數
分類 函數 說明
創建 對象 figure() 創建一個新的圖表對象,并設置為當前繪圖對象 注:不創建figure對象,直接調用plot等繪圖函數進行繪圖,matplotlib會自動創建一個figure對象
繪制 圖形 ________ 繪制線形圖
bar() 繪制垂直柱形圖
barh() 繪制水平柱形圖
scatter() 繪制散點圖
修飾 美化 ________ 設置圖表的標題
xlim() ylim() 設置X、Y軸的取值范圍
xlabel() ylabel() 設置X、Y軸的標簽
legend() 顯示圖例
顯示 show() 顯示創建的所有繪圖對象
【經典案例】
Series對象只有index和values兩列組成,在Series數據集df中,索引為x的值表示為df[x]或df.at[x]。DataFrame對象由1個索引列(index)和多個數據列組成,在DataFrame數據集df中,可以用df[″姓名″]命令來創建″姓名″列,該列索引為x的值表示為df[″姓名″][x](字典法),df.姓名[x](屬性法),df.at[x,″姓名″](行列法)。數據篩選的目的是為了找到符合處理條件的數據,往往是數據處理的第1步。通過表達式df[df[″姓名″]==xx]來找出符合條件的所有記錄,該數據集是原數據集的子集,字段數量相同,但記錄的條數小于原數據集。數據分組(groupby)的目的是以某個列中相同字段值的記錄組合在一起,成為分組依據,統計各個分組的數量(count())、和(sum())、平均值(mean())和最值(max()min())等等。數據排序(sort_values)按某列進行升降排序排列,可以顯示近排序后的數據,但不會改變原數據的索引值。
【例1】 小紅收集了部分城市2021年全年每天PM2.5、PM10、CO濃度數據,每天的數據分別保存在以8位日期字符串命名的CSV文件中,部分文件如圖a所示,每個文件記錄了一天24小時的監測數據,示例如圖b所示。
為統計分析城市A全年各月份PM2.5的月平均濃度(當月的日平均濃度的平均值),編寫Python程序。請回答下列問題:
(1)定義pmday函數,功能為:讀取某天的CSV文件,返回城市A當天PM2.5的日平均濃度。函數代碼如下,劃線處應填入的代碼為________(單選,填字母)。
A.df['類型']=='PM2.5'
B.df['類型'=='PM2.5']
C.df[df['類型']]=='PM2.5'
D.df[df['類型']=='PM2.5']
import pandas as pd
def pmday(dayfile):
df=pd.read_csv(dayfile) #讀取文件dayfile中的數據
df=________
return df['城市A'].mean() #返回城市A
當天PM2.5的日平均濃度
(2)統計城市A各月份PM2.5的月平均濃度并繪制線型圖,部分Python程序如下,請在劃線處填寫合適的代碼。
import matplotlib.pyplot as plt
def tstr(t):
if t<10:
retrun '0'+str(t)
else:
retrun str(t)
pm=[0]*12
mdays=[31,28,31,30,31,30,31,31,30,31,30,31]
#2021年每月天數
for m in range(12):
sm=0
mstr=tstr(m+1)
for d in range(①________):
dstr=tstr(d+1)
dayfile='2021'+mstr+dstr+'.csv'
sd=pmday(dayfile)
②________
pm[m]=sm/mdays[m]
x=[1,2,3,4,5,6,7,8,9,10,11,12]
y=③________
plt.plot(x,y) #繪制線型圖
#設置繪圖參數,顯示如圖c所示線型圖,代碼略
(3)城市A2021年PM2.5年平均濃度為34.6微克/立方米。由圖c可知,城市A2021年PM2.5月平均濃度超過年平均濃度的月份共________個。
思維點撥
明考向 本題考查pandas對數據集的篩選和選取合適的數據源制作圖表。遍歷存儲全年每天數據的文件,調用自定義函數pmday統計每天的PM2.5日平均濃度,從而計算月平均濃度,最后利用圖表可視化工具顯示統計結果
精點撥 (1)可以通過布爾型數據選取滿足條件的行。(2)計算各月份PM2.5濃度的平均值,可以累加各月的每天PM2.5濃度的平均值。變量dayfile表示每天的數據文件名,題干已經提示“每天的數據分別保存在以8位日期字符串命名的CSV文件”,調用函數pmday(dayfile),可以得到當天PM2.5的日平均濃度,并保存于變量sd。當月的各天PM2.5的日平均濃度需要累加起來,最后求均值。③空橫坐標為月份,縱坐標為PM2.5月平均濃度,即列表pm的數據。(3)超過年平均濃度的月份為1、2、3、4、11月
聽課筆記:_____________________________________________________________
______________________________________________________________________
______________________________________________________________________
【變式1】 小林收集了各地市各年份檢測的PM2.5濃度值保存于Excel文件“PM2.5.xlsx”中,部分數據如圖a所示。小林使用Python進行數據分析,請回答以下問題。
(1)小林先將同一個地區的數據輸出到各自獨立的Excel文件中,部分結果如圖b所示,實現程序如下所示:
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_excel(″PM2.5.xlsx″)
# cities 保存所有地區名稱,這里僅演示部分數據
cities=[″安吉縣″,″淳安縣″,″慈溪市″,″杭州市″,″湖州市″]
for city in cities:
dfc=________
dfc.to_excel(city+″.xlsx″,index=False) #輸出文件結果示例如圖b所示
那么劃線部分語句可以是________(注:全部選對的得2分,選對但不全的得1分,不選或有選錯的得0分)。
A.df[df[″地區名稱″]==city]        B.df[df[″地區名稱″]]==city
C.df[df.地區名稱==city] D.df[df.″地區名稱″]]==city
(2)對于圖a所示的原始數據,小林要進行數據整理:刪除“地區編碼”、“指標名稱”、“計量單位”等對后面統計無用的數據列,請將劃線處①的語句補充完整。
df=pd.read_excel(″PM2.5.xlsx″)
#刪除“地區編碼”、“指標名稱”、“計量單位”數據列
df=df.drop([″指標名稱″,″地區編碼″,″計量單位″],axis=①________) #同一個地市取PM2.5濃度最高的值
dfg=②________
#按PM2.5的值升序排序
dfg=dfg.sort_values(″PM2.5″,ascending=True) #輸出排序后的最后五行結果
print(dfg.tail())
(3)對于整理后的數據,在同一個地市中取歷次PM2.5濃度檢測值最高的值,最后按PM2.5升序排序數據,輸出結果如圖c所示,則第②空應填寫的語句是________(單選,填字母)。
A.df.groupby(″PM2.5″).max()
B.df.groupby.地區名稱.max()
C.df.sort_values(″PM2.5″).max()
D.df.groupby(″地區名稱″).max()
(4)將排序后的數據分別取PM2.5檢測值最高和最低的五行數據合并成新的DataFrame對象后繪制成柱形圖如圖d所示。請將程序補充完整。
df2=pd.concat([dfg.head(5),dfg.tail(5)]) #合并兩個對象成為新的DataFrame對象
plt.rcParams['font.sans-serif']=['KaiTi','SimHei','FangSong'] #設置圖表字體
plt.figure(figsize=(8,4))
plt.title(″部分縣市PM2.5濃度對比″)
plt.xlabel(″PM2.5濃度值″)
plt.bar(①________,df2[″PM2.5″],color=″orange″)
for i in range(len(df2)):
x=df2.index[i]
y=②________
#text()方法可以繪制數據標簽,語法:text(橫坐標,縱坐標,顯示內容)
plt.text(x,y,'%d'% y)
【例2】 某校高三首考后,匯總了學生7選3成績以及次考科目棄考情況(注意:1表示次考棄考,0表示參加次考),ckqk.xlsx文件部分數據如圖a所示,現要統計各班人均棄科目考門數和各科次考棄考比例,編寫如下Python程序。
請回答下列問題:
(1)下列代碼讀取ckqk.xlsx文件,輸出各班每人平均棄考門數,輸出格式如圖b所示,則劃線處應填寫的代碼為________(單選,填字母)。
A.groupby('班級').棄考門數.mean()
B.groupby('班級',as.index=False)['棄考門數'].mean()
import pandas as pd
df=pd.read_excel('ckqk.xlsx')
df['棄考門數']=df[['棄考科目1','棄考科目2','棄考科目3']].sum(axis=1)
dfg=df.________________
print(dfg)
(2)統計7選3每門科目選考人數和棄考人數,并計算各科目棄考比例,Python程序如下,請在劃線處填寫合適的代碼。
courses={}
for i in df.index:
for k in range(1,4):
subject=df.at[i,'科目%d'%k]
     if ①________:
     courses[subject]=[1,0] #[1,0]表示當前為本科目第1個人,棄考人數初值置0
else:
     courses[subject][0]+=1
abandon=df.at[i,'棄考科目%d'%k]
if abandon==1:
     ②________
dfs=pd.DataFrame(courses)
dfs=dfs.T
dfs=dfs.rename(columns={0:'總人數',1:'棄考人數'})
dfs['棄考比例']=round(dfs['棄考人數']/dfs['總人數']*100,1)
dfs=dfs.sort_values('棄考比例',ascending=False)
(3)編寫代碼繪制如圖c所示圖表,則7選3科目中次考棄考比例超30%的有①________門。為實現該功能,請在下面劃線處填入合適代碼。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.figure('chart',figsize=(6,4))
plt.title('各科次考棄考比例分析')
plt.bar(dfs.index,②________,label='棄考比例')
plt.ylabel('各科棄考百分比')
plt.xlabel('7選3科目');plt.legend();plt.show()
思維點撥
明考向 本題考查pandas對數據集的分組統計、遍歷和可視化操作
精點撥 (1)根據圖b,分組方法gorupby的相應參數as_index=False。(2)①字典courses每對鍵值對的結構是:″科目″:[選科人數,棄考人數],先判斷字典中是否存在相應的鍵,不存在,就要創建相應的鍵值對。②如果某同學某科目有棄考,則要對應科目棄考人數累加:course[subject][1]+=1。(3)①從圖中可以找到符合條件的數據。②根據圖c,柱狀圖的數據分別是dfs.index,dfs.[″棄考比例″]
聽課筆記:____________________________________________________________
______________________________________________________________________
______________________________________________________________________
【變式2】 小明收集了本校高三年級10個班級學生視力情況的相關數據,示例如圖a所示。
圖a
請回答下列問題:
(1)按“學籍號”右起第二位數字的奇偶性來判斷學生性別(奇為男,偶為女)。左右眼的視力均大于等于5.0則判定為視力正常。程序運行結果如圖b所示,請在劃線處填寫合適的代碼。
高三年級視力正常的學生統計結果 視力正常的女生占女生總人數的:8.43% 視力正常的男生占男生總人數的:13.88%
圖b
df=pd.read_excel(″高三學生視力數據.xlsx″)
data={″301班″:[0,0],″302班″:[0,0],″303班″:[0,0],″304班″:[0,0],″305班″:[0,0],″306班″:[0,0],″307班″:[0,0],″308班″:[0,0],″309班″:[0,0],″310班″:[0,0]}
stat=[[0,0],[0,0]]
n=len(df)
for i in range(n):
x=int(df.at[i,″學籍號″][-2])
y=①________
if df.at[i,″左眼″]>=5.0 and df.at[i,″右眼″]>=5.0:
data[df.at[i,″班級″]][0]+=1
stat[y][0]+=1
data[②________ ][1]+=1
stat[y][1]+=1
print(″高三年級視力正常的學生統計結果″)
print(″視力正常的女生占女生總人數的:″,round(stat[0][0]/stat[0][1]*100,2),″%″)
print(″視力正常的男生占男生總人數的:″,round(stat[1][0]/stat[1][1]*100,2),″%″)
(2)輸出各班視力正常的學生情況,并繪制柱型圖,劃線①處應填入的代碼為________(單選,填字母:A.Series/B.DataFrame);劃線②處應填入的代碼為________(單選,填字母:A.s[″班級″] / B.s.index)。
import matplotlib.pyplot as plt
s=pd.①________(data,index=[″視力正常″,″本班人數″]).T
print(s)
plt.title(″高三年級各班視力正常的學生統計結果″)
plt.bar(②________,s[″視力正常″]/s[″本班人數″]*100)
#設置數據輸出時的對齊方式,設置繪圖參數,顯示柱型圖,代碼略
(3)由統計結果可知,視力正常占比最高的班級為________。
1.小明同學通過Python編程為學校教務處分析當地高二年級各選課方案的人數,使用Matplotlib的pyplot模塊呈現結果。程序運行界面如圖a所示。請回答下列問題:
(1)實現上述功能的Python程序代碼如下,請在劃線處填入合適的代碼。
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] 
#顯示中文
df=pd.read_excel('stu.xlsx')
df_xk=①________(″選考″,as_index=False).count() #按“選考”分組統計
df_xk=df_xk.rename(columns={″姓名″:″人數″}) #更改“姓名”列標題為“人數”
df_px=②________ #根據“人數”列數據降序排序
plt.figure(figsize=(8,6))
plt.title(″選課方案人數前10位對比圖″)
plt.legend #顯示圖例
plt.show #顯示圖像
(2)加框處的代碼可以是下列選項中的________(多選,填字母)。
(注:全部選對的得2分,選對但不全的得1分、不選或者有選錯的得0分)
A.plt.plot(df_px.選考[-10:],df_px.人數[-10:],label=″人數″)
B.plt.bar(df_px.選考[-10:],df_px.人數[-10:],label=″人數″)
C.plt.bar(df_px.選考[:10],df_px.人數[:10],label=″人數″)
D.plt.bar(df_px[″選考″][1:10],df_px[″人數″][1:10],label=″人數″)
E.plt.bar(df_px[″選考″][0:10],df_px[″人數″][0:10],label=″人數″)
2.某網站服務器五月(31天)的后臺訪問記錄保存在log.xlsx文件中,如圖a所示:
請回答下列問題:
(1)定義oneday函數,功能為:讀取日期為day的訪問記錄,將訪問地區依次保存在列表city中,并返回該列表。函數代碼如下:
import pandas as pd
df=pd.read_excel('log.xlsx')
def oneday(day):
city=[]
for i in____________:
  if df.at[i,″時間戳″][0:2]==day:
     city.append(df.at[i,″地區″])
return city
劃線處代碼為:________(單選:A.df.index()/B.df.index/C.df.values()/ D.df.values)
(2)統計該月每天華東五市的訪問數據,并繪制線型圖,部分Python程序如下,請在劃線處填寫合適的代碼。
import matplotlib.pyplot as plt
eastcity=[″上海″,″南京″,″杭州″,″蘇州″,″無錫″]
x=[i for i in range(1,32)]
y=[]
t=0
for i in range(1,32):
①________
if i<10:
day=″0″+day
city=oneday(day)
for j in city:
if j in eastcity:
     ②________
y.append(t)
t=0
plt.plot(③________)
plt.show()
(3)由圖b可知,該網站本月訪問量低于4萬次天數共有________天。
3.小王收集了2022年城市A全年每天的部分天氣數據,保存在“2022天氣.xls”文件中,部分數據如圖a所示。
(1)為統計2022年全年晴、陰、雨……的天數,編寫了如下的Python程序:
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_excel('2022 天氣.xls')
g=________
print('2022 年城市 A 天氣情況統計如下:')
for x in g.index:
print(x+':'+str(g[x])+'天')
程序運行結果如圖b所示,則劃線處應該填入的代碼為________(單選,填字母)。
A.df.groupby('天氣情況')['日期'].sum()
B.df.groupby('天氣情況')['日期'].count()
C.df.groupby('天氣情況').mean()
D.df.groupby('天氣情況').count()
(2)統計2022年城市A每月平均氣溫并繪制線形圖,部分Python程序如下,請在劃線處填入合適的代碼。
s=[0]*12
avg=[0]*12 #存儲每月平均氣溫
mdays=[0]*12
x=[1,2,3,4,5,6,7,8,9,10,11,12]
df['平均溫度']=(df['最低溫度']+df['最高溫度'])/2
for i in df.index:
①________
s[int(month)-1]+=df.at[i,'平均溫度']
mdays[int(month)-1]+=1
for i in range(12):
avg[i]=round(②________,1)
y=③________
plt.plot(x,y) #繪制線形圖
#設置繪圖參數,顯示如圖c所示線形圖,代碼略。
(3)由圖c可知,2022年城市A最冷和最熱的月份分別是________,________。
4.為了督促學生寒假堅持體育鍛煉,老師采用線上打卡的方式收集學生鍛煉情況,數據如圖a所示。
為統計冬鍛完成情況,編寫Python程序。請回答下列問題:
(1)定義outdata函數,其中參數dftmp是DataFrame數據類型,數據由圖a所示的Excel表導入。函數功能是:統計每天每個學生的鍛煉項目個數,返回含有“學籍號”、“姓名”和“項目個數”信息的二維列表。
函數代碼如下,劃線處應填入的代碼為________(多選,填字母)。
A.dftmp.at[i,j]==″√″
B.dftmp[i][j]==″√″
C.dftmp.at[j,i]==″√″
D.dftmp[j][i]==″√″
def outdata(dftmp):
a=[]
for i in dftmp.index: #dftmp 的行索引
itemn=0
for j in dftmp.columns[4:]: #dftmp中從“跑步”開始的列標題
     if ______________:
       itemn+=1
a.append([str(df[″學籍號″][i]),df[″姓名″][i],itemn])
return a
(2)冬鍛打卡成功的標準為累計運動15天,每天鍛煉項目達到3項及以上。統計輸出寒假體育鍛煉達標的學生名單,并制作四個項目的運動次數對比圖,部分界面如圖b和圖c所示。部分Python程序如下,請在劃線處填寫合適的代碼或改正加框處代碼。
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_excel(″sport.xls″)
lst=outdata(df)
print(″冬鍛打卡成功名單:″)
i=0;flag=[False]*len(lst)
while iif : #①
xjh=lst[i][0]
flag[i]=True
②________
for j in range(i+1,len(lst)):
     if lst[j][0]==xjh and lst[j][2]>=3:
       flag[j]=True
       days+=1
if days>=15:
     print(lst[i][0]+ ″/″+lst[i][1]+ ″/″+str(days)+ ″天″)
③________
ydl=df.count() #統計各列非空單元格數量,結果為 Series
item=[″跑步″,″跳繩″,″俯臥撐″,″仰臥起坐″]
nums=④________
plt.bar(item,nums,label=″運動次數″)
5.小明為了研究某地近十年每月的溫差變化,編寫Python程序。以2023年4月為例,該月每天的溫度數據分別保存在以8位日期字符串命名的excel文件中,部分文件如圖a所示,每個文件記錄了一天24小時的溫度數據,如圖b記錄了4月28日的數據。
(1)定義dv函數,功能為:讀取某天的excel文件,返回當天最高溫度與最低溫度的差值。函數代碼如下,劃線處應填入的代碼為________(單選,填字母)。
A.df[″溫度″].head(1)-df[″溫度″].tail(1)
B.df[″溫度″].(max()-min())
C.df[″溫度″].max()-df[″溫度″].min()
D.df[″溫度″].(head(1)-tail(1))
def dv(dayfile):
 df=pd.read_excel(dayfile)
  diff=________________
  return diff
(2)定義find函數,功能為:用字典創建DataFrame對象,并篩選出4月份溫差大于13的日期,輸出結果如圖c所示,請在劃線處填入代碼。
日期 溫差 3 0404 13.1 9 0410 13.1 15 0416 13.3 17 0418 13.8 27 0428 15.5
圖c
def find(r,t):
dic={″日期″:r,″溫差″:t}
df1=pd.DataFrame(dic)
df2=________________
return df2
(3)繪制4月份每天的溫差柱形圖,部分Python程序如下,請在劃線處填寫合適的代碼。
def tstr(t):
if t<10:
return'0'+str(t)
else:
return str(t)
td=[];date=[]
for i in range(30):
dstr=tstr(①________)
dayfile='202304'+dstr+'.xlsx'
date.append(dayfile[4:8])
td.append(②________)
#設置繪圖參數,代碼略
plt.bar(date,③________)
plt.show()
print(find(date,td))
6.小明收集了學校某次考試成績,部分成績情況如圖所示。小明為統計分析考試成績,編寫了Python程序。請回答下列問題:
(1)處理成績數據:小明需要將第1位同學的語文成績由138改為135,統計并輸出七選三科目的考試人數,再篩選出語文成績大于等于100的數據行,存入df1對象。請在劃線①②③處填入合適的代碼。
import pandas as pd
df=pd.read_excel('exam.xlsx')
①________ #將第1位“張吉雅”同學的語文成績修改為135
__________ #此處多選,選項在第(2)小題中
for km in df.columns[6:13]: #統計并輸出七選三科目的考試人數
renshu=②________
print(km,renshu)
df1=③________
(2)統計語數英總分:上述代碼中劃線處應填入的代碼為________(多選:填字母)。
A.df['語數英總分']=df['語文']+df['數學']+df['英語']
B.df.語數英總分=df.語文+df.數學+df.英語
C.df.'語數英總分'=df.'語文'+df.'數學'+df.'英語'
D.df.['語數英總分']=df.['語文']+df.['數學']+df.['英語']
(注:全部選對的得2分,選對但不全的得1分,不選或有選錯的得0分)
(3)小明需要根據df1對象的數據建立一張男女生語文成績均分比較條形圖,如圖b所示,下列代碼劃線處應填入的代碼為________(單選:填字母)。
A.groupby('語文')['性別'].mean()
B.groupby('性別').mean()
C.groupby('性別')['語文'].mean()
D.groupby('性別',as_index=False)['語文'].mean()
import matplotlib.pyplot as plt
plt.rc('font',**{'family':'SimHei'})  #設置顯示中文字體
g=df1.________ #此處單選,選項在第(3)小題中
plt.barh(g.index,g.values)
plt.title(″男女生語文成績均分比較″)
plt.show()
7.為了完善某學校食堂管理、持續提高食堂服務質量,讓全校師生更加精神飽滿地開展工作、學習,對學校食堂進行了一些調查,調查項目共5項(具體內容略)。學校后勤管理謝老師收集了12個班級的調查結果,分別存儲在“dy01.csv”、“dy02.csv”、...、“dy12.csv”等12個文件中(如圖a所示),每個文件部分界面如圖b所示。
現需要分析12個班級學生對這5個問題的選“A”情況。謝老師用Python的Pandas模塊編寫了以下代碼,實現相關問題的解決。請回答下列問題。
(1)定義了fun_A()函數實現了統計某個班級5個問題的選“A”的人數情況。Python程序代碼如下,請在劃線處填入合適代碼。
import pandas as pd
def fun_A(file):
df=pd.read_csv(file)
A_list=[]
for i in df.columns[1:]:
   __________________
A_list.append(c)
return A_list
(2)調用上述函數,處理 12 個班級每個問題的選“A”的總人數,Python程序代碼如下,請在劃線處填入合適代碼。
ans_list=[]
s=″010203040506070809101112″
for i in range(0,len(s)-1,2):
filename=″dy″+①________+″.csv″
res=fun_A(filename)
ans_list.append(res)
x=[″問題 1″,″問題 2″,″問題 3″,″問題 4″,″問題5″]
y=[0,0,0,0,0]
for i in range(5):
s=0 #每個問題選 A 的人數
for j in range(12):
②________
y[i]=s
(3)經上述處理后,接著以圖的形式匯報結果(如圖c所示),Python程序代碼如下,請回答下列問題。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #圖表顯示中文字體
plt.title(″每個問題選 A 的總人數″)
__________
plt.legend()
plt.show()
劃線處代碼合適的是________(單選,填字母)。
A.plt.bar(x,y)
B.plt.bar(x,y,label='A選項')
C.plt.plot(x,y)
D.plt.plot(x,y,label='A選項')
(4)調查數據的有效問卷共550份,從圖c中可以觀察出有________(填數字)個問題的選“A”總人數低于60%。
8.校運動會舉行“四項全能比賽”,分別舉行100米、立定跳遠、1500米、鉛球。規則如下:每一項成績獨立比較,取前8名按18,14,12,10,8,6,4,2計分,四個項目比完后,將總分求和,分數最高者得勝。現有未計入鉛球成績的“四項全能.xlsx”分數表和記錄鉛球原始成績的“鉛球.txt”分數表(保證成績沒有相同),通過處理輸出冠軍及其成績。
請在劃線處填入合適的代碼。
import pandas as pd
fen=[18,14,12,10,8,6,4,2]
f=open(____(1)____,'r',encoding='UTF-8')
a=[]
for i in f.readlines():
t=i.strip().split(',')
if t[0]=='姓名':
continue
a.append([t[0],float(t[1])])
n=len(a)
for i in range(n-1):
for j in range(n-i-1):
  if____(2)____:
a[j],a[j+1]=a[j+1],a[j]
df=pd.read_excel(″四項全能.xlsx″,index_col='姓名') #將姓名列作為index
for i in range(n):
if i<8:
s=fen[i]
else:
s=0
(3)____
Sum=____(4)____
df['總分']=Sum
df=____(5)____
print(df.head(1)))
9.收集某地2022年全年的天氣數據,按日期順序儲存在“tqqk.xlsx”文件中,部分界面如圖a所示。
為計算每月空氣質量為優的日期中的平均溫差。編寫Python程序,請回答下列問題:
(1)計算并篩選出空氣質量為優的記錄信息,Python程序段如下,請在劃線處應填入合適的代碼。
import pandas as pd
df=pd.read_excel(″tqqk.xlsx″)
df[″溫差″]=df[″最高溫度″]-df[″最低溫度″]
dfy=________________
dfy=dfy.sort_values(″日期″,ignore_index=True)
(2)計算滿足條件的日期中的平均溫差。并繪制線形圖,部分Python程序段如下,請在劃線處填入合適的代碼。
import matplotlib.pyplot as plt
i=0
avewc=[] #月平均溫差
while ij=i+1
tot=dfy.at[i,″溫差″]
while j<=len(dfy)-1 and dfy.at[i,″日期″][5:7]==dfy.at[j,″日期″][5:7]:
①________
j+=1
avewc.append(round(tot/(j-i),2))
②________
x=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
y=③________
plt.plot(x,y,label=″月平均溫差″)
#設置繪圖參數,顯示如圖b所示線型圖,代碼略
(3)由圖b可知,月平均溫差超過8的月份共有________個。
10.某單位正式員工的基本工資計算公式為:基本工資=崗位工資+薪級工資,如圖a和圖b,分別對應salary1.xlsx文件和salary2.xlsx文件。員工入職單位一年后轉正,定崗位等級為十三級,根據學歷定起始的薪級,中專2級、大專5級、本科7級、碩士11級、博士14級。轉正定級后,薪級每年增加一級。
為統計分析該單位員工的工資情況,編寫Python程序。請回答下列問題:
(1)定義崗位工資和薪級工資標準查詢的兩個函數。
gwgz函數功能為:讀取salary1.xlsx文件,根據崗位等級m,返回對應的工資標準,例如m=“十三級”,gwgz(m)=1585。函數代碼如下,劃線處應填入的代碼為________(單選,填字母)。
A.df1.'崗位等級'[i]==m
B.df1[崗位等級][i]==m
C.df1['崗位等級'][i]==m
D.df1[i]['崗位等級']==m
import pandas as pd
def gwgz(m):
df1=pd.read_excel('salary1.xlsx')
for i in df1.index:
if________:
     return df1.at[i,'工資標準']
xjgz函數功能為:根據薪級等級n,返回對應的工資標準,例如n=10,xjgz(n)=661,代碼略。
(2)現有員工信息表info.xlsx,所有員工都已經過了實習期,如圖c。統計各學歷的人數和基本工資的平均值,編寫Python程序。請回答下列問題:
import matplotlib.pyplot as plt
import datetime
dic={'中專':2,'大專':5,'本科':7,'碩士':11,'博士':14}
time=datetime.date.today() #獲得當前的年月日
now_year=time.year #獲取年份
now_month=time.month #獲取月份
df=pd.read_excel('info.xlsx')
for i in df.index:
station=df.at[i,'崗位等級']
past_year=int(df.at[i,'入職年月'][:4])
past_month=int(df.at[i,'入職年月'][5:])
if now_month >=past_month:
grade=now_year-past_year-1
else:
grade=now_year-past_year-2
grade+=①________
df.at[i,'基本工資']=②________ #計算員工的基本工資
#對各學歷的員工計算平均基本工資和統計人數
df1=df.groupby('學歷',as_index=False).agg({'基本工資':'mean','姓名':'count'}) #修改列名
df2=df1.rename(columns={'基本工資':'平均工資',″姓名″:″人數″}) #圖表對象初始化,代碼略
plt.bar(df2.學歷,df2.平均工資,label=″平均工資″) #繪制柱形圖
plt.plot(df2.學歷,③________,label=″人數″) #繪制線形圖
plt.legend()
plt.show()
(3)目前該單位平均工資為3867.33元,由圖d可知,學歷為________的員工,他們的平均工資與公司平均工資相差最大。
專題7 數據統計與可視化的程序實現
知識點
知識梳理
1.分析 Pyplot
2.Series DataFrame 二 0 類型 字符串型 相等長度 index 字典記法 屬性
3.(1)0 (2)DataFrame (3)列
4.屬性 字典
5.數量 求平均值 分組 排序 縱向 升序 刪除數據
6.(1)pyplot (3)plot() title()
經典案例
例1 (1)D (2)①mdays[m] ②sm+=sd ③pm (3)5
變式1 (1)AC (2)1 (3)D (4)①df2.index 
②df2[″PM2.5″][i]
解析 本題考查Pandas數據處理相關知識。(1)將“地區名稱”符合條件的數據行篩選出來,可以采用字典法和屬性法分別表示某列值。(2)參數axis=1表示處理列,即刪除指定的列。(3)同一個地市中取PM2.5濃度值最高的數據行可以用分組函數groupby()和求最大值函數max()實現。A選項分組依據不對。B選項的函數格式不對。C選項是按PM2.5先升序排序,然后求所有數據中的最大值,此時PM2.5最大值只有一個數據,無法求出各個地市的最大值。(4)①plt.bar()函數繪制柱形圖需要兩個參數:x軸數據和y軸數據(每個x對應的縱軸數據),由題中圖c和圖d可知,橫坐標是各個地區的名稱,而由于數據框df2是分組后的結果,地區名稱列已經成為了索引列。②空由程序和標簽的效果圖可知df2.index[i]取出了每行數據的橫坐標值,對應的縱坐標值是df2[″PM2.5″][i]。
例2 (1)B (2)①subject not in courses或not subject in courses ②courses[subject][1]+=1 (3)① 5 ②dfs[″棄考比例″]
變式2 (1)①x%2 ②df.at[i,″班級″]或df[″班級″][i]或df.班級[i] (2)①B ②B (3)303班
解析 本題考查Pandas數據統計。(1)①從語句x=int(df.at[i,″學籍號″][-2])來看,x是右起第二位數字,根據其奇偶性來判斷學生性別,因此y的值為除2后的余數。②data是一個保存各班學生數據的字典,從語句data[df.at[i,″班級″]][0]+=1來看,索引為0存儲視力正常人數,從第(2)題來看,利用data將創建一個數據集,索引為1的數據項存儲本班人數。(2)①data字典中,包含了10個鍵,因此創建10個字段,屬于DataFrame數據類型。②對創建的DataFrame對象進行T行列轉置,原對象的columns成為轉換后的index。(3)從圖表中可以得到占比最高的班級名稱。
當堂過關檢測
1.(1)①df.groupby ②df_xk.sort_values(″人數″,ascending=False) (2)CE
解析 (1)①對數據集df采用groupby命令進行分組。②對df_xk對象采用sort_values命令進行排序。(2)選課方案人數前10位對比,可以采用[:10]或[0:10]進行切片獲取前10個數據。
2.(1)B或df.index (2)①day=str(i) ②t+=1 ③x,y (3)5
解析 (1)從表達式df.at[i,″時間戳″][0:2]來看,i表示是df對象的索引。(2)①從語句day=″0″+day來看,必須對day賦初值,day是從1至31的字符日期。②t表示出現的次數。③采用x和y列表繪制圖像。(3)略。
3.(1)B (2)①month=df['日期'][i][5:7]或month=df.at[i,'日期'][5:7]或month=df.日期[i][5:7] ②s[i]/mdays[i] ③avg (3)2 8
解析 (1)全年晴、陰、雨屬于天氣情況,因此先對天氣情況分組,表達式str(g[x])為Series對象的Values值,因此按日期分組,且分組的索引就是分組的類別,再對其中一列進行計數。(2)①month是每條記錄的月份,df['日期'][i]表示第i天的日期。②avg統計每月的平均溫度,每月的溫度和累加到列表s中,mdays[i]表示某月的天數。③y軸為每個月的平均溫度avg。(3)略。
4.(1)AD (2)①not flag[i] and lst[i][2]>=3 ②days=1 ③i+=1 ④ydl[4:]或ydl.values[4:]
解析 (1)變量i為行索引,變量j為列標題,可以用字典法,也可以用at函數來表示某個單元格名單。(2)略。
5.(1)C (2)df1[df1.溫差>13]或df1[df1[″溫差″]>13] (3)①i+1 ②dv(dayfile) ③td
解析 (1)df[″溫度″].max()表示當天最高溫度,df[″溫度″].min()為最低溫度。(2)對溫差進行篩選。(3)①變量i的值為0至29,而日期為1號至30號。②調用dv函數求每天的溫差。③y軸為溫差td。
6.(1)①df.at[0,'語文']=135 ②df[km].count() ③df[df['語文']>=100] (2)AB (3)C
解析 (1)①張吉雅的索引為0,他的成績修改采用行列法表示。②km為七選三科目中的一個學科,每個學科有得分個數為考試人數,因此可以采用count函數統計。③篩選出語文成績大于等于100的數據存入df1對象。(2)略。(3)建立一張男女生語文成績均分比較,因此需按性別進行分組再進行統計語文平均值。
7.(1)c=len(df[df[i]==″A″]) (2)①s[i:i+2] ②s+=ans_list[j][i] (3)B (4)2
解析 (1)遍歷每個問題,篩選出每個問題答案是A的記錄數。(2)①從字符串s取出相應班級的數字。調用函數把結果保存在ans_list中。②將每個問題每個班級的A等人數進行累加。(3)略。(4)略。
8.(1)'鉛球.txt' (2)a[j][1]解析 本題考查Pandas數據統計。(1)略。(2)從前往后按鉛球成績實現降序排序a[j][1]9.(1)df[df.空氣質量=='優'] (2)①tot+=dfy.at[j,″溫差″] ②i=j ③avewc (3)6
解析 (1)篩選出空氣質量字段等于優的記錄。(2)①tot表示符合條件的溫差累加和。②當前位置j已經不滿足條件,變量i將從j的位置開始枚舉。③縱軸為月平均溫差avewc。(3)略。
10.(1)C (2)①dic[df.at[i,'學歷']] ②gwgz(station)+xjgz(grade) ③df2.人數 
(3)博士
解析 本題考查Pandas數據處理。(1)根據崗位等級m,返回對應的工資標準。(2)①grade表示工作年限,其值為參加工作時間加上學歷時間(讀大學的年數)。②計算員工的基本工資,基本工資=崗位工資+薪級工資。③線性圖的縱軸為人數。(3)略。

展開更多......

收起↑

資源預覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 习水县| 永吉县| 佛山市| 金昌市| 五莲县| 应城市| 河西区| 平顶山市| 高阳县| 元江| 那坡县| 临海市| 泽普县| 淮滨县| 永定县| 梅河口市| 应用必备| 通渭县| 常熟市| 汉源县| 高雄市| 武平县| 渝中区| 沅陵县| 绿春县| 陕西省| 景德镇市| 周口市| 宜都市| 若尔盖县| 双流县| 桂平市| 新郑市| 霍州市| 志丹县| 广德县| 电白县| 壤塘县| 邳州市| 咸丰县| 共和县|