前言
本文介绍了17个常用的Python工具库,涵盖了数据处理、统计分析、数据可视化和机器学习等领域的关键功能,支持使用者在数据科学和人工智能领域进行各种任务和项目的开发。
数据处理和分析
NumPy
NumPy 是 Python 中用于数值计算的强大库,提供对数组、矩阵和各种数学操作的支持。
import numpy as np
array = np.array([1, 2, 3, 4, 5])
mean = np.mean(array)
Pandas
pandas 是用于数据操作和分析的流行库,提供了 DataFrame 和 Series 等数据结构,用于处理表格和时间序列数据。
import pandas as pd
data = {"A": [1, 2, 3], "B": [4, 5, 6]}
df = pd.DataFrame(data)
数学统计
statsmodel
statsmodels 是用于估计统计模型和执行统计测试的库,提供了多种统计模型,如线性回归、逻辑回归和时间序列分析等。
import statsmodels.api as sm
import numpy as np
X = np.random.rand(100)
y = 2 * X + 0.5 * np.random.randn(100)
X = sm.add_constant(X)
model = sm.OLS(y, X).fit()
math
数学库,包含基本数学函数和常数、三角函数、对数、指数运算等,支持浮点数运算和舍入函数。
import math
print(math.sqrt(9)) # 输出:3.0
print(math.sin(math.pi / 6)) #输出:0.49999999999999994
statistics
基本统计函数标准库,用于计算均值、中位数、众数、方差和标准差,以及处理含有缺失值或无穷值的数据集
import statistics
data = [1, 2, 3, 4, 5, 6]
print(statistics.mean(data)) #输出:3.5
print(statistics.median(data)) #输出3.5
print(statistics.stdev(data)) # 输出1.8708286933869707
scipy
科学计算库,提供广泛的优化、积分、插值等算法和工具,基于 NumPy 库构建,为科学应用和研究提供高级功能
import numpy as np
from scipy.optimize import minimize
def objective_function(x):
return x[0] ** 2 + x[1] ** 2
initial_guess = np.array([1, 1])
result = minimize(objective_function, initial_guess)
print(result.x)
# 输出[-1.07505143e-08 -1.07505143e-08]
random
成随机数和随机选择,支持均匀分布、高斯分布等其他分布,对序列进行洗牌和抽样
import random
random_float = random.random()
random_int = random.randint(1, 10)
random_choice = random.choice(["apple", "banana", "orange"])
print(random_float)
print(random_int)
print(random_choice)
#0.8998656473050128
#6
#orange
数据可视化
matplotlib
matplotlib 是用于在 Python 中创建静态、交互式和动画可视化的绘图库,如线条、散点和条形图等。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [2, 4, 6, 8]
plt.plot(x, y)
plt.show()
seaborn
seaborn 是建立在 matplotlib 之上的统计数据可视化库,提供了一个高级接口,用于创建信息丰富且吸引人的统计图形。
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
sns.boxplot(x="day", y="total_bill", data=tips)
plt.show()
plotly
Plotly 是用 Python 创建交互式、基于 Web 的可视化的库,如线条图、条形图和散点图等,支持高级特性如动画和 3D 绘图。
import plotly.express as px
data = px.data.iris()
fig = px.scatter(data, x="sepal_width", y="sepal_length", color="species")
fig.show()
bokeh
Bokeh 是用于在 Python 中创建交互式、基于 Web 的可视化的库,提供了一个灵活且高级的接口,用于创建复杂、功能丰富的图形。
from bokeh.plotting import figure, output_file, show
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
output_file("line.html")
p = figure(title="Line plot example", x_axis_label="x", y_axis_label="y")
p.line(x, y, legend_label="y=2x", line_width=2)
show(p)
机器学习框架
scikit-learn
scikit-learn 是 Python 中用于机器学习的流行库,提供了用于分类、回归、聚类等多种学习任务的工具。
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_boston
X, y = load_boston(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = LinearRegression().fit(X_train, y_train)
TensorFlow:
TensorFlow 是一个开源的机器学习和人工智能库,提供了一个灵活的平台,用于定义和运行计算图,支持深度学习模型。
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation="relu"),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation="softmax")
])
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])
model.fit(x_train, y_train, epochs=5)
PyTorch:
PyTorch 是基于 Torch 库的一个开源机器学习库,提供了张量计算和深度学习能力,支持强大的 GPU 加速。
import torch
import torch.nn as nn
import torch.optim as optim
X = torch.randn(100, 20)
y = torch.randint(0, 2, (100,))
model = nn.Sequential(nn.Linear(20, 10), nn.ReLU(), nn.Linear(10, 2))
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
for epoch in range(10):
optimizer.zero_grad()
y_pred = model(X)
loss = criterion(y_pred, y)
loss.backward()
optimizer.step()
梯度提升库
XGBoost:
XGBoost 是一个可扩展且高性能的梯度提升库,用于基于树的模型,为监督学习任务提供了灵活而高效的解决方案。
import xgboost as xgb
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
X, y = load_boston(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
param = {"objective": "reg:squarederror", "eval_metric": "rmse"}
bst = xgb.train(param, dtrain, num_boost_round=100, evals=[(dtest, "test")])
y_pred = bst.predict(dtest)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
LightGBM:
LightGBM 是一个梯度提升框架,使用基于树的学习算法,设计用于大规模数据集和高性能任务,具有高效且可扩展的特点。
import lightgbm as lgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
dtrain = lgb.Dataset(X_train, label=y_train)
dtest = lgb.Dataset(X_test, label=y_test)
param = {"objective": "binary", "metric": "binary_logloss"}
bst = lgb.train(param, dtrain, num_boost_round=100, valid_sets=[dtest])
y_pred = np.round(bst.predict(X_test))
accuracy = accuracy_score(y_test, y_pred)
CatBoost:
CatBoost 是一个高性能的梯度提升库,专门设计用于处理分类特征和提高在具有分类特征数据集上的性能。
from catboost import CatBoostClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = CatBoostClassifier(iterations=100, learning_rate=0.1, depth=2, verbose=0)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)