




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Python數(shù)據(jù)分析實戰(zhàn)專項訓(xùn)練試卷2025年考試沖刺考試時間:______分鐘總分:______分姓名:______一、選擇題(每題2分,共20分)1.在Python中,用于處理結(jié)構(gòu)化數(shù)據(jù)的庫通常是?A.NumPyB.MatplotlibC.PandasD.Scikit-learn2.下列哪個Pandas方法用于刪除`DataFrame`中的重復(fù)行?A.`dropna()`B.`fillna()`C.`drop_duplicates()`D.`unique()`3.當(dāng)你需要從`DataFrame`中選擇特定列,并按該列的值進(jìn)行排序時,以下哪種方法更為直接和常用?A.使用布爾索引結(jié)合`sort_values()`B.使用`apply()`函數(shù)C.直接在`loc[]`或`iloc[]`中指定列名并傳入排序參數(shù)D.需要先創(chuàng)建新列再排序4.在Pandas中,`merge()`函數(shù)默認(rèn)使用的連接方式是?A.外連接(FullOuterJoin)B.內(nèi)連接(InnerJoin)C.左連接(LeftOuterJoin)D.右連接(RightOuterJoin)5.若要計算`DataFrame`中某個數(shù)值列的平均值,忽略其中的`NaN`值,應(yīng)使用哪個方法?A.`sum()/count()`B.`mean(skipna=True)`C.`mean()`D.`average()`6.以下哪個Matplotlib函數(shù)最適合創(chuàng)建直方圖?A.`plot()`B.`scatter()`C.`bar()`D.`hist()`7.在進(jìn)行數(shù)據(jù)可視化時,如果數(shù)據(jù)點非常多,使用散點圖可能會導(dǎo)致圖表難以解讀,這時可以考慮使用?A.箱線圖B.餅圖C.平行坐標(biāo)圖D.熱力圖8.下列哪個不是Seaborn庫基于的繪圖庫?A.MatplotlibB.PlotlyC.BokehD.ggplot9.在處理時間序列數(shù)據(jù)時,使用`resample()`方法的主要目的是?A.填充缺失值B.對數(shù)據(jù)進(jìn)行重采樣,改變時間粒度(如從天到周)C.對數(shù)據(jù)進(jìn)行平滑處理D.將時間序列轉(zhuǎn)換為分類數(shù)據(jù)10.對于分類變量,在進(jìn)行可視化或機器學(xué)習(xí)建模前,通常需要進(jìn)行編碼,以下哪種方法不屬于常見的編碼方式?A.One-HotEncodingB.LabelEncodingC.StandardScalerD.TargetEncoding二、填空題(每空2分,共20分)1.在Pandas中,`DataFrame`的行索引被稱為_______,列索引被稱為_______。2.若要篩選出`DataFrame`中某個數(shù)值列值大于10的行,可以使用_______索引方法。3.使用`df['column_name'].str.contains('pattern')`可以檢查列中是否包含特定模式,這里的`.str`表示_______。4.語句`pd.to_datetime(df['date_column'])`的主要作用是將_______列轉(zhuǎn)換為Pandas的`datetime`類型。5.Matplotlib中的`plt.figure()`函數(shù)用于創(chuàng)建一個新的圖形畫布,其參數(shù)`figsize=(寬,高)`用于設(shè)置畫布的_______和_______。6.在Seaborn中,使用`sns.histplot(data=df,x='variable')`函數(shù)可以繪制_______。7.當(dāng)需要對`DataFrame`進(jìn)行分組操作后,若想計算每組的多個統(tǒng)計量(如均值、計數(shù)),常用`groupby().agg()`方法,其中`agg()`可以傳入一個_______來指定多個統(tǒng)計函數(shù)。8.在進(jìn)行特征工程時,若想基于某列創(chuàng)建其滯后一期的值(滯后特征),可以使用Pandas的`shift()`方法。9.對分類特征進(jìn)行One-Hot編碼后,通常會得到一個(或多個)_______型的列。10.如果在進(jìn)行數(shù)據(jù)分析時,發(fā)現(xiàn)某個數(shù)值特征的分布嚴(yán)重偏態(tài),可能需要考慮進(jìn)行_______轉(zhuǎn)換使其更接近正態(tài)分布。三、代碼編寫題(每題10分,共30分)1.假設(shè)有一個`DataFrame`名為`df`,包含以下列:`'user_id'`(整數(shù)),`'age'`(整數(shù)),`'purchase_amount'`(浮點數(shù)),`'date'`(字符串,格式為'YYYY-MM-DD')。請編寫代碼完成以下任務(wù):a.將`'date'`列轉(zhuǎn)換為Pandas的`datetime`類型。b.計算每個用戶的平均`'purchase_amount'`,并將結(jié)果按平均值從高到低排序。c.篩選出年齡大于30歲,并且`'purchase_amount'`大于其所在年齡組的平均`'purchase_amount'`的用戶。2.假設(shè)有以下`DataFrame``df`:```pythonimportpandasaspddata={'A':['foo','bar','foo','bar','foo','bar','foo','foo'],'B':['one','one','one','two','two','two','one','three'],'C':['small','large','large','small','small','large','small','small'],'D':[1,2,2,3,3,4,5,6],'E':[2,4,5,5,6,6,8,9]}df=pd.DataFrame(data)```請編寫代碼完成以下任務(wù):a.使用`pivot_table()`創(chuàng)建一個`DataFrame`,其索引為`'A'`,列名為`'B'`,值為`'D'`列的和,并填充缺失值為0。b.基于`'A'`和`'B'`列,對原始`df`進(jìn)行分組,并計算每個組的`'D'`和`'E'`列的平均值。3.假設(shè)有一個`DataFrame``df`,包含列`'value'`(數(shù)值型)。請編寫代碼:a.使用Matplotlib繪制`'value'`列的簡單線形圖。b.在同一張圖上,使用Seaborn繪制`'value'`列的分布直方圖(使用默認(rèn)參數(shù))。c.為線形圖設(shè)置標(biāo)題為"ValueTrend",為直方圖設(shè)置y軸標(biāo)簽為"Frequency"。四、綜合應(yīng)用題(共30分)假設(shè)你獲得了一份關(guān)于某電商平臺用戶行為的銷售數(shù)據(jù)(非給出,需自行假設(shè)處理),數(shù)據(jù)包含字段:`user_id`(用戶ID),`session_id`(會話ID),`purchase_id`(購買ID),`product_category`(商品類別),`product_price`(商品價格),`purchase_timestamp`(購買時間戳,格式為'YYYY-MM-DDHH:MM:SS'),`user_location`(用戶地理位置)。請完成以下分析任務(wù):1.(10分)讀取數(shù)據(jù)(假設(shè)數(shù)據(jù)已加載到名為`sales_data`的DataFrame中)。進(jìn)行初步探索性分析:a.查看數(shù)據(jù)的前5行。b.概述數(shù)據(jù)的基本信息(包括每列的數(shù)據(jù)類型和非空值數(shù)量)。c.計算總銷售額、平均訂單價格(按`purchase_id`分組)以及不同`product_category`的數(shù)量。d.繪制不同`product_category`的數(shù)量分布圖(如條形圖)。2.(10分)進(jìn)行數(shù)據(jù)轉(zhuǎn)換與特征工程:a.將`purchase_timestamp`列轉(zhuǎn)換為`datetime`類型,并創(chuàng)建新列`purchase_date`(只包含年月日)和`purchase_hour`(只包含小時)。b.基于每個用戶的`user_id`,計算該用戶的總消費金額和購買次數(shù),并將結(jié)果作為新列添加到`sales_data`中。c.對`user_location`進(jìn)行簡單處理,例如,提取省份信息(假設(shè)格式為"城市,省份"),創(chuàng)建新列`province`。3.(10分)根據(jù)以上處理后的數(shù)據(jù),回答以下問題并給出簡要分析:a.用戶的總消費金額和購買次數(shù)之間是否存在相關(guān)性?請計算相關(guān)系數(shù)并簡單說明。b.哪個商品類別(`product_category`)的訂單數(shù)量最多?哪個商品類別的平均訂單價格最高?c.簡要分析一天中哪個時間段的購買活動相對更頻繁。試卷答案一、選擇題1.C2.C3.A4.B5.C6.D7.A8.B9.B10.C二、填空題1.索引,列名2.布爾3.字符串(或str)4.日期(或日期列)5.寬度,高度6.直方圖7.列表(或函數(shù)列表)8.滯后(或shift)9.二元(或binary)10.對數(shù)(或log)三、代碼編寫題1.```python#asales_data['date']=pd.to_datetime(sales_data['date'])#bavg_purchase_by_user=sales_data.groupby('user_id')['purchase_amount'].mean().sort_values(ascending=False)#cuser_group_avg=sales_data.groupby('age')['purchase_amount'].transform('mean')selected_users=sales_data[(sales_data['age']>30)&(sales_data['purchase_amount']>user_group_avg)]```解析思路:a.使用`pd.to_datetime()`將字符串格式的日期轉(zhuǎn)換為Pandas的`datetime`類型。b.使用`groupby('user_id')`按用戶ID分組,`['purchase_amount'].mean()`計算每個用戶的平均購買金額,`sort_values(ascending=False)`按平均值降序排序。c.使用`groupby('age')['purchase_amount'].transform('mean')`計算每個年齡組的平均購買金額,并將其廣播(broadcast)到每一行。然后篩選出年齡大于30且其購買金額大于所在年齡組平均金額的用戶。2.```python#apivot_result=df.pivot_table(index='A',columns='B',values='D',aggfunc='sum',fill_value=0)#bgroup_avg=df.groupby(['A','B']).agg({'D':'mean','E':'mean'}).reset_index()```解析思路:a.使用`pivot_table()`,設(shè)置`index='A'`,`columns='B'`,`values='D'`,`aggfunc='sum'`計算和,`fill_value=0`填充缺失值。b.使用`groupby(['A','B'])`按'A'和'B'列分組,`agg({'D':'mean','E':'mean'})`計算'D'和'E'列的平均值,`reset_index()`將分組鍵也還原為列。3.```pythonimportmatplotlib.pyplotaspltimportseabornassns#aplt.figure(figsize=(8,4))plt.plot(df['value'],label='ValueTrend')plt.title("ValueTrend")plt.legend()#bsns.histplot(data=df,x='value',color='skyblue',kde=True)#kde=True添加核密度估計圖plt.ylabel("Frequency")#c#(a部分已設(shè)置標(biāo)題和圖例,此處為b部分設(shè)置y軸標(biāo)簽)#注意:需要在b繪圖后設(shè)置,或者將a和b放在同一個plt.figure中```解析思路:a.使用`plt.figure()`創(chuàng)建畫布并設(shè)置大小,`plt.plot()`繪制線形圖,`plt.title()`設(shè)置標(biāo)題,`plt.legend()`添加圖例。b.使用`sns.histplot()`繪制直方圖,`data=df`,`x='value'`指定數(shù)據(jù)和變量,`color`設(shè)置顏色,`kde=True`可疊加核密度估計曲線。c.使用`plt.ylabel()`設(shè)置直方圖的y軸標(biāo)簽為"Frequency"。四、綜合應(yīng)用題1.```python#aprint(sales_data.head())#bprint(sales_())#ctotal_sales=sales_data['product_price'].sum()avg_order_price=sales_data.groupby('purchase_id')['product_price'].mean().mean()category_counts=sales_data['product_category'].value_counts()print(f"TotalSales:{total_sales}")print(f"AverageOrderPrice:{avg_order_price}")print(category_counts)#dsns.countplot(data=sales_data,x='product_category')plt.title('DistributionofProductCategories')plt.xlabel('ProductCategory')plt.ylabel('Count')plt.xticks(rotation=45)#旋轉(zhuǎn)x軸標(biāo)簽以便閱讀plt.show()```解析思路:a.使用`head()`查看數(shù)據(jù)前5行。b.使用`info()`查看數(shù)據(jù)基本信息,包括列的數(shù)據(jù)類型和非空值數(shù)量。c.使用`sum()`計算總銷售額。使用`groupby('purchase_id')['product_price'].mean()`計算每個訂單的平均價格,再對其平均值求均值得到全局平均訂單價格。使用`value_counts()`統(tǒng)計不同商品類別的數(shù)量。d.使用`sns.countplot()`繪制條形圖,`data=sales_data`,`x='product_category'`指定數(shù)據(jù)和要繪制分布的列,`plt.title()`,`plt.xlabel()`,`plt.ylabel()`設(shè)置圖表標(biāo)題和軸標(biāo)簽,`plt.xticks(rotation=45)`旋轉(zhuǎn)x軸刻度標(biāo)簽。2.```python#asales_data['purchase_timestamp']=pd.to_datetime(sales_data['purchase_timestamp'])sales_data['purchase_date']=sales_data['purchase_timestamp'].dt.datesales_data['purchase_hour']=sales_data['purchase_timestamp'].dt.hour#buser_stats=sales_data.groupby('user_id')['product_price'].sum().reset_index()user_stats.columns=['user_id','total_spent']user_counts=sales_data.groupby('user_id').size().reset_index(name='purchase_count')user_stats=user_stats.merge(user_counts,on='user_id')sales_data=sales_data.merge(user_stats,on='user_id')#csales_data['province']=sales_data['user_location'].apply(lambdax:x.split(',')[1].strip()if','inxelsex)```解析思路:a.使用`pd.to_datetime()`轉(zhuǎn)換時間戳列。使用`dt.date`提取日期部分創(chuàng)建`purchase_date`列,使用`dt.hour`提取小時部分創(chuàng)建`purchase_hour`列。b.使用`groupby('user_id')['product_price'].sum()`計算每個用戶的總消費,`reset_index()`創(chuàng)建新`DataFrame`。重命名列。使用`groupby('user_id').size()`計算每個用戶的購買次數(shù),`reset_index(name='purchase_count')`。使用`merge()`將總消費和購買次數(shù)信息合并回原始`sales_data`。c.使用`apply()`函數(shù),對`user_location`列進(jìn)行處理,通過分割字符串并提取第二個元素(省份)來創(chuàng)建`province`列。使用`strip()`去除可能的空格。3.```python#acorrelation=sales_data['total_spent'].corr(sales_data['purchase_count'])print(f"Correlationbetweentotalspentandpurchasecount:{correlation}")#解析:高于0.5或低于-0.5通常認(rèn)為有較強相關(guān)性#bcategory_order_count=sales_data['product_category'].value_counts()category_avg_price=sales_data
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025遼寧鞍山市千山區(qū)公益性崗位招聘1人模擬試卷及1套參考答案詳解
- 2025貴州黔西南州交通建設(shè)發(fā)展中心招聘公益性崗位工作人員3人考前自測高頻考點模擬試題(含答案詳解)
- 醫(yī)院護(hù)士年度個人工作總結(jié)匯編15篇
- 2025年甘肅省武威市事業(yè)單位已發(fā)布模擬試卷完整參考答案詳解
- 2025廣西百色市平果市道路運輸發(fā)展中心城鎮(zhèn)公益性崗位人員招聘1人模擬試卷及完整答案詳解一套
- 2025年長河鎮(zhèn)人民政府公開招聘編外工作人員3人考前自測高頻考點模擬試題及1套參考答案詳解
- 2025貴州黔西南州交通建設(shè)發(fā)展中心招聘公益性崗位工作人員3人考前自測高頻考點模擬試題及答案詳解(有一套)
- 2025鄂爾多斯準(zhǔn)格爾旗事業(yè)單位引進(jìn)40名高層次人才和急需緊缺專業(yè)人才考前自測高頻考點模擬試題及一套參考答案詳解
- 2025年甘肅省慶陽市鎮(zhèn)原縣第二批城鎮(zhèn)公益性崗位83人考前自測高頻考點模擬試題及答案詳解(有一套)
- 2025湖州吳興寶易礦業(yè)有限公司招聘2人模擬試卷及答案詳解一套
- 新部編版語文1-6年級2460個生字表(帶拼音)
- (高清版)DZT 0324-2018 藍(lán)晶石、紅柱石、矽線石礦產(chǎn)地質(zhì)勘查規(guī)范
- 衛(wèi)生監(jiān)督員行為規(guī)范
- 深圳電子行業(yè)前景分析
- 內(nèi)窺鏡檢查病歷委托書
- 70篇短文復(fù)習(xí)1600中考詞匯
- 小學(xué)計算機興趣小組活動記錄
- SCR煙氣脫硝裝置聲波清灰技術(shù)的研究的開題報告
- 大學(xué)英語三級詞匯表(新版)
- 煤礦班組建設(shè)課件
- CB/T 495-1995吸入口
評論
0/150
提交評論