探索 Python 編程世界:五個(gè)神奇庫(kù)助力提升開(kāi)發(fā)效率
在當(dāng)今的軟件開(kāi)發(fā)世界中,Python已經(jīng)成為了一種無(wú)可替代的編程語(yǔ)言。它的簡(jiǎn)潔、易讀易寫(xiě)的語(yǔ)法以及豐富的庫(kù)使得Python成為了眾多開(kāi)發(fā)者的首選。在Python的世界里,有許多神奇的庫(kù)可以大大提升開(kāi)發(fā)效率,本文將帶你探索其中的5個(gè)神奇庫(kù),讓你的編程之旅更加高效、輕松、愉快!
UMAP
UMAP(Uniform Manifold Approximation and Projection)是一種強(qiáng)大的非線(xiàn)性降維算法,能夠?qū)⒏呔S數(shù)據(jù)映射到低維空間,為數(shù)據(jù)可視化和分析提供了極大的便利。在Python中,UMAP算法的Python實(shí)現(xiàn)庫(kù)為開(kāi)發(fā)者提供了實(shí)現(xiàn)該算法的便捷途徑,為數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)從業(yè)者們提供了強(qiáng)大的工具,使得他們能夠更好地理解和分析復(fù)雜的高維數(shù)據(jù)。
(1) 安裝
首先,您需要安裝UMAP庫(kù),可以使用pip命令進(jìn)行安裝:
pip install umap-learn
(2) 使用示例
如下代碼是使用UMAP算法對(duì)鳶尾花數(shù)據(jù)集進(jìn)行降維并可視化。首先,通過(guò)load_iris方法加載鳶尾花數(shù)據(jù)集,然后使用UMAP模型對(duì)數(shù)據(jù)進(jìn)行降維。最后,利用matplotlib庫(kù)繪制降維后的數(shù)據(jù)散點(diǎn)圖,并根據(jù)鳶尾花的類(lèi)別進(jìn)行著色,以便于觀察數(shù)據(jù)的聚類(lèi)情況。
import umap
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
data = load_iris()
X = data.data
y = data.target
umap_model = umap.UMAP(n_neighbors=10, min_dist=0.1, n_components=2,random_state=2023)
umap_result = umap_model.fit_transform(X)
plt.scatter(umap_result[:, 0], umap_result[:, 1], c=y, cmap='viridis')
plt.title('UMAP (Uniform Manifold Approximation and Projection)')
plt.xlabel('Component 1')
plt.ylabel('Component 2')
# plt.colorbar()
plt.show()
folium
folium是一個(gè)用于創(chuàng)建交互式地圖的 Python 庫(kù)。它基于Leaflet.js構(gòu)建,可以幫助用戶(hù)輕松地在 Web 應(yīng)用程序中集成地圖可視化。Folium 提供了豐富的地圖定制選項(xiàng),包括標(biāo)記、彈出窗口、熱力圖等功能,使得用戶(hù)可以靈活地展示地理空間數(shù)據(jù)。無(wú)論是用于數(shù)據(jù)分析、可視化還是 Web 應(yīng)用程序開(kāi)發(fā),F(xiàn)olium 都是一個(gè)強(qiáng)大而靈活的工具,為 Python 用戶(hù)提供了創(chuàng)建交互式地圖可視化的便利途徑。
(1) 安裝
pip install folium
(2) 示例代碼
如下代碼使用 Folium 庫(kù)創(chuàng)建了一個(gè)簡(jiǎn)單的地圖,并將全球各國(guó)的政治邊界以 GeoJSON 的形式添加到地圖上。接著將地圖保存為名為 footprint.html 的 HTML 文件。打開(kāi)該文件,你將看到一個(gè)交互式地圖,其中包含了全球各國(guó)的政治邊界信息。
import folium
political_countries_url = (
"http://geojson.xyz/naturalearth-3.3.0/ne_50m_admin_0_countries.geojson"
)
m = folium.Map(location=(30, 10), zoom_start=3, tiles="cartodb positron")
folium.GeoJson(political_countries_url).add_to(m)
m.save("footprint.html")
numexpr
numexpr 是一個(gè)用于在 NumPy 數(shù)組上進(jìn)行快速數(shù)值表達(dá)式計(jì)算的庫(kù)。它使用了CPU的并行計(jì)算能力和緩存優(yōu)化,能夠在不需要?jiǎng)?chuàng)建臨時(shí)數(shù)組的情況下,快速地對(duì)數(shù)組進(jìn)行元素級(jí)運(yùn)算。Numexpr可以顯著提高數(shù)值計(jì)算的速度,特別是當(dāng)需要處理大型數(shù)組時(shí),它的性能優(yōu)勢(shì)更加明顯。
(1) 安裝
pip install numexpr
(2) 示例代碼
import numpy as np
import numexpr as ne
# 創(chuàng)建兩個(gè)隨機(jī)的大型 NumPy 數(shù)組
a = np.random.rand(1000000)
b = np.random.rand(1000000)
# 使用 Numexpr 計(jì)算表達(dá)式
c = ne.evaluate('a + b')
print(c)
sviewgui
sviewgui是一個(gè)基于PyQt的GUI,無(wú)需寫(xiě)大量代碼,只需動(dòng)動(dòng)鼠標(biāo)就可以實(shí)現(xiàn)csv文件或Pandas的DataFrame的數(shù)據(jù)可視化。
(1) 安裝
pip install sviewgui
(2) 示例代碼
如下代碼可以看出,sviewgui模塊用法超級(jí)簡(jiǎn)單,它只有一個(gè)函數(shù) buildGUI()。
from sviewgui import sview as sv
sv.buildGUI()
運(yùn)行如上代碼即可啟動(dòng)GUI,啟動(dòng)之后如下圖所示。
再導(dǎo)入csv文件,點(diǎn)擊draw按鈕,數(shù)據(jù)可視化效果如右圖。
此方法可以傳入零個(gè)或一個(gè)參數(shù),您也可以使用csv文件的文件路徑或pandas的DataFrame對(duì)象作為參數(shù),再打開(kāi)GUI。這里以Iris數(shù)據(jù)集為例,代碼如下:
import pandas as pd
from sklearn import datasets
# sviewGUI
from sviewgui import sview as sv
#加載iris數(shù)據(jù)
iris = datasets.load_iris()
#創(chuàng)建DataFrame對(duì)象
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target_names[iris.target]
#DataFrame存入csv文件
SAVE_PATH = 'iris.csv'
df.to_csv(SAVE_PATH) # save as CSV
# build GUI with the filepath
sv.buildGUI(SAVE_PATH)
# build GUI with pandas' DataFrame object
sv.buildGUI(df)
Pynlpir
Pynlpir是一個(gè)非常優(yōu)秀的 Python 中文自然語(yǔ)言處理庫(kù)。它提供了一系列功能,包括分詞、詞性標(biāo)注、命名實(shí)體識(shí)別等。Pynlpir的安裝和使用相對(duì)簡(jiǎn)單,可以通過(guò)pip包管理器進(jìn)行安裝。通過(guò)導(dǎo)入Pynlpir庫(kù),你可以輕松地在Python代碼中調(diào)用相關(guān)函數(shù)進(jìn)行中文文本處理。
(1) 安裝
pip install pynlpir
(2) 示例代碼
如下是使用Pynlpir進(jìn)行中文文本分詞的示例代碼:
import pynlpir
# 輸入文本進(jìn)行分詞
text = "這是一段中文文本,我們使用pynlpir進(jìn)行分詞"
result = pynlpir.segment(text)
print(result)
執(zhí)行結(jié)果如下:
[('這是', 'r'), ('一', 'm'), ('段', 'q'), ('中文', 'nz'), ('文本', 'n'),
(',', 'w'), ('我們', 'r'), ('使用', 'v'), ('pynlpir', 'nz'), ('進(jìn)行', 'v'),
('分詞', 'n')]