2026年Python數據分析能力提升培訓試卷(含答案)_第1頁
2026年Python數據分析能力提升培訓試卷(含答案)_第2頁
2026年Python數據分析能力提升培訓試卷(含答案)_第3頁
2026年Python數據分析能力提升培訓試卷(含答案)_第4頁
2026年Python數據分析能力提升培訓試卷(含答案)_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2026年Python數據分析能力提升培訓試卷(含答案)一、單項選擇題(本大題共15小題,每小題2分,共30分。在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填在題后的括號內。)1.在Python的數據分析生態系統中,用于提供高性能多維數組對象及其相關工具的基礎庫是()。A.PandasB.NumPyC.MatplotlibD.Scikit-learn2.使用Pandas庫讀取CSV文件時,默認返回的數據結構類型是()。A.SeriesB.DataFrameC.ndarrayD.Panel3.若要查看DataFrame對象df的前5行數據,應使用的方法是()。A.df.head(5)B.df.top(5)C.df.first(5)D.df.preview(5)4.在NumPy中,創建一個3行4列的所有元素都為0的數組,正確的代碼是()。A.np.zeros(3,4)B.np.zeros((3,4))C.np.zeros([3,4])D.np.zero(3,4)5.Pandas中用于處理時間序列的主要對象是()。A.DatetimeIndexB.PeriodIndexC.TimedeltaD.Timestamp6.在進行數據清洗時,若要刪除DataFrame中包含缺失值的行,通常使用的參數配置是()。A.df.dropna(axis=0)B.df.dropna(axis=1)C.df.fillna(0)D.df.isnull()7.下列關于DataFrame中`loc`和`iloc`索引器的描述,正確的是()。A.loc是基于位置的索引,iloc是基于標簽的索引B.loc是基于標簽的索引,iloc是基于位置的索引C.兩者都可以混合使用標簽和位置D.兩者在性能上沒有區別8.使用Matplotlib繪制折線圖時,用于設置圖表標題的函數是()。A.plt.xlabel()B.plt.ylabel()C.plt.title()D.plt.legend()9.在Pandas中,兩個DataFrame進行橫向拼接(按列合并)時,通常使用的函數是()。A.merge()B.join()C.concat()D.append()10.若要計算DataFrame中某列數據的標準差,默認使用的方法是()。A.mean()B.median()C.std()D.var()11.在Seaborn庫中,用于繪制單變量分布圖的常用函數是()。A.sns.scatterplot()B.sns.barplot()C.sns.histplot()D.sns.heatmap()12.Pandas中`groupby`操作后,若要對分組數據進行多個聚合計算(如同時求和與均值),應使用的方法是()。A..agg()B..apply()C..transform()D..filter()13.在NumPy數組運算中,廣播機制的核心規則是()。A.所有數組的維度必須完全相同B.維度從尾部開始對齊,維度為1或缺失的可以擴展C.維度必須從頭部開始對齊D.只有一維數組可以廣播14.使用Scikit-learn進行數據預處理時,用于將數值特征標準化到0均值和單位方差的是()。A.MinMaxScalerB.StandardScalerC.NormalizerD.RobustScaler15.下列哪種情況適合使用`pd.pivot_table`而不是`pd.groupby`?()A.只需要簡單的分組求和B.需要計算多重索引的分組統計C.需要將長格式數據轉換為寬格式數據,并指定特定的行列索引及填充值D.需要對時間序列進行重采樣二、多項選擇題(本大題共10小題,每小題3分,共30分。在每小題列出的五個備選項中至少有兩個是符合題目要求的,請將其代碼填在題后的括號內。多選、少選、錯選均不得分。)1.下列屬于Python數據分析常用第三方庫的有()。A.SciPyB.StatsmodelsC.TensorFlowD.PyTorchE.Requests2.Pandas的DataFrame對象可以由以下哪些數據結構創建?()A.字典B.列表C.NumPy數組D.另一個DataFrameE.Series對象3.處理缺失值時,常見的策略包括()。A.刪除缺失值B.均值/中位數填充C.眾數填充D.前向填充或后向填充E.插值法填充4.關于Matplotlib的pyplot模塊,下列說法正確的有()。A.是Matplotlib的基于狀態的接口B.通常別名為pltC.可以自動創建Figure和Axes對象D.無法在JupyterNotebook中直接顯示圖片E.plt.subplots()可以創建包含多個子圖的圖表5.Pandas中進行數據合并時,merge函數的how參數支持的模式包括()。A.leftB.rightC.outerD.innerE.cross6.NumPy數組的切片操作與Python列表的切片操作相比,具有哪些特點?()A.返回的是原數組的視圖而非副本B.支持多維切片C.切片操作不會占用額外的內存空間D.修改切片會影響原數組E.切片語法完全不同7.在使用Seaborn繪制熱力圖時,通常需要關注的參數或屬性有()。A.data(傳入的數據矩陣)B.annot(是否顯示數值)C.cmap(對顏色映射)D.linewidths(格線寬度)E.orient(方向,注意heatmap通常不需要此參數)8.下列關于時間序列數據處理的描述,正確的有()。A.pd.to_datetime()可以將字符串轉換為時間戳B.resample()用于時間頻率的重采樣C.rolling()用于計算滾動窗口統計量D.shift()用于數據滯后或超前移動E.時間序列索引必須是唯一的9.Scikit-learn庫的主要模塊包含()。A.sklearn.cluster(聚類)B.sklearn.decomposition(降維)C.sklearn.linear_model(線性模型)D.sklearn.model_selection(模型選擇)E.sklearn.datasets(數據集)10.在進行數據特征工程時,常見的操作有()。A.特征二值化B.獨熱編碼C.特征離散化D.特征交叉E.異常值檢測與處理三、填空題(本大題共10小題,每小題2分,共20分。請將答案填在題中的橫線上。)1.在JupyterNotebook中,若要使Matplotlib繪制的圖形直接嵌入在單元格下方顯示,通常需要使用魔法命令:________。2.Pandas中,用于將寬格式數據轉換為長格式數據的函數是________。3.NumPy中,用于計算兩個數組的點積(內積)的函數是________。4.若要獲取DataFrame的列名列表,可以通過訪問其________屬性來實現。5.在正則表達式處理中,Pandas的Series對象提供了________方法,用于提取匹配到的字符串組。6.Matplotlib中,若要保存當前圖形為圖片文件,應使用________函數。7.在Pandas中,若要根據列值的大小將數據分為不同的區間,可以使用________函數或________函數。8.Seaborn是基于Matplotlib開發的,它主要提供了更高級的API和更美觀的________。9.使用Scikit-learn劃分訓練集和測試集的函數位于sklearn.model_selection模塊中,該函數名為________。10.四分位距(IQR)是描述數據離散程度的指標,計算公式為上四分位數(Q3)減去________。四、簡答題(本大題共5小題,每小題6分,共30分。)1.請簡述Pandas中`apply`函數與`map`函數的主要區別及適用場景。2.在數據分析中,什么是數據泄露?請舉例說明在特征工程或模型訓練中如何避免數據泄露。3.解釋NumPy中的視圖與副本的概念,并說明它們在內存管理上的影響。4.請列舉至少三種評估回歸模型性能的指標,并簡要說明其含義。5.在使用Matplotlib進行繪圖時,什么是面向對象繪圖?它與Pyplot狀態機接口相比有什么優勢?五、應用題(本大題共5小題,共80分。請寫出詳細的代碼或分析步驟。)1.(15分)數據加載與基礎分析。假設有一個名為`sales_data.csv`的文件,包含以下列:`Date`(日期字符串),`Product`(產品名稱),`Region`(地區),`Amount`(銷售額)。請編寫Python代碼完成以下任務:(1)讀取數據,并將`Date`列轉換為Pandas的時間格式,將其設為索引。(2)計算每個地區的總銷售額,并找出銷售額最高的地區。(3)計算每個產品的平均銷售額,并按降序排列。2.(15分)數據清洗與預處理。給定一個DataFrame`df`,其中包含數值型列`Age`和`Salary`,以及類別型列`City`。數據中存在以下問題:(1)`Age`列中存在負值,顯然是異常值。(2)`Salary`列存在缺失值。(3)`City`列存在大小寫不統一的情況(如"Beijing","beijing")。請編寫代碼進行清洗:將`Age`列中的負值替換為該列的中位數。使用`Salary`列的均值填充缺失值。將`City`列統一轉換為首字母大寫格式。3.(15分)數據合并與重塑。有兩個DataFrame:`df1`包含員工信息:`EmpID`,`Name`,`DeptID`。`df2`包含部門信息:`DeptID`,`DeptName`,`Location`。另外有一個`df3`包含員工薪資:`EmpID`,`Year`,`Salary`。請編寫代碼:(1)將`df1`和`df2`進行左連接,保留所有員工信息,匹配部門名稱。(2)將(1)的結果與`df3`進行合并,要求保留所有員工的所有年份薪資記錄(即使某些員工沒有部門信息)。(3)使用透視表將最終結果重塑為:行是員工姓名,列是年份,值是薪資。4.(15分)數據可視化。某電商網站擁有用戶行為日志數據,包含`User_ID`,`Action_Time`,`Action_Type`(瀏覽、收藏、加購、購買)。請利用Matplotlib和Seaborn編寫代碼:(1)統計每種行為類型的次數,并繪制水平條形圖。(2)提取`Action_Time`的小時信息,統計一天24小時內用戶活躍度(總行為次數)的變化趨勢,并繪制折線圖,標記出活躍度最高的時間點。(3)繪制一個2x2的子圖布局,分別展示四種行為類型在24小時內的分布曲線。5.(20分)綜合分析案例?,F有一份`tips`數據集(Seaborn內置),包含餐廳小費數據,字段為:`total_bill`(總賬單),`tip`(小費),`sex`(性別),`smoker`(是否吸煙),`day`(星期幾),`time`(午餐/晚餐),`size`(就餐人數)。請完成以下分析任務:(1)加載數據,并添加一列`tip_rate`(小費率=tip/total_bill)。(2)分析吸煙者與非吸煙者在小費率上是否有差異(計算分組均值)。(3)分析不同就餐人數與小費金額之間的關系,使用相關系數進行度量。(4)使用`groupby`和`agg`函數,統計每天、每頓飯的平均賬單金額和小費金額。(5)篩選出賬單金額超過90%分位數的“高消費”記錄,分析這部分記錄中,性別和吸煙情況的分布。參考答案一、單項選擇題1.B2.B3.A4.B5.A6.A7.B8.C9.C10.C11.C12.A13.B14.B15.C二、多項選擇題1.AB2.ABCDE3.ABCDE4.ABCE5.ABCDE6.ABCD7.ABCD8.ABCDE9.ABCDE10.ABCDE三、填空題1.%matplotlibinline2.pd.melt3.np.dot4.columns5.str.extract6.plt.savefig(或savefig)7.pd.cut,pd.qcut8.默認樣式9.train_test_split10.下四分位數(Q1)四、簡答題1.答:`map`:主要用于Series對象,它將元素到元素的映射應用于整個Series,通常用于替換值或應用單參數函數。`apply`:既可以用于Series也可以用于DataFrame。用于Series時,它既可以接受元素級函數也可以接受返回聚合值的函數;用于DataFrame時,默認是對列進行操作(axis=0),也可以對行操作(axis=1),靈活性更高,適合處理復雜的邏輯。區別:`map`僅限于Series,且主要是逐元素操作;`apply`更通用,支持更復雜的自定義邏輯,且在DataFrame上可按軸操作。2.答:數據泄露是指在模型訓練過程中,使用了在預測時無法獲取的數據信息,導致評估指標虛高,但模型在實際應用中效果很差。舉例:在數據劃分之前,對整個數據集進行了缺失值填充(用全局均值)或標準化處理,這導致測試集的信息通過統計量泄露到了訓練集中。避免方法:必須先劃分訓練集和測試集,然后僅利用訓練集的統計量(如均值、標準差)對訓練集進行擬合,并將同樣的變換應用到測試集上。例如使用Scikit-learn的Pipeline。3.答:視圖:是原數據的引用,不占用新的內存空間。對視圖的修改會直接反映到原數組上。切片操作通常返回視圖。副本:是原數據的完整拷貝,占用新的內存空間。對副本的修改不會影響原數組。使用`.copy()`方法顯式生成副本。影響:使用視圖可以節省內存和提高性能,但在不希望修改原數據的場景下容易引入Bug;使用副本更安全,但在處理大數據時內存開銷大。4.答:均方誤差(MSE):預測值與真實值差值的平方和的平均值,衡量預測誤差的大小。均方根誤差(RMSE):MSE的平方根,單位與原數據一致,更直觀。平均絕對誤差(MAE):預測值與真實值差值絕對值的平均,對異常值不敏感。R平方(R2):決定系數,衡量模型對數據變動的解釋比例,越接近1擬合越好。5.答:面向對象繪圖:顯式地創建Figure(畫布)和Axes(坐標系)對象,然后在這些對象上調用繪圖方法(如`ax.plot()`)。優勢:更精細的控制:可以精確控制每個子圖的位置、大小和屬性。適合復雜圖表:在繪制包含多個子圖的復雜圖表時,代碼結構更清晰,不易混淆。可擴展性:便于封裝成函數進行復用。五、應用題1.解題代碼:```pythonimportpandasaspd#(1)讀取數據并處理日期df=pd.read_csv('sales_data.csv')df['Date']=pd.to_datetime(df['Date'])df.set_index('Date',inplace=True)#(2)計算地區總銷售額并找最大region_sales=df.groupby('Region')['Amount'].sum()top_region=region_sales.idxmax()print(f"銷售額最高的地區:{top_region},金額:{region_sales.max()}")#(3)計算產品平均銷售額并排序product_avg_sales=df.groupby('Product')['Amount'].mean().sort_values(ascending=False)print(product_avg_sales)```2.解題代碼:```pythonimportpandasaspdimportnumpyasnp#假設df已存在#(1)處理Age負值age_median=df['Age'].median()#將負值替換為NaN,再填充中位數,或者直接使用where/locdf.loc[df['Age']<0,'Age']=np.nandf['Age'].fillna(age_median,inplace=True)#(2)填充Salary缺失值salary_mean=df['Salary'].mean()df['Salary'].fillna(salary_mean,inplace=True)#(3)City列首字母大寫#使用str.title()會將每個單詞首字母大寫,str.capitalize()僅第一個單詞首字母大寫#這里假設城市名單詞,使用str.capitalize()或自定義處理df['City']=df['City'].str.capitalize()print(df.head())```3.解題代碼:```pythonimportpandasaspd#構造示例數據#df1=...#df2=...#df3=...#(1)df1左連接df2merged_dept=pd.merge(df1,df2,on='DeptID',how='left')#(2)結果與df3合并,保留所有薪資記錄#df3中可能有EmpID不在df1中的,或者df1中沒有DeptID的#題目要求保留所有員工的所有年份薪資記錄#第一步已經保留了所有員工,現在合并薪資full_data=pd.merge(merged_dept,df3,on='EmpID',how='outer')#注意:如果要求保留所有員工(包括沒薪資的),how='left'相對于merged_dept#如果還要保留df3中存在但df1不存在的(即孤兒薪資),用how='outer'#此處假設基于(1)的結果繼續保留所有員工信息,匹配薪資full_data=pd.merge(merged_dept,df3,on='EmpID',how='left')#(3)透視表pivot_result=full_data.pivot_table(index='Name',columns='Year',values='Salary',aggfunc='sum')print(pivot_result)```4.解題代碼:```pythonimportpandasaspdimportmatplotlib.pyplotaspltimportseabornassns#假設df已加載,Action_Time已轉為datetime#df['Action_Time']=pd.to_datetime(df['Action_Time'])#(1)行為類型水平條形圖action_counts=df['Action_Type'].value_counts()plt.figure(figsize=(10,6))sns.barplot(x=action_counts.values,y=action_counts.index,orient='h')plt.title('UserActionCounts')plt.xlabel('Count')plt.show()#(2)24小時活躍度折線圖df['Hour']=df['Action_Time'].dt.hourhourly_counts=df.groupby('Hour').size()plt.figure(figsize=(12,6))plt.plot(hourly_counts.index,hourly_counts.values,marker='o')max_hour=hourly_counts.idxmax()plt.scatter([max_hour],[hourly_counts[max()],color='red')plt.annotate(f'Peak:{max_hour}:00',xy=(max_hour,hourly_counts[max()]),xytext=(max_hour+1,hourly_counts[max()]),arrowprops=dict(facecolor='black',shrink=0.05))plt.title('UserActivitybyHour')plt.xlabel('HourofDay')plt.ylabel('ActivityCount')plt.grid(True)plt.show()#(3)2x2子圖展示四種行為分布actions=df['Action_Type'].unique()fig,axes=plt.subplots(2,2,figsize=(15,10))axes=axes.ravel()fori,actioninenumerate(actions):subset=df[df['Action_Type']==action]counts=subset.groupby('Hour').size()sns.lineplot(x=counts.index,y=counts.values,ax=axes[i])axes[i].set_title(f'{action}TrendbyHour')axes[i].set_xlabel('Hour')axes[i].set_ylabel('Count')plt.tight_layout()plt.show()```5.綜合分析代碼:```pythoni

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論