跟我一起学scikit-learn05:Pandas简介

Pandas是一个强大的时间序列数据处理工具包,最初开发的目的是为了分析财经数据,现在已经广泛应用在Python数据分析领域。本节通过简单的介绍,让读者熟悉简单的Pandas概念及操作。

1.基本数据结构

Pandas最基础的数据结构是Series,用它来表达一行数据,可以理解为一维数组。比如下面的代码,创建了一个包含6个数据的一维数组。

In [1]: import pandas as pd
In [2]: s = pd.Series([4,2,5,0,6,3])
In [3]: s
Out[3]:
0    4
1    2
2    5
3    0
4    6
5    3
dtype: int64

Series会自动为数据加上索引,默认是从0开始的连续索引,也可以自己指定索引。

另一个关键的数据结构是DataFrame,它表示的是二维数据。下面的代码会创建一个DataFrame对象。

In [6]: import numpy as np
In [7]: df = pd.DataFrame(np.random.randn(6,4),columns=list('ABCD'))
In [8]: df
Out[8]:
          A         B         C         D
0 -0.647598 -0.584578 -1.647857 -0.995705
1 -2.062707  1.293265  0.246728 -0.096330
2 -2.218540 -0.484086 -1.400132 -0.824412
3 -1.952414 -1.558925  0.993463 -0.197446
4 -0.346778  0.387028  0.391962  1.186592
5 -0.945258 -1.609624  0.823679  0.420984

其实,DataFrame对象里的数据使用Numpy的array对象保存的,可以使用df.values来查看原始数据。DataFrame对象的每一行和每一列都是一个Series对象,可以使用行索引来访问一行数据,也可以使用列索引来访问一列数据。

In [9]: df.iloc[0]
Out[9]:
A   -0.647598
B   -0.584578
C   -1.647857
D   -0.995705
Name: 0, dtype: float64

In [10]: df.A
Out[10]:
0   -0.647598
1   -2.062707
2   -2.218540
3   -1.952414
4   -0.346778
5   -0.945258
Name: A, dtype: float64

In [11]: print("Row data type: {}".format(type(df.iloc[0])))
Row data type: <class 'pandas.core.series.Series'>

In [12]: print("Column data type: {}".format(type(df.A)))
Column data type: <class 'pandas.core.series.Series'>

Pandas提供了简洁的数据访问功能,通过DataFrame.shape可以查看数据的维度信息:

In [13]: df.shape
Out[13]: (6, 4)

通过DataFrame.head()和Data

### 结合使用 XGBoost、PandasScikit-Learn 进行机器习建模 为了实现高效的机器习建模流程,可以利用 Pandas 处理数据,Scikit-Learn 提供工具链(如特征工程和模型评估),以及 XGBoost 实现高性能的梯度提升树模型。 #### 数据预处理阶段 在实际应用中,通常会先通过 `pandas` 加载并清洗数据。例如: ```python import pandas as pd df = pd.read_csv('data.csv') ``` 如果需要计算某些统计量(比如按性别分组后的年龄中位数),可以通过如下方式完成[^2]: ```python grouped = df.groupby(['gender']).agg({'age': 'median'}) print(grouped) ``` 接着,将数据划分为特征矩阵 (`X`) 和目标向量 (`y`) 并转换为 NumPy 数组形式以便后续操作[^1]: ```python X = df.drop(columns=['target']) y = df['target'] X_train, X_test, y_train, y_test = train_test_split(X.values, y.values, test_size=0.2, random_state=42) ``` 这里我们假设已经导入了必要的模块: ```python from sklearn.model_selection import train_test_split ``` #### 建立管道 (Pipeline) 阶段 构建完整的流水线有助于简化工作流,并确保一致性和可扩展性。下面是一个简单的例子,展示如何集成标准化器与分类器到一起[^4]: ```python from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from xgboost import XGBClassifier pipeline = Pipeline([ ('scaler', StandardScaler()), ('classifier', XGBClassifier(use_label_encoder=False, eval_metric='logloss')) ]) ``` 此代码片段定义了一个包含两个步骤的流水线:首先是标准缩放变换;其次是基于 XGBoost 的二元或多元分类器实例化对象。 #### 训练与验证阶段 调用 `.fit()` 方法即可启动训练过程。对于大规模无法一次性加载入内存的数据集,则可通过多次迭代读取子批次来逐步更新参数——即所谓的在线/增量习模式[^3]。不过需要注意的是,在当前设置下,默认情况下整个训练样本会被送入一次拟合过程中去调整权重系数。 最后一步就是衡量预测性能指标,常用均方根误差(RMSE)作为回归任务中的损失函数之一: ```python pipeline.fit(X_train, y_train) predictions = pipeline.predict(X_test) rmse = np.sqrt(mean_squared_error(y_test, predictions)) print(f'Root Mean Squared Error: {rmse}') ``` 其中还需要引入额外的支持库来进行数值运算: ```python from sklearn.metrics import mean_squared_error import numpy as np ``` 以上便是结合 XGBoost、PandasScikit-Learn 构建端到端解决方案的主要思路概览。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值