1. 程式人生 > >python資料分析師面試題選

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)。

  2. 以下程式碼是否報錯

    list= [‘a’,’e’,’i’,’o’,’u’]
    print list [8:]

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

  3. 以下程式碼的輸出

    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. 統計中國有多少樹