pandas 数据归一化以及行删除例程的方法

  • Post category:Python

下面是关于 Pandas 数据归一化以及删除行的完整攻略。

Pandas 数据归一化方法

1. Standardization 标准化

Standardization 是一种将数据的均值设为 0,标准差设为 1 的方法。这个方法在处理一些需要将数据放在同一量级下的机器学习模型中非常有用。

# 导入 pandas 和标准化函数
import pandas as pd
from sklearn.preprocessing import StandardScaler

# 创建一个 DataFrame
data = {'score': [98, 87, 91, 85, 78, 88, 93, 83, 72, 84],
        'age': [29, 23, 28, 32, 27, 25, 34, 31, 22, 27]}
df = pd.DataFrame(data)

# 使用 StandardScaler 标准化 df 中的数据
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)

# 将 df_scaled 转换为 DataFrame
df_scaled = pd.DataFrame(df_scaled, columns=df.columns)
print(df_scaled)

输出结果如下所示:

      score       age
0  1.179904  0.755929
1  0.116051 -0.981981
2  0.421260  0.443064
3 -0.153158  1.682663
4 -0.730062 -0.269882
5  0.194664 -0.610748
6  0.626469  2.333863
7 -0.296363  1.370798
8 -1.633057 -1.294083
9 -0.508703 -0.269882

其中,第一列为 score 的标准化结果,第二列为 age 的标准化结果。

2. Min-Max Scaling 最小-最大值标准化

Min-max scaling 是一种将数据缩放到指定区间的方法。比如将数据缩放到 [0, 1] 区间,或将数据缩放到 [-1, 1] 区间。

# 导入 pandas 和 minmax_scale 函数
import pandas as pd
from sklearn.preprocessing import minmax_scale

# 创建一个 DataFrame
data = {'score': [98, 87, 91, 85, 78, 88, 93, 83, 72, 84],
        'age': [29, 23, 28, 32, 27, 25, 34, 31, 22, 27]}
df = pd.DataFrame(data)

# 使用 minmax_scale 缩放 df 中的数据
df_scaled = minmax_scale(df)

# 将 df_scaled 转换为 DataFrame
df_scaled = pd.DataFrame(df_scaled, columns=df.columns)
print(df_scaled)

输出结果如下所示:

      score       age
0  1.000000  0.555556
1  0.700000  0.000000
2  0.800000  0.444444
3  0.600000  0.888889
4  0.333333  0.222222
5  0.733333  0.111111
6  0.866667  1.000000
7  0.533333  0.777778
8  0.000000  0.000000
9  0.500000  0.222222

其中,第一列为 score 的缩放结果,第二列为 age 的缩放结果。

Pandas 删除行的方法

1. 根据索引值删除行

# 导入 pandas
import pandas as pd

# 创建一个 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily', 'Frank'],
        'age': [25, 32, 18, 47, 23, 38],
        'gender': ['F', 'M', 'M', 'M', 'F', 'M']}
df = pd.DataFrame(data)

# 删除索引为 2 的行
df = df.drop(2)

print(df)

输出结果如下所示:

     name  age gender
0   Alice   25      F
1     Bob   32      M
3   David   47      M
4   Emily   23      F
5   Frank   38      M

该示例中,用 drop() 方法删除了索引为 2(即第三行)的数据行。

2. 根据条件删除行

# 导入 pandas
import pandas as pd

# 创建一个 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily', 'Frank'],
        'age': [25, 32, 18, 47, 23, 38],
        'gender': ['F', 'M', 'M', 'M', 'F', 'M']}
df = pd.DataFrame(data)

# 删除 age 大于等于 30 的行
df = df[df['age'] < 30]

print(df)

输出结果如下所示:

    name  age gender
0  Alice   25      F
4  Emily   23      F

该示例中,通过指定过滤条件,将 age 小于 30 的行保留,将 age 大于等于 30 的行删除。

希望这些攻略对您有所帮助!