2025年統(tǒng)計學期末考試題庫-Python數據分析實踐試題_第1頁
2025年統(tǒng)計學期末考試題庫-Python數據分析實踐試題_第2頁
2025年統(tǒng)計學期末考試題庫-Python數據分析實踐試題_第3頁
2025年統(tǒng)計學期末考試題庫-Python數據分析實踐試題_第4頁
2025年統(tǒng)計學期末考試題庫-Python數據分析實踐試題_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2025年統(tǒng)計學期末考試題庫-Python數據分析實踐試題考試時間:______分鐘總分:______分姓名:______一、單項選擇題(本部分共20小題,每小題2分,共40分。在每小題列出的四個選項中,只有一項是最符合題目要求的。請將正確選項字母填在題后的括號內。)1.在Python中,以下哪個庫主要用于數據分析和處理?A.MatplotlibB.PandasC.NumPyD.Scikit-learn2.下列哪個函數可以用來讀取CSV文件?A.read_excel()B.read_csv()C.read_sql()D.read_json()3.在Pandas中,如何對DataFrame進行排序?A.sort()B.order()C.sort_values()D.arrange()4.如何檢查DataFrame中是否存在缺失值?A.isnull()B.notnull()C.empty()D.nan()5.在Pandas中,如何選擇DataFrame中的特定列?A.df['column_name']B.df(column_name)C.df.column_nameD.df.get(column_name)6.如何對DataFrame進行分組并計算每組的平均值?A.groupby().mean()B.groupby().aggregate()C.groupby().sum()D.groupby().count()7.在Pandas中,如何合并兩個DataFrame?A.merge()B.join()C.concat()D.combine()8.如何對DataFrame進行數據類型轉換?A.convert_dtype()B.change_type()C.astype()D.transform_type()9.在Pandas中,如何去除DataFrame中的重復行?A.drop_duplicates()B.remove_duplicates()C.delete_duplicates()D.unique()10.如何在DataFrame中創(chuàng)建新的列?A.assign()B.add_column()C.new_column()D.insert()11.在Pandas中,如何對數據進行抽樣?A.sample()B.random()C.draw()D.pick()12.如何對DataFrame進行缺失值填充?A.fillna()B.fill()C.replace_na()D.impute()13.在Pandas中,如何對數據進行透視表操作?A.pivot_table()B.pivot()C.transpose()D.reshape()14.如何對DataFrame進行數據過濾?A.filter()B.select()C.query()D.where()15.在Pandas中,如何計算DataFrame中數值列的描述性統(tǒng)計量?A.describe()B.stats()C.summarize()D.info()16.如何對DataFrame進行數據透視和聚合?A.pivot()B.groupby()C.aggregate()D.pivot_table()17.在Pandas中,如何對數據進行窗口函數操作?A.rolling()B.expanding()C.window()D.moving()18.如何對DataFrame進行數據分組并應用自定義函數?A.apply()B.map()C.transform()D.groupapply()19.在Pandas中,如何對數據進行排序并去除重復值?A.sort_values().drop_duplicates()B.sort().unique()C.order().dropna()D.sort_index().duplicated()20.如何對DataFrame進行數據合并和連接?A.merge()B.join()C.concat()D.union()二、多項選擇題(本部分共10小題,每小題2分,共20分。在每小題列出的五個選項中,有多項符合題目要求。請將正確選項字母填在題后的括號內。)1.下列哪些是Pandas庫的常用功能?A.數據讀取B.數據清洗C.數據分析D.數據可視化E.機器學習2.在Pandas中,如何處理缺失值?A.刪除缺失值B.填充缺失值C.插值法D.忽略缺失值E.使用均值填充3.下列哪些函數可以用來選擇DataFrame中的數據?A.iloc[]B.loc[]C.query()D.filter()E.sort_values()4.在Pandas中,如何進行數據分組操作?A.groupby()B.pivot()C.aggregate()D.sort_values()E.merge()5.下列哪些是Pandas中的數據結構?A.SeriesB.DataFrameC.ArrayD.MatrixE.Dictionary6.如何在Pandas中進行數據合并操作?A.merge()B.join()C.concat()D.append()E.union()7.在Pandas中,如何進行數據透視表操作?A.pivot_table()B.pivot()C.transpose()D.reshape()E.aggregate()8.如何在Pandas中進行數據類型轉換?A.astype()B.convert_dtype()C.to_numeric()D.change_type()E.map()9.在Pandas中,如何進行數據過濾操作?A.query()B.filter()C.loc[]D.iloc[]E.where()10.下列哪些是Pandas中的常用統(tǒng)計函數?A.mean()B.median()C.mode()D.std()E.var()(請注意,以上內容僅為示例,實際考試內容可能有所不同。在實際考試中,請根據具體的考試范圍和要求進行調整。)三、簡答題(本部分共5小題,每小題4分,共20分。請根據題目要求,簡要回答問題。)1.簡述Pandas庫在Python數據分析中的主要作用和優(yōu)勢。在我的教學過程中,我發(fā)現(xiàn)很多同學一開始對Pandas有點懵,但一旦上手,就會覺得它簡直是個數據分析的“瑞士軍刀”。你看啊,Pandas它整合了NumPy的很多功能,但做得更人性化,特別適合處理表格數據。它最大的優(yōu)勢就是那幾個核心的數據結構——Series和DataFrame,簡直就是為處理結構化數據量身定做的。想想看,你有沒有遇到過導入亂七八糟的CSV文件,里面數據缺失、格式不對的情況?用Pandas,幾行代碼就能搞定數據清洗,比如用`dropna()`去掉缺失值,用`fillna()`填充缺失值,用`astype()`轉換數據類型,簡直不要太方便。還有啊,分組(`groupby()`)、排序(`sort_values()`)、合并(`merge()`)、透視表(`pivot_table()`)這些操作,Pandas都提供了非常直觀和強大的接口??梢哉f,只要你是做數據分析的,Pandas絕對是你的得力助手,能幫你大大提高工作效率。2.描述在Python中進行數據探索性分析(EDA)時,通常會用到哪些Pandas函數和方法,并說明其作用。做數據探索性分析,這可是個發(fā)現(xiàn)數據特點、理解數據背后故事的過程,我平時上課經常跟同學們強調,EDA就像是偵探破案前的現(xiàn)場勘查,必須仔仔細細。用Pandas做EDA,那可是得心應手。首先,你得把數據讀進來,用`read_csv()`或者`read_excel()`啥的。然后,得先看看這數據長啥樣,基本信息用`head()`、`tail()`、`info()`,能快速了解數據的結構、類型和缺失情況。接著,就要深入挖掘了,用`describe()`看看數值列的均值、標準差、分位數這些統(tǒng)計特征,這能幫你快速把握數據的分布情況。當然,有時候你想看特定列的描述性統(tǒng)計,或者想過濾某些條件下的統(tǒng)計,`agg()`或者`apply()`就派上用場了。數據里可能有缺失值,得用`isnull()`、`notnull()`檢查一下,然后用`dropna()`或者`fillna()`處理掉。有時候數據有重復,`duplicated()`、`drop_duplicates()`就能幫你搞定。想按某個規(guī)則篩選數據?`query()`、`loc[]`、`iloc[]`絕對是你最好的朋友。數據透視表?`pivot_table()`輕松實現(xiàn)。想看各列之間的相關性?用`corr()`就行。總之,Pandas的這些函數和方法,就像一個個工具,組合起來,能幫你全面、深入地了解你的數據。3.解釋什么是DataFrame的索引,以及`loc[]`和`iloc[]`這兩個索引方法的主要區(qū)別和應用場景。跟同學們講索引的時候,我經常打個比方,索引就像是數據表格的“目錄”或者“坐標”。想象一下你有一本厚厚的書,想快速找到某一章,你會翻目錄對吧?DataFrame的索引就是起到類似的作用,它讓你能快速、準確地定位到表格中的特定數據。Pandas提供了兩種主要的索引方法:`loc[]`和`iloc[]`。`loc[]`是基于標簽的索引,也就是說,你要根據列名和行標簽來取數據。它更靈活,支持使用布爾數組、范圍甚至是列表來選擇行和列。比如`df.loc['row_label','column_label']`或者`df.loc[condition,['col1','col2']]`。而`iloc[]`是基于位置的索引,你只需要提供行號和列號的整數位置來取數據,它就像數數一樣,從0開始。使用`iloc[]`時,你用的是整數索引,比如`df.iloc[0,1]`表示第1行第2列的數據,或者`df.iloc[rows,cols]`。所以啊,區(qū)分它們的關鍵在于:`loc`用標簽,`iloc`用位置。當你知道具體的行名和列名時,用`loc`;當你只知道行號和列號(比如從第0行開始算起)時,用`iloc`。我在課堂上經常讓同學們練習用這兩個方法選擇數據,剛開始可能會混淆,但多練幾次,就能掌握它們的精髓了。4.簡述在進行數據合并(合并、連接、拼接)時,Pandas的`merge()`、`join()`和`concat()`函數各自的主要特點和適用場景。數據合并這事兒啊,在實際工作中非常常見,比如你可能需要把來自不同文件或者不同表格的數據拼湊到一起。Pandas提供了三種主要的合并方式:`merge()`、`join()`和`concat()`,這三種方法各有各的特點和適用場景,我上課時通常會通過具體的例子來講解。首先是`merge()`,這個函數功能最強大,它類似于SQL里的JOIN操作,可以基于共同的關鍵列(鍵)來合并兩個DataFrame。你可以指定是做內連接(`inner`)、左連接(`left`)、右連接(`right`)還是外連接(`outer`),這讓你在選擇保留哪些數據時有很大的靈活性。比如,你想把訂單信息和學生信息合并在一起,根據學生ID來對齊,這時候用`merge()`就非常合適。然后是`join()`,這個函數相對簡單一些,它主要是基于索引來合并數據。你可以指定是做左連接還是右連接,它默認是左連接。如果你想把一個DataFrame想象成是主表,另一個DataFrame想象成是從表,根據索引來合并,`join()`是個不錯的選擇。最后是`concat()`,這個函數更像是簡單的拼接,你可以把它想象成用膠水把數據粘在一起。它主要是沿著一個軸(行軸`axis=0`或者列軸`axis=1`)將多個DataFrame或者Series連接起來,不關心它們之間有沒有共同的關鍵列或者索引,也不像`merge()`和`join()`那樣可以指定連接方式。在講解的時候,我會拿三個小表格,用這三種方法分別處理,讓同學們直觀地看到它們的區(qū)別。記住,`merge()`看鍵,`join()`看索引,`concat()`直接拼。5.描述在使用Pandas進行數據清洗時,處理重復數據和異常值的一些常用方法。數據清洗,這可是數據分析流程里至關重要的一步,我經常跟同學們說,垃圾進,垃圾出,數據不干凈,再高級的模型也白搭。處理重復數據和異常值就是數據清洗里的兩大塊內容。先說重復數據,現(xiàn)實世界的數據獲取方式五花八門,重復記錄在所難免。在Pandas里,檢測重復值用`duplicated()`函數,它會返回一個布爾Series,告訴你哪些行是重復的(相對于前面的行)。要去掉這些重復的行,就用`drop_duplicates()`。我上課時會強調,用這個函數的時候,可以指定`keep='first'`(保留第一次出現(xiàn)的重復行,刪除后續(xù)的)、`keep='last'`(保留最后一次出現(xiàn)的重復行,刪除前面的)或者`keep=False`(刪除所有重復行)。有時候,重復可能只出現(xiàn)在某些特定列上,而不是整行都重復,這時候`subset`參數就很有用,你可以指定只在這些列上檢查重復。至于異常值,處理起來就復雜多了,沒有統(tǒng)一的方法。常用的方法有:一是基于統(tǒng)計量,比如找出Z-score絕對值大于3的值,或者找出小于第1百分位數或者大于第99百分位數的值,然后用`drop()`函數去掉這些行,或者用`fillna()`用中位數、均值等替換掉;二是可視化,畫出箱線圖,異常值通常就是那些離群點;三是領域知識,根據你對業(yè)務的理解來判斷哪些值是不合理的,然后手動處理。我在課堂上會演示如何用這些方法處理包含重復和異常值的數據集,讓同學們體會到數據清洗的挑戰(zhàn)和技巧。四、操作題(本部分共3小題,每小題10分,共30分。請根據題目要求,完成指定的操作。)1.假設你有一個名為`sales_data.csv`的文件,里面包含以下列:`'OrderID'`,`'ProductID'`,`'Quantity'`,`'Price'`,`'OrderDate'`。請編寫Python代碼,完成以下任務:a.讀取該CSV文件到PandasDataFrame中。b.查看DataFrame的前5行數據。c.檢查DataFrame中是否存在缺失值,并統(tǒng)計各列的缺失值數量。d.將`'OrderDate'`列的數據類型轉換為datetime類型。e.計算`'Quantity'*'Price'`得到每筆訂單的銷售額,并將結果存儲在一個新的列`'Sales'`中。好了,同學們,這個操作題我們一起來動手試試。首先,你得有一個`sales_data.csv`的文件放在你的工作目錄里。第一步,讀取這個CSV文件,用Pandas的`read_csv()`函數就行,把它變成一個DataFrame,咱們叫它`sales`吧。代碼就是`sales=pd.read_csv('sales_data.csv')`。第二步,看看這數據讀進來了沒,用`head()`函數,`sales.head()`,這樣就能看到前5行,確保一切正常。第三步,數據清洗里頭,檢查缺失值是必備技能。用`isnull()`函數看看哪有缺失,然后用`sum()`函數統(tǒng)計一下每列有多少個缺失值,`sales.isnull().sum()`,這樣就能知道哪個列需要關注了。第四步,那個`'OrderDate'`列,肯定得是日期格式吧?不然怎么算時間序列分析呢?所以,得把它轉成datetime類型,用`pd.to_datetime(sales['OrderDate'])`,然后賦值回原列,`sales['OrderDate']=pd.to_datetime(sales['OrderDate'])`。第五步,最后計算銷售額。這很簡單,就是數量乘以單價嘛,用Pandas的`assign()`或者直接賦值都可以,`sales['Sales']=sales['Quantity']*sales['Price']`。這樣,一個包含銷售額的新列就加進去了。把這幾步代碼寫出來,運行一下,看看結果對不對。這就是處理實際銷售數據的一個基本流程。2.假設你有一個名為`employees.csv`的文件,里面包含以下列:`'EmployeeID'`,`'Name'`,`'Department'`,`'Salary'`,`'JoinDate'`。請編寫Python代碼,完成以下任務:a.讀取該CSV文件到PandasDataFrame中。b.選擇出`'Department'`為`'Sales'`或者`'Marketing'`的員工數據。c.對選出的數據進行按`'Salary'`降序排序。d.計算每個部門的平均薪資,并將結果存儲在一個新的DataFrame中,包含`'Department'`和`'AverageSalary'`兩列。來,咱們接著練。這次是關于員工數據的。同樣,先得有個`employees.csv`文件。第一步,讀取文件,`employees=pd.read_csv('employees.csv')`。第二步,篩選部門。咱們要的是`'Sales'`或者`'Marketing'`的員工,用`query()`函數很方便,`employees.query("Departmentin['Sales','Marketing']")`,或者用布爾索引,`employees[(employees['Department']=='Sales')|(employees['Department']=='Marketing')]`,這兩種都可以。第三步,對篩選出來的數據按薪資降序排序,用`sort_values()`,注意是降序,參數`ascending=False`,`sales_marketing=employees.query("Departmentin['Sales','Marketing']").sort_values('Salary',ascending=False)`。第四步,計算每個部門的平均薪資。這需要用到`groupby()`和`mean()`,`department_avg_salary=employees.groupby('Department')['Salary'].mean().reset_index()`,這里用`reset_index()`把結果轉成一個新的DataFrame,包含`'Department'`和`'AverageSalary'`兩列。把這幾步代碼寫下來,運行一下,就能得到按部門劃分的平均薪資情況。這個操作題能幫助大家練習篩選、排序和分組聚合這些常用操作。3.假設你有兩個DataFrame,`df1`和`df2`,結構如下:```python#df1#AB#012#134#256#df2#AC#027#148```請編寫Python代碼,完成以下任務:a.使用`merge()`函數,以`'A'`列為鍵,將`df1`和`df2`進行左連接。b.使用`join()`函數,以索引為鍵,將`df1`和`df2`進行右連接。c.使用`concat()`函數,將`df1`和`df2`沿著行軸(axis=0)進行拼接。好的,我們來試試合并和拼接。這兩個DataFrame,`df1`和`df2`,結構我給你寫好了。首先,咱們得創(chuàng)建這兩個DataFrame。用`pd.DataFrame()`就行,`df1=pd.DataFrame({'A':[1,3,5],'B':[2,4,6]})`,`df2=pd.DataFrame({'A':[2,4],'C':[7,8]})`。然后,我們按要求操作。第一步,用`merge()`做左連接。左連接的意思是保留`df1`的所有行,如果`df2`中有匹配的`'A'`,就合并;沒有就保留`'C'`列的缺失值。代碼是`merged_left=pd.merge(df1,df2,on='A',how='left')`。第二步,用`join()`做右連接。右連接保留`df2`的所有行,`df1`中不存在的`'A'`會合并為缺失值。注意,`join()`默認是按索引連接,如果`'A'`不是索引,需要先設置,或者直接用`on`參數指定列。這里假設`'A'`是索引,或者直接用`on='A'`,`joined_right=df1.set_index('A').join(df2.set_index('A'),on='A',how='right')`,或者`joined_right=pd.merge(df1,df2,on='A',how='right')`。第三步,用`concat()`沿行軸拼接。這很簡單,就是把`df2`加到`df1`下面,`concatenated=pd.concat([df1,df2],axis=0)`。運行這三段代碼,看看結果是否符合預期。這個練習能讓大家熟悉Pandas中這幾種主要的合并和拼接方式。本次試卷答案如下一、單項選擇題答案及解析1.答案:B解析:在Python的數據分析生態(tài)中,Pandas是處理和分析表格數據的利器,它提供了強大的數據結構和數據分析工具。Matplotlib主要用于數據可視化,NumPy是基礎的科學計算庫,Scikit-learn則專注于機器學習算法。因此,用于數據分析和處理的庫是Pandas。2.答案:B解析:讀取CSV文件是Pandas的常用操作,`read_csv()`函數是專門為此設計的。`read_excel()`用于讀取Excel文件,`read_sql()`用于讀取數據庫中的數據,`read_json()`用于讀取JSON格式的數據。所以,讀取CSV文件應使用`read_csv()`。3.答案:C解析:對DataFrame進行排序是數據分析中的常見需求。`sort()`不是Pandas的內置函數。`order()`在早期版本中存在,但已被棄用。`sort_values()`是用于根據一個或多個列的值對DataFrame進行排序的函數。`arrange()`不是Pandas的內置函數。因此,正確的函數是`sort_values()`。4.答案:A解析:檢查DataFrame中是否存在缺失值是數據清洗的重要步驟。`isnull()`函數返回一個布爾型DataFrame,表示原始DataFrame中每個元素是否為缺失值。`notnull()`返回的是相反的結果。`empty()`檢查DataFrame是否為空。`nan()`不是Pandas的內置函數。所以,檢查缺失值應使用`isnull()`。5.答案:A解析:選擇DataFrame中的特定列有多種方式,但最直接和常用的是使用列名作為索引。`df['column_name']`是選擇單列的標準方式。`df(column_name)`不是正確的語法。`df.column_name`在某些情況下可能有效,但這依賴于列名的命名規(guī)則,不推薦使用。`df.get(column_name)`是另一種選擇列的方法,但不如直接使用列名簡潔。因此,最常用的方法是`df['column_name']`。6.答案:A解析:對DataFrame進行分組并計算每組的統(tǒng)計量是數據分析中的常見操作。`groupby()`函數用于對數據進行分組,然后可以應用各種聚合函數,如`mean()`、`sum()`、`count()`等。`aggregate()`函數也可以用于應用自定義的聚合函數,但它通常在`groupby()`之后使用。`sum()`和`count()`是具體的聚合操作,不是用于分組的方法。因此,正確的組合是`groupby().mean()`。7.答案:A解析:合并兩個DataFrame是數據處理中的常見任務。`merge()`函數提供了多種合并方式,如內連接、左連接、右連接和外連接。`join()`函數通常用于基于索引的合并,它是`merge()`的一個簡化版本。`concat()`函數用于沿指定軸連接多個DataFrame或Series。`combine()`不是Pandas的內置函數。因此,用于合并兩個DataFrame的函數是`merge()`。8.答案:C解析:轉換數據類型是數據預處理中的常見操作。`convert_dtype()`不是Pandas的內置函數。`change_type()`也不是Pandas的內置函數。`astype()`是用于將列的數據類型轉換為指定類型的函數。因此,正確的函數是`astype()`。9.答案:A解析:去除DataFrame中的重復行是數據清洗的重要步驟。`drop_duplicates()`函數用于去除DataFrame中的重復行。`remove_duplicates()`不是Pandas的內置函數。`delete_duplicates()`也不是Pandas的內置函數。`unique()`函數用于返回DataFrame中唯一值的Series。因此,正確的函數是`drop_duplicates()`。10.答案:A解析:在DataFrame中創(chuàng)建新的列是數據分析中的常見操作。`assign()`函數可以用于創(chuàng)建新的列,并返回

溫馨提示

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

最新文檔

評論

0/150

提交評論