一、数据结构与基础处理
1. NumPy(数值计算核心)
-
定位:Python科学计算的基石,提供高效多维数组(
ndarray)和向量化运算。 -
核心功能:数组创建、数值运算(矩阵乘法、统计计算)、随机数生成。
-
典型用法:
import numpy as np
# 创建数组
arr = np.array([[1, 2], [3, 4]])
# 数值运算
print(arr.sum()) # 求和
2. Pandas(表格数据处理)
-
定位:专为表格数据(如CSV、Excel)设计的处理库,核心结构为
DataFrame(二维表格)和Series(一维序列)。 -
核心功能:数据读取(
read_csv)、筛选、分组、聚合、缺失值处理。 -
典型用法:
import pandas as pd
# 读取数据
df = pd.read_csv("data.csv")
# 筛选数据
filtered_df = df[df["age"] > 30]
二、科学计算
SciPy(高级科学计算)
-
定位:基于NumPy的高级科学计算库,专注工程、物理、数学领域的专业计算。
-
核心子模块:
- scipy.integrate:数值积分(定积分、常微分方程求解);
- scipy.linalg:线性代数操作(矩阵分解、求逆、特征值)。
- 典型用法(数值积分示例):
from scipy.integrate import quad
# 计算∫(0到1) x² dx
result, _ = quad(lambda x: x**2, 0, 1)
print(result) # 输出:0.333333...
三、数据可视化
1. Matplotlib(基础可视化)
-
定位:Python可视化的“基石”,支持折线图、柱状图、散点图等基础图表。
-
典型用法(折线图):
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [2, 4, 6]
plt.plot(x, y)
plt.title("Line Plot")
plt.show()
2. Seaborn(统计可视化)
-
定位:基于Matplotlib的高级统计可视化库,专注于美观的统计图表(如散点图、热力图、箱线图)。
-
典型用法(散点图):
import seaborn as sns
df = sns.load_dataset("iris")
sns.scatterplot(x="sepal_length", y="sepal_width", hue="species", data=df)
plt.show()
四、机器学习与统计建模
1. Scikit-Learn(工程化机器学习)
-
定位:最流行的机器学习库,封装经典算法(线性回归、决策树等),接口统一(
fit训练、predict预测)。 -
典型用法(线性回归):
from sklearn.linear_model import LinearRegression
import numpy as np
# 准备数据
X = np.array([[1], [2], [3]])
y = np.array([2, 4, 6])
# 建模与训练
model = LinearRegression().fit(X, y)
# 预测
print(model.predict([[4]])) # 输出:[8.]
2. Statsmodels(统计推断建模)
-
定位:专注统计建模与推断,输出p值、置信区间等统计指标,适合学术分析。
-
典型用法(OLS线性回归):
import numpy as np
import statsmodels.api as sm
# 准备数据
x = np.random.rand(100)
y = 2 * x + 1 + np.random.rand(100)
X = sm.add_constant(x) # 添加截距项
# 拟合与统计分析
model = sm.OLS(y, X).fit()
print(model.summary()) # 输出完整统计报告
五、地理空间数据处理(GeoPandas)
-
定位:扩展Pandas功能,专为矢量地理数据(Shapefile、GeoJSON等)设计,支持空间处理与可视化。
-
核心数据结构:
GeoDataFrame(含geometry列存储地理要素,如点、多边形)。 -
典型用法:
import geopandas as gpd
import matplotlib.pyplot as plt
# 读取Shapefile
gdf = gpd.read_file("taxi_zones.shp")
# 地图可视化
gdf.plot(column="人口密度", cmap="viridis", legend=True)
plt.title("区域人口密度分布")
plt.show()