使用 PyCharm 創建科學項目
本節主要講述PyCharm 對科學計算提供了哪些支持?如何在PyCharm 里創建一個科學計算的項目,在創建項目前要做哪些準備?以及對于這類項目在調試與運行過程中,PyCharm 又提供了哪些有用功能等等。
Tips: PyCharm 科學計算是 Profession(專業版)所提供的功能。
1. 科學計算
科學計算是當今科學的"第三支柱",科學計算是解決科學和工程問題的計算機數學模型所需的工具、技術和理論的集合。
當下我們大多數人接觸科學計算,都是由人工智能與機器學習開始的。人工智能 可以簡單理解為機器學習與大數據。 而 機器學習 是實現人工智能的方法,是人工智能研究的核心技術,在大數據的支撐下,通過各種算法讓機器對數據進行深層次的統計分析以進行“自學”。機器學習中數據是非常重要的,而數據收集、分析與建模等過程與科學計算是密不可分的。
2. 常用Python科學計算庫
2.1 Matplotlib 官網
matplotlib是基于Python語言的開源項目,可用于開發2D圖表(包括3D圖表),以漸進、交互式方式實現數據可視化, 使用起來非常簡單。matplotlib是受MATLAB的啟發構建的。MATLAB是數據繪圖領域廣泛使用的語言和工具。
可視化是在整個數據分析與挖掘的關鍵輔助工具,能將數據進行可視化,更直觀的呈現,可以清晰的理解數據,從而調整我們的分析方法。這是為什么要使用matplotlib的原因。
Matplotlib能夠繪制折線圖、散點圖、柱狀圖、直方圖、餅圖。我們根據不同統計圖的意義,以此來決定選擇哪種統計圖來呈現我們的數據。
- 折線圖:以折線的上升或下降來表示統計數量的增減變化的統計圖。能夠顯示數據的變化趨勢,反映事物的變化情況;
- 散點圖:用兩組數據構成多個坐標點,考察坐標點的分布,判斷兩變量之間是否存在某種關聯或總結坐標點的分布模式。能夠顯示數據的分布規律;
- 柱狀圖:排列在工作表的列或行中的數據可以繪制到柱狀圖中。能夠一眼看出各個數據的大小,比較數據之間的差別;
- 直方圖:由一系列高度不等的縱向條紋或線段表示數據分布的情況。一般用橫軸表示數據范圍,縱軸表示分布情況。用于展示一組或者多組數據的分布狀況;
- 餅圖:用于表示不同分類的占比情況,通過弧度大小來對比各種分類??梢杂糜诮y計分類數據的占比情況。
2.2 Numpy 官網
Numpy(Numerical Python)是一個開源的Python科學計算庫,用于快速處理任意維度的數組。
Numpy支持常見的數組和矩陣操作。Numpy 使用 ndarray 對象來處理多維數組,該對象是一個快速而靈活的大數據容器。
使用 Python 列表可以存儲一維數組,通過列表的嵌套可以實現多維數組,那么為什么還需要使用Numpy 的 ndarray呢?這是因為對于同樣的數值計算任務,ndarray的計算速度比直接使用Python快很多,節約了時間。機器學習的最大特點就是大量的數據運算,效率高是一個主要要求。
簡單說一下 ndarray 為什么快?
- ndarray 在存儲數據的時候,數據與數據的地址都是連續的,這樣就給使得批量操作數組元素時速度更快。這是因為ndarray中的所有元素的類型都是相同的,而 Python 列表中的元素類型是任意的,所以ndarray 在存儲元素時內存可以連續,而 python 原生 lis 就只能通過尋址方式找到下一個元素;
- ndarray支持并行化運算;
- Numpy 底層使用 C 語言編寫,內部解除了GIL(全局解釋器鎖),其對數組的操作速度不受 Python解釋器的限制 ,所以,其效率遠高于純 Python 代碼。
關于 numpy 使用,請參考
2.3 Pandas 官網
專門用于數據挖掘的開源 python 庫, 以 Numpy 為基礎,計算方面性能高; 具有獨特的數據結構(DataFrame、Series與Panel)。
Numpy已經能夠幫助我們處理數據,能夠結合matplotlib解決部分數據展示等問題,那么pandas的優勢是什么呢?主要有以下三點:
- 便捷的數據處理能力;
- 讀取文件方便;
- 封裝了 Matplotlib、Numpy 的畫圖和計算。
關于如何使用 Pandas, 請參考
3. PyCharm 對科學計算支持
- Numpy、Matplotlib 與 Pandas支持
以上三個基本科學計算庫都是支持的,另外需要啟用Scientific Mode (View -> Scientific Mode
)才能正常顯示各種圖表,該模式僅在 PyCharm 的專業版中可用。
- Jupyter Notebook支持
Jupyter Notebook,原名IPython Notbook,是IPython的加強網頁版,一個開源Web應用程序
名字源自Julia、Python 和 R(數據科學的三種開源語言),是一款程序員和科學工作者的編程/文檔/筆記/展示軟件,.ipynb文件格式是用于計算型敘述的JSON文檔格式的正式規范。 在下一小節將詳細介紹它的安裝與使用
- R 語言支持
此支持可通過 R 插件獲得,該插件支持使用 R 語言進行統計計算。
4. 創建科學項目
在PyCharm 里創建科學項目,我們通常會選擇用 Conda 解釋器,所以請事先安裝 Conda 或者 miniconda, 安裝細節請參考。
4.1 基本步驟
step1: 主菜單 File -> New -> Project
, 選擇 Scientific
step2: 在項目設置對話框窗口中,指定項目名稱,確保將 Conda 選為新環境,然后單擊"Create"。
step3: 自動創建了 main.py并且打開, 在其中加下面的代碼。(主要功能是用拆線圖展示北京與上海兩個城市一小時的溫度變化曲線。Tips: 使用Conda 解釋器,像Numpy , matplotlib 基本的科學計算包都已經自帶了,不需要再單獨安裝。)
# 畫出溫度變化圖
import random
import matplotlib.pyplot as plt
# 準備x, y坐標的數據
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
# 增加北京的溫度數據
y_beijing = [random.uniform(1, 3) for i in x]
# 創建畫布
plt.figure(figsize=(20, 8), dpi=80)
# 繪制折線圖
# plt.plot(x, y_shanghai)
plt.plot(x, y_shanghai, label="SHANGHAI")
# 使用多次plot可以畫多個折線
plt.plot(x, y_beijing, color='r', linestyle='--', label="BEIJING")
# 顯示圖例
plt.legend(loc="best")
# 構造x軸刻度標簽
x_ticks_label = ["11:{}".format(i) for i in x]
# 構造y軸刻度
y_ticks = range(40)
# 修改x,y軸坐標的刻度顯示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# 添加網格顯示
plt.grid(True, linestyle='--', alpha=0.5)
# 添加x軸、y軸描述信息及標題
plt.xlabel("Time")
plt.ylabel("Temperature")
plt.title("Temperature Change between 11am and 12am")
# 顯示圖像
plt.show()
step4: PyCharm 內需啟用 Scientific Mode 才能正常顯示 matplotlib 相關圖表。主菜單View -> Scientific Mode
。
step5: 運行項目?F10 (Shift + F10), 代碼執行完畢,會有如下三個工具窗口顯示:
-
"SciView"工具窗口。它有兩個選項卡, "data"選項卡中預覽數據幀,在"plot"選項卡中預覽 matplotlib 圖表;
-
"Documentation"工具窗口,顯示編輯器內光標插入位置處對象的內聯文檔,比如光標停留在matplotlib 包導入的地方,就會顯示 matplotlib 的相關信息;
-
Python 控制臺。執行完畢后,自動打開,程序中涉及變量詳細值也在右側邊欄自動顯示出來。
4.2 分段執行代碼
在 Scientific mode 模式,可以將代碼格式化為一組可執行代碼片斷,每個片斷都可以單獨運行。要將代碼拆分為獨立運行的部分,只需在適當的位置添加 #%%
行。
在 main.py
中加入以下代碼:主要功能是生成一個散點圖。
import numpy as np
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2 # 0 to 15 point radii
plt.scatter(x, y, s=area, c=colors, alpha=0.5)
plt.show()
加了上面代碼后,main.py
除了生成上面的折線圖,還會再生成散點圖。為了使這兩張圖的生成分段執行,如下圖所示,加兩行 # %% 行,然后分別點擊邊框中綠色箭頭執行不同代碼。
4.3 查看數據細節
在 Python 控制臺中預覽變量時,可以單擊 View as Array
鏈接,在 SciView 工具窗口的"數據"選項卡中查看這些數據。
為了說明這個功能,我們在 main.py
添加一行代碼,創建一個多維數組
stock_change = np.random.normal(0, 1, (8, 10))
5. 小結
本節主要講解了 PyCharm 針對科學計算提供了哪些支持,其本身提供的功能都是簡單易學的,難點在對科學計算包提供功能的使用與理解,一方面是對 Python 語言的應用,另一方面還是需要一定的高數、線性代數等方面的背景知識。在做一些不復雜的數據分析項目,使用 PyCharm 應該是足夠的,如果對數據處理相對復雜,還是建議使用 Anacoda,畢竟它提供了更多專業的科學計算包,也提供了更多利于科學計算的工具。