使用這些庫把 Python 變成一個科學資料分析和建模工具。
Python 的許多特性,比如開發效率、程式碼可讀性、速度等使之成為了資料科學愛好者的首選程式語言。對於想要升級應用程式功能的資料科學家和機器學習專家來說,Python 通常是最好的選擇(比如,Andrey Bulezyuk 使用 Python 語言創造了一個優秀的機器學習應用程式)。
由於 Python 的廣泛使用,因此它擁有大量的庫,使得資料科學家能夠很容易地完成複雜的任務,而且不會遇到許多編碼困難。下面列出 3 個用於資料科學的頂級 Python 庫。如果你想在資料科學這一領域開始你的職業生涯,就去了解一下它們吧。
NumPy
NumPy(數值 Python 的簡稱)是其中一個頂級資料科學庫,它擁有許多有用的資源,從而幫助資料科學家把 Python 變成一個強大的科學分析和建模工具。NumPy 是在 BSD 許可證的許可下開源的,它是在科學計算中執行任務的基礎 Python 庫。SciPy 是一個更大的基於 Python 生態系統的開源工具,而 NumPy 是 SciPy 非常重要的一部分。
NumPy 為 Python 提供了大量資料結構,從而能夠輕鬆地執行多維陣列和矩陣運算。除了用於求解線性代數方程和其它數學計算之外,NumPy 還可以用做不同型別通用資料的多維容器。
此外,NumPy 還可以和其他程式語言無縫整合,比如 C/C++ 和 Fortran。NumPy 的多功能性使得它可以簡單而快速地與大量資料庫和工具結合。比如,讓我們來看一下如何使用 NumPy(縮寫成 np
)來實現兩個矩陣的乘法運算。
我們首先匯入 NumPy 庫(在這些例子中,我將使用 Jupyter notebook):
1 |
import numpy as np |
接下來,使用 eye()
函式來生成指定維數的單位矩陣:
1 2 |
matrix_one = np.eye(3) matrix_one |
輸出如下:
1 2 3 |
array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]) |
讓我們生成另一個 3×3 矩陣。
我們使用 arange([starting number], [stopping number])
函式來排列數字。注意,函式中的第一個引數是需要列出的初始數字,而後一個數字不包含在生成的結果中。
另外,使用 reshape()
函式把原始生成的矩陣的維度改成我們需要的維度。為了使兩個矩陣“可乘”,它們需要有相同的維度。
1 2 |
matrix_two = np.arange(1,10).reshape(3,3) matrix_two |
輸出如下:
1 2 3 |
array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) |
接下來,使用 dot()
函式將兩個矩陣相乘。
1 2 |
matrix_multiply = np.dot(matrix_one, matrix_two) matrix_multiply |
相乘後的輸出如下:
1 2 3 |
array([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]) |
太好了!
我們成功使用 NumPy 完成了兩個矩陣的相乘,而不是使用普通冗長vanilla的 Python 程式碼。
下面是這個例子的完整程式碼:
1 2 3 4 5 6 7 8 9 10 |
import numpy as np #生成一個 3x3 單位矩陣 matrix_one = np.eye(3) matrix_one #生成另一個 3x3 矩陣以用來做乘法運算 matrix_two = np.arange(1,10).reshape(3,3) matrix_two #將兩個矩陣相乘 matrix_multiply = np.dot(matrix_one, matrix_two) matrix_multiply |
Pandas
Pandas 是另一個可以提高你的 Python 資料科學技能的優秀庫。就和 NumPy 一樣,它屬於 SciPy 開源軟體家族,可以在 BSD 自由許可證許可下使用。
Pandas 提供了多能而強大的工具,用於管理資料結構和執行大量資料分析。該庫能夠很好的處理不完整、非結構化和無序的真實世界資料,並且提供了用於整形、聚合、分析和視覺化資料集的工具
Pandas 中有三種型別的資料結構:
- Series:一維、相同資料型別的陣列
- DataFrame:二維異型矩陣
- Panel:三維大小可變陣列
例如,我們來看一下如何使用 Panda 庫(縮寫成 pd
)來執行一些描述性統計計算。
首先匯入該庫:
1 |
import pandas as pd |
然後,建立一個序列series字典:
1 2 3 4 5 |
d = {'Name':pd.Series(['Alfrick','Michael','Wendy','Paul','Dusan','George','Andreas', 'Irene','Sagar','Simon','James','Rose']), 'Years of Experience':pd.Series([5,9,1,4,3,4,7,9,6,8,3,1]), 'Programming Language':pd.Series(['Python','JavaScript','PHP','C++','Java','Scala','React','Ruby','Angular','PHP','Python','JavaScript']) } |
接下來,再建立一個資料框DataFrame:
1 |
df = pd.DataFrame(d) |
輸出是一個非常規整的表:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Name Programming Language Years of Experience 0 Alfrick Python 5 1 Michael JavaScript 9 2 Wendy PHP 1 3 Paul C++ 4 4 Dusan Java 3 5 George Scala 4 6 Andreas React 7 7 Irene Ruby 9 8 Sagar Angular 6 9 Simon PHP 8 10 James Python 3 11 Rose JavaScript 1 |
下面是這個例子的完整程式碼:
1 2 3 4 5 6 7 8 9 10 11 |
import pandas as pd #建立一個序列字典 d = {'Name':pd.Series(['Alfrick','Michael','Wendy','Paul','Dusan','George','Andreas', 'Irene','Sagar','Simon','James','Rose']), 'Years of Experience':pd.Series([5,9,1,4,3,4,7,9,6,8,3,1]), 'Programming Language':pd.Series(['Python','JavaScript','PHP','C++','Java','Scala','React','Ruby','Angular','PHP','Python','JavaScript']) } #建立一個資料框 df = pd.DataFrame(d) print(df) |
Matplotlib
Matplotlib 也是 Scipy 核心包的一部分,並且在 BSD 許可證下可用。它是一個非常流行的科學庫,用於實現簡單而強大的視覺化。你可以使用這個 Python 資料科學框架來生成曲線圖、柱狀圖、直方圖以及各種不同形狀的圖表,並且不用擔心需要寫很多行的程式碼。例如,我們來看一下如何使用 Matplotlib 庫來生成一個簡單的柱狀圖。
首先匯入該庫:
1 |
from matplotlib import pyplot as plt |
然後生成 x 軸和 y 軸的數值:
1 2 |
x = [2, 4, 6, 8, 10] y = [10, 11, 6, 7, 4] |
接下來,呼叫函式來繪製柱狀圖:
1 |
plt.bar(x,y) |
最後,顯示圖表:
1 |
plt.show() |
柱狀圖如下:
下面是這個例子的完整程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#匯入 Matplotlib 庫 from matplotlib import pyplot as plt #和 import matplotlib.pyplot as plt 一樣 #生成 x 軸的數值 x = [2, 4, 6, 8, 10] #生成 y 軸的數值 y = [10, 11, 6, 7, 4] #呼叫函式來繪製柱狀圖 plt.bar(x,y) #顯示圖表 plt.show() |
總結
Python 程式語言非常擅長資料處理和準備,但是在科學資料分析和建模方面就沒有那麼優秀了。幸好有這些用於資料科學的頂級 Python 框架填補了這一空缺,從而你能夠進行復雜的數學計算以及建立複雜模型,進而讓資料變得更有意義。
你還知道其它的 Python 資料探勘庫嗎?你的使用經驗是什麼樣的?請在下面的評論中和我們分享。