【Pandas】pandas DataFrame round
Pandas2.2 DataFrame
Computations descriptive stats
| 方法 | 描述 | 
|---|---|
| DataFrame.abs() | 用于返回 DataFrame 中每个元素的绝对值 | 
| DataFrame.all([axis, bool_only, skipna]) | 用于判断 DataFrame 中是否所有元素在指定轴上都为 True | 
| DataFrame.any(*[, axis, bool_only, skipna]) | 用于判断 DataFrame 中是否至少有一个元素在指定轴上为 True | 
| DataFrame.clip([lower, upper, axis, inplace]) | 用于截断(限制)DataFrame 中的数值 | 
| DataFrame.corr([method, min_periods, …]) | 用于计算 DataFrame 中各列之间的相关系数矩阵(Correlation Matrix) | 
| DataFrame.corrwith(other[, axis, drop, …]) | 用于计算当前 DataFrame 的每一列(或行)与另一个 Series 或 DataFrame 中对应列的相关系数 | 
| DataFrame.count([axis, numeric_only]) | 用于统计 DataFrame 中每列或每行的非空(非 NaN)元素数量 | 
| DataFrame.cov([min_periods, ddof, numeric_only]) | 用于计算 DataFrame 中每对列之间的协方差 | 
| DataFrame.cummax([axis, skipna]) | 用于计算 DataFrame 中每列或每行的累计最大值(cumulative maximum) | 
| DataFrame.cummin([axis, skipna]) | 用于计算 DataFrame 中每列或每行的累计最小值(cumulative minimum) | 
| DataFrame.cumprod([axis, skipna]) | 用于计算 DataFrame 中每列或每行的累计乘积(cumulative product) | 
| DataFrame.cumsum([axis, skipna]) | 用于计算 DataFrame 中每列或每行的累计和(cumulative sum) | 
| DataFrame.describe([percentiles, include, …]) | 用于快速生成数据集的统计摘要(summary statistics) | 
| DataFrame.diff([periods, axis]) | 用于计算 DataFrame 中相邻行或列之间的差值(差分) | 
| DataFrame.eval(expr, *[, inplace]) | 用于在 DataFrame 上下文中高效地执行字符串形式的表达式运算 | 
| DataFrame.kurt([axis, skipna, numeric_only]) | 用于计算 DataFrame 中每列或每行的峰度(Kurtosis) | 
| DataFrame.kurtosis([axis, skipna, numeric_only]) | 用于计算 DataFrame 中每列或每行的峰度(Kurtosis) | 
| DataFrame.max([axis, skipna, numeric_only]) | 用于计算 DataFrame 中每列或每行的最大值(maximum) | 
| DataFrame.mean([axis, skipna, numeric_only]) | 用于计算 DataFrame 中每列或每行的平均值(mean) | 
| DataFrame.median([axis, skipna, numeric_only]) | 用于计算 DataFrame 中每列或每行的中位数(median) | 
| DataFrame.min([axis, skipna, numeric_only]) | 用于计算 DataFrame 中每列或每行的最小值(minimum) | 
| DataFrame.mode([axis, numeric_only, dropna]) | 用于查找 众数(出现频率最高的值) 的方法 | 
| DataFrame.pct_change([periods, fill_method, …]) | 用于计算 百分比变化 的方法 | 
| DataFrame.prod([axis, skipna, numeric_only, …]) | 用于计算 每列或每行元素的乘积 的方法 | 
| DataFrame.product([axis, skipna, …]) | 用于计算 DataFrame 中每列或每行所有元素的乘积 | 
| DataFrame.quantile([q, axis, numeric_only, …]) | 用于计算 分位数(Quantiles) 的方法 | 
| DataFrame.rank([axis, method, numeric_only, …]) | 用于计算 DataFrame 中每列或每行元素的排名(rank) | 
| DataFrame.round([decimals]) | 用于对 DataFrame 中的数值进行四舍五入 | 
pandas.DataFrame.round()
pandas.DataFrame.round() 方法用于对 DataFrame 中的数值进行四舍五入,可以指定小数位数或对特定列进行不同的精度设置。该方法常用于数据展示、结果格式化等场景。
📌 方法签名:
DataFrame.round(decimals=0)
🧾 参数说明:
| 参数 | 类型 | 默认值 | 描述 | 
|---|---|---|---|
| decimals | int 或 dict-like(如 Series、dict) | 0 | 指定要保留的小数位数: - 如果是整数,则所有列都使用相同的精度 - 如果是字典或 Series,可以为每列指定不同的小数位数 | 
📊 返回值
- 返回一个新的 DataFrame,其中每个元素被四舍五入到指定的小数位数。
- 非数值列会被自动忽略。
- NaN 值保持不变。
✅ 示例及结果
示例数据:
import pandas as pddf = pd.DataFrame({'A': [1.234, 2.567, 3.789],'B': [10.111, 20.222, 30.333],'C': [100.444, 200.555, 300.666],'D': ['text', 4.567, 5.678]  # 包含非数值类型
})
输出原始数据:
       A        B        C      D
0  1.234   10.111  100.444   text
1  2.567   20.222  200.555  4.567
2  3.789   30.333  300.666  5.678
示例 1:默认参数(保留 0 位小数)
df.round()
结果:
     A     B      C     D
0  1.0  10.0  100.0  text
1  3.0  20.0  201.0  5.0
2  4.0  30.0  301.0  6.0
解释:
- 所有数值列都被四舍五入到整数(0 位小数)
- 字符串列 D被保留原样(未参与运算)
示例 2:指定保留 1 位小数
df.round(1)
结果:
     A     B      C     D
0  1.2  10.1  100.4  text
1  2.6  20.2  200.6  4.6
2  3.8  30.3  300.7  5.7
解释:
- 所有数值列保留一位小数
- 字符串列 D不受影响
示例 3:按列指定不同精度(使用字典)
df.round({'A': 1, 'B': 2, 'C': 0})
结果:
     A      B      C     D
0  1.2  10.11  100.0  text
1  2.6  20.22  201.0  5.0
2  3.8  30.33  301.0  6.0
解释:
- 列 A 保留 1 位小数
- 列 B 保留 2 位小数
- 列 C 保留 0 位小数(整数)
示例 4:使用 Series 指定各列精度
import pandas as pddecimals = pd.Series({'A': 2, 'B': 1, 'C': 0})
df.round(decimals)
结果:
     A      B      C     D
0  1.23   10.1  100.0  text
1  2.57   20.2  201.0  5.0
2  3.79   30.3  301.0  6.0
解释:
- 使用 Series指定每列的精度,效果与字典方式一致
示例 5:处理包含 NaN 的数据
import numpy as npdf_with_nan = pd.DataFrame({'X': [1.234, np.nan, 3.789],'Y': [np.nan, 2.345, 3.456]
})df_with_nan.round(1)
结果:
     X    Y
0  1.2  NaN
1  NaN  2.3
2  3.8  3.5
解释:
- NaN 值保持不变
- 其他数值正常四舍五入
示例 6:对整个 DataFrame 设置统一精度
df.round(2)
结果:
     A      B      C     D
0  1.23  10.11  100.44  text
1  2.57  20.22  200.56  4.57
2  3.79  30.33  300.67  5.68
解释:
- 所有数值列保留两位小数
- 字符串列 D不受影响
⚠️ 注意事项
- 只作用于数值型列(int、float),字符串列不会报错而是保持原样
- 支持通过字典或 Series 对不同列设置不同精度
- NaN 值不会被修改
- 不会改变原始 DataFrame,返回新对象
🎯 适用场景
| 场景 | 描述 | 
|---|---|
| 数据展示 | 格式化输出,避免显示过多小数位 | 
| 模型评估 | 控制预测值的精度以方便比较 | 
| 特征工程 | 构造离散化的浮点特征 | 
| 可视化准备 | 减少图表中不必要的精度细节 | 
📋 总结
| 特性 | 描述 | 
|---|---|
| 功能 | 对 DataFrame 中的数值进行四舍五入 | 
| 默认行为 | 所有列保留 0 位小数(整数) | 
| 是否修改原数据 | 否,返回新 DataFrame | 
| 适用类型 | 数值型列(int、float) | 
| NaN 处理 | 保留原值,不参与四舍五入 | 
round() 是一个非常实用的方法,适合用于数据格式化、展示优化、特征处理等任务。
