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()
方法来进行四舍五入操作。