Hi! 大家好,我是Eric,這次教大家Python的資料科學工具概覽!
■ 前置作業
若使用的環境是Anaconda或Miniconda環境的話,我們可以先執行下列程式碼安裝這次介紹的工具套件。
$ conda install numpy scipy pandas matplotlib scikit-learn
■ NumPy:Python數值計算
NumPy是Python儲存與操作高維陣列一個非常有效率的工具。
NumPy有下面2個重要特性:
import numpy as np #引入NumPy套件,並取名為np
x = np.arange(1, 10) #引入NumPy套件的.arange函式
x
x ** 2
[val ** 2 for val in range(1, 10)]
M = x.reshape((3, 3))
M
M.T
np.dot(M,[5,6,7])
np.linalg.eigvals(M)
上面幾個線性代數的計算是現代資料分析的基礎,在**機器學習(machine learning)和資料探勘(data mining)**尤為明顯。
■ Pandas:標籤化的行導向資料儲存(Labeled Column-oriented Data)
Pandas是一個比NumPy新很多的函式庫,基本上是以NumPy為基礎。Pandas提供了一個標籤化的介面來訪問多維資料,並且以 資料框(data frame) 物件的形式呈現,R語言的使用者可能會感受很熟悉。
import pandas as pd #引入pandas套件,並命名為pd
df = pd.DataFrame({'label': ['A', 'B', 'C', 'A', 'B', 'C'],
'value': [1, 2, 3, 4, 5, 6]})
df
df["label"]
-針對字串欄位套用字串處理函式:
df["label"].str.lower()
-針對數值欄位套用總計(aggregate)函式:
df['value'].sum()
-更重要的是可以直接應用高階的資料庫串接與分組操作,我們只用一行程式碼就計算出了相同標籤的數值總和,若是使用NumPy或核心的Python程式碼,可能會經過繁複的過程才能達到目的!
df.groupby("label").sum()
■ Matplotlib:MatLab風格的科學視覺化
Matplotlib是目前Python最受歡迎的科學視覺化函式庫,儘管它的愛好者都認為它的介面有時過於繁瑣,但它對於繪製各種類別的圖表可說非常強的工具套件。
%matplotlib notebook #Jupyter Notebook使用者需要額外執行這行程式碼
import matplotlib.pyplot as plt #引入Matplotlib套件,並命名為plt
plt.style.use('ggplot') #使用R語言的ggplot風格畫圖
x = np.linspace(0, 10) # 從 0 到 10 範圍內取值
y = np.sin(x) # 取這些值的正弦值
plt.plot(x, y); # 繪製成⼀條曲線
#若我們使用互動模式執行上面的程式碼,可以在一個互動式的視窗移動、縮放、滾動來瀏覽資料
■ SciPy:Python科學計算
SciPy是基於NumPy建立的一個科學計算功能集合。下面列出重要的模組:
from scipy import interpolate
#選擇0-10之間的8個點
x = np.linspace(0, 10, 8)
y = np.sin(x)
#建立一個三次插值函式
func = interpolate.interp1d(x, y, kind="cubic")
#在1000個點的網格上進行插值運算
x_interp = np.linspace(0, 10, 1000)
y_interp = func(x_interp)
#繪製成果
plt.figure() #新的圖片
plt.plot(x, y, "o")
plt.plot(x_interp, y_interp)
#我們看到的是點之間平滑的插值
■ 其他資料科學函式庫
■ Refer to《Python 旋風之旅,[正體中文]Will保哥》的第16章