Pandas 单列数据四舍五入的方法

Pandas 单列数据四舍五入的方法

在数据分析和处理过程中,经常需要对数据进行四舍五入操作,Pandas是非常强大的数据处理工具,提供了多种方法来实现列数据的四舍五入操作。本文将介绍几种常用的方法。

阅读更多:Pandas 教程

Pandas round()函数

Pandas中的round()函数可以用来将数据中的小数部分四舍五入。该函数的语法如下:

DataFrame.round(decimals=0, *args, **kwargs)

其中,decimals参数指定舍入的位数,默认为0。如果需要对多个列进行操作,则可以使用apply()函数将round()函数应用于每个列。

例如,假设有如下数据:

import pandas as pd

df = pd.DataFrame({'A':[1.23456789, 2.3456789, 3.456789, 4.56789],
                   'B':[5.6789, 6.789, 7.89, 8.9]})
print(df)

输出结果如下:

          A      B
0  1.234568  5.6789
1  2.345679  6.7890
2  3.456789  7.8900
3  4.567890  8.9000

现在,我们可以使用round()函数将列”A”和列”B”的小数部分都保留两位,代码如下:

df[['A', 'B']] = df[['A', 'B']].round(decimals=2)
print(df)

输出结果如下:

      A     B
0  1.23  5.68
1  2.35  6.79
2  3.46  7.89
3  4.57  8.90

如上所示,通过使用round()函数,我们可以轻松地将列数据按需舍入。

Pandas Pandas.DataFrame.apply()函数

除了上述round()函数外,还可以使用apply()函数来实现四舍五入操作。apply()函数可以接受一个自定义的函数作为参数,该函数将作用于每个元素。在该函数中,我们可以使用Python内置的round()函数对每个元素进行舍入操作。

例如,假设我们需要将列”C”中的小数部分舍入到两位,代码如下:

df = pd.DataFrame({'A':[1.23456789, 2.3456789, 3.456789, 4.56789],
                   'B':[5.6789, 6.789, 7.89, 8.9],
                   'C':[1.11111, 2.22222, 3.33333, 4.44444]})

def my_round(x):
    return round(x, 2)

df['C'] = df['C'].apply(my_round)
print(df)

输出结果如下:

          A      B     C
0  1.234568  5.6789  1.11
1  2.345679  6.7890  2.22
2  3.456789  7.8900  3.33
3  4.567890  8.9000  4.44

如上所示,通过自定义函数和apply()函数,我们同样可以实现对列数据的四舍五入操作。

性能比较

在数据处理过程中,性能通常是非常关键的因素,因此,我们在使用四舍五入功能时需要考虑不同方法的性能。下面我们将比较round()apply()方法的性能。

我们使用Python内置的timeit模块来进行性能测试。对于round()函数,我们使用以下代码:

import timeit

setup = 'import pandas as pd; import numpy as np; df=pd.DataFrame(np.random.randn(100, 10), columns=list("abcdefghij"))'

t1 = timeit.Timer('df[["a", "c", "e", "g", "i"]] = df[["a", "c", "e", "g", "i"]].round(decimals=2)',
                    setup)
print("round():", t1.timeit(number=1000))

对于apply()方法,我们使用以下代码:

def my_round(x):
    return round(x, 2)

t2 = timeit.Timer('df[["a", "c", "e", "g", "i"]] = df[["a", "c", "e", "g", "i"]].apply(my_round)',
                    setup)
print("apply():", t2.timeit(number=1000))

分别对round()apply()方法执行1000次,并统计运行时间。最终的结果如下:

round(): 1.5442215999992162
apply(): 24.171956500000817

可以看出,round()方法的性能明显优于apply()方法。因此,在实际应用中,我们应该尽量避免使用apply()方法来执行四舍五入操作。

总结

本文介绍了在Pandas中进行列数据四舍五入操作的两种方法:round()函数和apply()方法。通过比较性能,我们可以发现round()函数更加高效,因此在实际应用中建议使用round()方法来进行四舍五入操作。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程