pandas面試題


python數據分析師面試題選

以下題目均非原創,只是匯總

python數據分析部分

1. 如何利用SciKit包訓練一個簡單的線性回歸模型
利用linear_model.LinearRegression()函數 

# Create linear regression object regr = linear_model.LinearRegression() # Train the model using the training sets regr.fit(data_X_train, data_y_train)

2. 例舉幾個常用的python分析數據包及其作用
數據處理和分析:NumPy, SciPy, Pandas
機器學習:SciKit
可視化: Matplotlib, Seaborn

3. 如何利用Numpy對數列的前n項進行排序
使用argsort()函數:x[x [: n-1].argsort ()]

4. 如何檢驗一個數據集或者時間序列是隨機分布的
畫lag plot(Correlogram:相關圖),如果圖上的點呈散亂分布,則為隨機

5. 在python中如何創建包含不同類型數據的dataframe
利用pandas包的DataFrame函數的serias創建列然后用dtype定義類型:
df = pd.DataFrame({'x': pd.Series(['1.0', '2.0', '3.0'], dtype=float), 'y': pd.Series(['1', '2', '3'], dtype=int)})

6. Pandas中使用的標准數據缺失標志是什么
NaN

7. 描述numpy array比python list的優勢

a. numpy array比python list更緊湊,存儲數據占的空間小,讀寫速度快。(這是由於python list儲存的是指向對象(至少需要16個字節)的指針(至少4個字節);而array中儲存的是單一變量(比如單精度浮點數為4個字節,雙精度為8)) 

b. array可以直接使用vector和matrix類型的處理函數,非常方便。

8. 如何檢驗numpy的array為空
使用size函數, 比如

a = np.array([])
print a.size # 0

**9. 如何檢驗pandas dataframe為空?
使用empty函數

python 基礎操作部分

1. 如何在python中復制對象
使用copy包的copydeepcopy函數。其中,copy 僅拷貝對象本身,而不拷貝對象中引用的其它對象;deepcopy 除拷貝對象本身,而且拷貝對象中引用的其它對象。

2. PEP8是什么
python語言的編程規范,提高代碼可讀性

3. init.py是什么
一個空文件,用於將導入目錄中的模塊。比如有一個模塊是maindir/subdir/module.py,init.py 可以使之可以通過以下形式導入。import maindir.subdir.module

4. range()xrange()函數的差異
range()生成的是list,而xrange()生成的是迭代器(iterator)。例如:

range(5) # [0, 1, 2, 3, 4] xrange(5) list(xrange(1,5)) # [1, 2, 3, 4]

5. 如何對list中的item進行隨機重排
使用shuffle()函數

6. python中用於發現bug的工具
Pylint和Pychecker. Pylint可以檢驗模塊是否滿足所有的編程標准;Pychecker則是靜態分析工具。

7. 裝飾器的作用
裝飾器可用於修飾函數或類。通過裝飾器可以包裹函數或類使之執行之前或之后調用裝飾器函數,從而達到抽離出大量函數中與函數功能本身無關的雷同代碼並繼續重用的目的。比較經典的廚力場景有檢驗權限,追蹤參數,日志登陸等。

def makebold(fn): def wrapped(): return "<b>" + fn() + "</b>" return wrapped def makeitalic(fn): def wrapped(): return "<i>" + fn() + "</i>" return wrapped @makebold @makeitalic def hello(): return "hello world"

python程序解析部分

  1. 以下代碼的輸出?
def multipliers(): return [lambda x: i * x for i in range(4)] print [m(2) for m in multipliers()]

輸出為[6,6,6,6]。 這個的原因是 Python 的閉包的后期綁定導致的 late binding,這意味着在閉包中的變量是在內部函數被調用的時候被查找。所以結果是,當任何 multipliers() 返回的函數被調用,在那時,i 的值是在它被調用時的周圍作用域中查找,到那時,無論哪個返回的函數被調用,for 循環都已經完成了,i 最后的值是 3,因此,每個返回的函數 multiplies 的值都是 3。因此一個等於 2 的值被傳遞進以上代碼,它們將返回一個值 6 (比如: 3 x 2)。

  1. 以下代碼是否報錯
list= [‘a’,’e’,’i’,’o’,’u’]
print list [8:]

輸出為[]。 訪問一個列表的以超出列表成員數作為開始索引的切片將不會導致 IndexError,並且將僅僅返回一個空列表。

  1. 以下代碼的輸出
def foo (i= []): i.append (1) return i foo () foo ()

輸出為[1],[1,1]。 新的默認列表僅僅只在函數被定義時創建一次。當foo沒有被指定的列表參數調用的時候,其使用的是同一個列表。

數學統計學部分

1. 什么是邏輯斯蒂回歸(logistic regression)
邏輯斯蒂回歸常指邏輯回歸模型,用於預測參數之間組合可能輸出的二分結果。

2. 推薦系統、協同過濾

3. P值的意義
決定假設檢驗的的結果是否顯著

4. 監督學習和非監督學習,機器學習算法

5. A/B測試
對有兩個變量A,B的隨機試驗進行的統計結果測試,目的是識別改動對網頁點擊率的影響從而獲得實現最大化的改動。

6. 特征值和特征向量
在數據分析是通過計算相關和協方差矩陣的特征向量可以用於確定之后的線性轉換的方向。特征值表示特征向量方向轉化或者壓縮的強度。

7. 如何評價一個邏輯斯蒂模型

  • 用分類矩陣查看真陰性和假陽性
  • 一致性分析: 查看邏輯斯蒂模型區分事件是否發生的能力
  • 與隨機選擇模型進行對比

8. 項目分析的步驟

  • 理解問題
  • 探索數據
  • 准備數據用於建模
  • 建模
  • 測試
  • 上線執行並追蹤

9. 如何處理缺失數據?(如果缺失的數據不可得,將采用何種手段收集?)
首先判斷缺失數據是否有意義,如果沒有意義或者缺失數據的比例超過80%直接去掉。如果缺失數據有規律,則需根據其變化規律來推測次缺失值;如果數據沒有規律,則用其他值代替:

如果數據符合正態分布,缺失值用期望值代替

如果數據是類型變量,則用默認類型值代替缺失值

10. 描述K-Means Clustering算法

11. 邏輯斯蒂回歸和線性回歸的區別
邏輯斯蒂回歸的預測值是兩元的,0或1;而線性回歸的預測值是連續的。

12. 如何證明根號2是無理數

13. 統計中國有多少樹

完整的非對稱加密過程

假如現在 你向支付寶 轉賬(術語數據信息),為了保證信息傳送的保密性、真實性、完整性和不可否認性,需要對傳送的信息進行數字加密和簽名,其傳送過程為:
1.首先你要確認是否是支付寶的數字證書,如果確認為支付寶身份后,則對方真實可信。可以向對方傳送信息,
2.你准備好要傳送的數字信息(明文)計算要轉的多少錢,對方支付寶賬號等;
3.你 對數字信息進行哈希運算,得到一個信息摘要(客戶端主要職責);
4.你 用自己的私鑰對信息摘要進行加密得到 你 的數字簽名,並將其附在數字信息上;
5.你 隨機產生一個加密密鑰,並用此密碼對要發送的信息進行加密(密文);
6.你用 支付寶的公鑰對剛才隨機產生的加密密鑰進行加密,將加密后的 DES 密鑰連同密文一起傳送給支付寶;
7.支付寶收到 你 傳送來的密文和加密過的 DES 密鑰,先用自己的私鑰對加密的 DES 密鑰進行解密,得到 你隨機產生的加密密鑰;
8.支付寶 然后用隨機密鑰對收到的密文進行解密,得到明文的數字信息,然后將隨機密鑰拋棄;
9.支付寶 用你 的公鑰對 你的的數字簽名進行解密,得到信息摘要;
10.支付寶用相同的哈希算法對收到的明文再進行一次哈希運算,得到一個新的信息摘要;
11.支付寶將收到的信息摘要和新產生的信息摘要進行比較,如果一致,說明收到的信息沒有被修改過。
12 確定收到信息,然后進行向對方進行付款交易,一次非對稱密過程結束。在這后面的流程就不屬於本次非對稱加密的范疇,算支付寶個人的自我流程,也就是循環以上過程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM