Pandas for machine learning

2025年2月9日 作者 unix2go

以下是一个 Pandas 和机器学习入门指南,介绍如何结合 Pandas 数据操作和机器学习库(如 Scikit-learn)完成从数据加载到模型训练的基本流程。


Pandas + 机器学习入门指南

1. 什么是 Pandas?

  • Pandas 是一个强大的 Python 数据分析库,主要用于 数据清洗数据操作 和 统计分析
  • 它提供了两种核心数据结构:
    • DataFrame:二维表结构(类似 Excel)。
    • Series:一维数组(类似单列数据)。

在机器学习中,Pandas 通常用于数据预处理(如加载、清洗、特征工程),是连接数据和机器学习模型的桥梁。


2. Pandas 基础操作

2.1 安装 Pandas

pip install pandas

2.2 导入 Pandas

import pandas as pd

2.3 加载数据

Pandas 支持从多种数据格式加载数据:

  • CSV
  • Excel
  • SQL
  • JSON 等
# 加载 CSV 文件
df = pd.read_csv("data.csv")

# 查看前几行数据
print(df.head())

# 查看数据结构信息
print(df.info())

# 查看数据统计摘要
print(df.describe())

2.4 数据基本操作

  • 选择列
# 选择单列
age = df["Age"]

# 选择多列
subset = df[["Age", "Salary"]]
  • 过滤行
# 筛选年龄大于30的行
filtered = df[df["Age"] > 30]
  • 添加新列
# 添加一个新列,表示年收入
df["Annual_Income"] = df["Salary"] * 12
  • 处理缺失值
# 查看缺失值
print(df.isnull().sum())

# 填充缺失值
df.fillna(0, inplace=True)

# 删除缺失值
df.dropna(inplace=True)
  • 分组与聚合
# 按部门分组,计算平均工资
grouped = df.groupby("Department")["Salary"].mean()
print(grouped)

3. Pandas 与机器学习的结合

3.1 数据准备

机器学习模型需要数值化的特征作为输入,因此 Pandas 在特征预处理方面起着重要作用。

(1)选择特征和标签

# 假设 "Salary" 是目标变量,其他是特征
X = df.drop("Salary", axis=1)  # 特征
y = df["Salary"]              # 标签

(2)类别编码

如果数据中有分类变量,需要将其转化为数值:

# 使用 Pandas 的 get_dummies 方法进行独热编码
X = pd.get_dummies(X, columns=["Department"], drop_first=True)

(3)数据标准化

某些机器学习算法(如线性回归、SVM)对数据的分布敏感,需要对特征进行标准化:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

3.2 使用机器学习模型

(1)加载 Scikit-learn 库

Scikit-learn 是一个流行的 Python 机器学习库,提供了多种模型和工具。

安装:

pip install scikit-learn

导入:

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

(2)划分数据集

将数据划分为训练集和测试集(例如 80% 训练,20% 测试):

X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

(3)训练模型

以线性回归为例:

# 创建模型
model = LinearRegression()

# 训练模型
model.fit(X_train, y_train)

(4)预测与评估

# 在测试集上预测
y_pred = model.predict(X_test)

# 评估模型性能(均方误差)
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")

3.3 其他机器学习模型示例

分类模型:逻辑回归

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 创建逻辑回归模型
classifier = LogisticRegression()

# 训练模型
classifier.fit(X_train, y_train)

# 预测
y_pred = classifier.predict(X_test)

# 评估准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")

集成模型:随机森林

from sklearn.ensemble import RandomForestRegressor

# 创建随机森林模型
rf_model = RandomForestRegressor(n_estimators=100, random_state=42)

# 训练模型
rf_model.fit(X_train, y_train)

# 预测与评估
y_pred = rf_model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"Random Forest MSE: {mse}")

4. 完整案例:房价预测

以下是一个完整的 Pandas 和机器学习结合的示例,使用波士顿房价数据集预测房价。

4.1 加载数据

from sklearn.datasets import load_boston

# 加载波士顿房价数据集
boston = load_boston()
df = pd.DataFrame(boston.data, columns=boston.feature_names)

# 添加目标变量(房价)
df["PRICE"] = boston.target

# 查看数据
print(df.head())

4.2 数据预处理

# 特征和标签
X = df.drop("PRICE", axis=1)
y = df["PRICE"]

# 标准化特征
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 划分数据集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

4.3 训练模型

from sklearn.linear_model import LinearRegression

# 创建模型
model = LinearRegression()

# 训练模型
model.fit(X_train, y_train)

4.4 评估模型

from sklearn.metrics import mean_squared_error

# 预测
y_pred = model.predict(X_test)

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")

5. 总结

  • Pandas 是机器学习项目的核心数据操作工具,通过它可以轻松完成数据清洗、预处理和特征工程。
  • 在机器学习的典型流程中,Pandas 与 Scikit-learn 通常结合使用:
    1. 加载和清洗数据:用 Pandas。
    2. 特征工程和标准化:用 Pandas 和 Scikit-learn。
    3. 模型训练和评估:用 Scikit-learn。
  • 学会 Pandas 基础后,可以快速上手数据分析和机器学习的完整工作流。

希望这个入门指南对你有所帮助!