看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas
的 clip()
方法用于限制数据的范围。它可以对 DataFrame
或 Series
的数据进行裁剪,使得数据值不会超出指定的上下界限。这对于数据预处理和清洗非常有用,尤其是在处理异常值时。
DataFrame.clip(lower=None, upper=None,
axis=None, inplace=False, **kwargs)
lower
: 可选。设置下限值,数据中的所有值低于这个值的都会被替换为这个值。如果没有提供,则不进行下限裁剪。upper
: 可选。设置上限值,数据中的所有值高于这个值的都会被替换为这个值。如果没有提供,则不进行上限裁剪。axis
: 可选。用于指定操作的轴,默认值为 None
,即对所有轴进行操作。如果是 0
或 index
,则对每一列进行裁剪;如果是 1
或 columns
,则对每一行进行裁剪。inplace
: 可选。是否在原地修改数据,默认为 False
,即返回一个新的 DataFrame
或 Series
,而不修改原始数据。返回裁剪后的 DataFrame
或 Series
,根据指定的上下限限制数据值的范围。
data = {'col_0': [9, -3, 0, -1, 5], 'col_1': [-2, -7, 6, 8, -5]}
df = pd.DataFrame(data)
df
col_0 col_1
0 9 -2
1 -3 -7
2 0 6
3 -1 8
4 5 -5
# 使用下限和上限的每列剪辑:
df.clip(-4, 6)
col_0 col_1
0 6 -2
1 -3 -4
2 0 6
3 -1 6
4 5 -4
# 每列使用特定下限和上限阈值的剪辑:
df.clip([-2, -1], [4, 5])
col_0 col_1
0 4 -1
1 -2 -1
2 0 5
3 -1 5
4 4 -1
# 使用每个列元素的特定下限和上限进行剪辑:
t = pd.Series([2, -4, -1, 6, 3])
t
0 2
1 -4
2 -1
3 6
4 3
dtype: int64
df.clip(t, t + 4, axis=0)
col_0 col_1
0 6 2
1 -3 -4
2 0 3
3 6 8
4 5 3
# 每列元素使用特定较低阈值的剪辑,缺失值:
t = pd.Series([2, -4, np.nan, 6, 3])
t
0 2.0
1 -4.0
2 NaN
3 6.0
4 3.0
dtype: float64
df.clip(t, axis=0)
col_0 col_1
0 9 2
1 -3 -4
2 0 6
3 6 8
4 5 3
假设有一个包含学生分数的数据集,我们希望将分数限制在 0 到 100 之间。
import pandas as pd
# 创建示例数据
data = {
'Math': [95, 105, 78, -5, 88],
'Science': [89, 120, 85, 60, -10],
'English': [75, 85, 130, 92, 45]
}
df = pd.DataFrame(data)
# 使用 clip() 方法限制数据范围
df_clipped = df.clip(lower=0, upper=100)
print("原始数据:")
print(df)
print("\n裁剪后的数据:")
print(df_clipped)
输出:
原始数据:
Math Science English
0 95 89 75
1 105 120 85
2 78 85 130
3 -5 60 92
4 88 -10 45
裁剪后的数据:
Math Science English
0 95 89 75
1 100 100 85
2 78 85 100
3 0 60 92
4 88 0 45
在这个例子中,clip()
方法将 Math
列中的 105 限制为 100,将 Science
列中的 120 限制为 100,将 English
列中的 130 限制为 100,同时也将负值限制为 0。
更新时间:2024-08-07 20:20:44 标签:pandas python 裁剪