Pandas数据操作与AWSSageMaker使用指南
立即解锁
发布时间: 2025-09-06 01:09:49 阅读量: 8 订阅数: 17 AIGC 


机器学习实战项目指南
# Pandas数据操作与AWS SageMaker使用指南
## 1. Pandas数据操作基础
### 1.1 iloc与索引重置
在Pandas中,`iloc`与`loc`不同,`iloc`通过位置而非索引来获取行。例如,`iloc`可以获取位置为0和1的行(分别由索引2和4标记)。`iloc`完全不考虑索引,只使用实际位置。
如果需要重置索引为默认的顺序索引,可以使用`reset_index`方法:
```python
df.reset_index(drop=True)
```
此操作会创建一个带有顺序索引的新DataFrame。
### 1.2 拆分DataFrame
可以使用`iloc`来选择DataFrame的子集。假设要将一个DataFrame拆分为三部分:训练集、验证集和测试集。使用60%的数据进行训练(3行),20%用于验证(1行),20%用于测试(1行):
```python
n_train = 3
n_val = 1
n_test = 1
```
使用切片运算符(`:`)来选择行的范围,这在DataFrame中的工作方式与在列表中相同。拆分DataFrame的代码如下:
```python
df_train = df.iloc[:n_train] # 选择训练数据的行
df_val = df.iloc[n_train:n_train + n_val] # 选择验证数据的行
df_test = df.iloc[n_train + n_val:] # 选择测试数据的行
```
- `iloc[:n_train]`:从DataFrame的起始位置选择到`n_train`之前的行。当`n_train = 3`时,选择行0、1和2,行3不包括在内。
- `iloc[n_train:n_train + n_val]`:选择从`n_train`到`n_train + n_val`的行。这里选择行3。
- `iloc[n_train + n_val:]`:选择从`n_train + n_val`到DataFrame末尾的行。在这个例子中,只选择行4。
### 1.3 Pandas操作类型
Pandas是一个强大的数据操作工具,支持多种操作,可分为以下几类:
- 元素级操作
- 汇总操作
- 过滤操作
- 排序操作
- 分组操作
### 1.4 元素级操作
在Pandas中,Series支持元素级操作,就像在NumPy中一样。所有基本算术运算(加法`+`、减法`-`、乘法`*`和除法`/`)都是元素级的,无需编写循环。例如,将Series的每个元素乘以2:
```python
df['Engine HP'] * 2
```
逻辑运算也是元素级的,例如:
```python
df['Year'] > 2000
```
此表达式返回一个布尔Series,元素大于2000时为True。还可以使用逻辑与`&`和逻辑或`|`组合多个布尔运算:
```python
(df['Year'] > 2000) & (df['Make'] == 'Nissan')
```
### 1.5 过滤操作
通常需要根据某些条件选择行的子集,使用布尔运算和方括号表示法。例如,选择所有日产汽车:
```python
df[df['Make'] == 'Nissan']
```
如果需要更复杂的选择条件,可以使用逻辑运算符组合多个条件。例如,选择2010年后生产的自动变速器汽车:
```python
df[(df['Year'] > 2010) & (df['Transmission Type'] == 'AUTOMATIC')]
```
### 1.6 字符串操作
与NumPy数组不同,Pandas支持字符串操作,如小写转换、子字符串替换等。对于`Vehicle_Style`列中的数据不一致问题(大小写不统一),可以使用`str`访问器进行小写转换:
```python
df['Vehicle_Style'].str.lower()
```
还可以链式调用多个字符串操作:
```python
df['Vehicle_Style'].str.lower().str.replace(' ', '_')
```
对于DataFrame的列名不一致问题,也可以使用字符串操作进行规范化:
```python
df.columns.str.lower().str.replace(' ', '_')
```
要修改列名,需要将结果重新赋值给`df.columns`:
```python
df.columns = df.columns.str.lower().str.replace(' ', '_')
```
为了规范化所有字符串列,可以选择所有字符串列并分别应用规范化操作:
```python
string_columns = df.dtypes[df.dtypes == 'object'].index
for col in string_columns:
df[col] = df[col].str.lower().str.replace(' ', '_')
```
### 1.7 汇总操作
在Pandas中,有元素级操作产生另一个Series,也有汇总操作产生一个或多个汇总数字。汇总操作对于探索性数据分析非常有用。
对于数值字段,可以使用以下方法:
- `mean`:计算列中所有值的平均值。
- `sum`:计算所有值的总和。
- `min`:获取Series中的最小值。
- `max`:获取Series中的最大值。
- `std`:计算标准差。
可以使用`describe`方法一次性获取所有这些值:
```python
df.msrp.describe()
```
对整个DataFrame调用`mean`方法会计算所有数值列的平均值:
```python
df.mean()
```
调用`describe`方法会返回一个包含所有数值特征汇总统计信息的DataFrame。
### 1.8 缺失值处理
可以使用`isnull`方法查看哪些值缺失:
```python
df.isnull()
```
对于大型DataFrames,查看所有值不切实际,可以使用`sum`方法汇总结果:
```python
df.isnull().sum()
```
使用`fillna`方法将缺失值替换为实际值,例如用零填充:
```python
df.engine_hp.fillna(0)
```
或者用平均值填充:
```python
df.engine_hp.fillna(df.eng
```
0
0
复制全文
相关推荐







