【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()
是一个非常实用的方法,适合用于数据格式化、展示优化、特征处理等任务。